Page MenuHomec4science

No OneTemporary

File Metadata

Created
Fri, Aug 30, 00:16
This file is larger than 256 KB, so syntax highlighting was skipped.
This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
diff --git a/doc/Developers.pdf b/doc/Developer.pdf
similarity index 65%
rename from doc/Developers.pdf
rename to doc/Developer.pdf
index 3e09a1100..55b5015e4 100644
Binary files a/doc/Developers.pdf and b/doc/Developer.pdf differ
diff --git a/doc/Eqs/pair_gromacs.jpg b/doc/Eqs/pair_gromacs.jpg
index 1f7c06551..4902fe016 100644
Binary files a/doc/Eqs/pair_gromacs.jpg and b/doc/Eqs/pair_gromacs.jpg differ
diff --git a/doc/Eqs/pair_gromacs.tex b/doc/Eqs/pair_gromacs.tex
index c08ad59bd..e51ca0957 100644
--- a/doc/Eqs/pair_gromacs.tex
+++ b/doc/Eqs/pair_gromacs.tex
@@ -1,14 +1,14 @@
\documentstyle[12pt]{article}
\begin{document}
\begin{eqnarray*}
E_{LJ} & = & 4 \epsilon \left[ \left(\frac{\sigma}{r}\right)^{12} -
\left(\frac{\sigma}{r}\right)^6 \right] + S_{LJ}(r)
\qquad r < r_c \\
E_C & = & \frac{C q_i q_j}{\epsilon r} + S_C(r) \qquad r < r_c \\
-S(r) & = & 0 \qquad r < r_1 \\
-S(r) & = & A (r - r_1)^2 + B (r - r_1)^3 \qquad r_1 < r < r_c
+S(r) & = & C \qquad r < r_1 \\
+S(r) & = & \frac{A}{3} (r - r_1)^3 + \frac{B}{4} (r - r_1)^4 + C \qquad r_1 < r < r_c
\end{eqnarray*}
\end{document}
diff --git a/doc/Manual.html b/doc/Manual.html
index bb6be917c..abdc33945 100644
--- a/doc/Manual.html
+++ b/doc/Manual.html
@@ -1,331 +1,401 @@
<HTML>
<HEAD>
<TITLE>LAMMPS Users Manual</TITLE>
<META NAME="docnumber" CONTENT="Large-scale Atomic/Molecular Massively Parallel Simulator">
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
</HEAD>
<BODY>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H1></H1>
<CENTER><H3>LAMMPS Documentation
</H3></CENTER>
<H4>Version info:
</H4>
<P>The LAMMPS "version" is the date when it was released, such as 1 May
2010. LAMMPS is updated continuously. Whenever we fix a bug or add a
feature, we release it immediately, and post a notice on <A HREF = "http://lammps.sandia.gov/bug.html">this page of
the WWW site</A>. Each dated copy of LAMMPS contains all the
features and bug-fixes up to and including that version date. The
version date is printed to the screen and logfile every time you run
LAMMPS. It is also in the file src/version.h and in the LAMMPS
directory name created when you unpack a tarball.
</P>
<UL><LI>If you browse the HTML doc pages on the LAMMPS WWW site, they always
describe the most current version of LAMMPS.
<LI>If you browse the HTML doc pages included in your tarball, they
describe the version you have.
<LI>The <A HREF = "Manual.pdf">PDF file</A> on the WWW site or in the tarball is updated
about once per month. This is because it is large, and we don't want
it to be part of very patch.
-<LI>There is also a <A HREF = "Developers.pdf">Developers.pdf</A> file in the doc
+<LI>There is also a <A HREF = "Developer.pdf">Developer.pdf</A> file in the doc
directory, which describes the internal structure and algorithms of
LAMMPS.
</UL>
<P>LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel
Simulator.
</P>
<P>LAMMPS is a classical molecular dynamics simulation code designed to
run efficiently on parallel computers. It was developed at Sandia
National Laboratories, a US Department of Energy facility, with
funding from the DOE. It is an open-source code, distributed freely
under the terms of the GNU Public License (GPL).
</P>
<P>The primary developers of LAMMPS are <A HREF = "http://www.sandia.gov/~sjplimp">Steve Plimpton</A>, Aidan
Thompson, and Paul Crozier who can be contacted at
sjplimp,athomps,pscrozi at sandia.gov. The <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> at
http://lammps.sandia.gov has more information about the code and its
uses.
</P>
<HR>
<P>The LAMMPS documentation is organized into the following sections. If
you find errors or omissions in this manual or have suggestions for
useful information to add, please send an email to the developers so
we can improve the LAMMPS documentation.
</P>
<P>Once you are familiar with LAMMPS, you may want to bookmark <A HREF = "Section_commands.html#comm">this
page</A> at Section_commands.html#comm since
it gives quick access to documentation for all LAMMPS commands.
</P>
<P><A HREF = "Manual.pdf">PDF file</A> of the entire manual, generated by
<A HREF = "http://www.easysw.com/htmldoc">htmldoc</A>
</P>
<OL><LI><A HREF = "Section_intro.html">Introduction</A>
-<UL> 1.1 <A HREF = "Section_intro.html#1_1">What is LAMMPS</A>
+<UL> 1.1 <A HREF = "Section_intro.html#intro_1">What is LAMMPS</A>
<BR>
- 1.2 <A HREF = "Section_intro.html#1_2">LAMMPS features</A>
+ 1.2 <A HREF = "Section_intro.html#intro_2">LAMMPS features</A>
<BR>
- 1.3 <A HREF = "Section_intro.html#1_3">LAMMPS non-features</A>
+ 1.3 <A HREF = "Section_intro.html#intro_3">LAMMPS non-features</A>
<BR>
- 1.4 <A HREF = "Section_intro.html#1_4">Open source distribution</A>
+ 1.4 <A HREF = "Section_intro.html#intro_4">Open source distribution</A>
<BR>
- 1.5 <A HREF = "Section_intro.html#1_5">Acknowledgments and citations</A>
+ 1.5 <A HREF = "Section_intro.html#intro_5">Acknowledgments and citations</A>
<BR></UL>
<LI><A HREF = "Section_start.html">Getting started</A>
-<UL> 2.1 <A HREF = "Section_start.html#2_1">What's in the LAMMPS distribution</A>
+<UL> 2.1 <A HREF = "Section_start.html#start_1">What's in the LAMMPS distribution</A>
<BR>
- 2.2 <A HREF = "Section_start.html#2_2">Making LAMMPS</A>
+ 2.2 <A HREF = "Section_start.html#start_2">Making LAMMPS</A>
<BR>
- 2.3 <A HREF = "Section_start.html#2_3">Making LAMMPS with optional packages</A>
+ 2.3 <A HREF = "Section_start.html#start_3">Making LAMMPS with optional packages</A>
<BR>
- 2.4 <A HREF = "Section_start.html#2_4">Building LAMMPS as a library</A>
+ 2.4 <A HREF = "Section_start.html#start_4">Building LAMMPS as a library</A>
<BR>
- 2.5 <A HREF = "Section_start.html#2_5">Running LAMMPS</A>
+ 2.5 <A HREF = "Section_start.html#start_5">Running LAMMPS</A>
<BR>
- 2.6 <A HREF = "Section_start.html#2_6">Command-line options</A>
+ 2.6 <A HREF = "Section_start.html#start_6">Command-line options</A>
<BR>
- 2.7 <A HREF = "Section_start.html#2_7">Screen output</A>
+ 2.7 <A HREF = "Section_start.html#start_7">Screen output</A>
<BR>
- 2.8 <A HREF = "Section_start.html#2_8">Tips for users of previous versions</A>
+ 2.8 <A HREF = "2_8">Tips for users of previous versions</A>
<BR></UL>
<LI><A HREF = "Section_commands.html">Commands</A>
-<UL> 3.1 <A HREF = "Section_commands.html#3_1">LAMMPS input script</A>
+<UL> 3.1 <A HREF = "Section_commands.html#cmd_1">LAMMPS input script</A>
<BR>
- 3.2 <A HREF = "Section_commands.html#3_2">Parsing rules</A>
+ 3.2 <A HREF = "Section_commands.html#cmd_2">Parsing rules</A>
<BR>
- 3.3 <A HREF = "Section_commands.html#3_3">Input script structure</A>
+ 3.3 <A HREF = "Section_commands.html#cmd_3">Input script structure</A>
<BR>
- 3.4 <A HREF = "Section_commands.html#3_4">Commands listed by category</A>
+ 3.4 <A HREF = "Section_commands.html#cmd_4">Commands listed by category</A>
<BR>
- 3.5 <A HREF = "Section_commands.html#3_5">Commands listed alphabetically</A>
+ 3.5 <A HREF = "Section_commands.html#cmd_5">Commands listed alphabetically</A>
+<BR></UL>
+<LI><A HREF = "Section_packages.html">Packages</A>
+
+<UL> 4.1 <A HREF = "Section_packages.html#pkg_1">Standard packages</A>
+<BR>
+ 4.2 <A HREF = "Section_packages.html#pkg_2">User packages</A>
+<BR></UL>
+<LI><A HREF = "Section_accelerate.html">Using accelerated CPU and GPU styles</A>
+
+<UL> 5.1 <A HREF = "Section_accelerate.html#acc_1">OPT package</A>
+<BR>
+ 5.2 <A HREF = "Section_accelerate.html#acc_2">USER-OMP package</A>
+<BR>
+ 5.3 <A HREF = "Section_accelerate.html#acc_3">GPU package</A>
+<BR>
+ 5.4 <A HREF = "Section_accelerate.html#acc_4">USER-CUDA package</A>
+<BR>
+ 5.5 <A HREF = "Section_accelerate.html#acc_5">Comparison of GPU and USER-CUDA packages</A>
<BR></UL>
<LI><A HREF = "Section_howto.html">How-to discussions</A>
-<UL> 4.1 <A HREF = "Section_howto.html#4_1">Restarting a simulation</A>
+<UL> 6.1 <A HREF = "Section_howto.html#howto_1">Restarting a simulation</A>
<BR>
- 4.2 <A HREF = "Section_howto.html#4_2">2d simulations</A>
+ 6.2 <A HREF = "Section_howto.html#howto_2">2d simulations</A>
<BR>
- 4.3 <A HREF = "Section_howto.html#4_3">CHARMM and AMBER force fields</A>
+ 6.3 <A HREF = "Section_howto.html#howto_3">CHARMM and AMBER force fields</A>
<BR>
- 4.4 <A HREF = "Section_howto.html#4_4">Running multiple simulations from one input script</A>
+ 6.4 <A HREF = "Section_howto.html#howto_4">Running multiple simulations from one input script</A>
<BR>
- 4.5 <A HREF = "Section_howto.html#4_5">Multi-replica simulations</A>
+ 6.5 <A HREF = "Section_howto.html#howto_5">Multi-replica simulations</A>
<BR>
- 4.6 <A HREF = "Section_howto.html#4_6">Granular models</A>
+ 6.6 <A HREF = "Section_howto.html#howto_6">Granular models</A>
<BR>
- 4.7 <A HREF = "Section_howto.html#4_7">TIP3P water model</A>
+ 6.7 <A HREF = "Section_howto.html#howto_7">TIP3P water model</A>
<BR>
- 4.8 <A HREF = "Section_howto.html#4_8">TIP4P water model</A>
+ 6.8 <A HREF = "Section_howto.html#howto_8">TIP4P water model</A>
<BR>
- 4.9 <A HREF = "Section_howto.html#4_9">SPC water model</A>
+ 6.9 <A HREF = "Section_howto.html#howto_9">SPC water model</A>
<BR>
- 4.10 <A HREF = "Section_howto.html#4_10">Coupling LAMMPS to other codes</A>
+ 6.10 <A HREF = "Section_howto.html#howto_10">Coupling LAMMPS to other codes</A>
<BR>
- 4.11 <A HREF = "Section_howto.html#4_11">Visualizing LAMMPS snapshots</A>
+ 6.11 <A HREF = "Section_howto.html#howto_11">Visualizing LAMMPS snapshots</A>
<BR>
- 4.12 <A HREF = "Section_howto.html#4_12">Triclinic (non-orthogonal) simulation boxes</A>
+ 6.12 <A HREF = "Section_howto.html#howto_12">Triclinic (non-orthogonal) simulation boxes</A>
<BR>
- 4.13 <A HREF = "Section_howto.html#4_13">NEMD simulations</A>
+ 6.13 <A HREF = "Section_howto.html#howto_13">NEMD simulations</A>
<BR>
- 4.14 <A HREF = "Section_howto.html#4_14">Extended spherical and aspherical particles</A>
+ 6.14 <A HREF = "Section_howto.html#howto_14">Extended spherical and aspherical particles</A>
<BR>
- 4.15 <A HREF = "Section_howto.html#4_15">Output from LAMMPS (thermo, dumps, computes, fixes, variables)</A>
+ 6.15 <A HREF = "Section_howto.html#howto_15">Output from LAMMPS (thermo, dumps, computes, fixes, variables)</A>
<BR>
- 4.16 <A HREF = "Section_howto.html#4_16">Thermostatting, barostatting, and compute temperature</A>
+ 6.16 <A HREF = "Section_howto.html#howto_16">Thermostatting, barostatting, and compute temperature</A>
<BR>
- 4.17 <A HREF = "Section_howto.html#4_17">Walls</A>
+ 6.17 <A HREF = "Section_howto.html#howto_17">Walls</A>
<BR>
- 4.18 <A HREF = "Section_howto.html#4_18">Elastic constants</A>
+ 6.18 <A HREF = "Section_howto.html#howto_18">Elastic constants</A>
<BR>
- 4.19 <A HREF = "Section_howto.html#4_19">Library interface to LAMMPS</A>
+ 6.19 <A HREF = "Section_howto.html#howto_19">Library interface to LAMMPS</A>
<BR>
- 4.20 <A HREF = "Section_howto.html#4_20">Calculating thermal conductivity</A>
+ 6.20 <A HREF = "Section_howto.html#howto_20">Calculating thermal conductivity</A>
<BR>
- 4.21 <A HREF = "Section_howto.html#4_21">Calculating viscosity</A>
+ 6.21 <A HREF = "Section_howto.html#howto_21">Calculating viscosity</A>
<BR></UL>
<LI><A HREF = "Section_example.html">Example problems</A>
<LI><A HREF = "Section_perf.html">Performance & scalability</A>
<LI><A HREF = "Section_tools.html">Additional tools</A>
<LI><A HREF = "Section_modify.html">Modifying & extending LAMMPS</A>
-<LI><A HREF = "Section_python.html">Python interface</A>
-
-<UL> 9.1 <A HREF = "Section_python.html#9_1">Extending Python with a serial version of LAMMPS</A>
+<UL> 10.1 <A HREF = "Section_modify.html#mod_1">Atom styles</A>
+<BR>
+ 10.2 <A HREF = "Section_modify.html#mod_2">Bond, angle, dihedral, improper potentials</A>
+<BR>
+ 10.3 <A HREF = "Section_modify.html#mod_3">Compute styles</A>
+<BR>
+ 10.4 <A HREF = "Section_modify.html#mod_4">Dump styles</A>
<BR>
- 9.2 <A HREF = "Section_python.html#9_2">Creating a shared MPI library</A>
+ 10.5 <A HREF = "Section_modify.html#mod_5">Dump custom output options</A>
<BR>
- 9.3 <A HREF = "Section_python.html#9_3">Extending Python with a parallel version of LAMMPS</A>
+ 10.6 <A HREF = "Section_modify.html#mod_6">Fix styles</A>
<BR>
- 9.4 <A HREF = "Section_python.html#9_4">Extending Python with MPI</A>
+ 10.7 <A HREF = "Section_modify.html#mod_7">Input script commands</A>
<BR>
- 9.5 <A HREF = "Section_python.html#9_5">Testing the Python-LAMMPS interface</A>
+ 10.8 <A HREF = "Section_modify.html#mod_8">Kspace computations</A>
<BR>
- 9.6 <A HREF = "Section_python.html#9_6">Using LAMMPS from Python</A>
+ 10.9 <A HREF = "Section_modify.html#mod_9">Minimization styles</A>
<BR>
- 9.7 <A HREF = "Section_python.html#9_7">Example Python scripts that use LAMMPS</A>
+ 10.10 <A HREF = "Section_modify.html#mod_10">Pairwise potentials</A>
+<BR>
+ 10.11 <A HREF = "Section_modify.html#mod_11">Region styles</A>
+<BR>
+ 10.12 <A HREF = "Section_modify.html#mod_12">Thermodynamic output options</A>
+<BR>
+ 10.13 <A HREF = "Section_modify.html#mod_13">Variable options</A>
+<BR>
+ 10.14 <A HREF = "Section_modify.html#mod_14">Submitting new features for inclusion in LAMMPS</A>
<BR></UL>
-<LI><A HREF = "Section_accelerate.html">Using accelerated CPU and GPU styles</A>
+<LI><A HREF = "Section_python.html">Python interface</A>
-<UL> 10.1 <A HREF = "Section_accelerate.html#10_1">OPT package</A>
+<UL> 11.1 <A HREF = "Section_python.html#py_1">Extending Python with a serial version of LAMMPS</A>
+<BR>
+ 11.2 <A HREF = "Section_python.html#py_2">Creating a shared MPI library</A>
<BR>
- 10.2 <A HREF = "Section_accelerate.html#10_2">GPU package</A>
+ 11.3 <A HREF = "Section_python.html#py_3">Extending Python with a parallel version of LAMMPS</A>
<BR>
- 10.3 <A HREF = "Section_accelerate.html#10_3">USER-CUDA package</A>
+ 11.4 <A HREF = "Section_python.html#py_4">Extending Python with MPI</A>
<BR>
- 10.4 <A HREF = "Section_accelerate.html#10_4">Comparison of GPU and USER-CUDA packages</A>
+ 11.5 <A HREF = "Section_python.html#py_5">Testing the Python-LAMMPS interface</A>
+<BR>
+ 11.6 <A HREF = "Section_python.html#py_6">Using LAMMPS from Python</A>
+<BR>
+ 11.7 <A HREF = "Section_python.html#py_7">Example Python scripts that use LAMMPS</A>
<BR></UL>
<LI><A HREF = "Section_errors.html">Errors</A>
-<UL> 11.1 <A HREF = "Section_errors.html#11_1">Common problems</A>
+<UL> 12.1 <A HREF = "Section_errors.html#err_1">Common problems</A>
<BR>
- 11.2 <A HREF = "Section_errors.html#11_2">Reporting bugs</A>
+ 12.2 <A HREF = "Section_errors.html#err_2">Reporting bugs</A>
<BR>
- 11.3 <A HREF = "Section_errors.html#11_3">Error & warning messages</A>
+ 12.3 <A HREF = "Section_errors.html#err_3">Error & warning messages</A>
<BR></UL>
<LI><A HREF = "Section_history.html">Future and history</A>
-<UL> 12.1 <A HREF = "Section_history.html#12_1">Coming attractions</A>
+<UL> 13.1 <A HREF = "Section_history.html#hist_1">Coming attractions</A>
<BR>
- 12.2 <A HREF = "Section_history.html#12_2">Past versions</A>
+ 13.2 <A HREF = "Section_history.html#hist_2">Past versions</A>
<BR></UL>
</OL>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
</BODY>
</HTML>
diff --git a/doc/Manual.pdf b/doc/Manual.pdf
index 0f74628fa..b7029796d 100644
Binary files a/doc/Manual.pdf and b/doc/Manual.pdf differ
diff --git a/doc/Manual.txt b/doc/Manual.txt
index f3d15998c..457230649 100644
--- a/doc/Manual.txt
+++ b/doc/Manual.txt
@@ -1,211 +1,248 @@
<HEAD>
<TITLE>LAMMPS Users Manual</TITLE>
<META NAME="docnumber" CONTENT="Large-scale Atomic/Molecular Massively Parallel Simulator">
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
</HEAD>
<BODY>
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
<H1></H1>
LAMMPS Documentation :c,h3
Version info: :h4
The LAMMPS "version" is the date when it was released, such as 1 May
2010. LAMMPS is updated continuously. Whenever we fix a bug or add a
feature, we release it immediately, and post a notice on "this page of
the WWW site"_bug. Each dated copy of LAMMPS contains all the
features and bug-fixes up to and including that version date. The
version date is printed to the screen and logfile every time you run
LAMMPS. It is also in the file src/version.h and in the LAMMPS
directory name created when you unpack a tarball.
If you browse the HTML doc pages on the LAMMPS WWW site, they always
describe the most current version of LAMMPS. :ulb,l
If you browse the HTML doc pages included in your tarball, they
describe the version you have. :l
The "PDF file"_Manual.pdf on the WWW site or in the tarball is updated
about once per month. This is because it is large, and we don't want
it to be part of very patch. :l
-There is also a "Developers.pdf"_Developers.pdf file in the doc
+There is also a "Developer.pdf"_Developer.pdf file in the doc
directory, which describes the internal structure and algorithms of
LAMMPS. :ule,l
LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel
Simulator.
LAMMPS is a classical molecular dynamics simulation code designed to
run efficiently on parallel computers. It was developed at Sandia
National Laboratories, a US Department of Energy facility, with
funding from the DOE. It is an open-source code, distributed freely
under the terms of the GNU Public License (GPL).
The primary developers of LAMMPS are "Steve Plimpton"_sjp, Aidan
Thompson, and Paul Crozier who can be contacted at
sjplimp,athomps,pscrozi at sandia.gov. The "LAMMPS WWW Site"_lws at
http://lammps.sandia.gov has more information about the code and its
uses.
:link(bug,http://lammps.sandia.gov/bug.html)
:link(sjp,http://www.sandia.gov/~sjplimp)
:line
The LAMMPS documentation is organized into the following sections. If
you find errors or omissions in this manual or have suggestions for
useful information to add, please send an email to the developers so
we can improve the LAMMPS documentation.
Once you are familiar with LAMMPS, you may want to bookmark "this
page"_Section_commands.html#comm at Section_commands.html#comm since
it gives quick access to documentation for all LAMMPS commands.
"PDF file"_Manual.pdf of the entire manual, generated by
"htmldoc"_http://www.easysw.com/htmldoc
"Introduction"_Section_intro.html :olb,l
- 1.1 "What is LAMMPS"_1_1 :ulb,b
- 1.2 "LAMMPS features"_1_2 :b
- 1.3 "LAMMPS non-features"_1_3 :b
- 1.4 "Open source distribution"_1_4 :b
- 1.5 "Acknowledgments and citations"_1_5 :ule,b
+ 1.1 "What is LAMMPS"_intro_1 :ulb,b
+ 1.2 "LAMMPS features"_intro_2 :b
+ 1.3 "LAMMPS non-features"_intro_3 :b
+ 1.4 "Open source distribution"_intro_4 :b
+ 1.5 "Acknowledgments and citations"_intro_5 :ule,b
"Getting started"_Section_start.html :l
- 2.1 "What's in the LAMMPS distribution"_2_1 :ulb,b
- 2.2 "Making LAMMPS"_2_2 :b
- 2.3 "Making LAMMPS with optional packages"_2_3 :b
- 2.4 "Building LAMMPS as a library"_2_4 :b
- 2.5 "Running LAMMPS"_2_5 :b
- 2.6 "Command-line options"_2_6 :b
- 2.7 "Screen output"_2_7 :b
+ 2.1 "What's in the LAMMPS distribution"_start_1 :ulb,b
+ 2.2 "Making LAMMPS"_start_2 :b
+ 2.3 "Making LAMMPS with optional packages"_start_3 :b
+ 2.4 "Building LAMMPS as a library"_start_4 :b
+ 2.5 "Running LAMMPS"_start_5 :b
+ 2.6 "Command-line options"_start_6 :b
+ 2.7 "Screen output"_start_7 :b
2.8 "Tips for users of previous versions"_2_8 :ule,b
"Commands"_Section_commands.html :l
- 3.1 "LAMMPS input script"_3_1 :ulb,b
- 3.2 "Parsing rules"_3_2 :b
- 3.3 "Input script structure"_3_3 :b
- 3.4 "Commands listed by category"_3_4 :b
- 3.5 "Commands listed alphabetically"_3_5 :ule,b
+ 3.1 "LAMMPS input script"_cmd_1 :ulb,b
+ 3.2 "Parsing rules"_cmd_2 :b
+ 3.3 "Input script structure"_cmd_3 :b
+ 3.4 "Commands listed by category"_cmd_4 :b
+ 3.5 "Commands listed alphabetically"_cmd_5 :ule,b
+"Packages"_Section_packages.html :l
+ 4.1 "Standard packages"_pkg_1 :ulb,b
+ 4.2 "User packages"_pkg_2 :ule,b
+"Using accelerated CPU and GPU styles"_Section_accelerate.html :l
+ 5.1 "OPT package"_acc_1 :ulb,b
+ 5.2 "USER-OMP package"_acc_2 :b
+ 5.3 "GPU package"_acc_3 :b
+ 5.4 "USER-CUDA package"_acc_4 :b
+ 5.5 "Comparison of GPU and USER-CUDA packages"_acc_5 :ule,b
"How-to discussions"_Section_howto.html :l
- 4.1 "Restarting a simulation"_4_1 :ulb,b
- 4.2 "2d simulations"_4_2 :b
- 4.3 "CHARMM and AMBER force fields"_4_3 :b
- 4.4 "Running multiple simulations from one input script"_4_4 :b
- 4.5 "Multi-replica simulations"_4_5 :b
- 4.6 "Granular models"_4_6 :b
- 4.7 "TIP3P water model"_4_7 :b
- 4.8 "TIP4P water model"_4_8 :b
- 4.9 "SPC water model"_4_9 :b
- 4.10 "Coupling LAMMPS to other codes"_4_10 :b
- 4.11 "Visualizing LAMMPS snapshots"_4_11 :b
- 4.12 "Triclinic (non-orthogonal) simulation boxes"_4_12 :b
- 4.13 "NEMD simulations"_4_13 :b
- 4.14 "Extended spherical and aspherical particles"_4_14 :b
- 4.15 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_4_15 :b
- 4.16 "Thermostatting, barostatting, and compute temperature"_4_16 :b
- 4.17 "Walls"_4_17 :b
- 4.18 "Elastic constants"_4_18 :b
- 4.19 "Library interface to LAMMPS"_4_19 :b
- 4.20 "Calculating thermal conductivity"_4_20 :b
- 4.21 "Calculating viscosity"_4_21 :ule,b
+ 6.1 "Restarting a simulation"_howto_1 :ulb,b
+ 6.2 "2d simulations"_howto_2 :b
+ 6.3 "CHARMM and AMBER force fields"_howto_3 :b
+ 6.4 "Running multiple simulations from one input script"_howto_4 :b
+ 6.5 "Multi-replica simulations"_howto_5 :b
+ 6.6 "Granular models"_howto_6 :b
+ 6.7 "TIP3P water model"_howto_7 :b
+ 6.8 "TIP4P water model"_howto_8 :b
+ 6.9 "SPC water model"_howto_9 :b
+ 6.10 "Coupling LAMMPS to other codes"_howto_10 :b
+ 6.11 "Visualizing LAMMPS snapshots"_howto_11 :b
+ 6.12 "Triclinic (non-orthogonal) simulation boxes"_howto_12 :b
+ 6.13 "NEMD simulations"_howto_13 :b
+ 6.14 "Extended spherical and aspherical particles"_howto_14 :b
+ 6.15 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_howto_15 :b
+ 6.16 "Thermostatting, barostatting, and compute temperature"_howto_16 :b
+ 6.17 "Walls"_howto_17 :b
+ 6.18 "Elastic constants"_howto_18 :b
+ 6.19 "Library interface to LAMMPS"_howto_19 :b
+ 6.20 "Calculating thermal conductivity"_howto_20 :b
+ 6.21 "Calculating viscosity"_howto_21 :ule,b
"Example problems"_Section_example.html :l
"Performance & scalability"_Section_perf.html :l
"Additional tools"_Section_tools.html :l
"Modifying & extending LAMMPS"_Section_modify.html :l
+ 10.1 "Atom styles"_mod_1 :ulb,b
+ 10.2 "Bond, angle, dihedral, improper potentials"_mod_2 :b
+ 10.3 "Compute styles"_mod_3 :b
+ 10.4 "Dump styles"_mod_4 :b
+ 10.5 "Dump custom output options"_mod_5 :b
+ 10.6 "Fix styles"_mod_6 :b
+ 10.7 "Input script commands"_mod_7 :b
+ 10.8 "Kspace computations"_mod_8 :b
+ 10.9 "Minimization styles"_mod_9 :b
+ 10.10 "Pairwise potentials"_mod_10 :b
+ 10.11 "Region styles"_mod_11 :b
+ 10.12 "Thermodynamic output options"_mod_12 :b
+ 10.13 "Variable options"_mod_13 :b
+ 10.14 "Submitting new features for inclusion in LAMMPS"_mod_14 :ule,b
"Python interface"_Section_python.html :l
- 9.1 "Extending Python with a serial version of LAMMPS"_9_1 :ulb,b
- 9.2 "Creating a shared MPI library"_9_2 :b
- 9.3 "Extending Python with a parallel version of LAMMPS"_9_3 :b
- 9.4 "Extending Python with MPI"_9_4 :b
- 9.5 "Testing the Python-LAMMPS interface"_9_5 :b
- 9.6 "Using LAMMPS from Python"_9_6 :b
- 9.7 "Example Python scripts that use LAMMPS"_9_7 :ule,b
-"Using accelerated CPU and GPU styles"_Section_accelerate.html :l
- 10.1 "OPT package"_10_1 :ulb,b
- 10.2 "GPU package"_10_2 :b
- 10.3 "USER-CUDA package"_10_3 :b
- 10.4 "Comparison of GPU and USER-CUDA packages"_10_4 :ule,b
+ 11.1 "Extending Python with a serial version of LAMMPS"_py_1 :ulb,b
+ 11.2 "Creating a shared MPI library"_py_2 :b
+ 11.3 "Extending Python with a parallel version of LAMMPS"_py_3 :b
+ 11.4 "Extending Python with MPI"_py_4 :b
+ 11.5 "Testing the Python-LAMMPS interface"_py_5 :b
+ 11.6 "Using LAMMPS from Python"_py_6 :b
+ 11.7 "Example Python scripts that use LAMMPS"_py_7 :ule,b
"Errors"_Section_errors.html :l
- 11.1 "Common problems"_11_1 :ulb,b
- 11.2 "Reporting bugs"_11_2 :b
- 11.3 "Error & warning messages"_11_3 :ule,b
+ 12.1 "Common problems"_err_1 :ulb,b
+ 12.2 "Reporting bugs"_err_2 :b
+ 12.3 "Error & warning messages"_err_3 :ule,b
"Future and history"_Section_history.html :l
- 12.1 "Coming attractions"_12_1 :ulb,b
- 12.2 "Past versions"_12_2 :ule,b
+ 13.1 "Coming attractions"_hist_1 :ulb,b
+ 13.2 "Past versions"_hist_2 :ule,b
:ole
-:link(1_1,Section_intro.html#1_1)
-:link(1_2,Section_intro.html#1_2)
-:link(1_3,Section_intro.html#1_3)
-:link(1_4,Section_intro.html#1_4)
-:link(1_5,Section_intro.html#1_5)
-
-:link(2_1,Section_start.html#2_1)
-:link(2_2,Section_start.html#2_2)
-:link(2_3,Section_start.html#2_3)
-:link(2_4,Section_start.html#2_4)
-:link(2_5,Section_start.html#2_5)
-:link(2_6,Section_start.html#2_6)
-:link(2_7,Section_start.html#2_7)
-:link(2_8,Section_start.html#2_8)
-
-:link(3_1,Section_commands.html#3_1)
-:link(3_2,Section_commands.html#3_2)
-:link(3_3,Section_commands.html#3_3)
-:link(3_4,Section_commands.html#3_4)
-:link(3_5,Section_commands.html#3_5)
-
-:link(4_1,Section_howto.html#4_1)
-:link(4_2,Section_howto.html#4_2)
-:link(4_3,Section_howto.html#4_3)
-:link(4_4,Section_howto.html#4_4)
-:link(4_5,Section_howto.html#4_5)
-:link(4_6,Section_howto.html#4_6)
-:link(4_7,Section_howto.html#4_7)
-:link(4_8,Section_howto.html#4_8)
-:link(4_9,Section_howto.html#4_9)
-:link(4_10,Section_howto.html#4_10)
-:link(4_11,Section_howto.html#4_11)
-:link(4_12,Section_howto.html#4_12)
-:link(4_13,Section_howto.html#4_13)
-:link(4_14,Section_howto.html#4_14)
-:link(4_15,Section_howto.html#4_15)
-:link(4_16,Section_howto.html#4_16)
-:link(4_17,Section_howto.html#4_17)
-:link(4_18,Section_howto.html#4_18)
-:link(4_19,Section_howto.html#4_19)
-:link(4_20,Section_howto.html#4_20)
-:link(4_21,Section_howto.html#4_21)
-
-:link(9_1,Section_python.html#9_1)
-:link(9_2,Section_python.html#9_2)
-:link(9_3,Section_python.html#9_3)
-:link(9_4,Section_python.html#9_4)
-:link(9_5,Section_python.html#9_5)
-:link(9_6,Section_python.html#9_6)
-:link(9_7,Section_python.html#9_7)
-
-:link(10_1,Section_accelerate.html#10_1)
-:link(10_2,Section_accelerate.html#10_2)
-:link(10_3,Section_accelerate.html#10_3)
-:link(10_4,Section_accelerate.html#10_4)
-
-:link(11_1,Section_errors.html#11_1)
-:link(11_2,Section_errors.html#11_2)
-:link(11_3,Section_errors.html#11_3)
-
-:link(12_1,Section_history.html#12_1)
-:link(12_2,Section_history.html#12_2)
+:link(intro_1,Section_intro.html#intro_1)
+:link(intro_2,Section_intro.html#intro_2)
+:link(intro_3,Section_intro.html#intro_3)
+:link(intro_4,Section_intro.html#intro_4)
+:link(intro_5,Section_intro.html#intro_5)
+
+:link(start_1,Section_start.html#start_1)
+:link(start_2,Section_start.html#start_2)
+:link(start_3,Section_start.html#start_3)
+:link(start_4,Section_start.html#start_4)
+:link(start_5,Section_start.html#start_5)
+:link(start_6,Section_start.html#start_6)
+:link(start_7,Section_start.html#start_7)
+:link(start_8,Section_start.html#start_8)
+
+:link(cmd_1,Section_commands.html#cmd_1)
+:link(cmd_2,Section_commands.html#cmd_2)
+:link(cmd_3,Section_commands.html#cmd_3)
+:link(cmd_4,Section_commands.html#cmd_4)
+:link(cmd_5,Section_commands.html#cmd_5)
+
+:link(pkg_1,Section_packages.html#pkg_1)
+:link(pkg_2,Section_packages.html#pkg_2)
+
+:link(acc_1,Section_accelerate.html#acc_1)
+:link(acc_2,Section_accelerate.html#acc_2)
+:link(acc_3,Section_accelerate.html#acc_3)
+:link(acc_4,Section_accelerate.html#acc_4)
+:link(acc_5,Section_accelerate.html#acc_5)
+
+:link(howto_1,Section_howto.html#howto_1)
+:link(howto_2,Section_howto.html#howto_2)
+:link(howto_3,Section_howto.html#howto_3)
+:link(howto_4,Section_howto.html#howto_4)
+:link(howto_5,Section_howto.html#howto_5)
+:link(howto_6,Section_howto.html#howto_6)
+:link(howto_7,Section_howto.html#howto_7)
+:link(howto_8,Section_howto.html#howto_8)
+:link(howto_9,Section_howto.html#howto_9)
+:link(howto_10,Section_howto.html#howto_10)
+:link(howto_11,Section_howto.html#howto_11)
+:link(howto_12,Section_howto.html#howto_12)
+:link(howto_13,Section_howto.html#howto_13)
+:link(howto_14,Section_howto.html#howto_14)
+:link(howto_15,Section_howto.html#howto_15)
+:link(howto_16,Section_howto.html#howto_16)
+:link(howto_17,Section_howto.html#howto_17)
+:link(howto_18,Section_howto.html#howto_18)
+:link(howto_19,Section_howto.html#howto_19)
+:link(howto_20,Section_howto.html#howto_20)
+:link(howto_21,Section_howto.html#howto_21)
+
+:link(mod_1,Section_modify.html#mod_1)
+:link(mod_2,Section_modify.html#mod_2)
+:link(mod_3,Section_modify.html#mod_3)
+:link(mod_4,Section_modify.html#mod_4)
+:link(mod_5,Section_modify.html#mod_5)
+:link(mod_6,Section_modify.html#mod_6)
+:link(mod_7,Section_modify.html#mod_7)
+:link(mod_8,Section_modify.html#mod_8)
+:link(mod_9,Section_modify.html#mod_9)
+:link(mod_10,Section_modify.html#mod_10)
+:link(mod_11,Section_modify.html#mod_11)
+:link(mod_12,Section_modify.html#mod_12)
+:link(mod_13,Section_modify.html#mod_13)
+:link(mod_14,Section_modify.html#mod_14)
+
+:link(py_1,Section_python.html#py_1)
+:link(py_2,Section_python.html#py_2)
+:link(py_3,Section_python.html#py_3)
+:link(py_4,Section_python.html#py_4)
+:link(py_5,Section_python.html#py_5)
+:link(py_6,Section_python.html#py_6)
+:link(py_7,Section_python.html#py_7)
+
+:link(err_1,Section_errors.html#err_1)
+:link(err_2,Section_errors.html#err_2)
+:link(err_3,Section_errors.html#err_3)
+
+:link(hist_1,Section_history.html#hist_1)
+:link(hist_2,Section_history.html#hist_2)
</BODY>
diff --git a/doc/Section_accelerate.html b/doc/Section_accelerate.html
index 3cee8b43a..bdbc463ba 100644
--- a/doc/Section_accelerate.html
+++ b/doc/Section_accelerate.html
@@ -1,534 +1,534 @@
<HTML>
-<CENTER><A HREF = "Section_python.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> -
-<A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_errors.html">Next
+<CENTER><A HREF = "Section_packages.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> -
+<A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_howto.html">Next
Section</A>
</CENTER>
<HR>
-<H3>10. Using accelerated CPU and GPU styles
+<H3>5. Using accelerated CPU and GPU styles
</H3>
<P>Accelerated versions of various <A HREF = "pair_style.html">pair_style</A>,
<A HREF = "fix.html">fixes</A>, <A HREF = "compute.html">computes</A>, and other commands have
been added to LAMMPS, which will typically run faster than the
standard non-accelerated versions, if you have the appropriate
hardware on your system.
</P>
<P>The accelerated styles have the same name as the standard styles,
except that a suffix is appended. Otherwise, the syntax for the
command is identical, their functionality is the same, and the
numerical results it produces should also be identical, except for
precision and round-off issues.
</P>
<P>For example, all of these variants of the basic Lennard-Jones pair
style exist in LAMMPS:
</P>
<UL><LI><A HREF = "pair_lj.html">pair_style lj/cut</A>
<LI><A HREF = "pair_lj.html">pair_style lj/cut/opt</A>
<LI><A HREF = "pair_lj.html">pair_style lj/cut/omp</A>
<LI><A HREF = "pair_lj.html">pair_style lj/cut/gpu</A>
<LI><A HREF = "pair_lj.html">pair_style lj/cut/cuda</A>
</UL>
<P>Assuming you have built LAMMPS with the appropriate package, these
styles can be invoked by specifying them explicitly in your input
-script. Or you can use the <A HREF = "Section_start.html#2_6">-suffix command-line
+script. Or you can use the <A HREF = "Section_start.html#start_6">-suffix command-line
switch</A> to invoke the accelerated versions
automatically, without changing your input script. The
<A HREF = "suffix.html">suffix</A> command allows you to set a suffix explicitly and
to turn off/on the comand-line switch setting, both from within your
input script.
</P>
<P>Styles with an "opt" suffix are part of the OPT package and typically
speed-up the pairwise calculations of your simulation by 5-25%.
</P>
<P>Styles with an "omp" suffix are part of the USER-OMP package and allow
a pair-style to be run in threaded mode using OpenMP. This can be
useful on nodes with high-core counts when using less MPI processes
than cores is advantageous, e.g. when running with PPPM so that FFTs
are run on fewer MPI processors.
</P>
<P>Styles with a "gpu" or "cuda" suffix are part of the GPU or USER-CUDA
packages, and can be run on NVIDIA GPUs associated with your CPUs.
The speed-up due to GPU usage depends on a variety of factors, as
discussed below.
</P>
<P>To see what styles are currently available in each of the accelerated
-packages, see <A HREF = "Section_commands.html#3_5">this section</A> of the manual.
-A list of accelerated styles is included in the pair, fix, compute,
-and kspace sections.
+packages, see <A HREF = "Section_commands.html#cmd_5">this section</A> of the
+manual. A list of accelerated styles is included in the pair, fix,
+compute, and kspace sections.
</P>
<P>The following sections explain:
</P>
<UL><LI>what hardware and software the accelerated styles require
<LI>how to build LAMMPS with the accelerated packages in place
<LI>what changes (if any) are needed in your input scripts
<LI>guidelines for best performance
<LI>speed-ups you can expect
</UL>
<P>The final section compares and contrasts the GPU and USER-CUDA
packages, since they are both designed to use NVIDIA GPU hardware.
</P>
-10.1 <A HREF = "#10_1">OPT package</A><BR>
-10.2 <A HREF = "#10_2">USER-OMP package</A><BR>
-10.3 <A HREF = "#10_3">GPU package</A><BR>
-10.4 <A HREF = "#10_4">USER-CUDA package</A><BR>
-10.5 <A HREF = "#10_4">Comparison of GPU and USER-CUDA packages</A> <BR>
+5.1 <A HREF = "#acc_1">OPT package</A><BR>
+5.2 <A HREF = "#acc_2">USER-OMP package</A><BR>
+5.3 <A HREF = "#acc_3">GPU package</A><BR>
+5.4 <A HREF = "#acc_4">USER-CUDA package</A><BR>
+5.5 <A HREF = "#acc_5">Comparison of GPU and USER-CUDA packages</A> <BR>
<HR>
<HR>
-<H4><A NAME = "10_1"></A>10.1 OPT package
+<H4><A NAME = "acc_1"></A>5.1 OPT package
</H4>
<P>The OPT package was developed by James Fischer (High Performance
Technologies), David Richie, and Vincent Natoli (Stone Ridge
Technologies). It contains a handful of pair styles whose compute()
methods were rewritten in C++ templated form to reduce the overhead
due to if tests and other conditional code.
</P>
<P>The procedure for building LAMMPS with the OPT package is simple. It
is the same as for any other package which has no additional library
dependencies:
</P>
<PRE>make yes-opt
make machine
</PRE>
<P>If your input script uses one of the OPT pair styles,
you can run it as follows:
</P>
<PRE>lmp_machine -sf opt < in.script
mpirun -np 4 lmp_machine -sf opt < in.script
</PRE>
<P>You should see a reduction in the "Pair time" printed out at the end
of the run. On most machines and problems, this will typically be a 5
to 20% savings.
</P>
<HR>
<HR>
-<H4><A NAME = "10_2"></A>10.2 USER-OMP package
+<H4><A NAME = "acc_2"></A>5.2 USER-OMP package
</H4>
<P>This section will be written when the USER-OMP package is released
in main LAMMPS.
</P>
<HR>
<HR>
-<H4><A NAME = "10_3"></A>10.3 GPU package
+<H4><A NAME = "acc_3"></A>5.3 GPU package
</H4>
<P>The GPU package was developed by Mike Brown at ORNL. It provides GPU
versions of several pair styles and for long-range Coulombics via the
PPPM command. It has the following features:
</P>
<UL><LI>The package is designed to exploit common GPU hardware configurations
where one or more GPUs are coupled with many cores of a multi-core
CPUs, e.g. within a node of a parallel machine.
<LI>Atom-based data (e.g. coordinates, forces) moves back-and-forth
between the CPU(s) and GPU every timestep.
<LI>Neighbor lists can be constructed on the CPU or on the GPU
<LI>The charge assignement and force interpolation portions of PPPM can be
run on the GPU. The FFT portion, which requires MPI communication
between processors, runs on the CPU.
<LI>Asynchronous force computations can be performed simultaneously on the
CPU(s) and GPU.
<LI>LAMMPS-specific code is in the GPU package. It makes calls to a
generic GPU library in the lib/gpu directory. This library provides
NVIDIA support as well as more general OpenCL support, so that the
same functionality can eventually be supported on a variety of GPU
hardware.
</UL>
<P><B>Hardware and software requirements:</B>
</P>
<P>To use this package, you currently need to have specific NVIDIA
hardware and install specific NVIDIA CUDA software on your system:
</P>
<UL><LI>Check if you have an NVIDIA card: cat /proc/driver/nvidia/cards/0
<LI>Go to http://www.nvidia.com/object/cuda_get.html
<LI>Install a driver and toolkit appropriate for your system (SDK is not necessary)
<LI>Follow the instructions in lammps/lib/gpu/README to build the library (see below)
<LI>Run lammps/lib/gpu/nvc_get_devices to list supported devices and properties
</UL>
<P><B>Building LAMMPS with the GPU package:</B>
</P>
<P>As with other packages that include a separately compiled library, you
need to first build the GPU library, before building LAMMPS itself.
-General instructions for doing this are in <A HREF = "doc/Section_start.html#2_3">this
-section</A> of the manual. For this package,
-do the following, using a Makefile in lib/gpu appropriate for your
-system:
+General instructions for doing this are in <A HREF = "doc/Section_start.html#start_3">this
+section</A> of the manual. For this
+package, do the following, using a Makefile in lib/gpu appropriate for
+your system:
</P>
<PRE>cd lammps/lib/gpu
make -f Makefile.linux
(see further instructions in lammps/lib/gpu/README)
</PRE>
<P>If you are successful, you will produce the file lib/libgpu.a.
</P>
<P>Now you are ready to build LAMMPS with the GPU package installed:
</P>
<PRE>cd lammps/src
make yes-gpu
make machine
</PRE>
<P>Note that the lo-level Makefile (e.g. src/MAKE/Makefile.linux) has
these settings: gpu_SYSINC, gpu_SYSLIB, gpu_SYSPATH. These need to be
set appropriately to include the paths and settings for the CUDA
system software on your machine. See src/MAKE/Makefile.g++ for an
example.
</P>
<P><B>GPU configuration</B>
</P>
<P>When using GPUs, you are restricted to one physical GPU per LAMMPS
process, which is an MPI process running on a single core or
processor. Multiple MPI processes (CPU cores) can share a single GPU,
and in many cases it will be more efficient to run this way.
</P>
<P><B>Input script requirements:</B>
</P>
<P>Additional input script requirements to run pair or PPPM styles with a
<I>gpu</I> suffix are as follows:
</P>
<UL><LI>To invoke specific styles from the GPU package, you can either append
"gpu" to the style name (e.g. pair_style lj/cut/gpu), or use the
-<A HREF = "Section_start.html#2_6">-suffix command-line switch</A>, or use the
+<A HREF = "Section_start.html#start_6">-suffix command-line switch</A>, or use the
<A HREF = "suffix.html">suffix</A> command.
<LI>The <A HREF = "newton.html">newton pair</A> setting must be <I>off</I>.
<LI>The <A HREF = "package.html">package gpu</A> command must be used near the beginning
of your script to control the GPU selection and initialization
settings. It also has an option to enable asynchronous splitting of
force computations between the CPUs and GPUs.
</UL>
<P>As an example, if you have two GPUs per node and 8 CPU cores per node,
and would like to run on 4 nodes (32 cores) with dynamic balancing of
force calculation across CPU and GPU cores, you could specify
</P>
<PRE>package gpu force/neigh 0 1 -1
</PRE>
<P>In this case, all CPU cores and GPU devices on the nodes would be
utilized. Each GPU device would be shared by 4 CPU cores. The CPU
cores would perform force calculations for some fraction of the
particles at the same time the GPUs performed force calculation for
the other particles.
</P>
<P><B>Timing output:</B>
</P>
<P>As described by the <A HREF = "package.html">package gpu</A> command, GPU
accelerated pair styles can perform computations asynchronously with
CPU computations. The "Pair" time reported by LAMMPS will be the
maximum of the time required to complete the CPU pair style
computations and the time required to complete the GPU pair style
computations. Any time spent for GPU-enabled pair styles for
computations that run simultaneously with <A HREF = "bond_style.html">bond</A>,
<A HREF = "angle_style.html">angle</A>, <A HREF = "dihedral_style.html">dihedral</A>,
<A HREF = "improper_style.html">improper</A>, and <A HREF = "kspace_style.html">long-range</A>
calculations will not be included in the "Pair" time.
</P>
<P>When the <I>mode</I> setting for the package gpu command is force/neigh,
the time for neighbor list calculations on the GPU will be added into
the "Pair" time, not the "Neigh" time. An additional breakdown of the
times required for various tasks on the GPU (data copy, neighbor
calculations, force computations, etc) are output only with the LAMMPS
screen output (not in the log file) at the end of each run. These
timings represent total time spent on the GPU for each routine,
regardless of asynchronous CPU calculations.
</P>
<P><B>Performance tips:</B>
</P>
<P>Generally speaking, for best performance, you should use multiple CPUs
per GPU, as provided my most multi-core CPU/GPU configurations.
</P>
<P>Because of the large number of cores within each GPU device, it may be
more efficient to run on fewer processes per GPU when the number of
particles per MPI process is small (100's of particles); this can be
necessary to keep the GPU cores busy.
</P>
<P>See the lammps/lib/gpu/README file for instructions on how to build
the GPU library for single, mixed, or double precision. The latter
requires that your GPU card support double precision.
</P>
<HR>
<HR>
-<H4><A NAME = "10_4"></A>10.4 USER-CUDA package
+<H4><A NAME = "acc_4"></A>5.4 USER-CUDA package
</H4>
<P>The USER-CUDA package was developed by Christian Trott at U Technology
Ilmenau in Germany. It provides NVIDIA GPU versions of many pair
styles, many fixes, a few computes, and for long-range Coulombics via
the PPPM command. It has the following features:
</P>
<UL><LI>The package is designed to allow an entire LAMMPS calculation, for
many timesteps, to run entirely on the GPU (except for inter-processor
MPI communication), so that atom-based data (e.g. coordinates, forces)
do not have to move back-and-forth between the CPU and GPU.
<LI>Data will stay on the GPU until a timestep where a non-GPU-ized fix or
compute is invoked. Whenever a non-GPU operation occurs (fix,
compute, output), data automatically moves back to the CPU as needed.
This may incur a performance penalty, but should otherwise work
transparently.
<LI>Neighbor lists for GPU-ized pair styles are constructed on the
GPU.
<LI>The package only supports use of a single CPU (core) with each
GPU.
</UL>
<P><B>Hardware and software requirements:</B>
</P>
<P>To use this package, you need to have specific NVIDIA hardware and
install specific NVIDIA CUDA software on your system.
</P>
<P>Your NVIDIA GPU needs to support Compute Capability 1.3. This list may
help you to find out the Compute Capability of your card:
</P>
<P>http://en.wikipedia.org/wiki/Comparison_of_Nvidia_graphics_processing_units
</P>
<P>Install the Nvidia Cuda Toolkit in version 3.2 or higher and the
corresponding GPU drivers. The Nvidia Cuda SDK is not required for
LAMMPSCUDA but we recommend it be installed. You can then make sure
that its sample projects can be compiled without problems.
</P>
<P><B>Building LAMMPS with the USER-CUDA package:</B>
</P>
<P>As with other packages that include a separately compiled library, you
need to first build the USER-CUDA library, before building LAMMPS
-itself. General instructions for doing this are in <A HREF = "doc/Section_start.html#2_3">this
-section</A> of the manual. For this package,
-do the following, using settings in the lib/cuda Makefiles appropriate
-for your system:
+itself. General instructions for doing this are in <A HREF = "doc/Section_start.html#start_3">this
+section</A> of the manual. For this
+package, do the following, using settings in the lib/cuda Makefiles
+appropriate for your system:
</P>
<UL><LI>Go to the lammps/lib/cuda directory
<LI>If your <I>CUDA</I> toolkit is not installed in the default system directoy
<I>/usr/local/cuda</I> edit the file <I>lib/cuda/Makefile.common</I>
accordingly.
<LI>Type "make OPTIONS", where <I>OPTIONS</I> are one or more of the following
options. The settings will be written to the
<I>lib/cuda/Makefile.defaults</I> and used in the next step.
<PRE><I>precision=N</I> to set the precision level
N = 1 for single precision (default)
N = 2 for double precision
N = 3 for positions in double precision
N = 4 for positions and velocities in double precision
<I>arch=M</I> to set GPU compute capability
M = 20 for CC2.0 (GF100/110, e.g. C2050,GTX580,GTX470) (default)
M = 21 for CC2.1 (GF104/114, e.g. GTX560, GTX460, GTX450)
M = 13 for CC1.3 (GF200, e.g. C1060, GTX285)
<I>prec_timer=0/1</I> to use hi-precision timers
0 = do not use them (default)
1 = use these timers
this is usually only useful for Mac machines
<I>dbg=0/1</I> to activate debug mode
0 = no debug mode (default)
1 = yes debug mode
this is only useful for developers
<I>cufft=1</I> to determine usage of CUDA FFT library
0 = no CUFFT support (default)
in the future other CUDA-enabled FFT libraries might be supported
</PRE>
<LI>Type "make" to build the library. If you are successful, you will
produce the file lib/libcuda.a.
</UL>
<P>Now you are ready to build LAMMPS with the USER-CUDA package installed:
</P>
<PRE>cd lammps/src
make yes-user-cuda
make machine
</PRE>
<P>Note that the LAMMPS build references the lib/cuda/Makefile.common
file to extract setting specific CUDA settings. So it is important
that you have first built the cuda library (in lib/cuda) using
settings appropriate to your system.
</P>
<P><B>Input script requirements:</B>
</P>
<P>Additional input script requirements to run styles with a <I>cuda</I>
suffix are as follows:
</P>
<UL><LI>To invoke specific styles from the USER-CUDA package, you can either
append "cuda" to the style name (e.g. pair_style lj/cut/cuda), or use
-the <A HREF = "Section_start.html#2_6">-suffix command-line switch</A>, or use the
-<A HREF = "suffix.html">suffix</A> command. One exception is that the <A HREF = "kspace_style.html">kspace_style
-pppm/cuda</A> command has to be requested
+the <A HREF = "Section_start.html#start_6">-suffix command-line switch</A>, or use
+the <A HREF = "suffix.html">suffix</A> command. One exception is that the
+<A HREF = "kspace_style.html">kspace_style pppm/cuda</A> command has to be requested
explicitly.
<LI>To use the USER-CUDA package with its default settings, no additional
command is needed in your input script. This is because when LAMMPS
starts up, it detects if it has been built with the USER-CUDA package.
-See the <A HREF = "Section_start.html#2_6">-cuda command-line switch</A> for more
-details.
+See the <A HREF = "Section_start.html#start_6">-cuda command-line switch</A> for
+more details.
<LI>To change settings for the USER-CUDA package at run-time, the <A HREF = "package.html">package
cuda</A> command can be used near the beginning of your
input script. See the <A HREF = "package.html">package</A> command doc page for
details.
</UL>
<P><B>Performance tips:</B>
</P>
<P>The USER-CUDA package offers more speed-up relative to CPU performance
when the number of atoms per GPU is large, e.g. on the order of tens
or hundreds of 1000s.
</P>
<P>As noted above, this package will continue to run a simulation
entirely on the GPU(s) (except for inter-processor MPI communication),
for multiple timesteps, until a CPU calculation is required, either by
a fix or compute that is non-GPU-ized, or until output is performed
(thermo or dump snapshot or restart file). The less often this
occurs, the faster your simulation will run.
</P>
<HR>
<HR>
-<H4><A NAME = "10_5"></A>10.5 Comparison of GPU and USER-CUDA packages
+<H4><A NAME = "acc_5"></A>5.5 Comparison of GPU and USER-CUDA packages
</H4>
<P>Both the GPU and USER-CUDA packages accelerate a LAMMPS calculation
using NVIDIA hardware, but they do it in different ways.
</P>
<P>As a consequence, for a particular simulation on specific hardware,
one package may be faster than the other. We give guidelines below,
but the best way to determine which package is faster for your input
script is to try both of them on your machine. See the benchmarking
section below for examples where this has been done.
</P>
<P><B>Guidelines for using each package optimally:</B>
</P>
<UL><LI>The GPU package allows you to assign multiple CPUs (cores) to a single
GPU (a common configuration for "hybrid" nodes that contain multicore
CPU(s) and GPU(s)) and works effectively in this mode. The USER-CUDA
package does not allow this; you can only use one CPU per GPU.
<LI>The GPU package moves per-atom data (coordinates, forces)
back-and-forth between the CPU and GPU every timestep. The USER-CUDA
package only does this on timesteps when a CPU calculation is required
(e.g. to invoke a fix or compute that is non-GPU-ized). Hence, if you
can formulate your input script to only use GPU-ized fixes and
computes, and avoid doing I/O too often (thermo output, dump file
snapshots, restart files), then the data transfer cost of the
USER-CUDA package can be very low, causing it to run faster than the
GPU package.
<LI>The GPU package is often faster than the USER-CUDA package, if the
number of atoms per GPU is "small". The crossover point, in terms of
atoms/GPU at which the USER-CUDA package becomes faster depends
strongly on the pair style. For example, for a simple Lennard Jones
system the crossover (in single precision) is often about 50K-100K
atoms per GPU. When performing double precision calculations the
crossover point can be significantly smaller.
<LI>Both packages compute bonded interactions (bonds, angles, etc) on the
CPU. This means a model with bonds will force the USER-CUDA package
to transfer per-atom data back-and-forth between the CPU and GPU every
timestep. If the GPU package is running with several MPI processes
assigned to one GPU, the cost of computing the bonded interactions is
spread across more CPUs and hence the GPU package can run faster.
<LI>When using the GPU package with multiple CPUs assigned to one GPU, its
performance depends to some extent on high bandwidth between the CPUs
and the GPU. Hence its performance is affected if full 16 PCIe lanes
are not available for each GPU. In HPC environments this can be the
case if S2050/70 servers are used, where two devices generally share
one PCIe 2.0 16x slot. Also many multi-GPU mainboards do not provide
full 16 lanes to each of the PCIe 2.0 16x slots.
</UL>
<P><B>Differences between the two packages:</B>
</P>
<UL><LI>The GPU package accelerates only pair force, neighbor list, and PPPM
calculations. The USER-CUDA package currently supports a wider range
of pair styles and can also accelerate many fix styles and some
compute styles, as well as neighbor list and PPPM calculations.
<LI>The GPU package uses more GPU memory than the USER-CUDA package. This
is generally not a problem since typical runs are computation-limited
rather than memory-limited.
</UL>
<P><B>Examples:</B>
</P>
<P>The LAMMPS distribution has two directories with sample input scripts
for the GPU and USER-CUDA packages.
</P>
<UL><LI>lammps/examples/gpu = GPU package files
<LI>lammps/examples/USER/cuda = USER-CUDA package files
</UL>
<P>These contain input scripts for identical systems, so they can be used
to benchmark the performance of both packages on your system.
</P>
<HR>
<P><B>Benchmark data:</B>
</P>
<P>NOTE: We plan to add some benchmark results and plots here for the
examples described in the previous section.
</P>
<P>Simulations:
</P>
<P>1. Lennard Jones
</P>
<UL><LI>256,000 atoms
<LI>2.5 A cutoff
<LI>0.844 density
</UL>
<P>2. Lennard Jones
</P>
<UL><LI>256,000 atoms
<LI>5.0 A cutoff
<LI>0.844 density
</UL>
<P>3. Rhodopsin model
</P>
<UL><LI>256,000 atoms
<LI>10A cutoff
<LI>Coulomb via PPPM
</UL>
<P>4. Lihtium-Phosphate
</P>
<UL><LI>295650 atoms
<LI>15A cutoff
<LI>Coulomb via PPPM
</UL>
<P>Hardware:
</P>
<P>Workstation:
</P>
<UL><LI>2x GTX470
<LI>i7 950@3GHz
<LI>24Gb DDR3 @ 1066Mhz
<LI>CentOS 5.5
<LI>CUDA 3.2
<LI>Driver 260.19.12
</UL>
<P>eStella:
</P>
<UL><LI>6 Nodes
<LI>2xC2050
<LI>2xQDR Infiniband interconnect(aggregate bandwidth 80GBps)
<LI>Intel X5650 HexCore @ 2.67GHz
<LI>SL 5.5
<LI>CUDA 3.2
<LI>Driver 260.19.26
</UL>
<P>Keeneland:
</P>
<UL><LI>HP SL-390 (Ariston) cluster
<LI>120 nodes
<LI>2x Intel Westmere hex-core CPUs
<LI>3xC2070s
<LI>QDR InfiniBand interconnect
</UL>
</HTML>
diff --git a/doc/Section_accelerate.txt b/doc/Section_accelerate.txt
index f18745e31..30eefba2f 100644
--- a/doc/Section_accelerate.txt
+++ b/doc/Section_accelerate.txt
@@ -1,524 +1,524 @@
-"Previous Section"_Section_python.html - "LAMMPS WWW Site"_lws -
+"Previous Section"_Section_packages.html - "LAMMPS WWW Site"_lws -
"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
-Section"_Section_errors.html :c
+Section"_Section_howto.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
-10. Using accelerated CPU and GPU styles :h3
+5. Using accelerated CPU and GPU styles :h3
Accelerated versions of various "pair_style"_pair_style.html,
"fixes"_fix.html, "computes"_compute.html, and other commands have
been added to LAMMPS, which will typically run faster than the
standard non-accelerated versions, if you have the appropriate
hardware on your system.
The accelerated styles have the same name as the standard styles,
except that a suffix is appended. Otherwise, the syntax for the
command is identical, their functionality is the same, and the
numerical results it produces should also be identical, except for
precision and round-off issues.
For example, all of these variants of the basic Lennard-Jones pair
style exist in LAMMPS:
"pair_style lj/cut"_pair_lj.html
"pair_style lj/cut/opt"_pair_lj.html
"pair_style lj/cut/omp"_pair_lj.html
"pair_style lj/cut/gpu"_pair_lj.html
"pair_style lj/cut/cuda"_pair_lj.html :ul
Assuming you have built LAMMPS with the appropriate package, these
styles can be invoked by specifying them explicitly in your input
script. Or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 to invoke the accelerated versions
+switch"_Section_start.html#start_6 to invoke the accelerated versions
automatically, without changing your input script. The
"suffix"_suffix.html command allows you to set a suffix explicitly and
to turn off/on the comand-line switch setting, both from within your
input script.
Styles with an "opt" suffix are part of the OPT package and typically
speed-up the pairwise calculations of your simulation by 5-25%.
Styles with an "omp" suffix are part of the USER-OMP package and allow
a pair-style to be run in threaded mode using OpenMP. This can be
useful on nodes with high-core counts when using less MPI processes
than cores is advantageous, e.g. when running with PPPM so that FFTs
are run on fewer MPI processors.
Styles with a "gpu" or "cuda" suffix are part of the GPU or USER-CUDA
packages, and can be run on NVIDIA GPUs associated with your CPUs.
The speed-up due to GPU usage depends on a variety of factors, as
discussed below.
To see what styles are currently available in each of the accelerated
-packages, see "this section"_Section_commands.html#3_5 of the manual.
-A list of accelerated styles is included in the pair, fix, compute,
-and kspace sections.
+packages, see "this section"_Section_commands.html#cmd_5 of the
+manual. A list of accelerated styles is included in the pair, fix,
+compute, and kspace sections.
The following sections explain:
what hardware and software the accelerated styles require
how to build LAMMPS with the accelerated packages in place
what changes (if any) are needed in your input scripts
guidelines for best performance
speed-ups you can expect :ul
The final section compares and contrasts the GPU and USER-CUDA
packages, since they are both designed to use NVIDIA GPU hardware.
-10.1 "OPT package"_#10_1
-10.2 "USER-OMP package"_#10_2
-10.3 "GPU package"_#10_3
-10.4 "USER-CUDA package"_#10_4
-10.5 "Comparison of GPU and USER-CUDA packages"_#10_4 :all(b)
+5.1 "OPT package"_#acc_1
+5.2 "USER-OMP package"_#acc_2
+5.3 "GPU package"_#acc_3
+5.4 "USER-CUDA package"_#acc_4
+5.5 "Comparison of GPU and USER-CUDA packages"_#acc_5 :all(b)
:line
:line
-10.1 OPT package :h4,link(10_1)
+5.1 OPT package :h4,link(acc_1)
The OPT package was developed by James Fischer (High Performance
Technologies), David Richie, and Vincent Natoli (Stone Ridge
Technologies). It contains a handful of pair styles whose compute()
methods were rewritten in C++ templated form to reduce the overhead
due to if tests and other conditional code.
The procedure for building LAMMPS with the OPT package is simple. It
is the same as for any other package which has no additional library
dependencies:
make yes-opt
make machine :pre
If your input script uses one of the OPT pair styles,
you can run it as follows:
lmp_machine -sf opt < in.script
mpirun -np 4 lmp_machine -sf opt < in.script :pre
You should see a reduction in the "Pair time" printed out at the end
of the run. On most machines and problems, this will typically be a 5
to 20% savings.
:line
:line
-10.2 USER-OMP package :h4,link(10_2)
+5.2 USER-OMP package :h4,link(acc_2)
This section will be written when the USER-OMP package is released
in main LAMMPS.
:line
:line
-10.3 GPU package :h4,link(10_3)
+5.3 GPU package :h4,link(acc_3)
The GPU package was developed by Mike Brown at ORNL. It provides GPU
versions of several pair styles and for long-range Coulombics via the
PPPM command. It has the following features:
The package is designed to exploit common GPU hardware configurations
where one or more GPUs are coupled with many cores of a multi-core
CPUs, e.g. within a node of a parallel machine. :ulb,l
Atom-based data (e.g. coordinates, forces) moves back-and-forth
between the CPU(s) and GPU every timestep. :l
Neighbor lists can be constructed on the CPU or on the GPU :l
The charge assignement and force interpolation portions of PPPM can be
run on the GPU. The FFT portion, which requires MPI communication
between processors, runs on the CPU. :l
Asynchronous force computations can be performed simultaneously on the
CPU(s) and GPU. :l
LAMMPS-specific code is in the GPU package. It makes calls to a
generic GPU library in the lib/gpu directory. This library provides
NVIDIA support as well as more general OpenCL support, so that the
same functionality can eventually be supported on a variety of GPU
hardware. :l,ule
[Hardware and software requirements:]
To use this package, you currently need to have specific NVIDIA
hardware and install specific NVIDIA CUDA software on your system:
Check if you have an NVIDIA card: cat /proc/driver/nvidia/cards/0
Go to http://www.nvidia.com/object/cuda_get.html
Install a driver and toolkit appropriate for your system (SDK is not necessary)
Follow the instructions in lammps/lib/gpu/README to build the library (see below)
Run lammps/lib/gpu/nvc_get_devices to list supported devices and properties :ul
[Building LAMMPS with the GPU package:]
As with other packages that include a separately compiled library, you
need to first build the GPU library, before building LAMMPS itself.
General instructions for doing this are in "this
-section"_doc/Section_start.html#2_3 of the manual. For this package,
-do the following, using a Makefile in lib/gpu appropriate for your
-system:
+section"_doc/Section_start.html#start_3 of the manual. For this
+package, do the following, using a Makefile in lib/gpu appropriate for
+your system:
cd lammps/lib/gpu
make -f Makefile.linux
(see further instructions in lammps/lib/gpu/README) :pre
If you are successful, you will produce the file lib/libgpu.a.
Now you are ready to build LAMMPS with the GPU package installed:
cd lammps/src
make yes-gpu
make machine :pre
Note that the lo-level Makefile (e.g. src/MAKE/Makefile.linux) has
these settings: gpu_SYSINC, gpu_SYSLIB, gpu_SYSPATH. These need to be
set appropriately to include the paths and settings for the CUDA
system software on your machine. See src/MAKE/Makefile.g++ for an
example.
[GPU configuration]
When using GPUs, you are restricted to one physical GPU per LAMMPS
process, which is an MPI process running on a single core or
processor. Multiple MPI processes (CPU cores) can share a single GPU,
and in many cases it will be more efficient to run this way.
[Input script requirements:]
Additional input script requirements to run pair or PPPM styles with a
{gpu} suffix are as follows:
To invoke specific styles from the GPU package, you can either append
"gpu" to the style name (e.g. pair_style lj/cut/gpu), or use the
-"-suffix command-line switch"_Section_start.html#2_6, or use the
+"-suffix command-line switch"_Section_start.html#start_6, or use the
"suffix"_suffix.html command. :ulb,l
The "newton pair"_newton.html setting must be {off}. :l
The "package gpu"_package.html command must be used near the beginning
of your script to control the GPU selection and initialization
settings. It also has an option to enable asynchronous splitting of
force computations between the CPUs and GPUs. :l,ule
As an example, if you have two GPUs per node and 8 CPU cores per node,
and would like to run on 4 nodes (32 cores) with dynamic balancing of
force calculation across CPU and GPU cores, you could specify
package gpu force/neigh 0 1 -1 :pre
In this case, all CPU cores and GPU devices on the nodes would be
utilized. Each GPU device would be shared by 4 CPU cores. The CPU
cores would perform force calculations for some fraction of the
particles at the same time the GPUs performed force calculation for
the other particles.
[Timing output:]
As described by the "package gpu"_package.html command, GPU
accelerated pair styles can perform computations asynchronously with
CPU computations. The "Pair" time reported by LAMMPS will be the
maximum of the time required to complete the CPU pair style
computations and the time required to complete the GPU pair style
computations. Any time spent for GPU-enabled pair styles for
computations that run simultaneously with "bond"_bond_style.html,
"angle"_angle_style.html, "dihedral"_dihedral_style.html,
"improper"_improper_style.html, and "long-range"_kspace_style.html
calculations will not be included in the "Pair" time.
When the {mode} setting for the package gpu command is force/neigh,
the time for neighbor list calculations on the GPU will be added into
the "Pair" time, not the "Neigh" time. An additional breakdown of the
times required for various tasks on the GPU (data copy, neighbor
calculations, force computations, etc) are output only with the LAMMPS
screen output (not in the log file) at the end of each run. These
timings represent total time spent on the GPU for each routine,
regardless of asynchronous CPU calculations.
[Performance tips:]
Generally speaking, for best performance, you should use multiple CPUs
per GPU, as provided my most multi-core CPU/GPU configurations.
Because of the large number of cores within each GPU device, it may be
more efficient to run on fewer processes per GPU when the number of
particles per MPI process is small (100's of particles); this can be
necessary to keep the GPU cores busy.
See the lammps/lib/gpu/README file for instructions on how to build
the GPU library for single, mixed, or double precision. The latter
requires that your GPU card support double precision.
:line
:line
-10.4 USER-CUDA package :h4,link(10_4)
+5.4 USER-CUDA package :h4,link(acc_4)
The USER-CUDA package was developed by Christian Trott at U Technology
Ilmenau in Germany. It provides NVIDIA GPU versions of many pair
styles, many fixes, a few computes, and for long-range Coulombics via
the PPPM command. It has the following features:
The package is designed to allow an entire LAMMPS calculation, for
many timesteps, to run entirely on the GPU (except for inter-processor
MPI communication), so that atom-based data (e.g. coordinates, forces)
do not have to move back-and-forth between the CPU and GPU. :ulb,l
Data will stay on the GPU until a timestep where a non-GPU-ized fix or
compute is invoked. Whenever a non-GPU operation occurs (fix,
compute, output), data automatically moves back to the CPU as needed.
This may incur a performance penalty, but should otherwise work
transparently. :l
Neighbor lists for GPU-ized pair styles are constructed on the
GPU. :l
The package only supports use of a single CPU (core) with each
GPU. :l,ule
[Hardware and software requirements:]
To use this package, you need to have specific NVIDIA hardware and
install specific NVIDIA CUDA software on your system.
Your NVIDIA GPU needs to support Compute Capability 1.3. This list may
help you to find out the Compute Capability of your card:
http://en.wikipedia.org/wiki/Comparison_of_Nvidia_graphics_processing_units
Install the Nvidia Cuda Toolkit in version 3.2 or higher and the
corresponding GPU drivers. The Nvidia Cuda SDK is not required for
LAMMPSCUDA but we recommend it be installed. You can then make sure
that its sample projects can be compiled without problems.
[Building LAMMPS with the USER-CUDA package:]
As with other packages that include a separately compiled library, you
need to first build the USER-CUDA library, before building LAMMPS
itself. General instructions for doing this are in "this
-section"_doc/Section_start.html#2_3 of the manual. For this package,
-do the following, using settings in the lib/cuda Makefiles appropriate
-for your system:
+section"_doc/Section_start.html#start_3 of the manual. For this
+package, do the following, using settings in the lib/cuda Makefiles
+appropriate for your system:
Go to the lammps/lib/cuda directory :ulb,l
If your {CUDA} toolkit is not installed in the default system directoy
{/usr/local/cuda} edit the file {lib/cuda/Makefile.common}
accordingly. :l
Type "make OPTIONS", where {OPTIONS} are one or more of the following
options. The settings will be written to the
{lib/cuda/Makefile.defaults} and used in the next step. :l
{precision=N} to set the precision level
N = 1 for single precision (default)
N = 2 for double precision
N = 3 for positions in double precision
N = 4 for positions and velocities in double precision
{arch=M} to set GPU compute capability
M = 20 for CC2.0 (GF100/110, e.g. C2050,GTX580,GTX470) (default)
M = 21 for CC2.1 (GF104/114, e.g. GTX560, GTX460, GTX450)
M = 13 for CC1.3 (GF200, e.g. C1060, GTX285)
{prec_timer=0/1} to use hi-precision timers
0 = do not use them (default)
1 = use these timers
this is usually only useful for Mac machines
{dbg=0/1} to activate debug mode
0 = no debug mode (default)
1 = yes debug mode
this is only useful for developers
{cufft=1} to determine usage of CUDA FFT library
0 = no CUFFT support (default)
in the future other CUDA-enabled FFT libraries might be supported :pre
Type "make" to build the library. If you are successful, you will
produce the file lib/libcuda.a. :l,ule
Now you are ready to build LAMMPS with the USER-CUDA package installed:
cd lammps/src
make yes-user-cuda
make machine :pre
Note that the LAMMPS build references the lib/cuda/Makefile.common
file to extract setting specific CUDA settings. So it is important
that you have first built the cuda library (in lib/cuda) using
settings appropriate to your system.
[Input script requirements:]
Additional input script requirements to run styles with a {cuda}
suffix are as follows:
To invoke specific styles from the USER-CUDA package, you can either
append "cuda" to the style name (e.g. pair_style lj/cut/cuda), or use
-the "-suffix command-line switch"_Section_start.html#2_6, or use the
-"suffix"_suffix.html command. One exception is that the "kspace_style
-pppm/cuda"_kspace_style.html command has to be requested
+the "-suffix command-line switch"_Section_start.html#start_6, or use
+the "suffix"_suffix.html command. One exception is that the
+"kspace_style pppm/cuda"_kspace_style.html command has to be requested
explicitly. :ulb,l
To use the USER-CUDA package with its default settings, no additional
command is needed in your input script. This is because when LAMMPS
starts up, it detects if it has been built with the USER-CUDA package.
-See the "-cuda command-line switch"_Section_start.html#2_6 for more
-details. :l
+See the "-cuda command-line switch"_Section_start.html#start_6 for
+more details. :l
To change settings for the USER-CUDA package at run-time, the "package
cuda"_package.html command can be used near the beginning of your
input script. See the "package"_package.html command doc page for
details. :l,ule
[Performance tips:]
The USER-CUDA package offers more speed-up relative to CPU performance
when the number of atoms per GPU is large, e.g. on the order of tens
or hundreds of 1000s.
As noted above, this package will continue to run a simulation
entirely on the GPU(s) (except for inter-processor MPI communication),
for multiple timesteps, until a CPU calculation is required, either by
a fix or compute that is non-GPU-ized, or until output is performed
(thermo or dump snapshot or restart file). The less often this
occurs, the faster your simulation will run.
:line
:line
-10.5 Comparison of GPU and USER-CUDA packages :h4,link(10_5)
+5.5 Comparison of GPU and USER-CUDA packages :h4,link(acc_5)
Both the GPU and USER-CUDA packages accelerate a LAMMPS calculation
using NVIDIA hardware, but they do it in different ways.
As a consequence, for a particular simulation on specific hardware,
one package may be faster than the other. We give guidelines below,
but the best way to determine which package is faster for your input
script is to try both of them on your machine. See the benchmarking
section below for examples where this has been done.
[Guidelines for using each package optimally:]
The GPU package allows you to assign multiple CPUs (cores) to a single
GPU (a common configuration for "hybrid" nodes that contain multicore
CPU(s) and GPU(s)) and works effectively in this mode. The USER-CUDA
package does not allow this; you can only use one CPU per GPU. :ulb,l
The GPU package moves per-atom data (coordinates, forces)
back-and-forth between the CPU and GPU every timestep. The USER-CUDA
package only does this on timesteps when a CPU calculation is required
(e.g. to invoke a fix or compute that is non-GPU-ized). Hence, if you
can formulate your input script to only use GPU-ized fixes and
computes, and avoid doing I/O too often (thermo output, dump file
snapshots, restart files), then the data transfer cost of the
USER-CUDA package can be very low, causing it to run faster than the
GPU package. :l
The GPU package is often faster than the USER-CUDA package, if the
number of atoms per GPU is "small". The crossover point, in terms of
atoms/GPU at which the USER-CUDA package becomes faster depends
strongly on the pair style. For example, for a simple Lennard Jones
system the crossover (in single precision) is often about 50K-100K
atoms per GPU. When performing double precision calculations the
crossover point can be significantly smaller. :l
Both packages compute bonded interactions (bonds, angles, etc) on the
CPU. This means a model with bonds will force the USER-CUDA package
to transfer per-atom data back-and-forth between the CPU and GPU every
timestep. If the GPU package is running with several MPI processes
assigned to one GPU, the cost of computing the bonded interactions is
spread across more CPUs and hence the GPU package can run faster. :l
When using the GPU package with multiple CPUs assigned to one GPU, its
performance depends to some extent on high bandwidth between the CPUs
and the GPU. Hence its performance is affected if full 16 PCIe lanes
are not available for each GPU. In HPC environments this can be the
case if S2050/70 servers are used, where two devices generally share
one PCIe 2.0 16x slot. Also many multi-GPU mainboards do not provide
full 16 lanes to each of the PCIe 2.0 16x slots. :l,ule
[Differences between the two packages:]
The GPU package accelerates only pair force, neighbor list, and PPPM
calculations. The USER-CUDA package currently supports a wider range
of pair styles and can also accelerate many fix styles and some
compute styles, as well as neighbor list and PPPM calculations. :ulb,l
The GPU package uses more GPU memory than the USER-CUDA package. This
is generally not a problem since typical runs are computation-limited
rather than memory-limited. :l,ule
[Examples:]
The LAMMPS distribution has two directories with sample input scripts
for the GPU and USER-CUDA packages.
lammps/examples/gpu = GPU package files
lammps/examples/USER/cuda = USER-CUDA package files :ul
These contain input scripts for identical systems, so they can be used
to benchmark the performance of both packages on your system.
:line
[Benchmark data:]
NOTE: We plan to add some benchmark results and plots here for the
examples described in the previous section.
Simulations:
1. Lennard Jones
256,000 atoms
2.5 A cutoff
0.844 density :ul
2. Lennard Jones
256,000 atoms
5.0 A cutoff
0.844 density :ul
3. Rhodopsin model
256,000 atoms
10A cutoff
Coulomb via PPPM :ul
4. Lihtium-Phosphate
295650 atoms
15A cutoff
Coulomb via PPPM :ul
Hardware:
Workstation:
2x GTX470
i7 950@3GHz
24Gb DDR3 @ 1066Mhz
CentOS 5.5
CUDA 3.2
Driver 260.19.12 :ul
eStella:
6 Nodes
2xC2050
2xQDR Infiniband interconnect(aggregate bandwidth 80GBps)
Intel X5650 HexCore @ 2.67GHz
SL 5.5
CUDA 3.2
Driver 260.19.26 :ul
Keeneland:
HP SL-390 (Ariston) cluster
120 nodes
2x Intel Westmere hex-core CPUs
3xC2070s
QDR InfiniBand interconnect :ul
diff --git a/doc/Section_commands.html b/doc/Section_commands.html
index 3671b787b..eb16907d2 100644
--- a/doc/Section_commands.html
+++ b/doc/Section_commands.html
@@ -1,557 +1,565 @@
<HTML>
-<CENTER><A HREF = "Section_start.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_howto.html">Next Section</A>
+<CENTER><A HREF = "Section_start.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_packages.html">Next Section</A>
</CENTER>
<HR>
<H3>3. Commands
</H3>
<P>This section describes how a LAMMPS input script is formatted and what
commands are used to define a LAMMPS simulation.
</P>
-3.1 <A HREF = "#3_1">LAMMPS input script</A><BR>
-3.2 <A HREF = "#3_2">Parsing rules</A><BR>
-3.3 <A HREF = "#3_3">Input script structure</A><BR>
-3.4 <A HREF = "#3_4">Commands listed by category</A><BR>
-3.5 <A HREF = "#3_5">Commands listed alphabetically</A> <BR>
+3.1 <A HREF = "#cmd_1">LAMMPS input script</A><BR>
+3.2 <A HREF = "#cmd_2">Parsing rules</A><BR>
+3.3 <A HREF = "#cmd_3">Input script structure</A><BR>
+3.4 <A HREF = "#cmd_4">Commands listed by category</A><BR>
+3.5 <A HREF = "#cmd_5">Commands listed alphabetically</A> <BR>
<HR>
-<A NAME = "3_1"></A><H4>3.1 LAMMPS input script
+<A NAME = "cmd_1"></A><H4>3.1 LAMMPS input script
</H4>
<P>LAMMPS executes by reading commands from a input script (text file),
one line at a time. When the input script ends, LAMMPS exits. Each
command causes LAMMPS to take some action. It may set an internal
variable, read in a file, or run a simulation. Most commands have
default settings, which means you only need to use the command if you
wish to change the default.
</P>
<P>In many cases, the ordering of commands in an input script is not
important. However the following rules apply:
</P>
<P>(1) LAMMPS does not read your entire input script and then perform a
simulation with all the settings. Rather, the input script is read
one line at a time and each command takes effect when it is read.
Thus this sequence of commands:
</P>
<PRE>timestep 0.5
run 100
run 100
</PRE>
<P>does something different than this sequence:
</P>
<PRE>run 100
timestep 0.5
run 100
</PRE>
<P>In the first case, the specified timestep (0.5 fmsec) is used for two
simulations of 100 timesteps each. In the 2nd case, the default
timestep (1.0 fmsec) is used for the 1st 100 step simulation and a 0.5
fmsec timestep is used for the 2nd one.
</P>
<P>(2) Some commands are only valid when they follow other commands. For
example you cannot set the temperature of a group of atoms until atoms
have been defined and a group command is used to define which atoms
belong to the group.
</P>
<P>(3) Sometimes command B will use values that can be set by command A.
This means command A must precede command B in the input script if it
is to have the desired effect. For example, the
<A HREF = "read_data.html">read_data</A> command initializes the system by setting
up the simulation box and assigning atoms to processors. If default
values are not desired, the <A HREF = "processors.html">processors</A> and
<A HREF = "boundary.html">boundary</A> commands need to be used before read_data to
tell LAMMPS how to map processors to the simulation box.
</P>
<P>Many input script errors are detected by LAMMPS and an ERROR or
WARNING message is printed. <A HREF = "Section_errors.html">This section</A> gives
more information on what errors mean. The documentation for each
command lists restrictions on how the command can be used.
</P>
<HR>
-<A NAME = "3_2"></A><H4>3.2 Parsing rules
+<A NAME = "cmd_2"></A><H4>3.2 Parsing rules
</H4>
<P>Each non-blank line in the input script is treated as a command.
LAMMPS commands are case sensitive. Command names are lower-case, as
are specified command arguments. Upper case letters may be used in
file names or user-chosen ID strings.
</P>
<P>Here is how each line in the input script is parsed by LAMMPS:
</P>
<P>(1) If the last printable character on the line is a "&" character
(with no surrounding quotes), the command is assumed to continue on
the next line. The next line is concatenated to the previous line by
removing the "&" character and newline. This allows long commands to
be continued across two or more lines.
</P>
<P>(2) All characters from the first "#" character onward are treated as
comment and discarded. See an exception in (6). Note that a
comment after a trailing "&" character will prevent the command from
continuing on the next line. Also note that for multi-line commands a
single leading "#" will comment out the entire command.
</P>
<P>(3) The line is searched repeatedly for $ characters, which indicate
variables that are replaced with a text string. See an exception in
(6). If the $ is followed by curly brackets, then the variable name
is the text inside the curly brackets. If no curly brackets follow
the $, then the variable name is the single character immediately
following the $. Thus ${myTemp} and $x refer to variable names
"myTemp" and "x". See the <A HREF = "variable.html">variable</A> command for
details of how strings are assigned to variables and how they are
substituted for in input script commands.
</P>
<P>(4) The line is broken into "words" separated by whitespace (tabs,
spaces). Note that words can thus contain letters, digits,
underscores, or punctuation characters.
</P>
<P>(5) The first word is the command name. All successive words in the
line are arguments.
</P>
<P>(6) If you want text with spaces to be treated as a single argument,
it can be enclosed in either double or single quotes. E.g.
</P>
<PRE>print "Volume = $v"
print 'Volume = $v'
</PRE>
<P>The quotes are removed when the single argument is stored internally.
See the <A HREF = "dump_modify.html">dump modify format</A> or <A HREF = "if.html">if</A> commands
for examples. A "#" or "$" character that is between quotes will not
be treated as a comment indicator in (2) or substituted for as a
variable in (3).
</P>
<P>IMPORTANT NOTE: If the argument is itself a command that requires a
quoted argument (e.g. using a <A HREF = "print.html">print</A> command as part of an
<A HREF = "if.html">if</A> or <A HREF = "run.html">run every</A> command), then the double and
single quotes can be nested in the usual manner. See the doc pages
for those commands for examples. Only one of level of nesting is
allowed, but that should be sufficient for most use cases.
</P>
<HR>
-<H4><A NAME = "3_3"></A>3.3 Input script structure
+<H4><A NAME = "cmd_3"></A>3.3 Input script structure
</H4>
<P>This section describes the structure of a typical LAMMPS input script.
The "examples" directory in the LAMMPS distribution contains many
sample input scripts; the corresponding problems are discussed in
<A HREF = "Section_example.html">this section</A>, and animated on the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW
Site</A>.
</P>
<P>A LAMMPS input script typically has 4 parts:
</P>
<OL><LI>Initialization
<LI>Atom definition
<LI>Settings
<LI>Run a simulation
</OL>
<P>The last 2 parts can be repeated as many times as desired. I.e. run a
simulation, change some settings, run some more, etc. Each of the 4
parts is now described in more detail. Remember that almost all the
commands need only be used if a non-default value is desired.
</P>
<P>(1) Initialization
</P>
<P>Set parameters that need to be defined before atoms are created or
read-in from a file.
</P>
<P>The relevant commands are <A HREF = "units.html">units</A>,
<A HREF = "dimension.html">dimension</A>, <A HREF = "newton.html">newton</A>,
<A HREF = "processors.html">processors</A>, <A HREF = "boundary.html">boundary</A>,
<A HREF = "atom_style.html">atom_style</A>, <A HREF = "atom_modify.html">atom_modify</A>.
</P>
<P>If force-field parameters appear in the files that will be read, these
commands tell LAMMPS what kinds of force fields are being used:
<A HREF = "pair_style.html">pair_style</A>, <A HREF = "bond_style.html">bond_style</A>,
<A HREF = "angle_style.html">angle_style</A>, <A HREF = "dihedral_style.html">dihedral_style</A>,
<A HREF = "improper_style.html">improper_style</A>.
</P>
<P>(2) Atom definition
</P>
<P>There are 3 ways to define atoms in LAMMPS. Read them in from a data
or restart file via the <A HREF = "read_data.html">read_data</A> or
<A HREF = "read_restart.html">read_restart</A> commands. These files can contain
molecular topology information. Or create atoms on a lattice (with no
molecular topology), using these commands: <A HREF = "lattice.html">lattice</A>,
<A HREF = "region.html">region</A>, <A HREF = "create_box.html">create_box</A>,
<A HREF = "create_atoms.html">create_atoms</A>. The entire set of atoms can be
duplicated to make a larger simulation using the
<A HREF = "replicate.html">replicate</A> command.
</P>
<P>(3) Settings
</P>
<P>Once atoms and molecular topology are defined, a variety of settings
can be specified: force field coefficients, simulation parameters,
output options, etc.
</P>
<P>Force field coefficients are set by these commands (they can also be
set in the read-in files): <A HREF = "pair_coeff.html">pair_coeff</A>,
<A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "angle_coeff.html">angle_coeff</A>,
<A HREF = "dihedral_coeff.html">dihedral_coeff</A>,
<A HREF = "improper_coeff.html">improper_coeff</A>,
<A HREF = "kspace_style.html">kspace_style</A>, <A HREF = "dielectric.html">dielectric</A>,
<A HREF = "special_bonds.html">special_bonds</A>.
</P>
<P>Various simulation parameters are set by these commands:
<A HREF = "neighbor.html">neighbor</A>, <A HREF = "neigh_modify.html">neigh_modify</A>,
<A HREF = "group.html">group</A>, <A HREF = "timestep.html">timestep</A>,
<A HREF = "reset_timestep.html">reset_timestep</A>, <A HREF = "run_style.html">run_style</A>,
<A HREF = "min_style.html">min_style</A>, <A HREF = "min_modify.html">min_modify</A>.
</P>
<P>Fixes impose a variety of boundary conditions, time integration, and
diagnostic options. The <A HREF = "fix.html">fix</A> command comes in many flavors.
</P>
<P>Various computations can be specified for execution during a
simulation using the <A HREF = "compute.html">compute</A>,
<A HREF = "compute_modify.html">compute_modify</A>, and <A HREF = "variable.html">variable</A>
commands.
</P>
<P>Output options are set by the <A HREF = "thermo.html">thermo</A>, <A HREF = "dump.html">dump</A>,
and <A HREF = "restart.html">restart</A> commands.
</P>
<P>(4) Run a simulation
</P>
<P>A molecular dynamics simulation is run using the <A HREF = "run.html">run</A>
command. Energy minimization (molecular statics) is performed using
the <A HREF = "minimize.html">minimize</A> command. A parallel tempering
(replica-exchange) simulation can be run using the
<A HREF = "temper.html">temper</A> command.
</P>
<HR>
-<A NAME = "3_4"></A><H4>3.4 Commands listed by category
+<A NAME = "cmd_4"></A><H4>3.4 Commands listed by category
</H4>
<P>This section lists all LAMMPS commands, grouped by category. The
-<A HREF = "#3_5">next section</A> lists the same commands alphabetically. Note that
-some style options for some commands are part of specific LAMMPS
+<A HREF = "#cmd_5">next section</A> lists the same commands alphabetically. Note
+that some style options for some commands are part of specific LAMMPS
packages, which means they cannot be used unless the package was
included when LAMMPS was built. Not all packages are included in a
default LAMMPS build. These dependencies are listed as Restrictions
in the command's documentation.
</P>
<P>Initialization:
</P>
<P><A HREF = "atom_modify.html">atom_modify</A>, <A HREF = "atom_style.html">atom_style</A>,
<A HREF = "boundary.html">boundary</A>, <A HREF = "dimension.html">dimension</A>,
<A HREF = "newton.html">newton</A>, <A HREF = "processors.html">processors</A>, <A HREF = "units.html">units</A>
</P>
<P>Atom definition:
</P>
<P><A HREF = "create_atoms.html">create_atoms</A>, <A HREF = "create_box.html">create_box</A>,
<A HREF = "lattice.html">lattice</A>, <A HREF = "read_data.html">read_data</A>,
<A HREF = "read_restart.html">read_restart</A>, <A HREF = "region.html">region</A>,
<A HREF = "replicate.html">replicate</A>
</P>
<P>Force fields:
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>, <A HREF = "angle_style.html">angle_style</A>,
<A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "bond_style.html">bond_style</A>,
<A HREF = "dielectric.html">dielectric</A>, <A HREF = "dihedral_coeff.html">dihedral_coeff</A>,
<A HREF = "dihedral_style.html">dihedral_style</A>,
<A HREF = "improper_coeff.html">improper_coeff</A>,
<A HREF = "improper_style.html">improper_style</A>,
<A HREF = "kspace_modify.html">kspace_modify</A>, <A HREF = "kspace_style.html">kspace_style</A>,
<A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "pair_modify.html">pair_modify</A>,
<A HREF = "pair_style.html">pair_style</A>, <A HREF = "pair_write.html">pair_write</A>,
<A HREF = "special_bonds.html">special_bonds</A>
</P>
<P>Settings:
</P>
<P><A HREF = "communicate.html">communicate</A>, <A HREF = "group.html">group</A>, <A HREF = "mass.html">mass</A>,
<A HREF = "min_modify.html">min_modify</A>, <A HREF = "min_style.html">min_style</A>,
<A HREF = "neigh_modify.html">neigh_modify</A>, <A HREF = "neighbor.html">neighbor</A>,
<A HREF = "reset_timestep.html">reset_timestep</A>, <A HREF = "run_style.html">run_style</A>,
<A HREF = "set.html">set</A>, <A HREF = "timestep.html">timestep</A>, <A HREF = "velocity.html">velocity</A>
</P>
<P>Fixes:
</P>
<P><A HREF = "fix.html">fix</A>, <A HREF = "fix_modify.html">fix_modify</A>, <A HREF = "unfix.html">unfix</A>
</P>
<P>Computes:
</P>
<P><A HREF = "compute.html">compute</A>, <A HREF = "compute_modify.html">compute_modify</A>,
<A HREF = "uncompute.html">uncompute</A>
</P>
<P>Output:
</P>
<P><A HREF = "dump.html">dump</A>, <A HREF = "dump_image.html">dump image</A>,
<A HREF = "dump_modify.html">dump_modify</A>, <A HREF = "restart.html">restart</A>,
<A HREF = "thermo.html">thermo</A>, <A HREF = "thermo_modify.html">thermo_modify</A>,
<A HREF = "thermo_style.html">thermo_style</A>, <A HREF = "undump.html">undump</A>,
<A HREF = "write_restart.html">write_restart</A>
</P>
<P>Actions:
</P>
<P><A HREF = "delete_atoms.html">delete_atoms</A>, <A HREF = "delete_bonds.html">delete_bonds</A>,
<A HREF = "displace_atoms.html">displace_atoms</A>,
<A HREF = "displace_box.html">displace_box</A>, <A HREF = "minimize.html">minimize</A>,
<A HREF = "neb.html">neb</A> <A HREF = "prd.html">prd</A>, <A HREF = "run.html">run</A>, <A HREF = "temper.html">temper</A>
</P>
<P>Miscellaneous:
</P>
<P><A HREF = "clear.html">clear</A>, <A HREF = "echo.html">echo</A>, <A HREF = "if.html">if</A>,
<A HREF = "include.html">include</A>, <A HREF = "jump.html">jump</A>, <A HREF = "label.html">label</A>,
<A HREF = "log.html">log</A>, <A HREF = "next.html">next</A>, <A HREF = "print.html">print</A>,
<A HREF = "shell.html">shell</A>, <A HREF = "variable.html">variable</A>
</P>
<HR>
-<H4><A NAME = "3_5"></A><A NAME = "comm"></A>3.5 Individual commands
+<H4><A NAME = "cmd_5"></A><A NAME = "comm"></A>3.5 Individual commands
</H4>
<P>This section lists all LAMMPS commands alphabetically, with a separate
-listing below of styles within certain commands. The <A HREF = "#3_4">previous
-section</A> lists the same commands, grouped by category. Note that
-some style options for some commands are part of specific LAMMPS
+listing below of styles within certain commands. The <A HREF = "#cmd_4">previous
+section</A> lists the same commands, grouped by category. Note
+that some style options for some commands are part of specific LAMMPS
packages, which means they cannot be used unless the package was
included when LAMMPS was built. Not all packages are included in a
default LAMMPS build. These dependencies are listed as Restrictions
in the command's documentation.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "angle_coeff.html">angle_coeff</A></TD><TD ><A HREF = "angle_style.html">angle_style</A></TD><TD ><A HREF = "atom_modify.html">atom_modify</A></TD><TD ><A HREF = "atom_style.html">atom_style</A></TD><TD ><A HREF = "bond_coeff.html">bond_coeff</A></TD><TD ><A HREF = "bond_style.html">bond_style</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "boundary.html">boundary</A></TD><TD ><A HREF = "change_box.html">change_box</A></TD><TD ><A HREF = "clear.html">clear</A></TD><TD ><A HREF = "communicate.html">communicate</A></TD><TD ><A HREF = "compute.html">compute</A></TD><TD ><A HREF = "compute_modify.html">compute_modify</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "create_atoms.html">create_atoms</A></TD><TD ><A HREF = "create_box.html">create_box</A></TD><TD ><A HREF = "delete_atoms.html">delete_atoms</A></TD><TD ><A HREF = "delete_bonds.html">delete_bonds</A></TD><TD ><A HREF = "dielectric.html">dielectric</A></TD><TD ><A HREF = "dihedral_coeff.html">dihedral_coeff</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "dihedral_style.html">dihedral_style</A></TD><TD ><A HREF = "dimension.html">dimension</A></TD><TD ><A HREF = "displace_atoms.html">displace_atoms</A></TD><TD ><A HREF = "displace_box.html">displace_box</A></TD><TD ><A HREF = "dump.html">dump</A></TD><TD ><A HREF = "dump_image.html">dump image</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "dump_modify.html">dump_modify</A></TD><TD ><A HREF = "echo.html">echo</A></TD><TD ><A HREF = "fix.html">fix</A></TD><TD ><A HREF = "fix_modify.html">fix_modify</A></TD><TD ><A HREF = "group.html">group</A></TD><TD ><A HREF = "if.html">if</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "improper_coeff.html">improper_coeff</A></TD><TD ><A HREF = "improper_style.html">improper_style</A></TD><TD ><A HREF = "include.html">include</A></TD><TD ><A HREF = "jump.html">jump</A></TD><TD ><A HREF = "kspace_modify.html">kspace_modify</A></TD><TD ><A HREF = "kspace_style.html">kspace_style</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "label.html">label</A></TD><TD ><A HREF = "lattice.html">lattice</A></TD><TD ><A HREF = "log.html">log</A></TD><TD ><A HREF = "mass.html">mass</A></TD><TD ><A HREF = "minimize.html">minimize</A></TD><TD ><A HREF = "min_modify.html">min_modify</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "min_style.html">min_style</A></TD><TD ><A HREF = "neb.html">neb</A></TD><TD ><A HREF = "neigh_modify.html">neigh_modify</A></TD><TD ><A HREF = "neighbor.html">neighbor</A></TD><TD ><A HREF = "newton.html">newton</A></TD><TD ><A HREF = "next.html">next</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "package.html">package</A></TD><TD ><A HREF = "pair_coeff.html">pair_coeff</A></TD><TD ><A HREF = "pair_modify.html">pair_modify</A></TD><TD ><A HREF = "pair_style.html">pair_style</A></TD><TD ><A HREF = "pair_write.html">pair_write</A></TD><TD ><A HREF = "prd.html">prd</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "print.html">print</A></TD><TD ><A HREF = "processors.html">processors</A></TD><TD ><A HREF = "read_data.html">read_data</A></TD><TD ><A HREF = "read_restart.html">read_restart</A></TD><TD ><A HREF = "region.html">region</A></TD><TD ><A HREF = "replicate.html">replicate</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "reset_timestep.html">reset_timestep</A></TD><TD ><A HREF = "restart.html">restart</A></TD><TD ><A HREF = "run.html">run</A></TD><TD ><A HREF = "run_style.html">run_style</A></TD><TD ><A HREF = "set.html">set</A></TD><TD ><A HREF = "shell.html">shell</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "special_bonds.html">special_bonds</A></TD><TD ><A HREF = "suffix.html">suffix</A></TD><TD ><A HREF = "tad.html">tad</A></TD><TD ><A HREF = "temper.html">temper</A></TD><TD ><A HREF = "thermo.html">thermo</A></TD><TD ><A HREF = "thermo_modify.html">thermo_modify</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "thermo_style.html">thermo_style</A></TD><TD ><A HREF = "timestep.html">timestep</A></TD><TD ><A HREF = "uncompute.html">uncompute</A></TD><TD ><A HREF = "undump.html">undump</A></TD><TD ><A HREF = "unfix.html">unfix</A></TD><TD ><A HREF = "units.html">units</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "variable.html">variable</A></TD><TD ><A HREF = "velocity.html">velocity</A></TD><TD ><A HREF = "write_restart.html">write_restart</A>
</TD></TR></TABLE></DIV>
<HR>
<H4>Fix styles
</H4>
<P>See the <A HREF = "fix.html">fix</A> command for one-line descriptions
of each style or click on the style itself for a full description:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "fix_adapt.html">adapt</A></TD><TD ><A HREF = "fix_addforce.html">addforce</A></TD><TD ><A HREF = "fix_aveforce.html">aveforce</A></TD><TD ><A HREF = "fix_ave_atom.html">ave/atom</A></TD><TD ><A HREF = "fix_ave_correlate.html">ave/correlate</A></TD><TD ><A HREF = "fix_ave_histo.html">ave/histo</A></TD><TD ><A HREF = "fix_ave_spatial.html">ave/spatial</A></TD><TD ><A HREF = "fix_ave_time.html">ave/time</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "fix_bond_break.html">bond/break</A></TD><TD ><A HREF = "fix_bond_create.html">bond/create</A></TD><TD ><A HREF = "fix_bond_swap.html">bond/swap</A></TD><TD ><A HREF = "fix_box_relax.html">box/relax</A></TD><TD ><A HREF = "fix_deform.html">deform</A></TD><TD ><A HREF = "fix_deposit.html">deposit</A></TD><TD ><A HREF = "fix_drag.html">drag</A></TD><TD ><A HREF = "fix_dt_reset.html">dt/reset</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "fix_efield.html">efield</A></TD><TD ><A HREF = "fix_enforce2d.html">enforce2d</A></TD><TD ><A HREF = "fix_evaporate.html">evaporate</A></TD><TD ><A HREF = "fix_external.html">external</A></TD><TD ><A HREF = "fix_freeze.html">freeze</A></TD><TD ><A HREF = "fix_gravity.html">gravity</A></TD><TD ><A HREF = "fix_heat.html">heat</A></TD><TD ><A HREF = "fix_indent.html">indent</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "fix_langevin.html">langevin</A></TD><TD ><A HREF = "fix_lineforce.html">lineforce</A></TD><TD ><A HREF = "fix_momentum.html">momentum</A></TD><TD ><A HREF = "fix_move.html">move</A></TD><TD ><A HREF = "fix_msst.html">msst</A></TD><TD ><A HREF = "fix_neb.html">neb</A></TD><TD ><A HREF = "fix_nh.html">nph</A></TD><TD ><A HREF = "fix_nph_asphere.html">nph/asphere</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "fix_nph_sphere.html">nph/sphere</A></TD><TD ><A HREF = "fix_nh.html">npt</A></TD><TD ><A HREF = "fix_npt_asphere.html">npt/asphere</A></TD><TD ><A HREF = "fix_npt_sphere.html">npt/sphere</A></TD><TD ><A HREF = "fix_nve.html">nve</A></TD><TD ><A HREF = "fix_nve_asphere.html">nve/asphere</A></TD><TD ><A HREF = "fix_nve_limit.html">nve/limit</A></TD><TD ><A HREF = "fix_nve_noforce.html">nve/noforce</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "fix_nve_sphere.html">nve/sphere</A></TD><TD ><A HREF = "fix_nh.html">nvt</A></TD><TD ><A HREF = "fix_nvt_asphere.html">nvt/asphere</A></TD><TD ><A HREF = "fix_nvt_sllod.html">nvt/sllod</A></TD><TD ><A HREF = "fix_nvt_sphere.html">nvt/sphere</A></TD><TD ><A HREF = "fix_orient_fcc.html">orient/fcc</A></TD><TD ><A HREF = "fix_planeforce.html">planeforce</A></TD><TD ><A HREF = "fix_poems.html">poems</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "fix_pour.html">pour</A></TD><TD ><A HREF = "fix_press_berendsen.html">press/berendsen</A></TD><TD ><A HREF = "fix_print.html">print</A></TD><TD ><A HREF = "fix_qeq_comb.html">qeq/comb</A></TD><TD ><A HREF = "fix_reax_bonds.html">reax/bonds</A></TD><TD ><A HREF = "fix_recenter.html">recenter</A></TD><TD ><A HREF = "fix_rigid.html">rigid</A></TD><TD ><A HREF = "fix_rigid.html">rigid/nve</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "fix_rigid.html">rigid/nvt</A></TD><TD ><A HREF = "fix_setforce.html">setforce</A></TD><TD ><A HREF = "fix_shake.html">shake</A></TD><TD ><A HREF = "fix_spring.html">spring</A></TD><TD ><A HREF = "fix_spring_rg.html">spring/rg</A></TD><TD ><A HREF = "fix_spring_self.html">spring/self</A></TD><TD ><A HREF = "fix_srd.html">srd</A></TD><TD ><A HREF = "fix_store_force.html">store/force</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "fix_store_state.html">store/state</A></TD><TD ><A HREF = "fix_temp_berendsen.html">temp/berendsen</A></TD><TD ><A HREF = "fix_temp_rescale.html">temp/rescale</A></TD><TD ><A HREF = "fix_thermal_conductivity.html">thermal/conductivity</A></TD><TD ><A HREF = "fix_tmd.html">tmd</A></TD><TD ><A HREF = "fix_ttm.html">ttm</A></TD><TD ><A HREF = "fix_viscosity.html">viscosity</A></TD><TD ><A HREF = "fix_viscous.html">viscous</A></TD></TR>
-<TR ALIGN="center"><TD ><A HREF = "fix_wall.html">wall/colloid</A></TD><TD ><A HREF = "fix_wall_gran.html">wall/gran</A></TD><TD ><A HREF = "fix_wall.html">wall/harmonic</A></TD><TD ><A HREF = "fix_wall.html">wall/lj126</A></TD><TD ><A HREF = "fix_wall.html">wall/lj93</A></TD><TD ><A HREF = "fix_wall_reflect.html">wall/reflect</A></TD><TD ><A HREF = "fix_wall_region.html">wall/region</A></TD><TD ><A HREF = "fix_wall_srd.html">wall/srd</A>
+<TR ALIGN="center"><TD ><A HREF = "fix_efield.html">efield</A></TD><TD ><A HREF = "fix_enforce2d.html">enforce2d</A></TD><TD ><A HREF = "fix_evaporate.html">evaporate</A></TD><TD ><A HREF = "fix_external.html">external</A></TD><TD ><A HREF = "fix_freeze.html">freeze</A></TD><TD ><A HREF = "fix_gcmc.html">gcmc</A></TD><TD ><A HREF = "fix_gravity.html">gravity</A></TD><TD ><A HREF = "fix_heat.html">heat</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "fix_indent.html">indent</A></TD><TD ><A HREF = "fix_langevin.html">langevin</A></TD><TD ><A HREF = "fix_lineforce.html">lineforce</A></TD><TD ><A HREF = "fix_momentum.html">momentum</A></TD><TD ><A HREF = "fix_move.html">move</A></TD><TD ><A HREF = "fix_msst.html">msst</A></TD><TD ><A HREF = "fix_neb.html">neb</A></TD><TD ><A HREF = "fix_nh.html">nph</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "fix_nph_asphere.html">nph/asphere</A></TD><TD ><A HREF = "fix_nph_sphere.html">nph/sphere</A></TD><TD ><A HREF = "fix_nh.html">npt</A></TD><TD ><A HREF = "fix_npt_asphere.html">npt/asphere</A></TD><TD ><A HREF = "fix_npt_sphere.html">npt/sphere</A></TD><TD ><A HREF = "fix_nve.html">nve</A></TD><TD ><A HREF = "fix_nve_asphere.html">nve/asphere</A></TD><TD ><A HREF = "fix_nve_limit.html">nve/limit</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "fix_nve_noforce.html">nve/noforce</A></TD><TD ><A HREF = "fix_nve_sphere.html">nve/sphere</A></TD><TD ><A HREF = "fix_nh.html">nvt</A></TD><TD ><A HREF = "fix_nvt_asphere.html">nvt/asphere</A></TD><TD ><A HREF = "fix_nvt_sllod.html">nvt/sllod</A></TD><TD ><A HREF = "fix_nvt_sphere.html">nvt/sphere</A></TD><TD ><A HREF = "fix_orient_fcc.html">orient/fcc</A></TD><TD ><A HREF = "fix_planeforce.html">planeforce</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "fix_poems.html">poems</A></TD><TD ><A HREF = "fix_pour.html">pour</A></TD><TD ><A HREF = "fix_press_berendsen.html">press/berendsen</A></TD><TD ><A HREF = "fix_print.html">print</A></TD><TD ><A HREF = "fix_qeq_comb.html">qeq/comb</A></TD><TD ><A HREF = "fix_reax_bonds.html">reax/bonds</A></TD><TD ><A HREF = "fix_recenter.html">recenter</A></TD><TD ><A HREF = "fix_restrain.html">restrain</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "fix_rigid.html">rigid</A></TD><TD ><A HREF = "fix_rigid.html">rigid/nve</A></TD><TD ><A HREF = "fix_rigid.html">rigid/nvt</A></TD><TD ><A HREF = "fix_setforce.html">setforce</A></TD><TD ><A HREF = "fix_shake.html">shake</A></TD><TD ><A HREF = "fix_spring.html">spring</A></TD><TD ><A HREF = "fix_spring_rg.html">spring/rg</A></TD><TD ><A HREF = "fix_spring_self.html">spring/self</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "fix_srd.html">srd</A></TD><TD ><A HREF = "fix_store_force.html">store/force</A></TD><TD ><A HREF = "fix_store_state.html">store/state</A></TD><TD ><A HREF = "fix_temp_berendsen.html">temp/berendsen</A></TD><TD ><A HREF = "fix_temp_rescale.html">temp/rescale</A></TD><TD ><A HREF = "fix_thermal_conductivity.html">thermal/conductivity</A></TD><TD ><A HREF = "fix_tmd.html">tmd</A></TD><TD ><A HREF = "fix_ttm.html">ttm</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "fix_viscosity.html">viscosity</A></TD><TD ><A HREF = "fix_viscous.html">viscous</A></TD><TD ><A HREF = "fix_wall.html">wall/colloid</A></TD><TD ><A HREF = "fix_wall_gran.html">wall/gran</A></TD><TD ><A HREF = "fix_wall.html">wall/harmonic</A></TD><TD ><A HREF = "fix_wall.html">wall/lj126</A></TD><TD ><A HREF = "fix_wall.html">wall/lj93</A></TD><TD ><A HREF = "fix_wall_reflect.html">wall/reflect</A></TD></TR>
+<TR ALIGN="center"><TD ><A HREF = "fix_wall_region.html">wall/region</A></TD><TD ><A HREF = "fix_wall_srd.html">wall/srd</A>
</TD></TR></TABLE></DIV>
<P>These are fix styles contributed by users, which can be used if
-<A HREF = "Section_start.html#2_3">LAMMPS is built with the appropriate package</A>.
+<A HREF = "Section_start.html#start_3">LAMMPS is built with the appropriate
+package</A>.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "fix_atc.html">atc</A></TD><TD ><A HREF = "fix_imd.html">imd</A></TD><TD ><A HREF = "fix_langevin_eff.html">langevin/eff</A></TD><TD ><A HREF = "fix_nh_eff.html">nph/eff</A></TD><TD ><A HREF = "fix_nh_eff.html">npt/eff</A></TD><TD ><A HREF = "fix_nve_eff.html">nve/eff</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "fix_nh_eff.html">nvt/eff</A></TD><TD ><A HREF = "fix_nvt_sllod_eff.html">nvt/sllod/eff</A></TD><TD ><A HREF = "fix_qeq_reax.html">qeq/reax</A></TD><TD ><A HREF = "fix_smd.html">smd</A></TD><TD ><A HREF = "fix_temp_rescale_eff.html">temp/rescale/eff</A>
</TD></TR></TABLE></DIV>
<P>These are accelerated fix styles, which can be used if LAMMPS is
built with the <A HREF = "Section_accelerate.html">appropriate accelerated
package</A>.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "fix_freeze.html">freeze/cuda</A></TD><TD ><A HREF = "fix_addforce.html">addforce/cuda</A></TD><TD ><A HREF = "fix_addtorque.html">addtorque</A></TD><TD ><A HREF = "fix_aveforce.html">aveforce/cuda</A></TD><TD ><A HREF = "fix_enforce2d.html">enforce2d/cuda</A></TD><TD ><A HREF = "fix_gravity.html">gravity/cuda</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "fix_nh.html">npt/cuda</A></TD><TD ><A HREF = "fix_nh.html">nve/cuda</A></TD><TD ><A HREF = "fix_nh.html">nvt/cuda</A></TD><TD ><A HREF = "fix_setforce.html">setforce/cuda</A></TD><TD ><A HREF = "fix_shake.html">shake/cuda</A></TD><TD ><A HREF = "fix_temp_berendsen.html">temp/berendsen/cuda</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "fix_temp_rescale.html">temp/rescale/cuda</A></TD><TD ><A HREF = "fix_temp_rescale.html">temp/rescale/limit/cuda</A></TD><TD ><A HREF = "fix_viscous.html">viscous/cuda</A>
</TD></TR></TABLE></DIV>
<HR>
<H4>Compute styles
</H4>
<P>See the <A HREF = "compute.html">compute</A> command for one-line descriptions of
each style or click on the style itself for a full description:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "compute_angle_local.html">angle/local</A></TD><TD ><A HREF = "compute_atom_molecule.html">atom/molecule</A></TD><TD ><A HREF = "compute_bond_local.html">bond/local</A></TD><TD ><A HREF = "compute_centro_atom.html">centro/atom</A></TD><TD ><A HREF = "compute_cluster_atom.html">cluster/atom</A></TD><TD ><A HREF = "compute_cna_atom.html">cna/atom</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "compute_com.html">com</A></TD><TD ><A HREF = "compute_com_molecule.html">com/molecule</A></TD><TD ><A HREF = "compute_coord_atom.html">coord/atom</A></TD><TD ><A HREF = "compute_damage_atom.html">damage/atom</A></TD><TD ><A HREF = "compute_dihedral_local.html">dihedral/local</A></TD><TD ><A HREF = "compute_displace_atom.html">displace/atom</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "compute_erotate_asphere.html">erotate/asphere</A></TD><TD ><A HREF = "compute_erotate_sphere.html">erotate/sphere</A></TD><TD ><A HREF = "compute_event_displace.html">event/displace</A></TD><TD ><A HREF = "compute_group_group.html">group/group</A></TD><TD ><A HREF = "compute_gyration.html">gyration</A></TD><TD ><A HREF = "compute_gyration_molecule.html">gyration/molecule</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "compute_heat_flux.html">heat/flux</A></TD><TD ><A HREF = "compute_improper_local.html">improper/local</A></TD><TD ><A HREF = "compute_ke.html">ke</A></TD><TD ><A HREF = "compute_ke_atom.html">ke/atom</A></TD><TD ><A HREF = "compute_msd.html">msd</A></TD><TD ><A HREF = "compute_msd_molecule.html">msd/molecule</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "compute_pair.html">pair</A></TD><TD ><A HREF = "compute_pair_local.html">pair/local</A></TD><TD ><A HREF = "compute_pe.html">pe</A></TD><TD ><A HREF = "compute_pe_atom.html">pe/atom</A></TD><TD ><A HREF = "compute_pressure.html">pressure</A></TD><TD ><A HREF = "compute_property_atom.html">property/atom</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "compute_property_local.html">property/local</A></TD><TD ><A HREF = "compute_property_molecule.html">property/molecule</A></TD><TD ><A HREF = "compute_rdf.html">rdf</A></TD><TD ><A HREF = "compute_reduce.html">reduce</A></TD><TD ><A HREF = "compute_reduce.html">reduce/region</A></TD><TD ><A HREF = "compute_slice.html">slice</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "compute_stress_atom.html">stress/atom</A></TD><TD ><A HREF = "compute_temp.html">temp</A></TD><TD ><A HREF = "compute_temp_asphere.html">temp/asphere</A></TD><TD ><A HREF = "compute_temp_com.html">temp/com</A></TD><TD ><A HREF = "compute_temp_deform.html">temp/deform</A></TD><TD ><A HREF = "compute_temp_partial.html">temp/partial</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "compute_temp_profile.html">temp/profile</A></TD><TD ><A HREF = "compute_temp_ramp.html">temp/ramp</A></TD><TD ><A HREF = "compute_temp_region.html">temp/region</A></TD><TD ><A HREF = "compute_temp_sphere.html">temp/sphere</A></TD><TD ><A HREF = "compute_ti.html">ti</A>
</TD></TR></TABLE></DIV>
<P>These are compute styles contributed by users, which can be used if
-<A HREF = "Section_start.html#2_3">LAMMPS is built with the appropriate package</A>.
+<A HREF = "Section_start.html#start_3">LAMMPS is built with the appropriate
+package</A>.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "compute_ackland_atom.html">ackland/atom</A></TD><TD ><A HREF = "compute_ke_eff.html">ke/eff</A></TD><TD ><A HREF = "compute_ke_atom_eff.html">ke/atom/eff</A></TD><TD ><A HREF = "compute_temp_eff.html">temp/eff</A></TD><TD ><A HREF = "compute_temp_deform_eff.html">temp/deform/eff</A></TD><TD ><A HREF = "compute_temp_region_eff.html">temp/region/eff</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "compute_temp_rotate.html">temp/rotate</A>
</TD></TR></TABLE></DIV>
<P>These are accelerated compute styles, which can be used if LAMMPS is
built with the <A HREF = "Section_accelerate.html">appropriate accelerated
package</A>.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "compute_pe.html">pe/cuda</A></TD><TD ><A HREF = "compute_pressure.html">pressure/cuda</A></TD><TD ><A HREF = "compute_temp.html">temp/cuda</A></TD><TD ><A HREF = "compute_temp_partial.html">temp/partial/cuda</A>
</TD></TR></TABLE></DIV>
<HR>
<H4>Pair_style potentials
</H4>
<P>See the <A HREF = "pair_style.html">pair_style</A> command for an overview of pair
potentials. Click on the style itself for a full description:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "pair_none.html">none</A></TD><TD ><A HREF = "pair_hybrid.html">hybrid</A></TD><TD ><A HREF = "pair_hybrid.html">hybrid/overlay</A></TD><TD ><A HREF = "pair_adp.html">adp</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_airebo.html">airebo</A></TD><TD ><A HREF = "pair_born.html">born</A></TD><TD ><A HREF = "pair_born.html">born/coul/long</A></TD><TD ><A HREF = "pair_buck.html">buck</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_buck.html">buck/coul/cut</A></TD><TD ><A HREF = "pair_buck.html">buck/coul/long</A></TD><TD ><A HREF = "pair_colloid.html">colloid</A></TD><TD ><A HREF = "pair_comb.html">comb</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_coul.html">coul/cut</A></TD><TD ><A HREF = "pair_coul.html">coul/debye</A></TD><TD ><A HREF = "pair_coul.html">coul/long</A></TD><TD ><A HREF = "pair_dipole.html">dipole/cut</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_dpd.html">dpd</A></TD><TD ><A HREF = "pair_dpd.html">dpd/tstat</A></TD><TD ><A HREF = "pair_dsmc.html">dsmc</A></TD><TD ><A HREF = "pair_eam.html">eam</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_eam.html">eam/alloy</A></TD><TD ><A HREF = "pair_eam.html">eam/fs</A></TD><TD ><A HREF = "pair_eim.html">eim</A></TD><TD ><A HREF = "pair_gauss.html">gauss</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_gayberne.html">gayberne</A></TD><TD ><A HREF = "pair_gran.html">gran/hertz/history</A></TD><TD ><A HREF = "pair_gran.html">gran/hooke</A></TD><TD ><A HREF = "pair_gran.html">gran/hooke/history</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_hbond_dreiding.html">hbond/dreiding/lj</A></TD><TD ><A HREF = "pair_hbond_dreiding.html">hbond/dreiding/morse</A></TD><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/charmm</A></TD><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/charmm/implicit</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/long</A></TD><TD ><A HREF = "pair_class2.html">lj/class2</A></TD><TD ><A HREF = "pair_class2.html">lj/class2/coul/cut</A></TD><TD ><A HREF = "pair_class2.html">lj/class2/coul/long</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_lj.html">lj/cut</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/cut</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/debye</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/long</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_lj.html">lj/cut/coul/long/tip4p</A></TD><TD ><A HREF = "pair_lj_expand.html">lj/expand</A></TD><TD ><A HREF = "pair_gromacs.html">lj/gromacs</A></TD><TD ><A HREF = "pair_gromacs.html">lj/gromacs/coul/gromacs</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_lj_smooth.html">lj/smooth</A></TD><TD ><A HREF = "pair_lj96.html">lj96/cut</A></TD><TD ><A HREF = "pair_lubricate.html">lubricate</A></TD><TD ><A HREF = "pair_meam.html">meam</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_morse.html">morse</A></TD><TD ><A HREF = "pair_peri.html">peri/lps</A></TD><TD ><A HREF = "pair_peri.html">peri/pmb</A></TD><TD ><A HREF = "pair_reax.html">reax</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_airebo.html">rebo</A></TD><TD ><A HREF = "pair_resquared.html">resquared</A></TD><TD ><A HREF = "pair_soft.html">soft</A></TD><TD ><A HREF = "pair_sw.html">sw</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_table.html">table</A></TD><TD ><A HREF = "pair_tersoff.html">tersoff</A></TD><TD ><A HREF = "pair_tersoff_zbl.html">tersoff/zbl</A></TD><TD ><A HREF = "pair_yukawa.html">yukawa</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_yukawa_colloid.html">yukawa/colloid</A>
</TD></TR></TABLE></DIV>
<P>These are pair styles contributed by users, which can be used if
-<A HREF = "Section_start.html#2_3">LAMMPS is built with the appropriate package</A>.
+<A HREF = "Section_start.html#start_3">LAMMPS is built with the appropriate
+package</A>.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "pair_awpmd.html">awpmd/cut</A></TD><TD ><A HREF = "pair_buck_coul.html">buck/coul</A></TD><TD ><A HREF = "pair_cmm.html">cg/cmm</A></TD><TD ><A HREF = "pair_cmm.html">cg/cmm/coul/cut</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_cmm.html">cg/cmm/coul/long</A></TD><TD ><A HREF = "pair_dipole.html">dipole/sf</A></TD><TD ><A HREF = "pair_eam.html">eam/cd</A></TD><TD ><A HREF = "pair_eff.html">eff/cut</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_lj_coul.html">lj/coul</A></TD><TD ><A HREF = "pair_lj_sf.html">lj/sf</A></TD><TD ><A HREF = "pair_reax_c.html">reax/c</A>
</TD></TR></TABLE></DIV>
<P>These are accelerated pair styles, which can be used if LAMMPS is
built with the <A HREF = "Section_accelerate.html">appropriate accelerated
package</A>.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "pair_born.html">born/coul/long/cuda</A></TD><TD ><A HREF = "pair_buck.html">buck/coul/cut/cuda</A></TD><TD ><A HREF = "pair_buck.html">buck/coul/long/cuda</A></TD><TD ><A HREF = "pair_buck.html">buck/cuda</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_cmm.html">cg/cmm/coul/cut/cuda</A></TD><TD ><A HREF = "pair_cmm.html">cg/cmm/coul/debye/cuda</A></TD><TD ><A HREF = "pair_cmm.html">cg/cmm/coul/long/cuda</A></TD><TD ><A HREF = "pair_cmm.html">cg/cmm/coul/long/gpu</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_cmm.html">cg/cmm/cuda</A></TD><TD ><A HREF = "pair_cmm.html">cg/cmm/gpu</A></TD><TD ><A HREF = "pair_coul.html">coul/long/gpu</A></TD><TD ><A HREF = "pair_eam.html">eam/alloy/cuda</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_eam.html">eam/alloy/opt</A></TD><TD ><A HREF = "pair_eam.html">eam/cuda</A></TD><TD ><A HREF = "pair_eam.html">eam/fs/cuda</A></TD><TD ><A HREF = "pair_eam.html">eam/fs/opt</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_eam.html">eam/opt</A></TD><TD ><A HREF = "pair_gayberne.html">gayberne/gpu</A></TD><TD ><A HREF = "pair_gran.html">gran/hooke/cuda</A></TD><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/charmm/cuda</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/charmm/implicit/cuda</A></TD><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/long/cuda</A></TD><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/long/gpu</A></TD><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/long/opt</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_class2.html">lj/class2/coul/cut/cuda</A></TD><TD ><A HREF = "pair_class2.html">lj/class2/coul/long/cuda</A></TD><TD ><A HREF = "pair_class2.html">lj/class2/coul/long/gpu</A></TD><TD ><A HREF = "pair_class2.html">lj/class2/cuda</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_class2.html">lj/class2/gpu</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/cut/cuda</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/cut/gpu</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/debye/cuda</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_lj.html">lj/cut/coul/long/cuda</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/long/gpu</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/cuda</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/experimental/cuda</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_lj.html">lj/cut/gpu</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/opt</A></TD><TD ><A HREF = "pair_lj_expand.html">lj/expand/cuda</A></TD><TD ><A HREF = "pair_lj_expand.html">lj/expand/gpu</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_gromacs.html">lj/gromacs/coul/gromacs/cuda</A></TD><TD ><A HREF = "pair_gromacs.html">lj/gromacs/cuda</A></TD><TD ><A HREF = "pair_lj_smooth.html">lj/smooth/cuda</A></TD><TD ><A HREF = "pair_lj96.html">lj96/cut/cuda</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_lj96.html">lj96/cut/gpu</A></TD><TD ><A HREF = "pair_morse.html">morse/cuda</A></TD><TD ><A HREF = "pair_morse.html">morse/gpu</A></TD><TD ><A HREF = "pair_morse.html">morse/opt</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "pair_resquared.html">resquared/gpu</A>
</TD></TR></TABLE></DIV>
<HR>
<H4>Bond_style potentials
</H4>
<P>See the <A HREF = "bond_style.html">bond_style</A> command for an overview of bond
potentials. Click on the style itself for a full description:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "bond_none.html">none</A></TD><TD WIDTH="100"><A HREF = "bond_hybrid.html">hybrid</A></TD><TD WIDTH="100"><A HREF = "bond_class2.html">class2</A></TD><TD WIDTH="100"><A HREF = "bond_fene.html">fene</A></TD></TR>
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "bond_fene_expand.html">fene/expand</A></TD><TD WIDTH="100"><A HREF = "bond_harmonic.html">harmonic</A></TD><TD WIDTH="100"><A HREF = "bond_morse.html">morse</A></TD><TD WIDTH="100"><A HREF = "bond_nonlinear.html">nonlinear</A></TD></TR>
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "bond_quartic.html">quartic</A></TD><TD WIDTH="100"><A HREF = "bond_table.html">table</A>
</TD></TR></TABLE></DIV>
<P>These are bond styles contributed by users, which can be used if
-<A HREF = "Section_start.html#2_3">LAMMPS is built with the appropriate package</A>.
+<A HREF = "Section_start.html#start_3">LAMMPS is built with the appropriate
+package</A>.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "bond_harmonic_shift.html">harmonic/shift</A></TD><TD ><A HREF = "bond_harmonic_shift_cut.html">harmonic/shift/cut</A>
</TD></TR></TABLE></DIV>
<HR>
<H4>Angle_style potentials
</H4>
<P>See the <A HREF = "angle_style.html">angle_style</A> command for an overview of
angle potentials. Click on the style itself for a full description:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "angle_none.html">none</A></TD><TD WIDTH="100"><A HREF = "angle_hybrid.html">hybrid</A></TD><TD WIDTH="100"><A HREF = "angle_charmm.html">charmm</A></TD><TD WIDTH="100"><A HREF = "angle_class2.html">class2</A></TD></TR>
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "angle_cosine.html">cosine</A></TD><TD WIDTH="100"><A HREF = "angle_cosine_delta.html">cosine/delta</A></TD><TD WIDTH="100"><A HREF = "angle_cosine_periodic.html">cosine/periodic</A></TD><TD WIDTH="100"><A HREF = "angle_cosine_squared.html">cosine/squared</A></TD></TR>
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "angle_harmonic.html">harmonic</A></TD><TD WIDTH="100"><A HREF = "angle_table.html">table</A>
</TD></TR></TABLE></DIV>
<P>These are angle styles contributed by users, which can be used if
-<A HREF = "Section_start.html#2_3">LAMMPS is built with the appropriate package</A>.
+<A HREF = "Section_start.html#start_3">LAMMPS is built with the appropriate
+package</A>.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "angle_cmm.html">cg/cmm</A></TD><TD ><A HREF = "angle_cosine_shift.html">cosine/shift</A></TD><TD ><A HREF = "angle_cosine_shift_exp.html">cosine/shift/exp</A>
</TD></TR></TABLE></DIV>
<HR>
<H4>Dihedral_style potentials
</H4>
<P>See the <A HREF = "dihedral_style.html">dihedral_style</A> command for an overview
of dihedral potentials. Click on the style itself for a full
description:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "dihedral_none.html">none</A></TD><TD WIDTH="100"><A HREF = "dihedral_hybrid.html">hybrid</A></TD><TD WIDTH="100"><A HREF = "dihedral_charmm.html">charmm</A></TD><TD WIDTH="100"><A HREF = "dihedral_class2.html">class2</A></TD></TR>
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "dihedral_harmonic.html">harmonic</A></TD><TD WIDTH="100"><A HREF = "dihedral_helix.html">helix</A></TD><TD WIDTH="100"><A HREF = "dihedral_multi_harmonic.html">multi/harmonic</A></TD><TD WIDTH="100"><A HREF = "dihedral_opls.html">opls</A>
</TD></TR></TABLE></DIV>
<P>These are dihedral styles contributed by users, which can be used if
-<A HREF = "Section_start.html#2_3">LAMMPS is built with the appropriate package</A>.
+<A HREF = "Section_start.html#start_3">LAMMPS is built with the appropriate
+package</A>.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "dihedral_cosine_shift_exp.html">cosine/shift/exp</A>
</TD></TR></TABLE></DIV>
<HR>
<H4>Improper_style potentials
</H4>
<P>See the <A HREF = "improper_style.html">improper_style</A> command for an overview
of improper potentials. Click on the style itself for a full
description:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "improper_none.html">none</A></TD><TD WIDTH="100"><A HREF = "improper_hybrid.html">hybrid</A></TD><TD WIDTH="100"><A HREF = "improper_class2.html">class2</A></TD><TD WIDTH="100"><A HREF = "improper_cvff.html">cvff</A></TD></TR>
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "improper_harmonic.html">harmonic</A></TD><TD WIDTH="100"><A HREF = "improper_umbrella.html">umbrella</A>
</TD></TR></TABLE></DIV>
<HR>
<H4>Kspace solvers
</H4>
<P>See the <A HREF = "kspace_style.html">kspace_style</A> command for an overview of
Kspace solvers. Click on the style itself for a full description:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "kspace_style.html">ewald</A></TD><TD WIDTH="100"><A HREF = "kspace_style.html">pppm</A></TD><TD WIDTH="100"><A HREF = "kspace_style.html">pppm/cg</A></TD><TD WIDTH="100"><A HREF = "kspace_style.html">pppm/tip4p</A>
</TD></TR></TABLE></DIV>
<P>These are Kspace solvers contributed by users, which can be used if
-<A HREF = "Section_start.html#2_3">LAMMPS is built with the appropriate package</A>.
+<A HREF = "Section_start.html#start_3">LAMMPS is built with the appropriate
+package</A>.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD WIDTH="100"><A HREF = "kspace_style.html">ewald/n</A>
</TD></TR></TABLE></DIV>
<P>These are accelerated Kspace solvers, which can be used if LAMMPS is
built with the <A HREF = "Section_accelerate.html">appropriate accelerated
package</A>.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "kspace_style.html">pppm/cuda</A></TD><TD ><A HREF = "kspace_style.html">pppm/gpu</A>
</TD></TR></TABLE></DIV>
</HTML>
diff --git a/doc/Section_commands.txt b/doc/Section_commands.txt
index 8bc22c3a4..496a5582f 100644
--- a/doc/Section_commands.txt
+++ b/doc/Section_commands.txt
@@ -1,837 +1,846 @@
-"Previous Section"_Section_start.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_howto.html :c
+"Previous Section"_Section_start.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_packages.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
3. Commands :h3
This section describes how a LAMMPS input script is formatted and what
commands are used to define a LAMMPS simulation.
-3.1 "LAMMPS input script"_#3_1
-3.2 "Parsing rules"_#3_2
-3.3 "Input script structure"_#3_3
-3.4 "Commands listed by category"_#3_4
-3.5 "Commands listed alphabetically"_#3_5 :all(b)
+3.1 "LAMMPS input script"_#cmd_1
+3.2 "Parsing rules"_#cmd_2
+3.3 "Input script structure"_#cmd_3
+3.4 "Commands listed by category"_#cmd_4
+3.5 "Commands listed alphabetically"_#cmd_5 :all(b)
:line
-3.1 LAMMPS input script :link(3_1),h4
+3.1 LAMMPS input script :link(cmd_1),h4
LAMMPS executes by reading commands from a input script (text file),
one line at a time. When the input script ends, LAMMPS exits. Each
command causes LAMMPS to take some action. It may set an internal
variable, read in a file, or run a simulation. Most commands have
default settings, which means you only need to use the command if you
wish to change the default.
In many cases, the ordering of commands in an input script is not
important. However the following rules apply:
(1) LAMMPS does not read your entire input script and then perform a
simulation with all the settings. Rather, the input script is read
one line at a time and each command takes effect when it is read.
Thus this sequence of commands:
timestep 0.5
run 100
run 100 :pre
does something different than this sequence:
run 100
timestep 0.5
run 100 :pre
In the first case, the specified timestep (0.5 fmsec) is used for two
simulations of 100 timesteps each. In the 2nd case, the default
timestep (1.0 fmsec) is used for the 1st 100 step simulation and a 0.5
fmsec timestep is used for the 2nd one.
(2) Some commands are only valid when they follow other commands. For
example you cannot set the temperature of a group of atoms until atoms
have been defined and a group command is used to define which atoms
belong to the group.
(3) Sometimes command B will use values that can be set by command A.
This means command A must precede command B in the input script if it
is to have the desired effect. For example, the
"read_data"_read_data.html command initializes the system by setting
up the simulation box and assigning atoms to processors. If default
values are not desired, the "processors"_processors.html and
"boundary"_boundary.html commands need to be used before read_data to
tell LAMMPS how to map processors to the simulation box.
Many input script errors are detected by LAMMPS and an ERROR or
WARNING message is printed. "This section"_Section_errors.html gives
more information on what errors mean. The documentation for each
command lists restrictions on how the command can be used.
:line
-3.2 Parsing rules :link(3_2),h4
+3.2 Parsing rules :link(cmd_2),h4
Each non-blank line in the input script is treated as a command.
LAMMPS commands are case sensitive. Command names are lower-case, as
are specified command arguments. Upper case letters may be used in
file names or user-chosen ID strings.
Here is how each line in the input script is parsed by LAMMPS:
(1) If the last printable character on the line is a "&" character
(with no surrounding quotes), the command is assumed to continue on
the next line. The next line is concatenated to the previous line by
removing the "&" character and newline. This allows long commands to
be continued across two or more lines.
(2) All characters from the first "#" character onward are treated as
comment and discarded. See an exception in (6). Note that a
comment after a trailing "&" character will prevent the command from
continuing on the next line. Also note that for multi-line commands a
single leading "#" will comment out the entire command.
(3) The line is searched repeatedly for $ characters, which indicate
variables that are replaced with a text string. See an exception in
(6). If the $ is followed by curly brackets, then the variable name
is the text inside the curly brackets. If no curly brackets follow
the $, then the variable name is the single character immediately
following the $. Thus $\{myTemp\} and $x refer to variable names
"myTemp" and "x". See the "variable"_variable.html command for
details of how strings are assigned to variables and how they are
substituted for in input script commands.
(4) The line is broken into "words" separated by whitespace (tabs,
spaces). Note that words can thus contain letters, digits,
underscores, or punctuation characters.
(5) The first word is the command name. All successive words in the
line are arguments.
(6) If you want text with spaces to be treated as a single argument,
it can be enclosed in either double or single quotes. E.g.
print "Volume = $v"
print 'Volume = $v' :pre
The quotes are removed when the single argument is stored internally.
See the "dump modify format"_dump_modify.html or "if"_if.html commands
for examples. A "#" or "$" character that is between quotes will not
be treated as a comment indicator in (2) or substituted for as a
variable in (3).
IMPORTANT NOTE: If the argument is itself a command that requires a
quoted argument (e.g. using a "print"_print.html command as part of an
"if"_if.html or "run every"_run.html command), then the double and
single quotes can be nested in the usual manner. See the doc pages
for those commands for examples. Only one of level of nesting is
allowed, but that should be sufficient for most use cases.
:line
-3.3 Input script structure :h4,link(3_3)
+3.3 Input script structure :h4,link(cmd_3)
This section describes the structure of a typical LAMMPS input script.
The "examples" directory in the LAMMPS distribution contains many
sample input scripts; the corresponding problems are discussed in
"this section"_Section_example.html, and animated on the "LAMMPS WWW
Site"_lws.
A LAMMPS input script typically has 4 parts:
Initialization
Atom definition
Settings
Run a simulation :ol
The last 2 parts can be repeated as many times as desired. I.e. run a
simulation, change some settings, run some more, etc. Each of the 4
parts is now described in more detail. Remember that almost all the
commands need only be used if a non-default value is desired.
(1) Initialization
Set parameters that need to be defined before atoms are created or
read-in from a file.
The relevant commands are "units"_units.html,
"dimension"_dimension.html, "newton"_newton.html,
"processors"_processors.html, "boundary"_boundary.html,
"atom_style"_atom_style.html, "atom_modify"_atom_modify.html.
If force-field parameters appear in the files that will be read, these
commands tell LAMMPS what kinds of force fields are being used:
"pair_style"_pair_style.html, "bond_style"_bond_style.html,
"angle_style"_angle_style.html, "dihedral_style"_dihedral_style.html,
"improper_style"_improper_style.html.
(2) Atom definition
There are 3 ways to define atoms in LAMMPS. Read them in from a data
or restart file via the "read_data"_read_data.html or
"read_restart"_read_restart.html commands. These files can contain
molecular topology information. Or create atoms on a lattice (with no
molecular topology), using these commands: "lattice"_lattice.html,
"region"_region.html, "create_box"_create_box.html,
"create_atoms"_create_atoms.html. The entire set of atoms can be
duplicated to make a larger simulation using the
"replicate"_replicate.html command.
(3) Settings
Once atoms and molecular topology are defined, a variety of settings
can be specified: force field coefficients, simulation parameters,
output options, etc.
Force field coefficients are set by these commands (they can also be
set in the read-in files): "pair_coeff"_pair_coeff.html,
"bond_coeff"_bond_coeff.html, "angle_coeff"_angle_coeff.html,
"dihedral_coeff"_dihedral_coeff.html,
"improper_coeff"_improper_coeff.html,
"kspace_style"_kspace_style.html, "dielectric"_dielectric.html,
"special_bonds"_special_bonds.html.
Various simulation parameters are set by these commands:
"neighbor"_neighbor.html, "neigh_modify"_neigh_modify.html,
"group"_group.html, "timestep"_timestep.html,
"reset_timestep"_reset_timestep.html, "run_style"_run_style.html,
"min_style"_min_style.html, "min_modify"_min_modify.html.
Fixes impose a variety of boundary conditions, time integration, and
diagnostic options. The "fix"_fix.html command comes in many flavors.
Various computations can be specified for execution during a
simulation using the "compute"_compute.html,
"compute_modify"_compute_modify.html, and "variable"_variable.html
commands.
Output options are set by the "thermo"_thermo.html, "dump"_dump.html,
and "restart"_restart.html commands.
(4) Run a simulation
A molecular dynamics simulation is run using the "run"_run.html
command. Energy minimization (molecular statics) is performed using
the "minimize"_minimize.html command. A parallel tempering
(replica-exchange) simulation can be run using the
"temper"_temper.html command.
:line
-3.4 Commands listed by category :link(3_4),h4
+3.4 Commands listed by category :link(cmd_4),h4
This section lists all LAMMPS commands, grouped by category. The
-"next section"_#3_5 lists the same commands alphabetically. Note that
-some style options for some commands are part of specific LAMMPS
+"next section"_#cmd_5 lists the same commands alphabetically. Note
+that some style options for some commands are part of specific LAMMPS
packages, which means they cannot be used unless the package was
included when LAMMPS was built. Not all packages are included in a
default LAMMPS build. These dependencies are listed as Restrictions
in the command's documentation.
Initialization:
"atom_modify"_atom_modify.html, "atom_style"_atom_style.html,
"boundary"_boundary.html, "dimension"_dimension.html,
"newton"_newton.html, "processors"_processors.html, "units"_units.html
Atom definition:
"create_atoms"_create_atoms.html, "create_box"_create_box.html,
"lattice"_lattice.html, "read_data"_read_data.html,
"read_restart"_read_restart.html, "region"_region.html,
"replicate"_replicate.html
Force fields:
"angle_coeff"_angle_coeff.html, "angle_style"_angle_style.html,
"bond_coeff"_bond_coeff.html, "bond_style"_bond_style.html,
"dielectric"_dielectric.html, "dihedral_coeff"_dihedral_coeff.html,
"dihedral_style"_dihedral_style.html,
"improper_coeff"_improper_coeff.html,
"improper_style"_improper_style.html,
"kspace_modify"_kspace_modify.html, "kspace_style"_kspace_style.html,
"pair_coeff"_pair_coeff.html, "pair_modify"_pair_modify.html,
"pair_style"_pair_style.html, "pair_write"_pair_write.html,
"special_bonds"_special_bonds.html
Settings:
"communicate"_communicate.html, "group"_group.html, "mass"_mass.html,
"min_modify"_min_modify.html, "min_style"_min_style.html,
"neigh_modify"_neigh_modify.html, "neighbor"_neighbor.html,
"reset_timestep"_reset_timestep.html, "run_style"_run_style.html,
"set"_set.html, "timestep"_timestep.html, "velocity"_velocity.html
Fixes:
"fix"_fix.html, "fix_modify"_fix_modify.html, "unfix"_unfix.html
Computes:
"compute"_compute.html, "compute_modify"_compute_modify.html,
"uncompute"_uncompute.html
Output:
"dump"_dump.html, "dump image"_dump_image.html,
"dump_modify"_dump_modify.html, "restart"_restart.html,
"thermo"_thermo.html, "thermo_modify"_thermo_modify.html,
"thermo_style"_thermo_style.html, "undump"_undump.html,
"write_restart"_write_restart.html
Actions:
"delete_atoms"_delete_atoms.html, "delete_bonds"_delete_bonds.html,
"displace_atoms"_displace_atoms.html,
"displace_box"_displace_box.html, "minimize"_minimize.html,
"neb"_neb.html "prd"_prd.html, "run"_run.html, "temper"_temper.html
Miscellaneous:
"clear"_clear.html, "echo"_echo.html, "if"_if.html,
"include"_include.html, "jump"_jump.html, "label"_label.html,
"log"_log.html, "next"_next.html, "print"_print.html,
"shell"_shell.html, "variable"_variable.html
:line
-3.5 Individual commands :h4,link(3_5),link(comm)
+3.5 Individual commands :h4,link(cmd_5),link(comm)
This section lists all LAMMPS commands alphabetically, with a separate
listing below of styles within certain commands. The "previous
-section"_#3_4 lists the same commands, grouped by category. Note that
-some style options for some commands are part of specific LAMMPS
+section"_#cmd_4 lists the same commands, grouped by category. Note
+that some style options for some commands are part of specific LAMMPS
packages, which means they cannot be used unless the package was
included when LAMMPS was built. Not all packages are included in a
default LAMMPS build. These dependencies are listed as Restrictions
in the command's documentation.
"angle_coeff"_angle_coeff.html,
"angle_style"_angle_style.html,
"atom_modify"_atom_modify.html,
"atom_style"_atom_style.html,
"bond_coeff"_bond_coeff.html,
"bond_style"_bond_style.html,
"boundary"_boundary.html,
"change_box"_change_box.html,
"clear"_clear.html,
"communicate"_communicate.html,
"compute"_compute.html,
"compute_modify"_compute_modify.html,
"create_atoms"_create_atoms.html,
"create_box"_create_box.html,
"delete_atoms"_delete_atoms.html,
"delete_bonds"_delete_bonds.html,
"dielectric"_dielectric.html,
"dihedral_coeff"_dihedral_coeff.html,
"dihedral_style"_dihedral_style.html,
"dimension"_dimension.html,
"displace_atoms"_displace_atoms.html,
"displace_box"_displace_box.html,
"dump"_dump.html,
"dump image"_dump_image.html,
"dump_modify"_dump_modify.html,
"echo"_echo.html,
"fix"_fix.html,
"fix_modify"_fix_modify.html,
"group"_group.html,
"if"_if.html,
"improper_coeff"_improper_coeff.html,
"improper_style"_improper_style.html,
"include"_include.html,
"jump"_jump.html,
"kspace_modify"_kspace_modify.html,
"kspace_style"_kspace_style.html,
"label"_label.html,
"lattice"_lattice.html,
"log"_log.html,
"mass"_mass.html,
"minimize"_minimize.html,
"min_modify"_min_modify.html,
"min_style"_min_style.html,
"neb"_neb.html,
"neigh_modify"_neigh_modify.html,
"neighbor"_neighbor.html,
"newton"_newton.html,
"next"_next.html,
"package"_package.html,
"pair_coeff"_pair_coeff.html,
"pair_modify"_pair_modify.html,
"pair_style"_pair_style.html,
"pair_write"_pair_write.html,
"prd"_prd.html,
"print"_print.html,
"processors"_processors.html,
"read_data"_read_data.html,
"read_restart"_read_restart.html,
"region"_region.html,
"replicate"_replicate.html,
"reset_timestep"_reset_timestep.html,
"restart"_restart.html,
"run"_run.html,
"run_style"_run_style.html,
"set"_set.html,
"shell"_shell.html,
"special_bonds"_special_bonds.html,
"suffix"_suffix.html,
"tad"_tad.html,
"temper"_temper.html,
"thermo"_thermo.html,
"thermo_modify"_thermo_modify.html,
"thermo_style"_thermo_style.html,
"timestep"_timestep.html,
"uncompute"_uncompute.html,
"undump"_undump.html,
"unfix"_unfix.html,
"units"_units.html,
"variable"_variable.html,
"velocity"_velocity.html,
"write_restart"_write_restart.html :tb(c=6,ea=c)
:line
Fix styles :h4
See the "fix"_fix.html command for one-line descriptions
of each style or click on the style itself for a full description:
"adapt"_fix_adapt.html,
"addforce"_fix_addforce.html,
"aveforce"_fix_aveforce.html,
"ave/atom"_fix_ave_atom.html,
"ave/correlate"_fix_ave_correlate.html,
"ave/histo"_fix_ave_histo.html,
"ave/spatial"_fix_ave_spatial.html,
"ave/time"_fix_ave_time.html,
"bond/break"_fix_bond_break.html,
"bond/create"_fix_bond_create.html,
"bond/swap"_fix_bond_swap.html,
"box/relax"_fix_box_relax.html,
"deform"_fix_deform.html,
"deposit"_fix_deposit.html,
"drag"_fix_drag.html,
"dt/reset"_fix_dt_reset.html,
"efield"_fix_efield.html,
"enforce2d"_fix_enforce2d.html,
"evaporate"_fix_evaporate.html,
"external"_fix_external.html,
"freeze"_fix_freeze.html,
+"gcmc"_fix_gcmc.html,
"gravity"_fix_gravity.html,
"heat"_fix_heat.html,
"indent"_fix_indent.html,
"langevin"_fix_langevin.html,
"lineforce"_fix_lineforce.html,
"momentum"_fix_momentum.html,
"move"_fix_move.html,
"msst"_fix_msst.html,
"neb"_fix_neb.html,
"nph"_fix_nh.html,
"nph/asphere"_fix_nph_asphere.html,
"nph/sphere"_fix_nph_sphere.html,
"npt"_fix_nh.html,
"npt/asphere"_fix_npt_asphere.html,
"npt/sphere"_fix_npt_sphere.html,
"nve"_fix_nve.html,
"nve/asphere"_fix_nve_asphere.html,
"nve/limit"_fix_nve_limit.html,
"nve/noforce"_fix_nve_noforce.html,
"nve/sphere"_fix_nve_sphere.html,
"nvt"_fix_nh.html,
"nvt/asphere"_fix_nvt_asphere.html,
"nvt/sllod"_fix_nvt_sllod.html,
"nvt/sphere"_fix_nvt_sphere.html,
"orient/fcc"_fix_orient_fcc.html,
"planeforce"_fix_planeforce.html,
"poems"_fix_poems.html,
"pour"_fix_pour.html,
"press/berendsen"_fix_press_berendsen.html,
"print"_fix_print.html,
"qeq/comb"_fix_qeq_comb.html,
"reax/bonds"_fix_reax_bonds.html,
"recenter"_fix_recenter.html,
+"restrain"_fix_restrain.html,
"rigid"_fix_rigid.html,
"rigid/nve"_fix_rigid.html,
"rigid/nvt"_fix_rigid.html,
"setforce"_fix_setforce.html,
"shake"_fix_shake.html,
"spring"_fix_spring.html,
"spring/rg"_fix_spring_rg.html,
"spring/self"_fix_spring_self.html,
"srd"_fix_srd.html,
"store/force"_fix_store_force.html,
"store/state"_fix_store_state.html,
"temp/berendsen"_fix_temp_berendsen.html,
"temp/rescale"_fix_temp_rescale.html,
"thermal/conductivity"_fix_thermal_conductivity.html,
"tmd"_fix_tmd.html,
"ttm"_fix_ttm.html,
"viscosity"_fix_viscosity.html,
"viscous"_fix_viscous.html,
"wall/colloid"_fix_wall.html,
"wall/gran"_fix_wall_gran.html,
"wall/harmonic"_fix_wall.html,
"wall/lj126"_fix_wall.html,
"wall/lj93"_fix_wall.html,
"wall/reflect"_fix_wall_reflect.html,
"wall/region"_fix_wall_region.html,
"wall/srd"_fix_wall_srd.html :tb(c=8,ea=c)
These are fix styles contributed by users, which can be used if
-"LAMMPS is built with the appropriate package"_Section_start.html#2_3.
+"LAMMPS is built with the appropriate
+package"_Section_start.html#start_3.
"atc"_fix_atc.html,
"imd"_fix_imd.html,
"langevin/eff"_fix_langevin_eff.html,
"nph/eff"_fix_nh_eff.html,
"npt/eff"_fix_nh_eff.html,
"nve/eff"_fix_nve_eff.html,
"nvt/eff"_fix_nh_eff.html,
"nvt/sllod/eff"_fix_nvt_sllod_eff.html,
"qeq/reax"_fix_qeq_reax.html,
"smd"_fix_smd.html,
"temp/rescale/eff"_fix_temp_rescale_eff.html :tb(c=6,ea=c)
These are accelerated fix styles, which can be used if LAMMPS is
built with the "appropriate accelerated
package"_Section_accelerate.html.
"freeze/cuda"_fix_freeze.html,
"addforce/cuda"_fix_addforce.html,
"addtorque"_fix_addtorque.html,
"aveforce/cuda"_fix_aveforce.html,
"enforce2d/cuda"_fix_enforce2d.html,
"gravity/cuda"_fix_gravity.html,
"npt/cuda"_fix_nh.html,
"nve/cuda"_fix_nh.html,
"nvt/cuda"_fix_nh.html,
"setforce/cuda"_fix_setforce.html,
"shake/cuda"_fix_shake.html,
"temp/berendsen/cuda"_fix_temp_berendsen.html,
"temp/rescale/cuda"_fix_temp_rescale.html,
"temp/rescale/limit/cuda"_fix_temp_rescale.html,
"viscous/cuda"_fix_viscous.html :tb(c=6,ea=c)
:line
Compute styles :h4
See the "compute"_compute.html command for one-line descriptions of
each style or click on the style itself for a full description:
"angle/local"_compute_angle_local.html,
"atom/molecule"_compute_atom_molecule.html,
"bond/local"_compute_bond_local.html,
"centro/atom"_compute_centro_atom.html,
"cluster/atom"_compute_cluster_atom.html,
"cna/atom"_compute_cna_atom.html,
"com"_compute_com.html,
"com/molecule"_compute_com_molecule.html,
"coord/atom"_compute_coord_atom.html,
"damage/atom"_compute_damage_atom.html,
"dihedral/local"_compute_dihedral_local.html,
"displace/atom"_compute_displace_atom.html,
"erotate/asphere"_compute_erotate_asphere.html,
"erotate/sphere"_compute_erotate_sphere.html,
"event/displace"_compute_event_displace.html,
"group/group"_compute_group_group.html,
"gyration"_compute_gyration.html,
"gyration/molecule"_compute_gyration_molecule.html,
"heat/flux"_compute_heat_flux.html,
"improper/local"_compute_improper_local.html,
"ke"_compute_ke.html,
"ke/atom"_compute_ke_atom.html,
"msd"_compute_msd.html,
"msd/molecule"_compute_msd_molecule.html,
"pair"_compute_pair.html,
"pair/local"_compute_pair_local.html,
"pe"_compute_pe.html,
"pe/atom"_compute_pe_atom.html,
"pressure"_compute_pressure.html,
"property/atom"_compute_property_atom.html,
"property/local"_compute_property_local.html,
"property/molecule"_compute_property_molecule.html,
"rdf"_compute_rdf.html,
"reduce"_compute_reduce.html,
"reduce/region"_compute_reduce.html,
"slice"_compute_slice.html,
"stress/atom"_compute_stress_atom.html,
"temp"_compute_temp.html,
"temp/asphere"_compute_temp_asphere.html,
"temp/com"_compute_temp_com.html,
"temp/deform"_compute_temp_deform.html,
"temp/partial"_compute_temp_partial.html,
"temp/profile"_compute_temp_profile.html,
"temp/ramp"_compute_temp_ramp.html,
"temp/region"_compute_temp_region.html,
"temp/sphere"_compute_temp_sphere.html,
"ti"_compute_ti.html :tb(c=6,ea=c)
These are compute styles contributed by users, which can be used if
-"LAMMPS is built with the appropriate package"_Section_start.html#2_3.
+"LAMMPS is built with the appropriate
+package"_Section_start.html#start_3.
"ackland/atom"_compute_ackland_atom.html,
"ke/eff"_compute_ke_eff.html,
"ke/atom/eff"_compute_ke_atom_eff.html,
"temp/eff"_compute_temp_eff.html,
"temp/deform/eff"_compute_temp_deform_eff.html,
"temp/region/eff"_compute_temp_region_eff.html,
"temp/rotate"_compute_temp_rotate.html :tb(c=6,ea=c)
These are accelerated compute styles, which can be used if LAMMPS is
built with the "appropriate accelerated
package"_Section_accelerate.html.
"pe/cuda"_compute_pe.html,
"pressure/cuda"_compute_pressure.html,
"temp/cuda"_compute_temp.html,
"temp/partial/cuda"_compute_temp_partial.html :tb(c=6,ea=c)
:line
Pair_style potentials :h4
See the "pair_style"_pair_style.html command for an overview of pair
potentials. Click on the style itself for a full description:
"none"_pair_none.html,
"hybrid"_pair_hybrid.html,
"hybrid/overlay"_pair_hybrid.html,
"adp"_pair_adp.html,
"airebo"_pair_airebo.html,
"born"_pair_born.html,
"born/coul/long"_pair_born.html,
"buck"_pair_buck.html,
"buck/coul/cut"_pair_buck.html,
"buck/coul/long"_pair_buck.html,
"colloid"_pair_colloid.html,
"comb"_pair_comb.html,
"coul/cut"_pair_coul.html,
"coul/debye"_pair_coul.html,
"coul/long"_pair_coul.html,
"dipole/cut"_pair_dipole.html,
"dpd"_pair_dpd.html,
"dpd/tstat"_pair_dpd.html,
"dsmc"_pair_dsmc.html,
"eam"_pair_eam.html,
"eam/alloy"_pair_eam.html,
"eam/fs"_pair_eam.html,
"eim"_pair_eim.html,
"gauss"_pair_gauss.html,
"gayberne"_pair_gayberne.html,
"gran/hertz/history"_pair_gran.html,
"gran/hooke"_pair_gran.html,
"gran/hooke/history"_pair_gran.html,
"hbond/dreiding/lj"_pair_hbond_dreiding.html,
"hbond/dreiding/morse"_pair_hbond_dreiding.html,
"lj/charmm/coul/charmm"_pair_charmm.html,
"lj/charmm/coul/charmm/implicit"_pair_charmm.html,
"lj/charmm/coul/long"_pair_charmm.html,
"lj/class2"_pair_class2.html,
"lj/class2/coul/cut"_pair_class2.html,
"lj/class2/coul/long"_pair_class2.html,
"lj/cut"_pair_lj.html,
"lj/cut/coul/cut"_pair_lj.html,
"lj/cut/coul/debye"_pair_lj.html,
"lj/cut/coul/long"_pair_lj.html,
"lj/cut/coul/long/tip4p"_pair_lj.html,
"lj/expand"_pair_lj_expand.html,
"lj/gromacs"_pair_gromacs.html,
"lj/gromacs/coul/gromacs"_pair_gromacs.html,
"lj/smooth"_pair_lj_smooth.html,
"lj96/cut"_pair_lj96.html,
"lubricate"_pair_lubricate.html,
"meam"_pair_meam.html,
"morse"_pair_morse.html,
"peri/lps"_pair_peri.html,
"peri/pmb"_pair_peri.html,
"reax"_pair_reax.html,
"rebo"_pair_airebo.html,
"resquared"_pair_resquared.html,
"soft"_pair_soft.html,
"sw"_pair_sw.html,
"table"_pair_table.html,
"tersoff"_pair_tersoff.html,
"tersoff/zbl"_pair_tersoff_zbl.html,
"yukawa"_pair_yukawa.html,
"yukawa/colloid"_pair_yukawa_colloid.html :tb(c=4,ea=c)
These are pair styles contributed by users, which can be used if
-"LAMMPS is built with the appropriate package"_Section_start.html#2_3.
+"LAMMPS is built with the appropriate
+package"_Section_start.html#start_3.
"awpmd/cut"_pair_awpmd.html,
"buck/coul"_pair_buck_coul.html,
"cg/cmm"_pair_cmm.html,
"cg/cmm/coul/cut"_pair_cmm.html,
"cg/cmm/coul/long"_pair_cmm.html,
"dipole/sf"_pair_dipole.html,
"eam/cd"_pair_eam.html,
"eff/cut"_pair_eff.html,
"lj/coul"_pair_lj_coul.html,
"lj/sf"_pair_lj_sf.html,
"reax/c"_pair_reax_c.html :tb(c=4,ea=c)
These are accelerated pair styles, which can be used if LAMMPS is
built with the "appropriate accelerated
package"_Section_accelerate.html.
"born/coul/long/cuda"_pair_born.html,
"buck/coul/cut/cuda"_pair_buck.html,
"buck/coul/long/cuda"_pair_buck.html,
"buck/cuda"_pair_buck.html,
"cg/cmm/coul/cut/cuda"_pair_cmm.html,
"cg/cmm/coul/debye/cuda"_pair_cmm.html,
"cg/cmm/coul/long/cuda"_pair_cmm.html,
"cg/cmm/coul/long/gpu"_pair_cmm.html,
"cg/cmm/cuda"_pair_cmm.html,
"cg/cmm/gpu"_pair_cmm.html,
"coul/long/gpu"_pair_coul.html,
"eam/alloy/cuda"_pair_eam.html,
"eam/alloy/opt"_pair_eam.html,
"eam/cuda"_pair_eam.html,
"eam/fs/cuda"_pair_eam.html,
"eam/fs/opt"_pair_eam.html,
"eam/opt"_pair_eam.html,
"gayberne/gpu"_pair_gayberne.html,
"gran/hooke/cuda"_pair_gran.html,
"lj/charmm/coul/charmm/cuda"_pair_charmm.html,
"lj/charmm/coul/charmm/implicit/cuda"_pair_charmm.html,
"lj/charmm/coul/long/cuda"_pair_charmm.html,
"lj/charmm/coul/long/gpu"_pair_charmm.html,
"lj/charmm/coul/long/opt"_pair_charmm.html,
"lj/class2/coul/cut/cuda"_pair_class2.html,
"lj/class2/coul/long/cuda"_pair_class2.html,
"lj/class2/coul/long/gpu"_pair_class2.html,
"lj/class2/cuda"_pair_class2.html,
"lj/class2/gpu"_pair_class2.html,
"lj/cut/coul/cut/cuda"_pair_lj.html,
"lj/cut/coul/cut/gpu"_pair_lj.html,
"lj/cut/coul/debye/cuda"_pair_lj.html,
"lj/cut/coul/long/cuda"_pair_lj.html,
"lj/cut/coul/long/gpu"_pair_lj.html,
"lj/cut/cuda"_pair_lj.html,
"lj/cut/experimental/cuda"_pair_lj.html,
"lj/cut/gpu"_pair_lj.html,
"lj/cut/opt"_pair_lj.html,
"lj/expand/cuda"_pair_lj_expand.html,
"lj/expand/gpu"_pair_lj_expand.html,
"lj/gromacs/coul/gromacs/cuda"_pair_gromacs.html,
"lj/gromacs/cuda"_pair_gromacs.html,
"lj/smooth/cuda"_pair_lj_smooth.html,
"lj96/cut/cuda"_pair_lj96.html,
"lj96/cut/gpu"_pair_lj96.html,
"morse/cuda"_pair_morse.html,
"morse/gpu"_pair_morse.html,
"morse/opt"_pair_morse.html,
"resquared/gpu"_pair_resquared.html :tb(c=4,ea=c)
:line
Bond_style potentials :h4
See the "bond_style"_bond_style.html command for an overview of bond
potentials. Click on the style itself for a full description:
"none"_bond_none.html,
"hybrid"_bond_hybrid.html,
"class2"_bond_class2.html,
"fene"_bond_fene.html,
"fene/expand"_bond_fene_expand.html,
"harmonic"_bond_harmonic.html,
"morse"_bond_morse.html,
"nonlinear"_bond_nonlinear.html,
"quartic"_bond_quartic.html,
"table"_bond_table.html :tb(c=4,ea=c,w=100)
These are bond styles contributed by users, which can be used if
-"LAMMPS is built with the appropriate package"_Section_start.html#2_3.
+"LAMMPS is built with the appropriate
+package"_Section_start.html#start_3.
"harmonic/shift"_bond_harmonic_shift.html,
"harmonic/shift/cut"_bond_harmonic_shift_cut.html :tb(c=4,ea=c)
:line
Angle_style potentials :h4
See the "angle_style"_angle_style.html command for an overview of
angle potentials. Click on the style itself for a full description:
"none"_angle_none.html,
"hybrid"_angle_hybrid.html,
"charmm"_angle_charmm.html,
"class2"_angle_class2.html,
"cosine"_angle_cosine.html,
"cosine/delta"_angle_cosine_delta.html,
"cosine/periodic"_angle_cosine_periodic.html,
"cosine/squared"_angle_cosine_squared.html,
"harmonic"_angle_harmonic.html,
"table"_angle_table.html :tb(c=4,ea=c,w=100)
These are angle styles contributed by users, which can be used if
-"LAMMPS is built with the appropriate package"_Section_start.html#2_3.
+"LAMMPS is built with the appropriate
+package"_Section_start.html#start_3.
"cg/cmm"_angle_cmm.html,
"cosine/shift"_angle_cosine_shift.html,
"cosine/shift/exp"_angle_cosine_shift_exp.html :tb(c=4,ea=c)
:line
Dihedral_style potentials :h4
See the "dihedral_style"_dihedral_style.html command for an overview
of dihedral potentials. Click on the style itself for a full
description:
"none"_dihedral_none.html,
"hybrid"_dihedral_hybrid.html,
"charmm"_dihedral_charmm.html,
"class2"_dihedral_class2.html,
"harmonic"_dihedral_harmonic.html,
"helix"_dihedral_helix.html,
"multi/harmonic"_dihedral_multi_harmonic.html,
"opls"_dihedral_opls.html :tb(c=4,ea=c,w=100)
These are dihedral styles contributed by users, which can be used if
-"LAMMPS is built with the appropriate package"_Section_start.html#2_3.
+"LAMMPS is built with the appropriate
+package"_Section_start.html#start_3.
"cosine/shift/exp"_dihedral_cosine_shift_exp.html :tb(c=4,ea=c)
:line
Improper_style potentials :h4
See the "improper_style"_improper_style.html command for an overview
of improper potentials. Click on the style itself for a full
description:
"none"_improper_none.html,
"hybrid"_improper_hybrid.html,
"class2"_improper_class2.html,
"cvff"_improper_cvff.html,
"harmonic"_improper_harmonic.html,
"umbrella"_improper_umbrella.html :tb(c=4,ea=c,w=100)
:line
Kspace solvers :h4
See the "kspace_style"_kspace_style.html command for an overview of
Kspace solvers. Click on the style itself for a full description:
"ewald"_kspace_style.html,
"pppm"_kspace_style.html,
"pppm/cg"_kspace_style.html,
"pppm/tip4p"_kspace_style.html :tb(c=4,ea=c,w=100)
These are Kspace solvers contributed by users, which can be used if
-"LAMMPS is built with the appropriate package"_Section_start.html#2_3.
+"LAMMPS is built with the appropriate
+package"_Section_start.html#start_3.
"ewald/n"_kspace_style.html :tb(c=4,ea=c,w=100)
These are accelerated Kspace solvers, which can be used if LAMMPS is
built with the "appropriate accelerated
package"_Section_accelerate.html.
"pppm/cuda"_kspace_style.html,
"pppm/gpu"_kspace_style.html :tb(c=4,ea=c)
diff --git a/doc/Section_errors.html b/doc/Section_errors.html
index 5ded01db4..bd7722e92 100644
--- a/doc/Section_errors.html
+++ b/doc/Section_errors.html
@@ -1,6597 +1,6597 @@
<HTML>
<CENTER><A HREF = "Section_python.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> -
<A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_history.html">Next
Section</A>
</CENTER>
<HR>
-<H3>11. Errors
+<H3>12. Errors
</H3>
<P>This section describes the various kinds of errors you can encounter
when using LAMMPS.
</P>
-11.1 <A HREF = "#11_1">Common problems</A><BR>
-11.2 <A HREF = "#11_2">Reporting bugs</A><BR>
-11.3 <A HREF = "#11_3">Error & warning messages</A> <BR>
+12.1 <A HREF = "#err_1">Common problems</A><BR>
+12.2 <A HREF = "#err_2">Reporting bugs</A><BR>
+12.3 <A HREF = "#err_3">Error & warning messages</A> <BR>
<HR>
-<A NAME = "11_1"></A><H4>11.1 Common problems
+<A NAME = "err_1"></A><H4>12.1 Common problems
</H4>
<P>If two LAMMPS runs do not produce the same answer on different
machines or different numbers of processors, this is typically not a
bug. In theory you should get identical answers on any number of
processors and on any machine. In practice, numerical round-off can
cause slight differences and eventual divergence of molecular dynamics
phase space trajectories within a few 100s or few 1000s of timesteps.
However, the statistical properties of the two runs (e.g. average
energy or temperature) should still be the same.
</P>
<P>If the <A HREF = "velocity.html">velocity</A> command is used to set initial atom
velocities, a particular atom can be assigned a different velocity
when the problem is run on a different number of processors or on
different machines. If this happens, the phase space trajectories of
the two simulations will rapidly diverge. See the discussion of the
<I>loop</I> option in the <A HREF = "velocity.html">velocity</A> command for details and
options that avoid this issue.
</P>
<P>Similarly, the <A HREF = "create_atoms.html">create_atoms</A> command generates a
lattice of atoms. For the same physical system, the ordering and
numbering of atoms by atom ID may be different depending on the number
of processors.
</P>
<P>Some commands use random number generators which may be setup to
produce different random number streams on each processor and hence
will produce different effects when run on different numbers of
processors. A commonly-used example is the <A HREF = "fix_langevin.html">fix
langevin</A> command for thermostatting.
</P>
<P>A LAMMPS simulation typically has two stages, setup and run. Most
LAMMPS errors are detected at setup time; others like a bond
stretching too far may not occur until the middle of a run.
</P>
<P>LAMMPS tries to flag errors and print informative error messages so
you can fix the problem. Of course, LAMMPS cannot figure out your
physics or numerical mistakes, like choosing too big a timestep,
specifying erroneous force field coefficients, or putting 2 atoms on
top of each other! If you run into errors that LAMMPS doesn't catch
that you think it should flag, please send an email to the
<A HREF = "http://lammps.sandia.gov/authors.html">developers</A>.
</P>
<P>If you get an error message about an invalid command in your input
script, you can determine what command is causing the problem by
looking in the log.lammps file or using the <A HREF = "echo.html">echo command</A>
to see it on the screen. For a given command, LAMMPS expects certain
arguments in a specified order. If you mess this up, LAMMPS will
often flag the error, but it may read a bogus argument and assign a
value that is valid, but not what you wanted. E.g. trying to read the
string "abc" as an integer value and assigning the associated variable
a value of 0.
</P>
<P>Generally, LAMMPS will print a message to the screen and logfile and
exit gracefully when it encounters a fatal error. Sometimes it will
print a WARNING to the screen and logfile and continue on; you can
decide if the WARNING is important or not. A WARNING message that is
generated in the middle of a run is only printed to the screen, not to
the logfile, to avoid cluttering up thermodynamic output. If LAMMPS
crashes or hangs without spitting out an error message first then it
-could be a bug (see <A HREF = "#11_2">this section</A>) or one of the following
+could be a bug (see <A HREF = "#err_2">this section</A>) or one of the following
cases:
</P>
<P>LAMMPS runs in the available memory a processor allows to be
allocated. Most reasonable MD runs are compute limited, not memory
limited, so this shouldn't be a bottleneck on most platforms. Almost
all large memory allocations in the code are done via C-style malloc's
which will generate an error message if you run out of memory.
Smaller chunks of memory are allocated via C++ "new" statements. If
you are unlucky you could run out of memory just when one of these
small requests is made, in which case the code will crash or hang (in
parallel), since LAMMPS doesn't trap on those errors.
</P>
<P>Illegal arithmetic can cause LAMMPS to run slow or crash. This is
typically due to invalid physics and numerics that your simulation is
computing. If you see wild thermodynamic values or NaN values in your
LAMMPS output, something is wrong with your simulation. If you
suspect this is happening, it is a good idea to print out
thermodynamic info frequently (e.g. every timestep) via the
<A HREF = "thermo.html">thermo</A> so you can monitor what is happening.
Visualizing the atom movement is also a good idea to insure your model
is behaving as you expect.
</P>
<P>In parallel, one way LAMMPS can hang is due to how different MPI
implementations handle buffering of messages. If the code hangs
without an error message, it may be that you need to specify an MPI
setting or two (usually via an environment variable) to enable
buffering or boost the sizes of messages that can be buffered.
</P>
<HR>
-<A NAME = "11_2"></A><H4>11.2 Reporting bugs
+<A NAME = "err_2"></A><H4>12.2 Reporting bugs
</H4>
<P>If you are confident that you have found a bug in LAMMPS, follow these
steps.
</P>
<P>Check the <A HREF = "http://lammps.sandia.gov/bug.html">New features and bug
fixes</A> section of the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW
site</A> to see if the bug has already been reported or fixed or the
<A HREF = "http://lammps.sandia.gov/unbug.html">Unfixed bug</A> to see if a fix is
pending.
</P>
<P>Check the <A HREF = "http://lammps.sandia.gov/mail.html">mailing list</A>
to see if it has been discussed before.
</P>
<P>If not, send an email to the mailing list describing the problem with
any ideas you have as to what is causing it or where in the code the
problem might be. The developers will ask for more info if needed,
such as an input script or data files.
</P>
<P>The most useful thing you can do to help us fix the bug is to isolate
the problem. Run it on the smallest number of atoms and fewest number
of processors and with the simplest input script that reproduces the
bug and try to identify what command or combination of commands is
causing the problem.
</P>
<P>As a last resort, you can send an email directly to the
<A HREF = "http://lammps.sandia.gov/authors.html">developers</A>.
</P>
<HR>
-<H4><A NAME = "11_3"></A>11.3 Error & warning messages
+<H4><A NAME = "err_3"></A>12.3 Error & warning messages
</H4>
<P>These are two alphabetic lists of the <A HREF = "#error">ERROR</A> and
<A HREF = "#warn">WARNING</A> messages LAMMPS prints out and the reason why. If the
explanation here is not sufficient, the documentation for the
offending command may help. Grepping the source files for the text of
the error message and staring at the source code and comments is also
not a bad idea! Note that sometimes the same message can be printed
from multiple places in the code.
</P>
-<P>Also note that error messages from <A HREF = "Section_start.html#2_3">user-contributed
+<P>Also note that error messages from <A HREF = "Section_start.html#start_3">user-contributed
packages</A> are not listed here. Is such an
error occurs and is not self-explanatory, you'll need to look in the
source code or contact the author of the package.
</P>
<H4><A NAME = "error"></A>Errors:
</H4>
<DL>
<DT><I>1-3 bond count is inconsistent</I>
<DD>An inconsistency was detected when computing the number of 1-3
neighbors for each atom. This likely means something is wrong with
the bond topologies you have defined.
<DT><I>1-4 bond count is inconsistent</I>
<DD>An inconsistency was detected when computing the number of 1-4
neighbors for each atom. This likely means something is wrong with
the bond topologies you have defined.
<DT><I>Accelerated style in input script but no fix gpu</I>
<DD>GPU acceleration requires fix gpu in the input script.
<DT><I>All angle coeffs are not set</I>
<DD>All angle coefficients must be set in the data file or by the
angle_coeff command before running a simulation.
<DT><I>All bond coeffs are not set</I>
<DD>All bond coefficients must be set in the data file or by the
bond_coeff command before running a simulation.
<DT><I>All dihedral coeffs are not set</I>
<DD>All dihedral coefficients must be set in the data file or by the
dihedral_coeff command before running a simulation.
<DT><I>All dipole moments are not set</I>
<DD>For atom styles that define dipole moments for each atom type, all
moments must be set in the data file or by the dipole command before
running a simulation.
<DT><I>All improper coeffs are not set</I>
<DD>All improper coefficients must be set in the data file or by the
improper_coeff command before running a simulation.
<DT><I>All masses are not set</I>
<DD>For atom styles that define masses for each atom type, all masses must
be set in the data file or by the mass command before running a
simulation. They must also be set before using the velocity
command.
<DT><I>All pair coeffs are not set</I>
<DD>All pair coefficients must be set in the data file or by the
pair_coeff command before running a simulation.
<DT><I>All shapes are not set</I>
<DD>All atom types must have a shape setting, even if the particles
are spherical.
<DT><I>All universe/uloop variables must have same # of values</I>
<DD>Self-explanatory.
<DT><I>All variables in next command must be same style</I>
<DD>Self-explanatory.
<DT><I>Angle atom missing in delete_bonds</I>
<DD>The delete_bonds command cannot find one or more atoms in a particular
angle on a particular processor. The pairwise cutoff is too short or
the atoms are too far apart to make a valid angle.
<DT><I>Angle atom missing in set command</I>
<DD>The set command cannot find one or more atoms in a particular angle on
a particular processor. The pairwise cutoff is too short or the atoms
are too far apart to make a valid angle.
<DT><I>Angle atoms %d %d %d missing on proc %d at step</I>
<DD>One or more of 3 atoms needed to compute a particular angle are
missing on this processor. Typically this is because the pairwise
cutoff is set too short or the angle has blown apart and an atom is
too far away.
<DT><I>Angle coeff for hybrid has invalid style</I>
<DD>Angle style hybrid uses another angle style as one of its
coefficients. The angle style used in the angle_coeff command or read
from a restart file is not recognized.
<DT><I>Angle coeffs are not set</I>
<DD>No angle coefficients have been assigned in the data file or via the
angle_coeff command.
<DT><I>Angle potential must be defined for SHAKE</I>
<DD>When shaking angles, an angle_style potential must be used.
<DT><I>Angle style hybrid cannot have hybrid as an argument</I>
<DD>Self-explanatory.
<DT><I>Angle style hybrid cannot have none as an argument</I>
<DD>Self-explanatory.
<DT><I>Angle style hybrid cannot use same pair style twice</I>
<DD>Self-explanatory.
<DT><I>Angle table must range from 0 to 180 degrees</I>
<DD>Self-explanatory.
<DT><I>Angle table parameters did not set N</I>
<DD>List of angle table parameters must include N setting.
<DT><I>Angle_coeff command before angle_style is defined</I>
<DD>Coefficients cannot be set in the data file or via the angle_coeff
command until an angle_style has been assigned.
<DT><I>Angle_coeff command before simulation box is defined</I>
<DD>The angle_coeff command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>Angle_coeff command when no angles allowed</I>
<DD>The chosen atom style does not allow for angles to be defined.
<DT><I>Angle_style command when no angles allowed</I>
<DD>The chosen atom style does not allow for angles to be defined.
<DT><I>Angles assigned incorrectly</I>
<DD>Angles read in from the data file were not assigned correctly to
atoms. This means there is something invalid about the topology
definitions.
<DT><I>Angles defined but no angle types</I>
<DD>The data file header lists angles but no angle types.
<DT><I>Another input script is already being processed</I>
<DD>Cannot attempt to open a 2nd input script, when the original file is
still being processed.
<DT><I>Arccos of invalid value in variable formula</I>
<DD>Argument of arccos() must be between -1 and 1.
<DT><I>Arcsin of invalid value in variable formula</I>
<DD>Argument of arcsin() must be between -1 and 1.
<DT><I>Atom IDs must be consecutive for velocity create loop all</I>
<DD>Self-explanatory.
<DT><I>Atom count changed in fix neb</I>
<DD>This is not allowed in a NEB calculation.
<DT><I>Atom count is inconsistent, cannot write restart file</I>
<DD>Sum of atoms across processors does not equal initial total count.
This is probably because you have lost some atoms.
<DT><I>Atom in too many rigid bodies - boost MAXBODY</I>
<DD>Fix poems has a parameter MAXBODY (in fix_poems.cpp) which determines
the maximum number of rigid bodies a single atom can belong to (i.e. a
multibody joint). The bodies you have defined exceed this limit.
<DT><I>Atom sort did not operate correctly</I>
<DD>This is an internal LAMMPS error. Please report it to the
developers.
<DT><I>Atom sorting has bin size = 0.0</I>
<DD>The neighbor cutoff is being used as the bin size, but it is zero.
Thus you must explicitly list a bin size in the atom_modify sort
command or turn off sorting.
<DT><I>Atom style hybrid cannot have hybrid as an argument</I>
<DD>Self-explanatory.
<DT><I>Atom style hybrid cannot use same atom style twice</I>
<DD>Self-explanatory.
<DT><I>Atom vector in equal-style variable formula</I>
<DD>Atom vectors generate one value per atom which is not allowed
in an equal-style variable.
<DT><I>Atom-style variable in equal-style variable formula</I>
<DD>Atom-style variables generate one value per atom which is not allowed
in an equal-style variable.
<DT><I>Atom_modify map command after simulation box is defined</I>
<DD>The atom_modify map command cannot be used after a read_data,
read_restart, or create_box command.
<DT><I>Atom_modify sort and first options cannot be used together</I>
<DD>Self-explanatory.
<DT><I>Atom_style command after simulation box is defined</I>
<DD>The atom_style command cannot be used after a read_data,
read_restart, or create_box command.
<DT><I>Attempt to pop empty stack in fix box/relax</I>
<DD>Internal LAMMPS error. Please report it to the developers.
<DT><I>Attempt to push beyond stack limit in fix box/relax</I>
<DD>Internal LAMMPS error. Please report it to the developers.
<DT><I>Attempting to rescale a 0.0 temperature</I>
<DD>Cannot rescale a temperature that is already 0.0.
<DT><I>Bad FENE bond</I>
<DD>Two atoms in a FENE bond have become so far apart that the bond cannot
be computed.
<DT><I>Bad TIP4P angle type for PPPM/TIP4P</I>
<DD>Specified angle type is not valid.
<DT><I>Bad TIP4P bond type for PPPM/TIP4P</I>
<DD>Specified bond type is not valid.
<DT><I>Bad grid of processors</I>
<DD>The 3d grid of processors defined by the processors command does not
match the number of processors LAMMPS is being run on.
<DT><I>Bad kspace_modify slab parameter</I>
<DD>Kspace_modify value for the slab/volume keyword must be >= 2.0.
<DT><I>Bad principal moments</I>
<DD>Fix rigid did not compute the principal moments of inertia of a rigid
group of atoms correctly.
<DT><I>Bias compute does not calculate a velocity bias</I>
<DD>The specified compute must compute a bias for temperature.
<DT><I>Bias compute does not calculate temperature</I>
<DD>The specified compute must compute temperature.
<DT><I>Bias compute group does not match compute group</I>
<DD>The specified compute must operate on the same group as the parent
compute.
<DT><I>Big particle in fix srd cannot be point particle</I>
<DD>Big particles must be extended spheriods or ellipsoids.
<DT><I>Bigint setting in lmptype.h is invalid</I>
<DD>Size of bigint is less than size of tagint.
<DT><I>Bigint setting in lmptype.h is not compatible</I>
<DD>Bigint stored in restart file is not consistent with LAMMPS version
you are running.
<DT><I>Bitmapped lookup tables require int/float be same size</I>
<DD>Cannot use pair tables on this machine, because of word sizes. Use
the pair_modify command with table 0 instead.
<DT><I>Bitmapped table in file does not match requested table</I>
<DD>Setting for bitmapped table in pair_coeff command must match table
in file exactly.
<DT><I>Bitmapped table is incorrect length in table file</I>
<DD>Number of table entries is not a correct power of 2.
<DT><I>Bond and angle potentials must be defined for TIP4P</I>
<DD>Cannot use TIP4P pair potential unless bond and angle potentials
are defined.
<DT><I>Bond atom missing in delete_bonds</I>
<DD>The delete_bonds command cannot find one or more atoms in a particular
bond on a particular processor. The pairwise cutoff is too short or
the atoms are too far apart to make a valid bond.
<DT><I>Bond atom missing in set command</I>
<DD>The set command cannot find one or more atoms in a particular bond on
a particular processor. The pairwise cutoff is too short or the atoms
are too far apart to make a valid bond.
<DT><I>Bond atoms %d %d missing on proc %d at step</I>
<DD>One or both of 2 atoms needed to compute a particular bond are
missing on this processor. Typically this is because the pairwise
cutoff is set too short or the bond has blown apart and an atom is
too far away.
<DT><I>Bond coeff for hybrid has invalid style</I>
<DD>Bond style hybrid uses another bond style as one of its coefficients.
The bond style used in the bond_coeff command or read from a restart
file is not recognized.
<DT><I>Bond coeffs are not set</I>
<DD>No bond coefficients have been assigned in the data file or via the
bond_coeff command.
<DT><I>Bond potential must be defined for SHAKE</I>
<DD>Cannot use fix shake unless bond potential is defined.
<DT><I>Bond style hybrid cannot have hybrid as an argument</I>
<DD>Self-explanatory.
<DT><I>Bond style hybrid cannot have none as an argument</I>
<DD>Self-explanatory.
<DT><I>Bond style hybrid cannot use same pair style twice</I>
<DD>Self-explanatory.
<DT><I>Bond style quartic cannot be used with 3,4-body interactions</I>
<DD>No angle, dihedral, or improper styles can be defined when using
bond style quartic.
<DT><I>Bond style quartic requires special_bonds = 1,1,1</I>
<DD>This is a restriction of the current bond quartic implementation.
<DT><I>Bond table parameters did not set N</I>
<DD>List of bond table parameters must include N setting.
<DT><I>Bond table values are not increasing</I>
<DD>The values in the tabulated file must be monotonically increasing.
<DT><I>Bond_coeff command before bond_style is defined</I>
<DD>Coefficients cannot be set in the data file or via the bond_coeff
command until an bond_style has been assigned.
<DT><I>Bond_coeff command before simulation box is defined</I>
<DD>The bond_coeff command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>Bond_coeff command when no bonds allowed</I>
<DD>The chosen atom style does not allow for bonds to be defined.
<DT><I>Bond_style command when no bonds allowed</I>
<DD>The chosen atom style does not allow for bonds to be defined.
<DT><I>Bonds assigned incorrectly</I>
<DD>Bonds read in from the data file were not assigned correctly to atoms.
This means there is something invalid about the topology definitions.
<DT><I>Bonds defined but no bond types</I>
<DD>The data file header lists bonds but no bond types.
<DT><I>Both sides of boundary must be periodic</I>
<DD>Cannot specify a boundary as periodic only on the lo or hi side. Must
be periodic on both sides.
<DT><I>Boundary command after simulation box is defined</I>
<DD>The boundary command cannot be used after a read_data, read_restart,
or create_box command.
<DT><I>Box bounds are invalid</I>
<DD>The box boundaries specified in the read_data file are invalid. The
lo value must be less than the hi value for all 3 dimensions.
<DT><I>Can not specify Pxy/Pxz/Pyz in fix box/relax with non-triclinic box</I>
<DD>Only triclinic boxes can be used with off-diagonal pressure components.
See the region prism command for details.
<DT><I>Can not specify Pxy/Pxz/Pyz in fix nvt/npt/nph with non-triclinic box</I>
<DD>Only triclinic boxes can be used with off-diagonal pressure components.
See the region prism command for details.
<DT><I>Can only use NEB with 1-processor replicas</I>
<DD>This is current restriction for NEB as implemented in LAMMPS.
<DT><I>Can only use TAD with 1-processor replicas for NEB</I>
<DD>This is current restriction for NEB as implemented in LAMMPS.
<DT><I>Cannot (yet) use PPPM with triclinic box</I>
<DD>This feature is not yet supported.
<DT><I>Cannot add atoms to fix move variable</I>
<DD>Atoms can not be added afterwards to this fix option.
<DT><I>Cannot change box to orthogonal when tilt is non-zero</I>
<DD>Self-explanatory
<DT><I>Cannot change box with certain fixes defined</I>
<DD>The change_box command cannot be used when fix ave/spatial or
fix/deform are defined .
<DT><I>Cannot change box with dumps defined</I>
<DD>Self-explanatory.
<DT><I>Cannot change dump_modify every for dump dcd</I>
<DD>The frequency of writing dump dcd snapshots cannot be changed.
<DT><I>Cannot change dump_modify every for dump xtc</I>
<DD>The frequency of writing dump xtc snapshots cannot be changed.
<DT><I>Cannot change timestep once fix srd is setup</I>
<DD>This is because various SRD properties depend on the timestep
size.
<DT><I>Cannot change timestep with fix pour</I>
<DD>This fix pre-computes some values based on the timestep, so it cannot
be changed during a simulation run.
<DT><I>Cannot compute PPPM G</I>
<DD>LAMMPS failed to compute a valid approximation for the PPPM g_ewald
factor that partitions the computation between real space and k-space.
<DT><I>Cannot create an atom map unless atoms have IDs</I>
<DD>The simulation requires a mapping from global atom IDs to local atoms,
but the atoms that have been defined have no IDs.
<DT><I>Cannot create atoms with undefined lattice</I>
<DD>Must use the lattice command before using the create_atoms
command.
<DT><I>Cannot create/grow a vector/array of pointers for %s</I>
<DD>LAMMPS code is making an illegal call to the templated memory
allocaters, to create a vector or array of pointers.
<DT><I>Cannot create_atoms after reading restart file with per-atom info</I>
<DD>The per-atom info was stored to be used when by a fix that you
may re-define. If you add atoms before re-defining the fix, then
there will not be a correct amount of per-atom info.
<DT><I>Cannot create_box after simulation box is defined</I>
<DD>The create_box command cannot be used after a read_data, read_restart,
or create_box command.
<DT><I>Cannot currently use pair reax with pair hybrid</I>
<DD>This is not yet supported.
<DT><I>Cannot delete group all</I>
<DD>Self-explanatory.
<DT><I>Cannot delete group currently used by a compute</I>
<DD>Self-explanatory.
<DT><I>Cannot delete group currently used by a dump</I>
<DD>Self-explanatory.
<DT><I>Cannot delete group currently used by a fix</I>
<DD>Self-explanatory.
<DT><I>Cannot delete group currently used by atom_modify first</I>
<DD>Self-explanatory.
<DT><I>Cannot displace_atoms after reading restart file with per-atom info</I>
<DD>This is because the restart file info cannot be migrated with the
atoms. You can get around this by performing a 0-timestep run which
will assign the restart file info to actual atoms.
<DT><I>Cannot displace_box after reading restart file with per-atom info</I>
<DD>This is because the restart file info cannot be migrated with the
atoms. You can get around this by performing a 0-timestep run which
will assign the restart file info to actual atoms.
<DT><I>Cannot displace_box on a non-periodic boundary</I>
<DD>Self-explanatory.
<DT><I>Cannot dump sort on atom IDs with no atom IDs defined</I>
<DD>Self-explanatory.
<DT><I>Cannot evaporate atoms in atom_modify first group</I>
<DD>This is a restriction due to the way atoms are organized in
a list to enable the atom_modify first command.
<DT><I>Cannot find delete_bonds group ID</I>
<DD>Group ID used in the delete_bonds command does not exist.
<DT><I>Cannot have both pair_modify shift and tail set to yes</I>
<DD>These 2 options are contradictory.
<DT><I>Cannot open AIREBO potential file %s</I>
<DD>The specified AIREBO potential file cannot be opened. Check that the
path and name are correct.
<DT><I>Cannot open COMB potential file %s</I>
<DD>The specified COMB potential file cannot be opened. Check that the
path and name are correct.
<DT><I>Cannot open EAM potential file %s</I>
<DD>The specified EAM potential file cannot be opened. Check that the
path and name are correct.
<DT><I>Cannot open EIM potential file %s</I>
<DD>The specified EIM potential file cannot be opened. Check that the
path and name are correct.
<DT><I>Cannot open MEAM potential file %s</I>
<DD>The specified MEAM potential file cannot be opened. Check that the
path and name are correct.
<DT><I>Cannot open Stillinger-Weber potential file %s</I>
<DD>The specified SW potential file cannot be opened. Check that the path
and name are correct.
<DT><I>Cannot open Tersoff potential file %s</I>
<DD>The specified Tersoff potential file cannot be opened. Check that the
path and name are correct.
<DT><I>Cannot open dir to search for restart file</I>
<DD>Using a "*" in the name of the restart file will open the current
directory to search for matching file names.
<DT><I>Cannot open dump file</I>
<DD>The output file for the dump command cannot be opened. Check that the
path and name are correct.
<DT><I>Cannot open file %s</I>
<DD>The specified file cannot be opened. Check that the path and name are
correct.
<DT><I>Cannot open fix ave/correlate file %s</I>
<DD>The specified file cannot be opened. Check that the path and name are
correct.
<DT><I>Cannot open fix ave/histo file %s</I>
<DD>The specified file cannot be opened. Check that the path and name are
correct.
<DT><I>Cannot open fix ave/spatial file %s</I>
<DD>The specified file cannot be opened. Check that the path and name are
correct.
<DT><I>Cannot open fix ave/time file %s</I>
<DD>The specified file cannot be opened. Check that the path and name are
correct.
<DT><I>Cannot open fix poems file %s</I>
<DD>The specified file cannot be opened. Check that the path and name are
correct.
<DT><I>Cannot open fix print file %s</I>
<DD>The output file generated by the fix print command cannot be opened
<DT><I>Cannot open fix qeq/comb file %s</I>
<DD>The output file for the fix qeq/combs command cannot be opened.
Check that the path and name are correct.
<DT><I>Cannot open fix reax/bonds file %s</I>
<DD>The output file for the fix reax/bonds command cannot be opened.
Check that the path and name are correct.
<DT><I>Cannot open fix tmd file %s</I>
<DD>The output file for the fix tmd command cannot be opened. Check that
the path and name are correct.
<DT><I>Cannot open fix ttm file %s</I>
<DD>The output file for the fix ttm command cannot be opened. Check that
the path and name are correct.
<DT><I>Cannot open gzipped file</I>
<DD>LAMMPS is attempting to open a gzipped version of the specified file
but was unsuccessful. Check that the path and name are correct.
<DT><I>Cannot open input script %s</I>
<DD>Self-explanatory.
<DT><I>Cannot open log.lammps</I>
<DD>The default LAMMPS log file cannot be opened. Check that the
directory you are running in allows for files to be created.
<DT><I>Cannot open logfile %s</I>
<DD>The LAMMPS log file specified in the input script cannot be opened.
Check that the path and name are correct.
<DT><I>Cannot open logfile</I>
<DD>The LAMMPS log file named in a command-line argument cannot be opened.
Check that the path and name are correct.
<DT><I>Cannot open pair_write file</I>
<DD>The specified output file for pair energies and forces cannot be
opened. Check that the path and name are correct.
<DT><I>Cannot open restart file %s</I>
<DD>Self-explanatory.
<DT><I>Cannot open screen file</I>
<DD>The screen file specified as a command-line argument cannot be
opened. Check that the directory you are running in allows for files
to be created.
<DT><I>Cannot open universe log file</I>
<DD>For a multi-partition run, the master log file cannot be opened.
Check that the directory you are running in allows for files to be
created.
<DT><I>Cannot open universe screen file</I>
<DD>For a multi-partition run, the master screen file cannot be opened.
Check that the directory you are running in allows for files to be
created.
<DT><I>Cannot read_data after simulation box is defined</I>
<DD>The read_data command cannot be used after a read_data,
read_restart, or create_box command.
<DT><I>Cannot read_restart after simulation box is defined</I>
<DD>The read_restart command cannot be used after a read_data,
read_restart, or create_box command.
<DT><I>Cannot redefine variable as a different style</I>
<DD>An equal-style variable can be re-defined but only if it was
originally an equal-style variable.
<DT><I>Cannot replicate 2d simulation in z dimension</I>
<DD>The replicate command cannot replicate a 2d simulation in the z
dimension.
<DT><I>Cannot replicate with fixes that store atom quantities</I>
<DD>Either fixes are defined that create and store atom-based vectors or a
restart file was read which included atom-based vectors for fixes.
The replicate command cannot duplicate that information for new atoms.
You should use the replicate command before fixes are applied to the
system.
<DT><I>Cannot reset timestep with a dynamic region defined</I>
<DD>Dynamic regions (see the region command) have a time dependence.
Thus you cannot change the timestep when one or more of these
are defined.
<DT><I>Cannot reset timestep with a time-dependent fix defined</I>
<DD>You cannot reset the timestep when a fix that keeps track of elapsed
time is in place.
<DT><I>Cannot reset timestep with dump file already written to</I>
<DD>Changing the timestep will confuse when a dump file is written. Use
the undump command, then restart the dump file.
<DT><I>Cannot reset timestep with restart file already written</I>
<DD>Changing the timestep will confuse when a restart file is written.
Use the "restart 0" command to turn off restarts, then start them
again.
<DT><I>Cannot restart fix rigid/nvt with different # of chains</I>
<DD>This is because the restart file contains per-chain info.
<DT><I>Cannot run 2d simulation with nonperiodic Z dimension</I>
<DD>Use the boundary command to make the z dimension periodic in order to
run a 2d simulation.
<DT><I>Cannot set both respa pair and inner/middle/outer</I>
<DD>In the rRESPA integrator, you must compute pairwise potentials either
all together (pair), or in pieces (inner/middle/outer). You can't do
both.
<DT><I>Cannot set dipole for this atom style</I>
<DD>This atom style does not support dipole settings for each atom type.
<DT><I>Cannot set dump_modify flush for dump xtc</I>
<DD>Self-explanatory.
<DT><I>Cannot set mass for this atom style</I>
<DD>This atom style does not support mass settings for each atom type.
Instead they are defined on a per-atom basis in the data file.
<DT><I>Cannot set non-zero image flag for non-periodic dimension</I>
<DD>Self-explanatory.
<DT><I>Cannot set non-zero z velocity for 2d simulation</I>
<DD>Self-explanatory.
<DT><I>Cannot set respa middle without inner/outer</I>
<DD>In the rRESPA integrator, you must define both a inner and outer
setting in order to use a middle setting.
<DT><I>Cannot set shape for this atom style</I>
<DD>The atom style does not support this setting.
<DT><I>Cannot set this attribute for this atom style</I>
<DD>The attribute being set does not exist for the defined atom style.
<DT><I>Cannot set variable z velocity for 2d simulation</I>
<DD>Self-explanatory.
<DT><I>Cannot skew triclinic box in z for 2d simulation</I>
<DD>Self-explanatory.
<DT><I>Cannot use Ewald with 2d simulation</I>
<DD>The kspace style ewald cannot be used in 2d simulations. You can use
2d Ewald in a 3d simulation; see the kspace_modify command.
<DT><I>Cannot use Ewald with triclinic box</I>
<DD>This feature is not yet supported.
<DT><I>Cannot use NEB unless atom map exists</I>
<DD>Use the atom_modify command to create an atom map.
<DT><I>Cannot use NEB with a single replica</I>
<DD>Self-explanatory.
<DT><I>Cannot use NEB with atom_modify sort enabled</I>
<DD>This is current restriction for NEB implemented in LAMMPS.
<DT><I>Cannot use PPPM with 2d simulation</I>
<DD>The kspace style pppm cannot be used in 2d simulations. You can use
2d PPPM in a 3d simulation; see the kspace_modify command.
<DT><I>Cannot use PRD with a time-dependent fix defined</I>
<DD>PRD alters the timestep in ways that will mess up these fixes.
<DT><I>Cannot use PRD with a time-dependent region defined</I>
<DD>PRD alters the timestep in ways that will mess up these regions.
<DT><I>Cannot use PRD with atom_modify sort enabled</I>
<DD>This is a current restriction of PRD. You must turn off sorting,
which is enabled by default, via the atom_modify command.
<DT><I>Cannot use PRD with multi-processor replicas unless atom map exists</I>
<DD>Use the atom_modify command to create an atom map.
<DT><I>Cannot use TAD unless atom map exists for NEB</I>
<DD>See atom_modify map command to set this.
<DT><I>Cannot use TAD with a single replica for NEB</I>
<DD>NEB requires multiple replicas.
<DT><I>Cannot use TAD with atom_modify sort enabled for NEB</I>
<DD>This is a current restriction of NEB.
<DT><I>Cannot use a damped dynamics min style with fix box/relax</I>
<DD>This is a current restriction in LAMMPS. Use another minimizer
style.
<DT><I>Cannot use a damped dynamics min style with per-atom DOF</I>
<DD>This is a current restriction in LAMMPS. Use another minimizer
style.
<DT><I>Cannot use compute cluster/atom unless atoms have IDs</I>
<DD>Atom IDs are used to identify clusters.
<DT><I>Cannot use cwiggle in variable formula between runs</I>
<DD>This is a function of elapsed time.
<DT><I>Cannot use delete_atoms unless atoms have IDs</I>
<DD>Your atoms do not have IDs, so the delete_atoms command cannot be
used.
<DT><I>Cannot use delete_bonds with non-molecular system</I>
<DD>Your choice of atom style does not have bonds.
<DT><I>Cannot use fix TMD unless atom map exists</I>
<DD>Using this fix requires the ability to lookup an atom index, which is
provided by an atom map. An atom map does not exist (by default) for
non-molecular problems. Using the atom_modify map command will force
an atom map to be created.
<DT><I>Cannot use fix ave/spatial z for 2 dimensional model</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix bond/break with non-molecular systems</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix bond/create with non-molecular systems</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix box/relax on a 2nd non-periodic dimension</I>
<DD>When specifying an off-diagonal pressure component, the 2nd of the two
dimensions must be periodic. E.g. if the xy component is specified,
then the y dimension must be periodic.
<DT><I>Cannot use fix box/relax on a non-periodic dimension</I>
<DD>When specifying a diagonal pressure component, the dimension must be
periodic.
<DT><I>Cannot use fix deform on a 2nd non-periodic boundary</I>
<DD>When specifying a tilt factor change, the 2nd of the two dimensions
must be periodic. E.g. if the xy tilt is specified, then the y
dimension must be periodic.
<DT><I>Cannot use fix deform on a non-periodic boundary</I>
<DD>When specifying a change is a box dimension, the dimension must be
periodic.
<DT><I>Cannot use fix deform trate on a box with zero tilt</I>
<DD>The trate style alters the current strain.
<DT><I>Cannot use fix enforce2d with 3d simulation</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix msst without per-type mass defined</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix npt and fix deform on same component of stress tensor</I>
<DD>This would be changing the same box dimension twice.
<DT><I>Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension</I>
<DD>When specifying an off-diagonal pressure component, the 2nd of the two
dimensions must be periodic. E.g. if the xy component is specified,
then the y dimension must be periodic.
<DT><I>Cannot use fix nvt/npt/nph on a non-periodic dimension</I>
<DD>When specifying a diagonal pressure component, the dimension must be
periodic.
<DT><I>Cannot use fix pour with triclinic box</I>
<DD>This feature is not yet supported.
<DT><I>Cannot use fix press/berendsen and fix deform on same component of stress tensor</I>
<DD>These commands both change the box size/shape, so you cannot use both
together.
<DT><I>Cannot use fix press/berendsen on a non-periodic dimension</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix press/berendsen with triclinic box</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix reax/bonds without pair_style reax</I>
<DD>Self-explantory.
<DT><I>Cannot use fix shake with non-molecular system</I>
<DD>Your choice of atom style does not have bonds.
<DT><I>Cannot use fix ttm with 2d simulation</I>
<DD>This is a current restriction of this fix due to the grid it creates.
<DT><I>Cannot use fix ttm with triclinic box</I>
<DD>This is a current restriction of this fix due to the grid it creates.
<DT><I>Cannot use fix wall in periodic dimension</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix wall zlo/zhi for a 2d simulation</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix wall/reflect in periodic dimension</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix wall/reflect zlo/zhi for a 2d simulation</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix wall/srd in periodic dimension</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix wall/srd more than once</I>
<DD>Nor is their a need to since multiple walls can be specified
in one command.
<DT><I>Cannot use fix wall/srd without fix srd</I>
<DD>Self-explanatory.
<DT><I>Cannot use fix wall/srd zlo/zhi for a 2d simulation</I>
<DD>Self-explanatory.
<DT><I>Cannot use force/neigh with triclinic box</I>
<DD>This is a current limitation of the GPU implementation
in LAMMPS.
<DT><I>Cannot use kspace solver on system with no charge</I>
<DD>No atoms in system have a non-zero charge.
<DT><I>Cannot use neighbor bins - box size << cutoff</I>
<DD>Too many neighbor bins will be created. This typically happens when
the simulation box is very small in some dimension, compared to the
neighbor cutoff. Use the "nsq" style instead of "bin" style.
<DT><I>Cannot use newton pair with GPU CHARMM pair style</I>
<DD>See the newton command to change the setting.
<DT><I>Cannot use newton pair with GPU Gay-Berne pair style</I>
<DD>See the newton command to change the setting.
<DT><I>Cannot use newton pair with GPU LJ pair style</I>
<DD>See the newton command to change the setting.
<DT><I>Cannot use newton pair with GPU LJ96 pair style</I>
<DD>See the newton command to change the setting.
<DT><I>Cannot use non-zero forces in an energy minimization</I>
<DD>Fix setforce cannot be used in this manner. Use fix addforce
instead.
<DT><I>Cannot use nonperiodic boundares with fix ttm</I>
<DD>This fix requires a fully periodic simulation box.
<DT><I>Cannot use nonperiodic boundaries with Ewald</I>
<DD>For kspace style ewald, all 3 dimensions must have periodic boundaries
unless you use the kspace_modify command to define a 2d slab with a
non-periodic z dimension.
<DT><I>Cannot use nonperiodic boundaries with PPPM</I>
<DD>For kspace style pppm, all 3 dimensions must have periodic boundaries
unless you use the kspace_modify command to define a 2d slab with a
non-periodic z dimension.
<DT><I>Cannot use pair hybrid with GPU neighbor builds</I>
<DD>See documentation for fix gpu.
<DT><I>Cannot use pair tail corrections with 2d simulations</I>
<DD>The correction factors are only currently defined for 3d systems.
<DT><I>Cannot use ramp in variable formula between runs</I>
<DD>This is because the ramp() function is time dependent.
<DT><I>Cannot use region INF or EDGE when box does not exist</I>
<DD>Regions that extend to the box boundaries can only be used after the
create_box command has been used.
<DT><I>Cannot use set atom with no atom IDs defined</I>
<DD>Atom IDs are not defined, so they cannot be used to identify an atom.
<DT><I>Cannot use swiggle in variable formula between runs</I>
<DD>This is a function of elapsed time.
<DT><I>Cannot use variable energy with constant force in fix addforce</I>
<DD>This is because for constant force, LAMMPS can compute the change
in energy directly.
<DT><I>Cannot use variable every setting for dump dcd</I>
<DD>The format of DCD dump files requires snapshots be output
at a constant frequency.
<DT><I>Cannot use variable every setting for dump xtc</I>
<DD>The format of this file requires snapshots at regular intervals.
<DT><I>Cannot use vdisplace in variable formula between runs</I>
<DD>This is a function of elapsed time.
<DT><I>Cannot use velocity create loop all unless atoms have IDs</I>
<DD>Atoms in the simulation to do not have IDs, so this style
of velocity creation cannot be performed.
<DT><I>Cannot use wall in periodic dimension</I>
<DD>Self-explanatory.
<DT><I>Cannot wiggle and shear fix wall/gran</I>
<DD>Cannot specify both options at the same time.
<DT><I>Cannot zero momentum of 0 atoms</I>
<DD>The collection of atoms for which momentum is being computed has no
atoms.
<DT><I>Change_box command before simulation box is defined</I>
<DD>Self-explanatory.
<DT><I>Change_box operation is invalid</I>
<DD>Cannot change orthogonal box to orthogonal or a triclinic box to
triclinic.
<DT><I>Communicate group != atom_modify first group</I>
<DD>Self-explanatory.
<DT><I>Compute ID for compute atom/molecule does not exist</I>
<DD>Self-explanatory.
<DT><I>Compute ID for compute reduce does not exist</I>
<DD>Self-explanatory.
<DT><I>Compute ID for fix ave/atom does not exist</I>
<DD>Self-explanatory.
<DT><I>Compute ID for fix ave/correlate does not exist</I>
<DD>Self-explanatory.
<DT><I>Compute ID for fix ave/histo does not exist</I>
<DD>Self-explanatory.
<DT><I>Compute ID for fix ave/spatial does not exist</I>
<DD>Self-explanatory.
<DT><I>Compute ID for fix ave/time does not exist</I>
<DD>Self-explanatory.
<DT><I>Compute ID for fix store/state does not exist</I>
<DD>Self-explanatory.
<DT><I>Compute ID must be alphanumeric or underscore characters</I>
<DD>Self-explanatory.
<DT><I>Compute angle/local used when angles are not allowed</I>
<DD>The atom style does not support angles.
<DT><I>Compute atom/molecule compute array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Compute atom/molecule compute does not calculate a per-atom array</I>
<DD>Self-explanatory.
<DT><I>Compute atom/molecule compute does not calculate a per-atom vector</I>
<DD>Self-explanatory.
<DT><I>Compute atom/molecule compute does not calculate per-atom values</I>
<DD>Self-explanatory.
<DT><I>Compute atom/molecule fix array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Compute atom/molecule fix does not calculate a per-atom array</I>
<DD>Self-explanatory.
<DT><I>Compute atom/molecule fix does not calculate a per-atom vector</I>
<DD>Self-explanatory.
<DT><I>Compute atom/molecule fix does not calculate per-atom values</I>
<DD>Self-explanatory.
<DT><I>Compute atom/molecule requires molecular atom style</I>
<DD>Self-explanatory.
<DT><I>Compute atom/molecule variable is not atom-style variable</I>
<DD>Self-explanatory.
<DT><I>Compute bond/local used when bonds are not allowed</I>
<DD>The atom style does not support bonds.
<DT><I>Compute centro/atom requires a pair style be defined</I>
<DD>This is because the computation of the centro-symmetry values
uses a pairwise neighbor list.
<DT><I>Compute cluster/atom cutoff is longer than pairwise cutoff</I>
<DD>Cannot identify clusters beyond cutoff.
<DT><I>Compute cluster/atom requires a pair style be defined</I>
<DD>This is so that the pair style defines a cutoff distance which
is used to find clusters.
<DT><I>Compute cna/atom cutoff is longer than pairwise cutoff</I>
<DD>Self-explantory.
<DT><I>Compute cna/atom requires a pair style be defined</I>
<DD>Self-explantory.
<DT><I>Compute com/molecule requires molecular atom style</I>
<DD>Self-explanatory.
<DT><I>Compute coord/atom cutoff is longer than pairwise cutoff</I>
<DD>Cannot compute coordination at distances longer than the pair cutoff,
since those atoms are not in the neighbor list.
<DT><I>Compute coord/atom requires a pair style be defined</I>
<DD>Self-explantory.
<DT><I>Compute damage/atom requires peridynamic potential</I>
<DD>Damage is a Peridynamic-specific metric. It requires you
to be running a Peridynamics simulation.
<DT><I>Compute dihedral/local used when dihedrals are not allowed</I>
<DD>The atom style does not support dihedrals.
<DT><I>Compute does not allow an extra compute or fix to be reset</I>
<DD>This is an internal LAMMPS error. Please report it to the
developers.
<DT><I>Compute erotate/asphere cannot be used with atom attributes diameter or rmass</I>
<DD>These attributes override the shape and mass settings, so cannot be
used.
<DT><I>Compute erotate/asphere requires atom attributes angmom, quat, shape</I>
<DD>An atom style that defines these attributes must be used.
<DT><I>Compute erotate/asphere requires extended particles</I>
<DD>This compute cannot be used with point paritlces.
<DT><I>Compute erotate/sphere requires atom attribute omega</I>
<DD>An atom style that defines this attribute must be used.
<DT><I>Compute erotate/sphere requires atom attribute radius or shape</I>
<DD>An atom style that defines these attributes must be used.
<DT><I>Compute erotate/sphere requires spherical particle shapes</I>
<DD>Self-explanatory.
<DT><I>Compute event/displace has invalid fix event assigned</I>
<DD>This is an internal LAMMPS error. Please report it to the
developers.
<DT><I>Compute group/group group ID does not exist</I>
<DD>Self-explanatory.
<DT><I>Compute gyration/molecule requires molecular atom style</I>
<DD>Self-explanatory.
<DT><I>Compute heat/flux compute ID does not compute ke/atom</I>
<DD>Self-explanatory.
<DT><I>Compute heat/flux compute ID does not compute pe/atom</I>
<DD>Self-explanatory.
<DT><I>Compute heat/flux compute ID does not compute stress/atom</I>
<DD>Self-explanatory.
<DT><I>Compute improper/local used when impropers are not allowed</I>
<DD>The atom style does not support impropers.
<DT><I>Compute msd/molecule requires molecular atom style</I>
<DD>Self-explanatory.
<DT><I>Compute pair must use group all</I>
<DD>Pair styles accumlate energy on all atoms.
<DT><I>Compute pe must use group all</I>
<DD>Energies computed by potentials (pair, bond, etc) are computed on all
atoms.
<DT><I>Compute pressure must use group all</I>
<DD>Virial contributions computed by potentials (pair, bond, etc) are
computed on all atoms.
<DT><I>Compute pressure temperature ID does not compute temperature</I>
<DD>The compute ID assigned to a pressure computation must compute
temperature.
<DT><I>Compute property/atom for atom property that isn't allocated</I>
<DD>Self-explanatory.
<DT><I>Compute property/local cannot use these inputs together</I>
<DD>Only inputs that generate the same number of datums can be used
togther. E.g. bond and angle quantities cannot be mixed.
<DT><I>Compute property/local for property that isn't allocated</I>
<DD>Self-explanatory.
<DT><I>Compute property/molecule requires molecular atom style</I>
<DD>Self-explanatory.
<DT><I>Compute rdf requires a pair style be defined</I>
<DD>Self-explanatory.
<DT><I>Compute reduce compute array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Compute reduce compute calculates global values</I>
<DD>A compute that calculates peratom or local values is required.
<DT><I>Compute reduce compute does not calculate a local array</I>
<DD>Self-explanatory.
<DT><I>Compute reduce compute does not calculate a local vector</I>
<DD>Self-explanatory.
<DT><I>Compute reduce compute does not calculate a per-atom array</I>
<DD>Self-explanatory.
<DT><I>Compute reduce compute does not calculate a per-atom vector</I>
<DD>Self-explanatory.
<DT><I>Compute reduce fix array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Compute reduce fix calculates global values</I>
<DD>A fix that calculates peratom or local values is required.
<DT><I>Compute reduce fix does not calculate a local array</I>
<DD>Self-explanatory.
<DT><I>Compute reduce fix does not calculate a local vector</I>
<DD>Self-explanatory.
<DT><I>Compute reduce fix does not calculate a per-atom array</I>
<DD>Self-explanatory.
<DT><I>Compute reduce fix does not calculate a per-atom vector</I>
<DD>Self-explanatory.
<DT><I>Compute reduce replace requires min or max mode</I>
<DD>Self-explanatory.
<DT><I>Compute reduce variable is not atom-style variable</I>
<DD>Self-explanatory.
<DT><I>Compute temp/asphere cannot be used with atom attributes diameter or rmass</I>
<DD>These attributes override the shape and mass settings, so cannot be
used.
<DT><I>Compute temp/asphere requires atom attributes angmom, quat, shape</I>
<DD>An atom style that defines these attributes must be used.
<DT><I>Compute temp/asphere requires extended particles</I>
<DD>This compute cannot be used with point paritlces.
<DT><I>Compute temp/partial cannot use vz for 2d systemx</I>
<DD>Self-explanatory.
<DT><I>Compute temp/profile cannot bin z for 2d systems</I>
<DD>Self-explanatory.
<DT><I>Compute temp/profile cannot use vz for 2d systemx</I>
<DD>Self-explanatory.
<DT><I>Compute temp/sphere requires atom attribute omega</I>
<DD>An atom style that defines this attribute must be used.
<DT><I>Compute temp/sphere requires atom attribute radius or shape</I>
<DD>An atom style that defines these attributes must be used.
<DT><I>Compute temp/sphere requires spherical particle shapes</I>
<DD>Self-explanatory.
<DT><I>Compute ti kspace style does not exist</I>
<DD>Self-explanatory.
<DT><I>Compute ti pair style does not exist</I>
<DD>Self-explanatory.
<DT><I>Compute ti tail when pair style does not compute tail corrections</I>
<DD>Self-explanatory.
<DT><I>Compute used in variable between runs is not current</I>
<DD>Computes cannot be invoked by a variable in between runs. Thus they
must have been evaluated on the last timestep of the previous run in
order for their value(s) to be accessed. See the doc page for the
variable command for more info.
<DT><I>Compute used in variable thermo keyword between runs is not current</I>
<DD>Some thermo keywords rely on a compute to calculate their value(s).
Computes cannot be invoked by a variable in between runs. Thus they
must have been evaluated on the last timestep of the previous run in
order for their value(s) to be accessed. See the doc page for the
variable command for more info.
<DT><I>Computed temperature for fix temp/berendsen cannot be 0.0</I>
<DD>Self-explanatory.
<DT><I>Computed temperature for fix temp/rescale cannot be 0.0</I>
<DD>Cannot rescale the temperature to a new value if the current
temperature is 0.0.
<DT><I>Could not count initial bonds in fix bond/create</I>
<DD>Could not find one of the atoms in a bond on this processor.
<DT><I>Could not create 3d FFT plan</I>
<DD>The FFT setup in pppm failed.
<DT><I>Could not create 3d remap plan</I>
<DD>The FFT setup in pppm failed.
<DT><I>Could not find atom_modify first group ID</I>
<DD>Self-explanatory.
<DT><I>Could not find compute ID for PRD</I>
<DD>Self-explanatory.
<DT><I>Could not find compute ID for TAD</I>
<DD>Self-explanatory.
<DT><I>Could not find compute ID for temperature bias</I>
<DD>Self-explanatory.
<DT><I>Could not find compute ID to delete</I>
<DD>Self-explanatory.
<DT><I>Could not find compute displace/atom fix ID</I>
<DD>Self-explanatory.
<DT><I>Could not find compute event/displace fix ID</I>
<DD>Self-explanatory.
<DT><I>Could not find compute group ID</I>
<DD>Self-explanatory.
<DT><I>Could not find compute heat/flux compute ID</I>
<DD>Self-explanatory.
<DT><I>Could not find compute msd fix ID</I>
<DD>Self-explanatory.
<DT><I>Could not find compute pressure temperature ID</I>
<DD>The compute ID for calculating temperature does not exist.
<DT><I>Could not find compute_modify ID</I>
<DD>Self-explanatory.
<DT><I>Could not find delete_atoms group ID</I>
<DD>Group ID used in the delete_atoms command does not exist.
<DT><I>Could not find delete_atoms region ID</I>
<DD>Region ID used in the delete_atoms command does not exist.
<DT><I>Could not find displace_atoms group ID</I>
<DD>Group ID used in the displace_atoms command does not exist.
<DT><I>Could not find displace_box group ID</I>
<DD>Group ID used in the displace_box command does not exist.
<DT><I>Could not find dump cfg compute ID</I>
<DD>Self-explanatory.
<DT><I>Could not find dump cfg fix ID</I>
<DD>Self-explanatory.
<DT><I>Could not find dump cfg variable name</I>
<DD>Self-explanatory.
<DT><I>Could not find dump custom compute ID</I>
<DD>The compute ID needed by dump custom to compute a per-atom quantity
does not exist.
<DT><I>Could not find dump custom fix ID</I>
<DD>Self-explanatory.
<DT><I>Could not find dump custom variable name</I>
<DD>Self-explanatory.
<DT><I>Could not find dump group ID</I>
<DD>A group ID used in the dump command does not exist.
<DT><I>Could not find dump local compute ID</I>
<DD>Self-explanatory.
<DT><I>Could not find dump local fix ID</I>
<DD>Self-explanatory.
<DT><I>Could not find dump modify compute ID</I>
<DD>Self-explanatory.
<DT><I>Could not find dump modify fix ID</I>
<DD>Self-explanatory.
<DT><I>Could not find dump modify variable name</I>
<DD>Self-explanatory.
<DT><I>Could not find fix ID to delete</I>
<DD>Self-explanatory.
<DT><I>Could not find fix group ID</I>
<DD>A group ID used in the fix command does not exist.
<DT><I>Could not find fix msst compute ID</I>
<DD>Self-explanatory.
<DT><I>Could not find fix poems group ID</I>
<DD>A group ID used in the fix poems command does not exist.
<DT><I>Could not find fix recenter group ID</I>
<DD>A group ID used in the fix recenter command does not exist.
<DT><I>Could not find fix rigid group ID</I>
<DD>A group ID used in the fix rigid command does not exist.
<DT><I>Could not find fix srd group ID</I>
<DD>Self-explanatory.
<DT><I>Could not find fix_modify ID</I>
<DD>A fix ID used in the fix_modify command does not exist.
<DT><I>Could not find fix_modify pressure ID</I>
<DD>The compute ID for computing pressure does not exist.
<DT><I>Could not find fix_modify temperature ID</I>
<DD>The compute ID for computing temperature does not exist.
<DT><I>Could not find group delete group ID</I>
<DD>Self-explanatory.
<DT><I>Could not find/initialize a specified accelerator device</I>
<DD>Your GPU setup is invalid.
<DT><I>Could not find set group ID</I>
<DD>Group ID specified in set command does not exist.
<DT><I>Could not find thermo compute ID</I>
<DD>Compute ID specified in thermo_style command does not exist.
<DT><I>Could not find thermo custom compute ID</I>
<DD>The compute ID needed by thermo style custom to compute a requested
quantity does not exist.
<DT><I>Could not find thermo custom fix ID</I>
<DD>The fix ID needed by thermo style custom to compute a requested
quantity does not exist.
<DT><I>Could not find thermo custom variable name</I>
<DD>Self-explanatory.
<DT><I>Could not find thermo fix ID</I>
<DD>Fix ID specified in thermo_style command does not exist.
<DT><I>Could not find thermo_modify pressure ID</I>
<DD>The compute ID needed by thermo style custom to compute pressure does
not exist.
<DT><I>Could not find thermo_modify temperature ID</I>
<DD>The compute ID needed by thermo style custom to compute temperature does
not exist.
<DT><I>Could not find undump ID</I>
<DD>A dump ID used in the undump command does not exist.
<DT><I>Could not find velocity group ID</I>
<DD>A group ID used in the velocity command does not exist.
<DT><I>Could not find velocity temperature ID</I>
<DD>The compute ID needed by the velocity command to compute temperature
does not exist.
<DT><I>Could not grab element entry from EIM potential file</I>
<DD>Self-explanatory
<DT><I>Could not grab global entry from EIM potential file</I>
<DD>Self-explanatory.
<DT><I>Could not grab pair entry from EIM potential file</I>
<DD>Self-explanatory.
<DT><I>Could not set finite-size particle attribute in fix rigid</I>
<DD>The particle has a finite size but its attributes could not be
determined.
<DT><I>Coulomb cutoffs of pair hybrid sub-styles do not match</I>
<DD>If using a Kspace solver, all Coulomb cutoffs of long pair styles must
be the same.
<DT><I>Cound not find dump_modify ID</I>
<DD>Self-explanatory.
<DT><I>Create_atoms command before simulation box is defined</I>
<DD>The create_atoms command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>Create_atoms region ID does not exist</I>
<DD>A region ID used in the create_atoms command does not exist.
<DT><I>Create_box region ID does not exist</I>
<DD>A region ID used in the create_box command does not exist.
<DT><I>Create_box region does not support a bounding box</I>
<DD>Not all regions represent bounded volumes. You cannot use
such a region with the create_box command.
<DT><I>Cyclic loop in joint connections</I>
<DD>Fix poems cannot (yet) work with coupled bodies whose joints connect
the bodies in a ring (or cycle).
<DT><I>Degenerate lattice primitive vectors</I>
<DD>Invalid set of 3 lattice vectors for lattice command.
<DT><I>Delete region ID does not exist</I>
<DD>Self-explanatory.
<DT><I>Delete_atoms command before simulation box is defined</I>
<DD>The delete_atoms command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>Delete_atoms cutoff > neighbor cutoff</I>
<DD>Cannot delete atoms further away than a processor knows about.
<DT><I>Delete_atoms requires a pair style be defined</I>
<DD>This is because atom deletion within a cutoff uses a pairwise
neighbor list.
<DT><I>Delete_bonds command before simulation box is defined</I>
<DD>The delete_bonds command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>Delete_bonds command with no atoms existing</I>
<DD>No atoms are yet defined so the delete_bonds command cannot be used.
<DT><I>Deposition region extends outside simulation box</I>
<DD>Self-explanatory.
<DT><I>Did not assign all atoms correctly</I>
<DD>Atoms read in from a data file were not assigned correctly to
processors. This is likely due to some atom coordinates being
outside a non-periodic simulation box.
<DT><I>Did not find all elements in MEAM library file</I>
<DD>The requested elements were not found in the MEAM file.
<DT><I>Did not find fix shake partner info</I>
<DD>Could not find bond partners implied by fix shake command. This error
can be triggered if the delete_bonds command was used before fix
shake, and it removed bonds without resetting the 1-2, 1-3, 1-4
weighting list via the special keyword.
<DT><I>Did not find keyword in table file</I>
<DD>Keyword used in pair_coeff command was not found in table file.
<DT><I>Did not set temp for fix rigid/nvt</I>
<DD>The temp keyword must be used.
<DT><I>Dihedral atom missing in delete_bonds</I>
<DD>The delete_bonds command cannot find one or more atoms in a particular
dihedral on a particular processor. The pairwise cutoff is too short
or the atoms are too far apart to make a valid dihedral.
<DT><I>Dihedral atom missing in set command</I>
<DD>The set command cannot find one or more atoms in a particular dihedral
on a particular processor. The pairwise cutoff is too short or the
atoms are too far apart to make a valid dihedral.
<DT><I>Dihedral atoms %d %d %d %d missing on proc %d at step</I>
<DD>One or more of 4 atoms needed to compute a particular dihedral are
missing on this processor. Typically this is because the pairwise
cutoff is set too short or the dihedral has blown apart and an atom is
too far away.
<DT><I>Dihedral charmm is incompatible with Pair style</I>
<DD>Dihedral style charmm must be used with a pair style charmm
in order for the 1-4 epsilon/sigma parameters to be defined.
<DT><I>Dihedral coeff for hybrid has invalid style</I>
<DD>Dihedral style hybrid uses another dihedral style as one of its
coefficients. The dihedral style used in the dihedral_coeff command
or read from a restart file is not recognized.
<DT><I>Dihedral coeffs are not set</I>
<DD>No dihedral coefficients have been assigned in the data file or via
the dihedral_coeff command.
<DT><I>Dihedral style hybrid cannot have hybrid as an argument</I>
<DD>Self-explanatory.
<DT><I>Dihedral style hybrid cannot have none as an argument</I>
<DD>Self-explanatory.
<DT><I>Dihedral style hybrid cannot use same dihedral style twice</I>
<DD>Self-explanatory.
<DT><I>Dihedral_coeff command before dihedral_style is defined</I>
<DD>Coefficients cannot be set in the data file or via the dihedral_coeff
command until an dihedral_style has been assigned.
<DT><I>Dihedral_coeff command before simulation box is defined</I>
<DD>The dihedral_coeff command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>Dihedral_coeff command when no dihedrals allowed</I>
<DD>The chosen atom style does not allow for dihedrals to be defined.
<DT><I>Dihedral_style command when no dihedrals allowed</I>
<DD>The chosen atom style does not allow for dihedrals to be defined.
<DT><I>Dihedrals assigned incorrectly</I>
<DD>Dihedrals read in from the data file were not assigned correctly to
atoms. This means there is something invalid about the topology
definitions.
<DT><I>Dihedrals defined but no dihedral types</I>
<DD>The data file header lists dihedrals but no dihedral types.
<DT><I>Dimension command after simulation box is defined</I>
<DD>The dimension command cannot be used after a read_data,
read_restart, or create_box command.
<DT><I>Dipole command before simulation box is defined</I>
<DD>The dipole command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>Displace_atoms command before simulation box is defined</I>
<DD>The displace_atoms command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>Displace_box command before simulation box is defined</I>
<DD>Self-explanatory.
<DT><I>Displace_box tilt factors require triclinic box</I>
<DD>Cannot use tilt factors unless the simulation box is
non-orthogonal.
<DT><I>Distance must be > 0 for compute event/displace</I>
<DD>Self-explanatory.
<DT><I>Divide by 0 in influence function of pair peri/lps</I>
<DD>This should not normally occur. It is likely a problem with your
model.
<DT><I>Divide by 0 in variable formula</I>
<DD>Self-explanatory.
<DT><I>Domain too large for neighbor bins</I>
<DD>The domain has become extremely large so that neighbor bins cannot be
used. Most likely, one or more atoms have been blown out of the
simulation box to a great distance.
<DT><I>Double precision is not supported on this accelerator.</I>
<DD>In this case, you must compile the GPU library for single precision.
<DT><I>Dump cfg and fix not computed at compatible times</I>
<DD>The fix must produce per-atom quantities on timesteps that dump cfg
needs them.
<DT><I>Dump cfg arguments must start with 'id type xs ys zs'</I>
<DD>This is a requirement of the CFG output format.
<DT><I>Dump cfg requires one snapshot per file</I>
<DD>Use the wildcard "*" character in the filename.
<DT><I>Dump custom and fix not computed at compatible times</I>
<DD>The fix must produce per-atom quantities on timesteps that dump custom
needs them.
<DT><I>Dump custom compute does not calculate per-atom array</I>
<DD>Self-explanatory.
<DT><I>Dump custom compute does not calculate per-atom vector</I>
<DD>Self-explanatory.
<DT><I>Dump custom compute does not compute per-atom info</I>
<DD>Self-explanatory.
<DT><I>Dump custom compute vector is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Dump custom fix does not compute per-atom array</I>
<DD>Self-explanatory.
<DT><I>Dump custom fix does not compute per-atom info</I>
<DD>Self-explanatory.
<DT><I>Dump custom fix does not compute per-atom vector</I>
<DD>Self-explanatory.
<DT><I>Dump custom fix vector is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Dump custom variable is not atom-style variable</I>
<DD>Only atom-style variables generate per-atom quantities, needed for
dump output.
<DT><I>Dump dcd of non-matching # of atoms</I>
<DD>Every snapshot written by dump dcd must contain the same # of atoms.
<DT><I>Dump dcd requires sorting by atom ID</I>
<DD>Use the dump_modify sort command to enable this.
<DT><I>Dump every variable returned a bad timestep</I>
<DD>The variable must return a timestep greater than the current timestep.
<DT><I>Dump local and fix not computed at compatible times</I>
<DD>The fix must produce per-atom quantities on timesteps that dump local
needs them.
<DT><I>Dump local attributes contain no compute or fix</I>
<DD>Self-explanatory.
<DT><I>Dump local cannot sort by atom ID</I>
<DD>This is because dump local does not really dump per-atom info.
<DT><I>Dump local compute does not calculate local array</I>
<DD>Self-explanatory.
<DT><I>Dump local compute does not calculate local vector</I>
<DD>Self-explanatory.
<DT><I>Dump local compute does not compute local info</I>
<DD>Self-explanatory.
<DT><I>Dump local compute vector is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Dump local count is not consistent across input fields</I>
<DD>Every column of output must be the same length.
<DT><I>Dump local fix does not compute local array</I>
<DD>Self-explanatory.
<DT><I>Dump local fix does not compute local info</I>
<DD>Self-explanatory.
<DT><I>Dump local fix does not compute local vector</I>
<DD>Self-explanatory.
<DT><I>Dump local fix vector is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Dump modify compute ID does not compute per-atom array</I>
<DD>Self-explanatory.
<DT><I>Dump modify compute ID does not compute per-atom info</I>
<DD>Self-explanatory.
<DT><I>Dump modify compute ID does not compute per-atom vector</I>
<DD>Self-explanatory.
<DT><I>Dump modify compute ID vector is not large enough</I>
<DD>Self-explanatory.
<DT><I>Dump modify element names do not match atom types</I>
<DD>Number of element names must equal number of atom types.
<DT><I>Dump modify fix ID does not compute per-atom array</I>
<DD>Self-explanatory.
<DT><I>Dump modify fix ID does not compute per-atom info</I>
<DD>Self-explanatory.
<DT><I>Dump modify fix ID does not compute per-atom vector</I>
<DD>Self-explanatory.
<DT><I>Dump modify fix ID vector is not large enough</I>
<DD>Self-explanatory.
<DT><I>Dump modify variable is not atom-style variable</I>
<DD>Self-explanatory.
<DT><I>Dump sort column is invalid</I>
<DD>Self-explanatory.
<DT><I>Dump xtc requires sorting by atom ID</I>
<DD>Use the dump_modify sort command to enable this.
<DT><I>Dump_modify region ID does not exist</I>
<DD>Self-explanatory.
<DT><I>Dumping an atom property that isn't allocated</I>
<DD>The chosen atom style does not define the per-atom quantity being
dumped.
<DT><I>Dumping an atom quantity that isn't allocated</I>
<DD>Only per-atom quantities that are defined for the atom style being
used are allowed.
<DT><I>Duplicate particle in PeriDynamic bond - simulation box is too small</I>
<DD>This is likely because your box length is shorter than 2 times
the bond length.
<DT><I>Electronic temperature dropped below zero</I>
<DD>Something has gone wrong with the fix ttm electron temperature model.
<DT><I>Empty brackets in variable</I>
<DD>There is no variable syntax that uses empty brackets. Check
the variable doc page.
<DT><I>Energy was not tallied on needed timestep</I>
<DD>You are using a thermo keyword that requires potentials to
have tallied energy, but they didn't on this timestep. See the
variable doc page for ideas on how to make this work.
<DT><I>Expected floating point parameter in input script or data file</I>
<DD>The quantity being read is an integer on non-numeric value.
<DT><I>Expected floating point parameter in variable definition</I>
<DD>The quantity being read is a non-numeric value.
<DT><I>Expected integer parameter in input script or data file</I>
<DD>The quantity being read is a floating point or non-numeric value.
<DT><I>Expected integer parameter in variable definition</I>
<DD>The quantity being read is a floating point or non-numeric value.
<DT><I>Failed to allocate %d bytes for array %s</I>
<DD>Your LAMMPS simulation has run out of memory. You need to run a
smaller simulation or on more processors.
<DT><I>Failed to reallocate %d bytes for array %s</I>
<DD>Your LAMMPS simulation has run out of memory. You need to run a
smaller simulation or on more processors.
<DT><I>Fewer SRD bins than processors in some dimension</I>
<DD>This is not allowed. Make your SRD bin size smaller.
<DT><I>Final box dimension due to fix deform is < 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix gpu split must be positive for hybrid pair styles.</I>
<DD>See documentation for fix gpu.
<DT><I>Fix ID for compute atom/molecule does not exist</I>
<DD>Self-explanatory.
<DT><I>Fix ID for compute reduce does not exist</I>
<DD>Self-explanatory.
<DT><I>Fix ID for fix ave/atom does not exist</I>
<DD>Self-explanatory.
<DT><I>Fix ID for fix ave/correlate does not exist</I>
<DD>Self-explanatory.
<DT><I>Fix ID for fix ave/histo does not exist</I>
<DD>Self-explanatory.
<DT><I>Fix ID for fix ave/spatial does not exist</I>
<DD>Self-explanatory.
<DT><I>Fix ID for fix ave/time does not exist</I>
<DD>Self-explanatory.
<DT><I>Fix ID for fix store/state does not exist</I>
<DD>Self-explanatory
<DT><I>Fix ID must be alphanumeric or underscore characters</I>
<DD>Self-explanatory.
<DT><I>Fix SRD cannot have both atom attributes angmom and omega</I>
<DD>Use either spheroid solute particles or fully generalized
aspherical solute particles.
<DT><I>Fix SRD no-slip requires atom attribute torque</I>
<DD>This is because the SRD collisions will impart torque to the solute
particles.
<DT><I>Fix SRD requires atom attribute angmom or omega</I>
<DD>This is because the SRD collisions with cause the solute particles to
rotate.
<DT><I>Fix SRD requires atom attribute radius or shape</I>
<DD>This is because the solute particles must be finite-size particles,
not point particles.
<DT><I>Fix SRD: bad bin assignment for SRD advection</I>
<DD>Something has gone wrong in your SRD model; try using more
conservative settings.
<DT><I>Fix SRD: bad search bin assignment</I>
<DD>Something has gone wrong in your SRD model; try using more
conservative settings.
<DT><I>Fix SRD: bad stencil bin for big particle</I>
<DD>Something has gone wrong in your SRD model; try using more
conservative settings.
<DT><I>Fix SRD: too many big particles in bin</I>
<DD>Reset the ATOMPERBIN parameter at the top of fix_srd.cpp
to a larger value, and re-compile the code.
<DT><I>Fix SRD: too many walls in bin</I>
<DD>This should not happen unless your system has been setup incorrectly.
<DT><I>Fix adapt kspace style does not exist</I>
<DD>Self-explanatory.
<DT><I>Fix adapt pair style does not exist</I>
<DD>Self-explanatory
<DT><I>Fix adapt pair style param not supported</I>
<DD>The pair style does not know about the parameter you specified.
<DT><I>Fix adapt requires atom attribute diameter</I>
<DD>The atom style being used does not specify an atom diameter.
<DT><I>Fix adapt type pair range is not valid for pair hybrid sub-style</I>
<DD>Self-explanatory.
<DT><I>Fix ave/atom compute array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Fix ave/atom compute does not calculate a per-atom array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/atom compute does not calculate a per-atom vector</I>
<DD>A compute used by fix ave/atom must generate per-atom values.
<DT><I>Fix ave/atom compute does not calculate per-atom values</I>
<DD>A compute used by fix ave/atom must generate per-atom values.
<DT><I>Fix ave/atom fix array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Fix ave/atom fix does not calculate a per-atom array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/atom fix does not calculate a per-atom vector</I>
<DD>A fix used by fix ave/atom must generate per-atom values.
<DT><I>Fix ave/atom fix does not calculate per-atom values</I>
<DD>A fix used by fix ave/atom must generate per-atom values.
<DT><I>Fix ave/atom variable is not atom-style variable</I>
<DD>A variable used by fix ave/atom must generate per-atom values.
<DT><I>Fix ave/histo cannot input local values in scalar mode</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo cannot input per-atom values in scalar mode</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo compute array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo compute does not calculate a global array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo compute does not calculate a global scalar</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo compute does not calculate a global vector</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo compute does not calculate a local array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo compute does not calculate a local vector</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo compute does not calculate a per-atom array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo compute does not calculate a per-atom vector</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo compute does not calculate local values</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo compute does not calculate per-atom values</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo compute vector is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo fix array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo fix does not calculate a global array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo fix does not calculate a global scalar</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo fix does not calculate a global vector</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo fix does not calculate a local array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo fix does not calculate a local vector</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo fix does not calculate a per-atom array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo fix does not calculate a per-atom vector</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo fix does not calculate local values</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo fix does not calculate per-atom values</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo fix vector is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo input is invalid compute</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo input is invalid fix</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo input is invalid variable</I>
<DD>Self-explanatory.
<DT><I>Fix ave/histo inputs are not all global, peratom, or local</I>
<DD>All inputs in a single fix ave/histo command must be of the
same style.
<DT><I>Fix ave/spatial compute does not calculate a per-atom array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/spatial compute does not calculate a per-atom vector</I>
<DD>A compute used by fix ave/spatial must generate per-atom values.
<DT><I>Fix ave/spatial compute does not calculate per-atom values</I>
<DD>A compute used by fix ave/spatial must generate per-atom values.
<DT><I>Fix ave/spatial compute vector is accessed out-of-range</I>
<DD>The index for the vector is out of bounds.
<DT><I>Fix ave/spatial fix does not calculate a per-atom array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/spatial fix does not calculate a per-atom vector</I>
<DD>A fix used by fix ave/spatial must generate per-atom values.
<DT><I>Fix ave/spatial fix does not calculate per-atom values</I>
<DD>A fix used by fix ave/spatial must generate per-atom values.
<DT><I>Fix ave/spatial fix vector is accessed out-of-range</I>
<DD>The index for the vector is out of bounds.
<DT><I>Fix ave/spatial for triclinic boxes requires units reduced</I>
<DD>Self-explanatory.
<DT><I>Fix ave/spatial settings invalid with changing box</I>
<DD>If the ave setting is "running" or "window" and the box size/shape
changes during the simulation, then the units setting must be
"reduced", else the number of bins may change.
<DT><I>Fix ave/spatial variable is not atom-style variable</I>
<DD>A variable used by fix ave/spatial must generate per-atom values.
<DT><I>Fix ave/time cannot set output array intensive/extensive from these inputs</I>
<DD>One of more of the vector inputs has individual elements which are
flagged as intensive or extensive. Such an input cannot be flagged as
all intensive/extensive when turned into an array by fix ave/time.
<DT><I>Fix ave/time cannot use variable with vector mode</I>
<DD>Variables produce scalar values.
<DT><I>Fix ave/time columns are inconsistent lengths</I>
<DD>Self-explanatory.
<DT><I>Fix ave/time compute array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Fix ave/time compute does not calculate a scalar</I>
<DD>Only computes that calculate a scalar or vector quantity (not a
per-atom quantity) can be used with fix ave/time.
<DT><I>Fix ave/time compute does not calculate a vector</I>
<DD>Only computes that calculate a scalar or vector quantity (not a
per-atom quantity) can be used with fix ave/time.
<DT><I>Fix ave/time compute does not calculate an array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/time compute vector is accessed out-of-range</I>
<DD>The index for the vector is out of bounds.
<DT><I>Fix ave/time fix array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Fix ave/time fix does not calculate a scalar</I>
<DD>A fix used by fix ave/time must generate global values.
<DT><I>Fix ave/time fix does not calculate a vector</I>
<DD>A fix used by fix ave/time must generate global values.
<DT><I>Fix ave/time fix does not calculate an array</I>
<DD>Self-explanatory.
<DT><I>Fix ave/time fix vector is accessed out-of-range</I>
<DD>The index for the vector is out of bounds.
<DT><I>Fix ave/time variable is not equal-style variable</I>
<DD>A variable used by fix ave/time must generate a global value.
<DT><I>Fix bond/break requires special_bonds = 0,1,1</I>
<DD>This is a restriction of the current fix bond/break implementation.
<DT><I>Fix bond/create cutoff is longer than pairwise cutoff</I>
<DD>This is not allowed because bond creation is done using the
pairwise neighbor list.
<DT><I>Fix bond/create requires special_bonds coul = 0,1,1</I>
<DD>Self-explanatory.
<DT><I>Fix bond/create requires special_bonds lj = 0,1,1</I>
<DD>Self-explanatory.
<DT><I>Fix bond/swap cannot use dihedral or improper styles</I>
<DD>These styles cannot be defined when using this fix.
<DT><I>Fix bond/swap requires pair and bond styles</I>
<DD>Self-explanatory.
<DT><I>Fix bond/swap requires special_bonds = 0,1,1</I>
<DD>Self-explanatory.
<DT><I>Fix box/relax generated negative box length</I>
<DD>The pressure being applied is likely too large. Try applying
it incrementally, to build to the high pressure.
<DT><I>Fix command before simulation box is defined</I>
<DD>The fix command cannot be used before a read_data, read_restart, or
create_box command.
<DT><I>Fix deform is changing yz by too much with changing xy</I>
<DD>When both yz and xy are changing, it induces changes in xz if the
box must flip from one tilt extreme to another. Thus it is not
allowed for yz to grow so much that a flip is induced.
<DT><I>Fix deform tilt factors require triclinic box</I>
<DD>Cannot deform the tilt factors of a simulation box unless it
is a triclinic (non-orthogonal) box.
<DT><I>Fix deform volume setting is invalid</I>
<DD>Cannot use volume style unless other dimensions are being controlled.
<DT><I>Fix deposit region cannot be dynamic</I>
<DD>Only static regions can be used with fix deposit.
<DT><I>Fix deposit region does not support a bounding box</I>
<DD>Not all regions represent bounded volumes. You cannot use
such a region with the fix deposit command.
<DT><I>Fix efield requires atom attribute q</I>
<DD>Self-explanatory.
<DT><I>Fix evaporate molecule requires atom attribute molecule</I>
<DD>The atom style being used does not define a molecule ID.
<DT><I>Fix external callback function not set</I>
<DD>This must be done by an external program in order to use this fix.
<DT><I>Fix for fix ave/atom not computed at compatible time</I>
<DD>Fixes generate their values on specific timesteps. Fix ave/atom is
requesting a value on a non-allowed timestep.
<DT><I>Fix for fix ave/correlate not computed at compatible time</I>
<DD>Fixes generate their values on specific timesteps. Fix ave/correlate
is requesting a value on a non-allowed timestep.
<DT><I>Fix for fix ave/histo not computed at compatible time</I>
<DD>Fixes generate their values on specific timesteps. Fix ave/histo is
requesting a value on a non-allowed timestep.
<DT><I>Fix for fix ave/spatial not computed at compatible time</I>
<DD>Fixes generate their values on specific timesteps. Fix ave/spatial is
requesting a value on a non-allowed timestep.
<DT><I>Fix for fix ave/time not computed at compatible time</I>
<DD>Fixes generate their values on specific timesteps. Fix ave/time
is requesting a value on a non-allowed timestep.
<DT><I>Fix for fix store/state not computed at compatible time</I>
<DD>Fixes generate their values on specific timesteps. Fix store/state
is requesting a value on a non-allowed timestep.
<DT><I>Fix freeze requires atom attribute torque</I>
<DD>The atom style defined does not have this attribute.
<DT><I>Fix heat group has no atoms</I>
<DD>Self-explanatory.
<DT><I>Fix heat kinetic energy went negative</I>
<DD>This will cause the velocity rescaling about to be performed by fix
heat to be invalid.
<DT><I>Fix in variable not computed at compatible time</I>
<DD>Fixes generate their values on specific timesteps. The variable is
requesting the values on a non-allowed timestep.
<DT><I>Fix langevin period must be > 0.0</I>
<DD>The time window for temperature relaxation must be > 0
<DT><I>Fix momentum group has no atoms</I>
<DD>Self-explanatory.
<DT><I>Fix move cannot define z or vz variable for 2d problem</I>
<DD>Self-explanatory.
<DT><I>Fix move cannot have 0 length rotation vector</I>
<DD>Self-explanatory.
<DT><I>Fix move cannot rotate aroung non z-axis for 2d problem</I>
<DD>Self-explanatory.
<DT><I>Fix move cannot set linear z motion for 2d problem</I>
<DD>Self-explanatory.
<DT><I>Fix move cannot set wiggle z motion for 2d problem</I>
<DD>Self-explanatory.
<DT><I>Fix msst compute ID does not compute potential energy</I>
<DD>Self-explanatory.
<DT><I>Fix msst compute ID does not compute pressure</I>
<DD>Self-explanatory.
<DT><I>Fix msst compute ID does not compute temperature</I>
<DD>Self-explanatory.
<DT><I>Fix msst requires a periodic box</I>
<DD>Self-explanatory.
<DT><I>Fix msst tscale must satisfy 0 <= tscale < 1</I>
<DD>Self-explanatory.
<DT><I>Fix npt/nph has tilted box too far - box flips are not yet implemented</I>
<DD>This feature has not yet been added. However, if you are applying
an off-diagonal pressure to a fluid, the box may want to tilt indefinitely,
because the fluid cannot support the pressure you are imposing.
<DT><I>Fix nve/asphere cannot be used with atom attributes diameter or rmass</I>
<DD>These attributes override the shape and mass settings, so cannot be
used.
<DT><I>Fix nve/asphere requires atom attributes angmom, quat, torque, shape</I>
<DD>An atom style that specifies these quantities is needed.
<DT><I>Fix nve/asphere requires extended particles</I>
<DD>This fix can only be used for particles with a shape setting.
<DT><I>Fix nve/sphere requires atom attribute diameter or shape</I>
<DD>An atom style that specifies these quantities is needed.
<DT><I>Fix nve/sphere requires atom attribute mu</I>
<DD>An atom style with this attribute is needed.
<DT><I>Fix nve/sphere requires atom attributes omega, torque</I>
<DD>An atom style with these attributes is needed.
<DT><I>Fix nve/sphere requires extended particles</I>
<DD>This fix can only be used for particles of a finite size.
<DT><I>Fix nve/sphere requires spherical particle shapes</I>
<DD>Self-explanatory.
<DT><I>Fix nvt/nph/npt asphere cannot be used with atom attributes diameter or rmass</I>
<DD>Those attributes are for spherical particles.
<DT><I>Fix nvt/nph/npt asphere requires atom attributes quat, angmom, torque, shape</I>
<DD>Those attributes are what are used to define aspherical particles.
<DT><I>Fix nvt/nph/npt asphere requires extended particles</I>
<DD>The shape setting for a particle in the fix group has shape = 0.0,
which means it is a point particle.
<DT><I>Fix nvt/nph/npt sphere requires atom attribute diameter or shape</I>
<DD>An atom style that specifies these quantities is needed.
<DT><I>Fix nvt/nph/npt sphere requires atom attributes omega, torque</I>
<DD>Those attributes are what are used to define spherical particles.
<DT><I>Fix nvt/npt/nph damping parameters must be > 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix nvt/sphere requires extended particles</I>
<DD>This fix can only be used for particles of a finite size.
<DT><I>Fix nvt/sphere requires spherical particle shapes</I>
<DD>Self-explanatory.
<DT><I>Fix orient/fcc file open failed</I>
<DD>The fix orient/fcc command could not open a specified file.
<DT><I>Fix orient/fcc file read failed</I>
<DD>The fix orient/fcc command could not read the needed parameters from a
specified file.
<DT><I>Fix orient/fcc found self twice</I>
<DD>The neighbor lists used by fix orient/fcc are messed up. If this
error occurs, it is likely a bug, so send an email to the
<A HREF = "http://lammps.sandia.gov/authors.html">developers</A>.
<DT><I>Fix peri neigh does not exist</I>
<DD>Somehow a fix that the pair style defines has been deleted.
<DT><I>Fix pour region ID does not exist</I>
<DD>Self-explanatory.
<DT><I>Fix pour region cannot be dynamic</I>
<DD>Only static regions can be used with fix pour.
<DT><I>Fix pour region does not support a bounding box</I>
<DD>Not all regions represent bounded volumes. You cannot use
such a region with the fix pour command.
<DT><I>Fix pour requires atom attributes radius, rmass</I>
<DD>The atom style defined does not have these attributes.
<DT><I>Fix press/berendsen damping parameters must be > 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix qeq/comb group has no atoms</I>
<DD>Self-explanatory.
<DT><I>Fix qeq/comb requires atom attribute q</I>
<DD>An atom style with charge must be used to perform charge equilibration.
<DT><I>Fix reax/bonds numbonds > nsbmax_most</I>
<DD>The limit of the number of bonds expected by the ReaxFF force field
was exceeded.
<DT><I>Fix recenter group has no atoms</I>
<DD>Self-explanatory.
<DT><I>Fix rigid atom has non-zero image flag in a non-periodic dimension</I>
<DD>You cannot set image flags for non-periodic dimensions.
<DT><I>Fix rigid molecule requires atom attribute molecule</I>
<DD>Self-explanatory.
<DT><I>Fix rigid/nvt period must be > 0.0</I>
<DD>Self-explanatory
<DT><I>Fix rigid: Bad principal moments</I>
<DD>The principal moments of inertia computed for a rigid body
are not within the required tolerances.
<DT><I>Fix shake cannot be used with minimization</I>
<DD>Cannot use fix shake while doing an energy minimization since
it turns off bonds that should contribute to the energy.
<DT><I>Fix spring couple group ID does not exist</I>
<DD>Self-explanatory.
<DT><I>Fix srd lamda must be >= 0.6 of SRD grid size</I>
<DD>This is a requirement for accuracy reasons.
<DT><I>Fix srd requires SRD particles all have same mass</I>
<DD>Self-explanatory.
<DT><I>Fix srd requires ghost atoms store velocity</I>
<DD>Use the communicate vel yes command to enable this.
<DT><I>Fix srd requires newton pair on</I>
<DD>Self-explanatory.
<DT><I>Fix store/state compute array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Fix store/state compute does not calculate a per-atom array</I>
<DD>The compute calculates a per-atom vector.
<DT><I>Fix store/state compute does not calculate a per-atom vector</I>
<DD>The compute calculates a per-atom vector.
<DT><I>Fix store/state compute does not calculate per-atom values</I>
<DD>Computes that calculate global or local quantities cannot be used
with fix store/state.
<DT><I>Fix store/state fix array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Fix store/state fix does not calculate a per-atom array</I>
<DD>The fix calculates a per-atom vector.
<DT><I>Fix store/state fix does not calculate a per-atom vector</I>
<DD>The fix calculates a per-atom array.
<DT><I>Fix store/state fix does not calculate per-atom values</I>
<DD>Fixes that calculate global or local quantities cannot be used with
fix store/state.
<DT><I>Fix store/state for atom property that isn't allocated</I>
<DD>Self-explanatory.
<DT><I>Fix store/state variable is not atom-style variable</I>
<DD>Only atom-style variables calculate per-atom quantities.
<DT><I>Fix temp/berendsen period must be > 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix thermal/conductivity swap value must be positive</I>
<DD>Self-explanatory.
<DT><I>Fix tmd must come after integration fixes</I>
<DD>Any fix tmd command must appear in the input script after all time
integration fixes (nve, nvt, npt). See the fix tmd documentation for
details.
<DT><I>Fix ttm electron temperatures must be > 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix ttm electronic_density must be > 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix ttm electronic_specific_heat must be > 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix ttm electronic_thermal_conductivity must be >= 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix ttm gamma_p must be > 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix ttm gamma_s must be >= 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix ttm number of nodes must be > 0</I>
<DD>Self-explanatory.
<DT><I>Fix ttm v_0 must be >= 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix used in compute atom/molecule not computed at compatible time</I>
<DD>The fix must produce per-atom quantities on timesteps that the compute
needs them.
<DT><I>Fix used in compute reduce not computed at compatible time</I>
<DD>Fixes generate their values on specific timesteps. Compute sum is
requesting a value on a non-allowed timestep.
<DT><I>Fix viscosity swap value must be positive</I>
<DD>Self-explanatory.
<DT><I>Fix viscosity vtarget value must be positive</I>
<DD>Self-explanatory.
<DT><I>Fix wall cutoff <= 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix wall/colloid cannot be used with atom attribute diameter</I>
<DD>Only finite-size particles defined by the shape command can be used.
<DT><I>Fix wall/colloid requires atom attribute shape</I>
<DD>Self-explanatory.
<DT><I>Fix wall/colloid requires extended particles</I>
<DD>Self-explanatory.
<DT><I>Fix wall/colloid requires spherical particles</I>
<DD>Self-explanatory.
<DT><I>Fix wall/gran is incompatible with Pair style</I>
<DD>Must use a granular pair style to define the parameters needed for
this fix.
<DT><I>Fix wall/gran requires atom attributes radius, omega, torque</I>
<DD>The atom style defined does not have these attributes.
<DT><I>Fix wall/region colloid cannot be used with atom attribute diameter</I>
<DD>Only finite-size particles defined by the shape command can be used.
<DT><I>Fix wall/region colloid requires atom attribute shape</I>
<DD>Self-explanatory.
<DT><I>Fix wall/region colloid requires extended particles</I>
<DD>Self-explanatory.
<DT><I>Fix wall/region colloid requires spherical particles</I>
<DD>Self-explanatory.
<DT><I>Fix wall/region cutoff <= 0.0</I>
<DD>Self-explanatory.
<DT><I>Fix_modify order must be 3 or 5</I>
<DD>Self-explanatory.
<DT><I>Fix_modify pressure ID does not compute pressure</I>
<DD>The compute ID assigned to the fix must compute pressure.
<DT><I>Fix_modify temperature ID does not compute temperature</I>
<DD>The compute ID assigned to the fix must compute temperature.
<DT><I>Found no restart file matching pattern</I>
<DD>When using a "*" in the restart file name, no matching file was found.
<DT><I>GPU is not the first fix for this run</I>
<DD>This is the way the fix must be defined in your input script.
<DT><I>GPU library not compiled for this accelerator</I>
<DD>The GPU library was not built for your accelerator. Check the arch flag in
lib/gpu.
<DT><I>Gmask function in equal-style variable formula</I>
<DD>Gmask is per-atom operation.
<DT><I>Gravity changed since fix pour was created</I>
<DD>Gravity must be static and not dynamic for use with fix pour.
<DT><I>Gravity must point in -y to use with fix pour in 2d</I>
<DD>Gravity must be pointing "down" in a 2d box.
<DT><I>Gravity must point in -z to use with fix pour in 3d</I>
<DD>Gravity must be pointing "down" in a 3d box, i.e. theta = 180.0.
<DT><I>Grmask function in equal-style variable formula</I>
<DD>Grmask is per-atom operation.
<DT><I>Group ID does not exist</I>
<DD>A group ID used in the group command does not exist.
<DT><I>Group ID in variable formula does not exist</I>
<DD>Self-explanatory.
<DT><I>Group command before simulation box is defined</I>
<DD>The group command cannot be used before a read_data, read_restart, or
create_box command.
<DT><I>Group region ID does not exist</I>
<DD>A region ID used in the group command does not exist.
<DT><I>Illegal ... command</I>
<DD>Self-explanatory. Check the input script syntax and compare to the
documentation for the command. You can use -echo screen as a
command-line option when running LAMMPS to see the offending line.
<DT><I>Illegal COMB parameter</I>
<DD>One or more of the coefficients defined in the potential file is
invalid.
<DT><I>Illegal Stillinger-Weber parameter</I>
<DD>One or more of the coefficients defined in the potential file is
invalid.
<DT><I>Illegal Tersoff parameter</I>
<DD>One or more of the coefficients defined in the potential file is
invalid.
<DT><I>Illegal chemical element names</I>
<DD>The name is too long to be a chemical element.
<DT><I>Illegal fix gpu command</I>
<DD>Self-explanatory.
<DT><I>Illegal number of angle table entries</I>
<DD>There must be at least 2 table entries.
<DT><I>Illegal number of bond table entries</I>
<DD>There must be at least 2 table entries.
<DT><I>Illegal number of pair table entries</I>
<DD>There must be at least 2 table entries.
<DT><I>Illegal simulation box</I>
<DD>The lower bound of the simulation box is greater than the upper bound.
<DT><I>Improper atom missing in delete_bonds</I>
<DD>The delete_bonds command cannot find one or more atoms in a particular
improper on a particular processor. The pairwise cutoff is too short
or the atoms are too far apart to make a valid improper.
<DT><I>Improper atom missing in set command</I>
<DD>The set command cannot find one or more atoms in a particular improper
on a particular processor. The pairwise cutoff is too short or the
atoms are too far apart to make a valid improper.
<DT><I>Improper atoms %d %d %d %d missing on proc %d at step</I>
<DD>One or more of 4 atoms needed to compute a particular improper are
missing on this processor. Typically this is because the pairwise
cutoff is set too short or the improper has blown apart and an atom is
too far away.
<DT><I>Improper coeff for hybrid has invalid style</I>
<DD>Improper style hybrid uses another improper style as one of its
coefficients. The improper style used in the improper_coeff command
or read from a restart file is not recognized.
<DT><I>Improper coeffs are not set</I>
<DD>No improper coefficients have been assigned in the data file or via
the improper_coeff command.
<DT><I>Improper style hybrid cannot have hybrid as an argument</I>
<DD>Self-explanatory.
<DT><I>Improper style hybrid cannot have none as an argument</I>
<DD>Self-explanatory.
<DT><I>Improper style hybrid cannot use same improper style twice</I>
<DD>Self-explanatory.
<DT><I>Improper_coeff command before improper_style is defined</I>
<DD>Coefficients cannot be set in the data file or via the improper_coeff
command until an improper_style has been assigned.
<DT><I>Improper_coeff command before simulation box is defined</I>
<DD>The improper_coeff command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>Improper_coeff command when no impropers allowed</I>
<DD>The chosen atom style does not allow for impropers to be defined.
<DT><I>Improper_style command when no impropers allowed</I>
<DD>The chosen atom style does not allow for impropers to be defined.
<DT><I>Impropers assigned incorrectly</I>
<DD>Impropers read in from the data file were not assigned correctly to
atoms. This means there is something invalid about the topology
definitions.
<DT><I>Impropers defined but no improper types</I>
<DD>The data file header lists improper but no improper types.
<DT><I>Inconsistent iparam/jparam values in fix bond/create command</I>
<DD>If itype and jtype are the same, then their maxbond and newtype
settings must also be the same.
<DT><I>Incorrect args for angle coefficients</I>
<DD>Self-explanatory. Check the input script or data file.
<DT><I>Incorrect args for bond coefficients</I>
<DD>Self-explanatory. Check the input script or data file.
<DT><I>Incorrect args for dihedral coefficients</I>
<DD>Self-explanatory. Check the input script or data file.
<DT><I>Incorrect args for improper coefficients</I>
<DD>Self-explanatory. Check the input script or data file.
<DT><I>Incorrect args for pair coefficients</I>
<DD>Self-explanatory. Check the input script or data file.
<DT><I>Incorrect args in pair_style command</I>
<DD>Self-explanatory.
<DT><I>Incorrect atom format in data file</I>
<DD>Number of values per atom line in the data file is not consistent with
the atom style.
<DT><I>Incorrect boundaries with slab Ewald</I>
<DD>Must have periodic x,y dimensions and non-periodic z dimension to use
2d slab option with Ewald.
<DT><I>Incorrect boundaries with slab PPPM</I>
<DD>Must have periodic x,y dimensions and non-periodic z dimension to use
2d slab option with PPPM.
<DT><I>Incorrect element names in EAM potential file</I>
<DD>The element names in the EAM file do not match those requested.
<DT><I>Incorrect format in COMB potential file</I>
<DD>Incorrect number of words per line in the potential file.
<DT><I>Incorrect format in MEAM potential file</I>
<DD>Incorrect number of words per line in the potential file.
<DT><I>Incorrect format in NEB coordinate file</I>
<DD>Self-explanatory.
<DT><I>Incorrect format in Stillinger-Weber potential file</I>
<DD>Incorrect number of words per line in the potential file.
<DT><I>Incorrect format in TMD target file</I>
<DD>Format of file read by fix tmd command is incorrect.
<DT><I>Incorrect format in Tersoff potential file</I>
<DD>Incorrect number of words per line in the potential file.
<DT><I>Incorrect multiplicity arg for dihedral coefficients</I>
<DD>Self-explanatory. Check the input script or data file.
<DT><I>Incorrect sign arg for dihedral coefficients</I>
<DD>Self-explanatory. Check the input script or data file.
<DT><I>Incorrect velocity format in data file</I>
<DD>Each atom style defines a format for the Velocity section
of the data file. The read-in lines do not match.
<DT><I>Incorrect weight arg for dihedral coefficients</I>
<DD>Self-explanatory. Check the input script or data file.
<DT><I>Index between variable brackets must be positive</I>
<DD>Self-explanatory.
<DT><I>Indexed per-atom vector in variable formula without atom map</I>
<DD>Accessing a value from an atom vector requires the ability to lookup
an atom index, which is provided by an atom map. An atom map does not
exist (by default) for non-molecular problems. Using the atom_modify
map command will force an atom map to be created.
<DT><I>Induced tilt by displace_box is too large</I>
<DD>The final tilt value must be between -1/2 and 1/2 of the perpendicular
box length.
<DT><I>Initial temperatures not all set in fix ttm</I>
<DD>Self-explantory.
<DT><I>Input line too long after variable substitution</I>
<DD>This is a hard (very large) limit defined in the input.cpp file.
<DT><I>Input line too long: %s</I>
<DD>This is a hard (very large) limit defined in the input.cpp file.
<DT><I>Insertion region extends outside simulation box</I>
<DD>Region specified with fix pour command extends outside the global
simulation box.
<DT><I>Insufficient Jacobi rotations for POEMS body</I>
<DD>Eigensolve for rigid body was not sufficiently accurate.
<DT><I>Insufficient Jacobi rotations for rigid body</I>
<DD>Eigensolve for rigid body was not sufficiently accurate.
<DT><I>Insufficient memory on accelerator. </I>
<DD>Self-explanatory.
<DT><I>Invalid Boolean syntax in if command</I>
<DD>Self-explanatory.
<DT><I>Invalid REAX atom type</I>
<DD>There is a mis-match between LAMMPS atom types and the elements
listed in the ReaxFF force field file.
<DT><I>Invalid angle style</I>
<DD>The choice of angle style is unknown.
<DT><I>Invalid angle table length</I>
<DD>Length must be 2 or greater.
<DT><I>Invalid angle type in Angles section of data file</I>
<DD>Angle type must be positive integer and within range of specified angle
types.
<DT><I>Invalid angle type index for fix shake</I>
<DD>Self-explanatory.
<DT><I>Invalid atom ID in Angles section of data file</I>
<DD>Atom IDs must be positive integers and within range of defined
atoms.
<DT><I>Invalid atom ID in Atoms section of data file</I>
<DD>Atom IDs must be positive integers.
<DT><I>Invalid atom ID in Bonds section of data file</I>
<DD>Atom IDs must be positive integers and within range of defined
atoms.
<DT><I>Invalid atom ID in Dihedrals section of data file</I>
<DD>Atom IDs must be positive integers and within range of defined
atoms.
<DT><I>Invalid atom ID in Impropers section of data file</I>
<DD>Atom IDs must be positive integers and within range of defined
atoms.
<DT><I>Invalid atom ID in Velocities section of data file</I>
<DD>Atom IDs must be positive integers and within range of defined
atoms.
<DT><I>Invalid atom mass for fix shake</I>
<DD>Mass specified in fix shake command must be > 0.0.
<DT><I>Invalid atom style</I>
<DD>The choice of atom style is unknown.
<DT><I>Invalid atom type in Atoms section of data file</I>
<DD>Atom types must range from 1 to specified # of types.
<DT><I>Invalid atom type in create_atoms command</I>
<DD>The create_box command specified the range of valid atom types.
An invalid type is being requested.
<DT><I>Invalid atom type in fix bond/create command</I>
<DD>Self-explanatory.
<DT><I>Invalid atom type in neighbor exclusion list</I>
<DD>Atom types must range from 1 to Ntypes inclusive.
<DT><I>Invalid atom type index for fix shake</I>
<DD>Atom types must range from 1 to Ntypes inclusive.
<DT><I>Invalid atom types in pair_write command</I>
<DD>Atom types must range from 1 to Ntypes inclusive.
<DT><I>Invalid atom vector in variable formula</I>
<DD>The atom vector is not recognized.
<DT><I>Invalid attribute in dump custom command</I>
<DD>Self-explantory.
<DT><I>Invalid attribute in dump local command</I>
<DD>Self-explantory.
<DT><I>Invalid attribute in dump modify command</I>
<DD>Self-explantory.
<DT><I>Invalid bond style</I>
<DD>The choice of bond style is unknown.
<DT><I>Invalid bond table length</I>
<DD>Length must be 2 or greater.
<DT><I>Invalid bond type in Bonds section of data file</I>
<DD>Bond type must be positive integer and within range of specified bond
types.
<DT><I>Invalid bond type in fix bond/break command</I>
<DD>Self-explanatory.
<DT><I>Invalid bond type in fix bond/create command</I>
<DD>Self-explanatory.
<DT><I>Invalid bond type index for fix shake</I>
<DD>Self-explanatory. Check the fix shake command in the input script.
<DT><I>Invalid coeffs for this dihedral style</I>
<DD>Cannot set class 2 coeffs in data file for this dihedral style.
<DT><I>Invalid command-line argument</I>
<DD>One or more command-line arguments is invalid. Check the syntax of
the command you are using to launch LAMMPS.
<DT><I>Invalid compute ID in variable formula</I>
<DD>The compute is not recognized.
<DT><I>Invalid compute style</I>
<DD>Self-explanatory.
<DT><I>Invalid cutoff in communicate command</I>
<DD>Specified cutoff must be >= 0.0.
<DT><I>Invalid cutoffs in pair_write command</I>
<DD>Inner cutoff must be larger than 0.0 and less than outer cutoff.
<DT><I>Invalid d1 or d2 value for pair colloid coeff</I>
<DD>Neither d1 or d2 can be < 0.
<DT><I>Invalid data file section: Angle Coeffs</I>
<DD>Atom style does not allow angles.
<DT><I>Invalid data file section: AngleAngle Coeffs</I>
<DD>Atom style does not allow impropers.
<DT><I>Invalid data file section: AngleAngleTorsion Coeffs</I>
<DD>Atom style does not allow dihedrals.
<DT><I>Invalid data file section: AngleTorsion Coeffs</I>
<DD>Atom style does not allow dihedrals.
<DT><I>Invalid data file section: Angles</I>
<DD>Atom style does not allow angles.
<DT><I>Invalid data file section: Bond Coeffs</I>
<DD>Atom style does not allow bonds.
<DT><I>Invalid data file section: BondAngle Coeffs</I>
<DD>Atom style does not allow angles.
<DT><I>Invalid data file section: BondBond Coeffs</I>
<DD>Atom style does not allow angles.
<DT><I>Invalid data file section: BondBond13 Coeffs</I>
<DD>Atom style does not allow dihedrals.
<DT><I>Invalid data file section: Bonds</I>
<DD>Atom style does not allow bonds.
<DT><I>Invalid data file section: Dihedral Coeffs</I>
<DD>Atom style does not allow dihedrals.
<DT><I>Invalid data file section: Dihedrals</I>
<DD>Atom style does not allow dihedrals.
<DT><I>Invalid data file section: EndBondTorsion Coeffs</I>
<DD>Atom style does not allow dihedrals.
<DT><I>Invalid data file section: Improper Coeffs</I>
<DD>Atom style does not allow impropers.
<DT><I>Invalid data file section: Impropers</I>
<DD>Atom style does not allow impropers.
<DT><I>Invalid data file section: MiddleBondTorsion Coeffs</I>
<DD>Atom style does not allow dihedrals.
<DT><I>Invalid delta_conf in tad command</I>
<DD>The value must be between 0 and 1 inclusive.
<DT><I>Invalid density in Atoms section of data file</I>
<DD>Density value cannot be <= 0.0.
<DT><I>Invalid dihedral style</I>
<DD>The choice of dihedral style is unknown.
<DT><I>Invalid dihedral type in Dihedrals section of data file</I>
<DD>Dihedral type must be positive integer and within range of specified
dihedral types.
<DT><I>Invalid dipole line in data file</I>
<DD>Self-explanatory.
<DT><I>Invalid dipole value</I>
<DD>Self-explanatory.
<DT><I>Invalid dump dcd filename</I>
<DD>Filenames used with the dump dcd style cannot be binary or compressed
or cause multiple files to be written.
<DT><I>Invalid dump frequency</I>
<DD>Dump frequency must be 1 or greater.
<DT><I>Invalid dump style</I>
<DD>The choice of dump style is unknown.
<DT><I>Invalid dump xtc filename</I>
<DD>Filenames used with the dump xtc style cannot be binary or compressed
or cause multiple files to be written.
<DT><I>Invalid dump xyz filename</I>
<DD>Filenames used with the dump xyz style cannot be binary or cause files
to be written by each processor.
<DT><I>Invalid dump_modify threshhold operator</I>
<DD>Operator keyword used for threshold specification in not recognized.
<DT><I>Invalid fix ID in variable formula</I>
<DD>The fix is not recognized.
<DT><I>Invalid fix ave/time off column</I>
<DD>Self-explantory.
<DT><I>Invalid fix box/relax command for a 2d simulation</I>
<DD>Fix box/relax styles involving the z dimension cannot be used in
a 2d simulation.
<DT><I>Invalid fix box/relax command pressure settings</I>
<DD>If multiple dimensions are coupled, those dimensions must be specified.
<DT><I>Invalid fix box/relax pressure settings</I>
<DD>Settings for coupled dimensions must be the same.
<DT><I>Invalid fix nvt/npt/nph command for a 2d simulation</I>
<DD>Cannot control z dimension in a 2d model.
<DT><I>Invalid fix nvt/npt/nph command pressure settings</I>
<DD>If multiple dimensions are coupled, those dimensions must be
specified.
<DT><I>Invalid fix nvt/npt/nph pressure settings</I>
<DD>Settings for coupled dimensions must be the same.
<DT><I>Invalid fix press/berendsen for a 2d simulation</I>
<DD>The z component of pressure cannot be controlled for a 2d model.
<DT><I>Invalid fix press/berendsen pressure settings</I>
<DD>Settings for coupled dimensions must be the same.
<DT><I>Invalid fix style</I>
<DD>The choice of fix style is unknown.
<DT><I>Invalid flag in force field section of restart file</I>
<DD>Unrecognized entry in restart file.
<DT><I>Invalid flag in header section of restart file</I>
<DD>Unrecognized entry in restart file.
<DT><I>Invalid flag in type arrays section of restart file</I>
<DD>Unrecognized entry in restart file.
<DT><I>Invalid frequency in temper command</I>
<DD>Nevery must be > 0.
<DT><I>Invalid group ID in neigh_modify command</I>
<DD>A group ID used in the neigh_modify command does not exist.
<DT><I>Invalid group function in variable formula</I>
<DD>Group function is not recognized.
<DT><I>Invalid group in communicate command</I>
<DD>Self-explanatory.
<DT><I>Invalid improper style</I>
<DD>The choice of improper style is unknown.
<DT><I>Invalid improper type in Impropers section of data file</I>
<DD>Improper type must be positive integer and within range of specified
improper types.
<DT><I>Invalid keyword in angle table parameters</I>
<DD>Self-explanatory.
<DT><I>Invalid keyword in bond table parameters</I>
<DD>Self-explanatory.
<DT><I>Invalid keyword in compute angle/local command</I>
<DD>Self-explanatory.
<DT><I>Invalid keyword in compute bond/local command</I>
<DD>Self-explanatory.
<DT><I>Invalid keyword in compute dihedral/local command</I>
<DD>Self-explanatory.
<DT><I>Invalid keyword in compute improper/local command</I>
<DD>Self-explanatory.
<DT><I>Invalid keyword in compute pair/local command</I>
<DD>Self-explanatory.
<DT><I>Invalid keyword in compute property/atom command</I>
<DD>Self-explanatory.
<DT><I>Invalid keyword in compute property/local command</I>
<DD>Self-explanatory.
<DT><I>Invalid keyword in compute property/molecule command</I>
<DD>Self-explanatory.
<DT><I>Invalid keyword in dump cfg command</I>
<DD>Self-explanatory.
<DT><I>Invalid keyword in pair table parameters</I>
<DD>Keyword used in list of table parameters is not recognized.
<DT><I>Invalid keyword in thermo_style custom command</I>
<DD>One or more specified keywords are not recognized.
<DT><I>Invalid kspace style</I>
<DD>The choice of kspace style is unknown.
<DT><I>Invalid mass line in data file</I>
<DD>Self-explanatory.
<DT><I>Invalid mass value</I>
<DD>Self-explanatory.
<DT><I>Invalid math function in variable formula</I>
<DD>Self-explanatory.
<DT><I>Invalid math/group/special function in variable formula</I>
<DD>Self-explanatory.
<DT><I>Invalid option in lattice command for non-custom style</I>
<DD>Certain lattice keywords are not supported unless the
lattice style is "custom".
<DT><I>Invalid order of forces within respa levels</I>
<DD>For respa, ordering of force computations within respa levels must
obey certain rules. E.g. bonds cannot be compute less frequently than
angles, pairwise forces cannot be computed less frequently than
kspace, etc.
<DT><I>Invalid pair style</I>
<DD>The choice of pair style is unknown.
<DT><I>Invalid pair table cutoff</I>
<DD>Cutoffs in pair_coeff command are not valid with read-in pair table.
<DT><I>Invalid pair table length</I>
<DD>Length of read-in pair table is invalid
<DT><I>Invalid radius in Atoms section of data file</I>
<DD>Radius must be >= 0.0.
<DT><I>Invalid random number seed in fix ttm command</I>
<DD>Random number seed must be > 0.
<DT><I>Invalid random number seed in set command</I>
<DD>Random number seed must be > 0.
<DT><I>Invalid region style</I>
<DD>The choice of region style is unknown.
<DT><I>Invalid replace values in compute reduce</I>
<DD>Self-explanatory.
<DT><I>Invalid run command N value</I>
<DD>The number of timesteps must fit in a 32-bit integer. If you want to
run for more steps than this, perform multiple shorter runs.
<DT><I>Invalid run command start/stop value</I>
<DD>Self-explanatory.
<DT><I>Invalid run command upto value</I>
<DD>Self-explanatory.
<DT><I>Invalid seed for Marsaglia random # generator</I>
<DD>The initial seed for this random number generator must be a positive
integer less than or equal to 900 million.
<DT><I>Invalid seed for Park random # generator</I>
<DD>The initial seed for this random number generator must be a positive
integer.
<DT><I>Invalid shape line in data file</I>
<DD>Self-explanatory.
<DT><I>Invalid shape line in data file</I>
<DD>Self-explanatory.
<DT><I>Invalid shape value</I>
<DD>Self-explanatory.
<DT><I>Invalid shear direction for fix wall/gran</I>
<DD>Self-explanatory.
<DT><I>Invalid special function in variable formula</I>
<DD>Self-explanatory.
<DT><I>Invalid style in pair_write command</I>
<DD>Self-explanatory. Check the input script.
<DT><I>Invalid syntax in variable formula</I>
<DD>Self-explanatory.
<DT><I>Invalid t_event in prd command</I>
<DD>Self-explanatory.
<DT><I>Invalid t_event in tad command</I>
<DD>The value must be greater than 0.
<DT><I>Invalid thermo keyword in variable formula</I>
<DD>The keyword is not recognized.
<DT><I>Invalid tmax in tad command</I>
<DD>The value must be greater than 0.0.
<DT><I>Invalid type for dipole set</I>
<DD>Dipole command must set a type from 1-N where N is the number of atom
types.
<DT><I>Invalid type for mass set</I>
<DD>Mass command must set a type from 1-N where N is the number of atom
types.
<DT><I>Invalid type for shape set</I>
<DD>Atom type is out of bounds.
<DT><I>Invalid value in set command</I>
<DD>The value specified for the setting is invalid, likely because it is
too small or too large.
<DT><I>Invalid variable evaluation in variable formula</I>
<DD>A variable used in a formula could not be evaluated.
<DT><I>Invalid variable in next command</I>
<DD>Self-explanatory.
<DT><I>Invalid variable name in variable formula</I>
<DD>Variable name is not recognized.
<DT><I>Invalid variable name</I>
<DD>Variable name used in an input script line is invalid.
<DT><I>Invalid variable style with next command</I>
<DD>Variable styles <I>equal</I> and <I>world</I> cannot be used in a next
command.
<DT><I>Invalid wiggle direction for fix wall/gran</I>
<DD>Self-explanatory.
<DT><I>Invoked angle equil angle on angle style none</I>
<DD>Self-explanatory.
<DT><I>Invoked angle single on angle style none</I>
<DD>Self-explanatory.
<DT><I>Invoked bond equil distance on bond style none</I>
<DD>Self-explanatory.
<DT><I>Invoked bond single on bond style none</I>
<DD>Self-explanatory.
<DT><I>Invoked pair single on pair style none</I>
<DD>A command (e.g. a dump) attempted to invoke the single() function on a
pair style none, which is illegal. You are probably attempting to
compute per-atom quantities with an undefined pair style.
<DT><I>KSpace style has not yet been set</I>
<DD>Cannot use kspace_modify command until a kspace style is set.
<DT><I>KSpace style is incompatible with Pair style</I>
<DD>Setting a kspace style requires that a pair style with a long-range
Coulombic component be selected.
<DT><I>Keyword %s in MEAM parameter file not recognized</I>
<DD>Self-explanatory.
<DT><I>Kspace style requires atom attribute q</I>
<DD>The atom style defined does not have these attributes.
<DT><I>Label wasn't found in input script</I>
<DD>Self-explanatory.
<DT><I>Lattice orient vectors are not orthogonal</I>
<DD>The three specified lattice orientation vectors must be mutually
orthogonal.
<DT><I>Lattice orient vectors are not right-handed</I>
<DD>The three specified lattice orientation vectors must create a
right-handed coordinate system such that a1 cross a2 = a3.
<DT><I>Lattice primitive vectors are collinear</I>
<DD>The specified lattice primitive vectors do not for a unit cell with
non-zero volume.
<DT><I>Lattice settings are not compatible with 2d simulation</I>
<DD>One or more of the specified lattice vectors has a non-zero z
component.
<DT><I>Lattice spacings are invalid</I>
<DD>Each x,y,z spacing must be > 0.
<DT><I>Lattice style incompatible with simulation dimension</I>
<DD>2d simulation can use sq, sq2, or hex lattice. 3d simulation can use
sc, bcc, or fcc lattice.
<DT><I>Log of zero/negative value in variable formula</I>
<DD>Self-explanatory.
<DT><I>MEAM library error %d</I>
<DD>A call to the MEAM Fortran library returned an error.
<DT><I>MPI_LMP_BIGINT and bigint in lmptype.h are not compatible</I>
<DD>The size of the MPI datatype does not match the size of a bigint.
<DT><I>MPI_LMP_TAGINT and tagint in lmptype.h are not compatible</I>
<DD>The size of the MPI datatype does not match the size of a tagint.
<DT><I>Mass command before simulation box is defined</I>
<DD>The mass command cannot be used before a read_data, read_restart, or
create_box command.
<DT><I>Min_style command before simulation box is defined</I>
<DD>The min_style command cannot be used before a read_data, read_restart,
or create_box command.
<DT><I>Minimization could not find thermo_pe compute</I>
<DD>This compute is created by the thermo command. It must have been
explicitly deleted by a uncompute command.
<DT><I>Minimize command before simulation box is defined</I>
<DD>The minimize command cannot be used before a read_data, read_restart,
or create_box command.
<DT><I>Mismatched brackets in variable</I>
<DD>Self-explanatory.
<DT><I>Mismatched compute in variable formula</I>
<DD>A compute is referenced incorrectly or a compute that produces per-atom
values is used in an equal-style variable formula.
<DT><I>Mismatched fix in variable formula</I>
<DD>A fix is referenced incorrectly or a fix that produces per-atom
values is used in an equal-style variable formula.
<DT><I>Mismatched variable in variable formula</I>
<DD>A variable is referenced incorrectly or an atom-style variable that
produces per-atom values is used in an equal-style variable
formula.
<DT><I>Molecular data file has too many atoms</I>
<DD>These kids of data files are currently limited to a number
of atoms that fits in a 32-bit integer.
<DT><I>Molecule count changed in compute atom/molecule</I>
<DD>Number of molecules must remain constant over time.
<DT><I>Molecule count changed in compute com/molecule</I>
<DD>Number of molecules must remain constant over time.
<DT><I>Molecule count changed in compute gyration/molecule</I>
<DD>Number of molecules must remain constant over time.
<DT><I>Molecule count changed in compute msd/molecule</I>
<DD>Number of molecules must remain constant over time.
<DT><I>Molecule count changed in compute property/molecule</I>
<DD>Number of molecules must remain constant over time.
<DT><I>More than one fix deform</I>
<DD>Only one fix deform can be defined at a time.
<DT><I>More than one fix freeze</I>
<DD>Only one of these fixes can be defined, since the granular pair
potentials access it.
<DT><I>More than one fix shake</I>
<DD>Only one fix shake can be defined.
<DT><I>Must define angle_style before Angle Coeffs</I>
<DD>Must use an angle_style command before reading a data file that
defines Angle Coeffs.
<DT><I>Must define angle_style before BondAngle Coeffs</I>
<DD>Must use an angle_style command before reading a data file that
defines Angle Coeffs.
<DT><I>Must define angle_style before BondBond Coeffs</I>
<DD>Must use an angle_style command before reading a data file that
defines Angle Coeffs.
<DT><I>Must define bond_style before Bond Coeffs</I>
<DD>Must use a bond_style command before reading a data file that
defines Bond Coeffs.
<DT><I>Must define dihedral_style before AngleAngleTorsion Coeffs</I>
<DD>Must use a dihedral_style command before reading a data file that
defines AngleAngleTorsion Coeffs.
<DT><I>Must define dihedral_style before AngleTorsion Coeffs</I>
<DD>Must use a dihedral_style command before reading a data file that
defines AngleTorsion Coeffs.
<DT><I>Must define dihedral_style before BondBond13 Coeffs</I>
<DD>Must use a dihedral_style command before reading a data file that
defines BondBond13 Coeffs.
<DT><I>Must define dihedral_style before Dihedral Coeffs</I>
<DD>Must use a dihedral_style command before reading a data file that
defines Dihedral Coeffs.
<DT><I>Must define dihedral_style before EndBondTorsion Coeffs</I>
<DD>Must use a dihedral_style command before reading a data file that
defines EndBondTorsion Coeffs.
<DT><I>Must define dihedral_style before MiddleBondTorsion Coeffs</I>
<DD>Must use a dihedral_style command before reading a data file that
defines MiddleBondTorsion Coeffs.
<DT><I>Must define improper_style before AngleAngle Coeffs</I>
<DD>Must use an improper_style command before reading a data file that
defines AngleAngle Coeffs.
<DT><I>Must define improper_style before Improper Coeffs</I>
<DD>Must use an improper_style command before reading a data file that
defines Improper Coeffs.
<DT><I>Must define pair_style before Pair Coeffs</I>
<DD>Must use a pair_style command before reading a data file that defines
Pair Coeffs.
<DT><I>Must have more than one processor partition to temper</I>
<DD>Cannot use the temper command with only one processor partition. Use
the -partition command-line option.
<DT><I>Must read Atoms before Angles</I>
<DD>The Atoms section of a data file must come before an Angles section.
<DT><I>Must read Atoms before Bonds</I>
<DD>The Atoms section of a data file must come before a Bonds section.
<DT><I>Must read Atoms before Dihedrals</I>
<DD>The Atoms section of a data file must come before a Dihedrals section.
<DT><I>Must read Atoms before Impropers</I>
<DD>The Atoms section of a data file must come before an Impropers
section.
<DT><I>Must read Atoms before Velocities</I>
<DD>The Atoms section of a data file must come before a Velocities
section.
<DT><I>Must set both respa inner and outer</I>
<DD>Cannot use just the inner or outer option with respa without using the
other.
<DT><I>Must specify a region in fix deposit</I>
<DD>The region keyword must be specified with this fix.
<DT><I>Must specify a region in fix pour</I>
<DD>The region keyword must be specified with this fix.
<DT><I>Must use -in switch with multiple partitions</I>
<DD>A multi-partition simulation cannot read the input script from stdin.
The -in command-line option must be used to specify a file.
<DT><I>Must use a block or cylinder region with fix pour</I>
<DD>Self-explanatory.
<DT><I>Must use a block region with fix pour for 2d simulations</I>
<DD>Self-explanatory.
<DT><I>Must use a bond style with TIP4P potential</I>
<DD>TIP4P potentials assume bond lengths in water are constrained
by a fix shake command.
<DT><I>Must use a molecular atom style with fix poems molecule</I>
<DD>Self-explanatory.
<DT><I>Must use a z-axis cylinder with fix pour</I>
<DD>The axis of the cylinder region used with the fix pour command must
be oriented along the z dimension.
<DT><I>Must use an angle style with TIP4P potential</I>
<DD>TIP4P potentials assume angles in water are constrained by a fix shake
command.
<DT><I>Must use atom style with molecule IDs with fix bond/swap</I>
<DD>Self-explanatory.
<DT><I>Must use pair_style comb with fix qeq/comb</I>
<DD>Self-explanatory.
<DT><I>Must use variable energy with fix addforce</I>
<DD>Must define an energy vartiable when applyting a dynamic
force during minimization.
<DT><I>NEB command before simulation box is defined</I>
<DD>Self-explanatory.
<DT><I>NEB requires damped dynamics minimizer</I>
<DD>Use a different minimization style.
<DT><I>NEB requires use of fix neb</I>
<DD>Self-explanatory.
<DT><I>Needed topology not in data file</I>
<DD>The header of the data file indicated that bonds or angles or
dihedrals or impropers would be included, but they were not present.
<DT><I>Neigh_modify exclude molecule requires atom attribute molecule</I>
<DD>Self-explanatory.
<DT><I>Neigh_modify include group != atom_modify first group</I>
<DD>Self-explanatory.
<DT><I>Neighbor delay must be 0 or multiple of every setting</I>
<DD>The delay and every parameters set via the neigh_modify command are
inconsistent. If the delay setting is non-zero, then it must be a
multiple of the every setting.
<DT><I>Neighbor include group not allowed with ghost neighbors</I>
<DD>This is a current restriction within LAMMPS.
<DT><I>Neighbor list overflow, boost neigh_modify one or page</I>
<DD>There are too many neighbors of a single atom. Use the neigh_modify
command to increase the neighbor page size and the max number of
neighbors allowed for one atom.
<DT><I>Neighbor multi not yet enabled for ghost neighbors</I>
<DD>This is a current restriction within LAMMPS.
<DT><I>Neighbor multi not yet enabled for granular</I>
<DD>Self-explanatory.
<DT><I>Neighbor multi not yet enabled for rRESPA</I>
<DD>Self-explanatory.
<DT><I>Neighbor page size must be >= 10x the one atom setting</I>
<DD>This is required to prevent wasting too much memory.
<DT><I>Neighbors of ghost atoms only allowed for full neighbor lists</I>
<DD>This is a current restriction within LAMMPS.
<DT><I>New bond exceeded bonds per atom in fix bond/create</I>
<DD>See the read_data command for info on setting the "extra bond per
atom" header value to allow for additional bonds to be formed.
<DT><I>New bond exceeded special list size in fix bond/create</I>
<DD>See the special_bonds extra command for info on how to leave space in
the special bonds list to allow for additional bonds to be formed.
<DT><I>Newton bond change after simulation box is defined</I>
<DD>The newton command cannot be used to change the newton bond value
after a read_data, read_restart, or create_box command.
<DT><I>No angle style is defined for compute angle/local</I>
<DD>Self-explanatory.
<DT><I>No angles allowed with this atom style</I>
<DD>Self-explanatory. Check data file.
<DT><I>No atoms in data file</I>
<DD>The header of the data file indicated that atoms would be included,
but they were not present.
<DT><I>No basis atoms in lattice</I>
<DD>Basis atoms must be defined for lattice style user.
<DT><I>No bond style is defined for compute bond/local</I>
<DD>Self-explanatory.
<DT><I>No bonds allowed with this atom style</I>
<DD>Self-explanatory. Check data file.
<DT><I>No dihedral style is defined for compute dihedral/local</I>
<DD>Self-explanatory.
<DT><I>No dihedrals allowed with this atom style</I>
<DD>Self-explanatory. Check data file.
<DT><I>No dump custom arguments specified</I>
<DD>The dump custom command requires that atom quantities be specified to
output to dump file.
<DT><I>No dump local arguments specified</I>
<DD>Self-explanatory.
<DT><I>No fix gravity defined for fix pour</I>
<DD>Cannot add poured particles without gravity to move them.
<DT><I>No improper style is defined for compute improper/local</I>
<DD>Self-explanatory.
<DT><I>No impropers allowed with this atom style</I>
<DD>Self-explanatory. Check data file.
<DT><I>No matching element in EAM potential file</I>
<DD>The EAM potential file does not contain elements that match the
requested elements.
<DT><I>No pair hbond/dreiding coefficients set</I>
<DD>Self-explanatory.
<DT><I>No pair style defined for compute group/group</I>
<DD>Cannot calculate group interactions without a pair style defined.
<DT><I>No pair style is defined for compute pair/local</I>
<DD>Self-explanatory.
<DT><I>No pair style is defined for compute property/local</I>
<DD>Self-explanatory.
<DT><I>No rigid bodies defined</I>
<DD>The fix specification did not end up defining any rigid bodies.
<DT><I>Non digit character between brackets in variable</I>
<DD>Self-explantory.
<DT><I>Non integer # of swaps in temper command</I>
<DD>Swap frequency in temper command must evenly divide the total # of
timesteps.
<DT><I>One or more atoms belong to multiple rigid bodies</I>
<DD>Two or more rigid bodies defined by the fix rigid command cannot
contain the same atom.
<DT><I>One or zero atoms in rigid body</I>
<DD>Any rigid body defined by the fix rigid command must contain 2 or more
atoms.
<DT><I>Out of range atoms - cannot compute PPPM</I>
<DD>One or more atoms are attempting to map their charge to a PPPM grid
point that is not owned by a processor. This is likely for one of two
reasons, both of them bad. First, it may mean that an atom near the
boundary of a processor's sub-domain has moved more than 1/2 the
<A HREF = "neighbor.html">neighbor skin distance</A> without neighbor lists being
rebuilt and atoms being migrated to new processors. This also means
you may be missing pairwise interactions that need to be computed.
The solution is to change the re-neighboring criteria via the
<A HREF = "neigh_modify">neigh_modify</A> command. The safest settings are "delay 0
every 1 check yes". Second, it may mean that an atom has moved far
outside a processor's sub-domain or even the entire simulation box.
This indicates bad physics, e.g. due to highly overlapping atoms, too
large a timestep, etc.
<DT><I>Overlapping large/large in pair colloid</I>
<DD>This potential is infinite when there is an overlap.
<DT><I>Overlapping small/large in pair colloid</I>
<DD>This potential is inifinte when there is an overlap.
<DT><I>POEMS fix must come before NPT/NPH fix</I>
<DD>NPT/NPH fix must be defined in input script after all poems fixes,
else the fix contribution to the pressure virial is incorrect.
<DT><I>PPPM 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 precision.
<DT><I>PPPM order cannot be greater than %d</I>
<DD>Self-explanatory.
<DT><I>PPPM order has been reduced to 0</I>
<DD>LAMMPS has attempted to reduce the PPPM order to enable the simulation
to run, but can reduce the order no further. Try increasing the
accuracy of PPPM by reducing the tolerance size, thus inducing a
larger PPPM grid.
<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>Pair coeff for hybrid has invalid style</I>
<DD>Style in pair coeff must have been listed in pair_style command.
<DT><I>Pair cutoff < Respa interior cutoff</I>
<DD>One or more pairwise cutoffs are too short to use with the specified
rRESPA cutoffs.
<DT><I>Pair dipole/cut requires atom attributes q, mu, torque, dipole</I>
<DD>An atom style that specifies these quantities is needed.
<DT><I>Pair distance < table inner cutoff</I>
<DD>Two atoms are closer together than the pairwise table allows.
<DT><I>Pair distance > table outer cutoff</I>
<DD>Two atoms are further apart than the pairwise table allows.
<DT><I>Pair dpd requires ghost atoms store velocity</I>
<DD>Use the communicate vel yes command to enable this.
<DT><I>Pair gayberne cannot be used with atom attribute diameter</I>
<DD>Finite-size particles must be defined with the shape command.
<DT><I>Pair gayberne epsilon a,b,c coeffs are not all set</I>
<DD>Each atom type involved in pair_style gayberne must
have these 3 coefficients set at least once.
<DT><I>Pair gayberne requires atom attributes quat, torque, shape</I>
<DD>An atom style that defines these attributes must be used.
<DT><I>Pair granular requires atom attributes radius, omega, torque</I>
<DD>The atom style defined does not have these attributes.
<DT><I>Pair granular requires ghost atoms store velocity</I>
<DD>Use the communicate vel yes command to enable this.
<DT><I>Pair granular with shear history requires newton pair off</I>
<DD>This is a current restriction of the implementation of pair
granular styles with history.
<DT><I>Pair hybrid sub-style does not support single call</I>
<DD>You are attempting to invoke a single() call on a pair style
that doesn't support it.
<DT><I>Pair hybrid sub-style is not used</I>
<DD>No pair_coeff command used a sub-style specified in the pair_style
command.
<DT><I>Pair inner cutoff < Respa interior cutoff</I>
<DD>One or more pairwise cutoffs are too short to use with the specified
rRESPA cutoffs.
<DT><I>Pair inner cutoff >= Pair outer cutoff</I>
<DD>The specified cutoffs for the pair style are inconsistent.
<DT><I>Pair lubricate cannot be used with atom attributes diameter or rmass</I>
<DD>These attributes override the shape and mass settings, so cannot be
used.
<DT><I>Pair lubricate requires atom attribute omega or angmom</I>
<DD>An atom style that defines these attributes must be used.
<DT><I>Pair lubricate requires atom attributes torque and shape</I>
<DD>An atom style that defines these attributes must be used.
<DT><I>Pair lubricate requires extended particles</I>
<DD>This pair style can only be used for particles with a shape
setting.
<DT><I>Pair lubricate requires ghost atoms store velocity</I>
<DD>Use the communicate vel yes command to enable this.
<DT><I>Pair lubricate requires spherical, mono-disperse particles</I>
<DD>This is a current restriction of this pair style.
<DT><I>Pair peri lattice is not identical in x, y, and z</I>
<DD>The lattice defined by the lattice command must be cubic.
<DT><I>Pair peri requires a lattice be defined</I>
<DD>Use the lattice command for this purpose.
<DT><I>Pair peri requires an atom map, see atom_modify</I>
<DD>Even for atomic systems, an atom map is required to find Peridynamic
bonds. Use the atom_modify command to define one.
<DT><I>Pair resquared cannot be used with atom attribute diameter</I>
<DD>This attribute overrides the shape settings, so cannot be used.
<DT><I>Pair resquared epsilon a,b,c coeffs are not all set</I>
<DD>Self-explanatory.
<DT><I>Pair resquared epsilon and sigma coeffs are not all set</I>
<DD>Self-explanatory.
<DT><I>Pair resquared requires atom attributes quat, torque, shape</I>
<DD>An atom style that defines these attributes must be used.
<DT><I>Pair style AIREBO requires atom IDs</I>
<DD>This is a requirement to use the AIREBO potential.
<DT><I>Pair style AIREBO requires newton pair on</I>
<DD>See the newton command. This is a restriction to use the AIREBO
potential.
<DT><I>Pair style COMB requires atom IDs</I>
<DD>This is a requirement to use the AIREBO potential.
<DT><I>Pair style COMB requires atom attribute q</I>
<DD>Self-explanatory.
<DT><I>Pair style COMB requires newton pair on</I>
<DD>See the newton command. This is a restriction to use the COMB
potential.
<DT><I>Pair style MEAM requires newton pair on</I>
<DD>See the newton command. This is a restriction to use the MEAM
potential.
<DT><I>Pair style Stillinger-Weber requires atom IDs</I>
<DD>This is a requirement to use the SW potential.
<DT><I>Pair style Stillinger-Weber requires newton pair on</I>
<DD>See the newton command. This is a restriction to use the SW
potential.
<DT><I>Pair style Tersoff requires atom IDs</I>
<DD>This is a requirement to use the Tersoff potential.
<DT><I>Pair style Tersoff requires newton pair on</I>
<DD>See the newton command. This is a restriction to use the Tersoff
potential.
<DT><I>Pair style born/coul/long requires atom attribute q</I>
<DD>An atom style that defines this attribute must be used.
<DT><I>Pair style buck/coul/cut requires atom attribute q</I>
<DD>The atom style defined does not have this attribute.
<DT><I>Pair style buck/coul/long requires atom attribute q</I>
<DD>The atom style defined does not have these attributes.
<DT><I>Pair style coul/cut requires atom attribute q</I>
<DD>The atom style defined does not have these attributes.
<DT><I>Pair style does not support bond_style quartic</I>
<DD>The pair style does not have a single() function, so it can
not be invoked by bond_style quartic.
<DT><I>Pair style does not support compute group/group</I>
<DD>The pair_style does not have a single() function, so it cannot be
invokded by the compute group/group command.
<DT><I>Pair style does not support compute pair/local</I>
<DD>The pair style does not have a single() function, so it can
not be invoked by fix bond/swap.
<DT><I>Pair style does not support compute property/local</I>
<DD>The pair style does not have a single() function, so it can
not be invoked by fix bond/swap.
<DT><I>Pair style does not support fix bond/swap</I>
<DD>The pair style does not have a single() function, so it can
not be invoked by fix bond/swap.
<DT><I>Pair style does not support pair_write</I>
<DD>The pair style does not have a single() function, so it can
not be invoked by pair write.
<DT><I>Pair style does not support rRESPA inner/middle/outer</I>
<DD>You are attempting to use rRESPA options with a pair style that
does not support them.
<DT><I>Pair style granular with history requires atoms have IDs</I>
<DD>Atoms in the simulation do not have IDs, so history effects
cannot be tracked by the granular pair potential.
<DT><I>Pair style hbond/dreiding requires an atom map, see atom_modify</I>
<DD>Self-explanatory.
<DT><I>Pair style hbond/dreiding requires atom IDs</I>
<DD>Self-explanatory.
<DT><I>Pair style hbond/dreiding requires molecular system</I>
<DD>Self-explanatory.
<DT><I>Pair style hbond/dreiding requires newton pair on</I>
<DD>See the newton command for details.
<DT><I>Pair style hybrid cannot have hybrid as an argument</I>
<DD>Self-explanatory.
<DT><I>Pair style hybrid cannot have none as an argument</I>
<DD>Self-explanatory.
<DT><I>Pair style hybrid cannot use same pair style twice</I>
<DD>The sub-style arguments of pair_style hybrid cannot be duplicated.
Check the input script.
<DT><I>Pair style is incompatible with KSpace style</I>
<DD>If a pair style with a long-range Coulombic component is selected,
then a kspace style must also be used.
<DT><I>Pair style lj/charmm/coul/charmm requires atom attribute q</I>
<DD>The atom style defined does not have these attributes.
<DT><I>Pair style lj/charmm/coul/long requires atom attribute q</I>
<DD>The atom style defined does not have these attributes.
<DT><I>Pair style lj/class2/coul/cut requires atom attribute q</I>
<DD>The atom style defined does not have this attribute.
<DT><I>Pair style lj/class2/coul/long requires atom attribute q</I>
<DD>The atom style defined does not have this attribute.
<DT><I>Pair style lj/cut/coul/cut requires atom attribute q</I>
<DD>The atom style defined does not have this attribute.
<DT><I>Pair style lj/cut/coul/long requires atom attribute q</I>
<DD>The atom style defined does not have this attribute.
<DT><I>Pair style lj/cut/coul/long/tip4p requires atom IDs</I>
<DD>There are no atom IDs defined in the system and the TIP4P potential
requires them to find O,H atoms with a water molecule.
<DT><I>Pair style lj/cut/coul/long/tip4p requires atom attribute q</I>
<DD>The atom style defined does not have these attributes.
<DT><I>Pair style lj/cut/coul/long/tip4p requires newton pair on</I>
<DD>This is because the computation of constraint forces within a water
molecule adds forces to atoms owned by other processors.
<DT><I>Pair style lj/gromacs/coul/gromacs requires atom attribute q</I>
<DD>An atom_style with this attribute is needed.
<DT><I>Pair style peri_lps requires atom style peri</I>
<DD>This is because atom style peri stores quantities needed by
the peridynamic potential.
<DT><I>Pair style peri_pmb requires atom style peri</I>
<DD>This is because atom style peri stores quantities needed by
the peridynamic potential.
<DT><I>Pair style reax requires atom IDs</I>
<DD>This is a requirement to use the ReaxFF potential.
<DT><I>Pair style reax requires newton pair on</I>
<DD>This is a requirement to use the ReaxFF potential.
<DT><I>Pair table cutoffs must all be equal to use with KSpace</I>
<DD>When using pair style table with a long-range KSpace solver, the
cutoffs for all atom type pairs must all be the same, since the
long-range solver starts at that cutoff.
<DT><I>Pair table parameters did not set N</I>
<DD>List of pair table parameters must include N setting.
<DT><I>Pair tersoff/zbl requires metal or real units</I>
<DD>This is a current restriction of this pair potential.
<DT><I>Pair yukawa/colloid cannot be used with atom attribute diameter</I>
<DD>Only finite-size particles defined by the shape command can be used.
<DT><I>Pair yukawa/colloid requires atom attribute shape</I>
<DD>Self-explanatory.
<DT><I>Pair yukawa/colloid requires spherical particles</I>
<DD>Self-explanatory.
<DT><I>Pair_coeff command before pair_style is defined</I>
<DD>Self-explanatory.
<DT><I>Pair_coeff command before simulation box is defined</I>
<DD>The pair_coeff command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>Pair_modify command before pair_style is defined</I>
<DD>Self-explanatory.
<DT><I>Pair_write command before pair_style is defined</I>
<DD>Self-explanatory.
<DT><I>Particle on or inside fix wall surface</I>
<DD>Particles must be "exterior" to the wall in order for energy/force to
be calculated.
<DT><I>Particle on or inside surface of region used in fix wall/region</I>
<DD>Particles must be "exterior" to the region surface in order for
energy/force to be calculated.
<DT><I>Per-atom compute in equal-style variable formula</I>
<DD>Equal-style variables cannot use per-atom quantities.
<DT><I>Per-atom energy was not tallied on needed timestep</I>
<DD>You are using a thermo keyword that requires potentials to
have tallied energy, but they didn't on this timestep. See the
variable doc page for ideas on how to make this work.
<DT><I>Per-atom fix in equal-style variable formula</I>
<DD>Equal-style variables cannot use per-atom quantities.
<DT><I>Per-atom virial was not tallied on needed timestep</I>
<DD>You are using a thermo keyword that requires potentials to have
tallied the virial, but they didn't on this timestep. See the
variable doc page for ideas on how to make this work.
<DT><I>Per-processor system is too big</I>
<DD>The number of owned atoms plus ghost atoms on a single
processor must fit in 32-bit integer.
<DT><I>Potential energy ID for fix neb does not exist</I>
<DD>Self-explanatory.
<DT><I>Potential file has duplicate entry</I>
<DD>The potential file for a SW or Tersoff potential has more than
one entry for the same 3 ordered elements.
<DT><I>Potential file is missing an entry</I>
<DD>The potential file for a SW or Tersoff potential does not have a
needed entry.
<DT><I>Power by 0 in variable formula</I>
<DD>Self-explanatory.
<DT><I>Pressure ID for fix box/relax does not exist</I>
<DD>The compute ID needed to compute pressure for the fix does not
exist.
<DT><I>Pressure ID for fix modify does not exist</I>
<DD>Self-explanatory.
<DT><I>Pressure ID for fix npt/nph does not exist</I>
<DD>Self-explanatory.
<DT><I>Pressure ID for fix press/berendsen does not exist</I>
<DD>The compute ID needed to compute pressure for the fix does not
exist.
<DT><I>Pressure ID for thermo does not exist</I>
<DD>The compute ID needed to compute pressure for thermodynamics does not
exist.
<DT><I>Pressure control can not be used with fix nvt/asphere</I>
<DD>Self-explanatory.
<DT><I>Pressure control can not be used with fix nvt/sllod</I>
<DD>Self-explanatory.
<DT><I>Pressure control can not be used with fix nvt/sphere</I>
<DD>Self-explanatory.
<DT><I>Pressure control can not be used with fix nvt</I>
<DD>Self-explanatory.
<DT><I>Pressure control must be used with fix nph/asphere</I>
<DD>Self-explanatory.
<DT><I>Pressure control must be used with fix nph/sphere</I>
<DD>Self-explanatory.
<DT><I>Pressure control must be used with fix nph</I>
<DD>Self-explanatory.
<DT><I>Pressure control must be used with fix npt/asphere</I>
<DD>Self-explanatory.
<DT><I>Pressure control must be used with fix npt/sphere</I>
<DD>Self-explanatory.
<DT><I>Pressure control must be used with fix npt</I>
<DD>Self-explanatory.
<DT><I>Processor count in z must be 1 for 2d simulation</I>
<DD>Self-explanatory.
<DT><I>Processor partitions are inconsistent</I>
<DD>The total number of processors in all partitions must match the number
of processors LAMMPS is running on.
<DT><I>Processors command after simulation box is defined</I>
<DD>The processors command cannot be used after a read_data, read_restart,
or create_box command.
<DT><I>Quaternion creation numeric error</I>
<DD>A numeric error occurred in the creation of a rigid body by the fix
rigid command.
<DT><I>R0 < 0 for fix spring command</I>
<DD>Equilibrium spring length is invalid.
<DT><I>Reax_defs.h setting for NATDEF is too small</I>
<DD>Edit the setting in the ReaxFF library and re-compile the
library and re-build LAMMPS.
<DT><I>Reax_defs.h setting for NNEIGHMAXDEF is too small</I>
<DD>Edit the setting in the ReaxFF library and re-compile the
library and re-build LAMMPS.
<DT><I>Region ID for compute reduce/region does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID for compute temp/region does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID for dump cfg does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID for dump custom does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID for fix addforce does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID for fix ave/spatial does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID for fix aveforce does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID for fix deposit does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID for fix evaporate does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID for fix heat does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID for fix setforce does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID for fix wall/region does not exist</I>
<DD>Self-explanatory.
<DT><I>Region ID in variable formula does not exist</I>
<DD>Self-explanatory.
<DT><I>Region cannot have 0 length rotation vector</I>
<DD>Self-explanatory.
<DT><I>Region intersect region ID does not exist</I>
<DD>Self-explanatory.
<DT><I>Region union or intersect cannot be dynamic</I>
<DD>The sub-regions can be dynamic, but not the combined region.
<DT><I>Region union region ID does not exist</I>
<DD>One or more of the region IDs specified by the region union command
does not exist.
<DT><I>Replacing a fix, but new style != old style</I>
<DD>A fix ID can be used a 2nd time, but only if the style matches the
previous fix. In this case it is assumed you with to reset a fix's
parameters. This error may mean you are mistakenly re-using a fix ID
when you do not intend to.
<DT><I>Replicate command before simulation box is defined</I>
<DD>The replicate command cannot be used before a read_data, read_restart,
or create_box command.
<DT><I>Replicate did not assign all atoms correctly</I>
<DD>Atoms replicated by the replicate command were not assigned correctly
to processors. This is likely due to some atom coordinates being
outside a non-periodic simulation box.
<DT><I>Replicated molecular system atom IDs are too big</I>
<DD>See the setting for the allowed atom ID size in the src/lmptype.h
file.
<DT><I>Replicated system is too big</I>
<DD>See the setting for bigint in the src/lmptype.h file.
<DT><I>Resetting timestep is not allowed with fix move</I>
<DD>This is because fix move is moving atoms based on elapsed time.
<DT><I>Respa inner cutoffs are invalid</I>
<DD>The first cutoff must be <= the second cutoff.
<DT><I>Respa levels must be >= 1</I>
<DD>Self-explanatory.
<DT><I>Respa middle cutoffs are invalid</I>
<DD>The first cutoff must be <= the second cutoff.
<DT><I>Reuse of compute ID</I>
<DD>A compute ID cannot be used twice.
<DT><I>Reuse of dump ID</I>
<DD>A dump ID cannot be used twice.
<DT><I>Reuse of region ID</I>
<DD>A region ID cannot be used twice.
<DT><I>Rigid body has degenerate moment of inertia</I>
<DD>Fix poems will only work with bodies (collections of atoms) that have
non-zero principal moments of inertia. This means they must be 3 or
more non-collinear atoms, even with joint atoms removed.
<DT><I>Rigid fix must come before NPT/NPH fix</I>
<DD>NPT/NPH fix must be defined in input script after all rigid fixes,
else the rigid fix contribution to the pressure virial is
incorrect.
<DT><I>Rmask function in equal-style variable formula</I>
<DD>Rmask is per-atom operation.
<DT><I>Run command before simulation box is defined</I>
<DD>The run command cannot be used before a read_data, read_restart, or
create_box command.
<DT><I>Run command start value is after start of run</I>
<DD>Self-explanatory.
<DT><I>Run command stop value is before end of run</I>
<DD>Self-explanatory.
<DT><I>Run_style command before simulation box is defined</I>
<DD>The run_style command cannot be used before a read_data,
read_restart, or create_box command.
<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.
<DT><I>SRD bins for fix srd are not cubic enough</I>
<DD>The bin shape is not within tolerance of cubic.
<DT><I>Same dimension twice in fix ave/spatial</I>
<DD>Self-explanatory.
<DT><I>Set command before simulation box is defined</I>
<DD>The set command cannot be used before a read_data, read_restart,
or create_box command.
<DT><I>Set command with no atoms existing</I>
<DD>No atoms are yet defined so the set command cannot be used.
<DT><I>Set region ID does not exist</I>
<DD>Region ID specified in set command does not exist.
<DT><I>Shake angles have different bond types</I>
<DD>All 3-atom angle-constrained SHAKE clusters specified by the fix shake
command that are the same angle type, must also have the same bond
types for the 2 bonds in the angle.
<DT><I>Shake atoms %d %d %d %d missing on proc %d at step</I>
<DD>The 4 atoms in a single shake cluster specified by the fix shake
command are not all accessible to a processor. This probably means
an atom has moved too far.
<DT><I>Shake atoms %d %d %d missing on proc %d at step</I>
<DD>The 3 atoms in a single shake cluster specified by the fix shake
command are not all accessible to a processor. This probably means
an atom has moved too far.
<DT><I>Shake atoms %d %d missing on proc %d at step</I>
<DD>The 2 atoms in a single shake cluster specified by the fix shake
command are not all accessible to a processor. This probably means
an atom has moved too far.
<DT><I>Shake cluster of more than 4 atoms</I>
<DD>A single cluster specified by the fix shake command can have no more
than 4 atoms.
<DT><I>Shake clusters are connected</I>
<DD>A single cluster specified by the fix shake command must have a single
central atom with up to 3 other atoms bonded to it.
<DT><I>Shake determinant = 0.0</I>
<DD>The determinant of the matrix being solved for a single cluster
specified by the fix shake command is numerically invalid.
<DT><I>Shake fix must come before NPT/NPH fix</I>
<DD>NPT fix must be defined in input script after SHAKE fix, else the
SHAKE fix contribution to the pressure virial is incorrect.
<DT><I>Shape command before simulation box is defined</I>
<DD>Self-explanatory.
<DT><I>Smallint setting in lmptype.h is invalid</I>
<DD>It has to be the size of an integer.
<DT><I>Smallint setting in lmptype.h is not compatible</I>
<DD>Smallint stored in restart file is not consistent with LAMMPS version
you are running.
<DT><I>Sqrt of negative value in variable formula</I>
<DD>Self-explanatory.
<DT><I>Substitution for illegal variable</I>
<DD>Input script line contained a variable that could not be substituted
for.
<DT><I>System in data file is too big</I>
<DD>See the setting for bigint in the src/lmptype.h file.
<DT><I>TAD nsteps must be multiple of t_event</I>
<DD>Self-explanatory.
<DT><I>TIP4P hydrogen has incorrect atom type</I>
<DD>The TIP4P pairwise computation found an H atom whose type does not
agree with the specified H type.
<DT><I>TIP4P hydrogen is missing</I>
<DD>The TIP4P pairwise computation failed to find the correct H atom
within a water molecule.
<DT><I>TMD target file did not list all group atoms</I>
<DD>The target file for the fix tmd command did not list all atoms in the
fix group.
<DT><I>Tad command before simulation box is defined</I>
<DD>Self-explanatory.
<DT><I>Tagint setting in lmptype.h is invalid</I>
<DD>Tagint must be as large or larger than smallint.
<DT><I>Tagint setting in lmptype.h is not compatible</I>
<DD>Smallint stored in restart file is not consistent with LAMMPS version
you are running.
<DT><I>Target temperature for fix nvt/npt/nph cannot be 0.0</I>
<DD>Self-explanatory.
<DT><I>Target temperature for fix rigid/nvt cannot be 0.0</I>
<DD>Self-explanatory.
<DT><I>Temper command before simulation box is defined</I>
<DD>The temper command cannot be used before a read_data, read_restart, or
create_box command.
<DT><I>Temperature ID for fix bond/swap does not exist</I>
<DD>Self-explanatory.
<DT><I>Temperature ID for fix box/relax does not exist</I>
<DD>Self-explanatory.
<DT><I>Temperature ID for fix nvt/nph/npt does not exist</I>
<DD>Self-explanatory.
<DT><I>Temperature ID for fix press/berendsen does not exist</I>
<DD>Self-explanatory.
<DT><I>Temperature ID for fix temp/berendsen does not exist</I>
<DD>Self-explanatory.
<DT><I>Temperature ID for fix temp/rescale does not exist</I>
<DD>Self-explanatory.
<DT><I>Temperature control can not be used with fix nph/asphere</I>
<DD>Self-explanatory.
<DT><I>Temperature control can not be used with fix nph/sphere</I>
<DD>Self-explanatory.
<DT><I>Temperature control can not be used with fix nph</I>
<DD>Self-explanatory.
<DT><I>Temperature control must be used with fix npt/asphere</I>
<DD>Self-explanatory.
<DT><I>Temperature control must be used with fix npt/sphere</I>
<DD>Self-explanatory.
<DT><I>Temperature control must be used with fix npt</I>
<DD>Self-explanatory.
<DT><I>Temperature control must be used with fix nvt/asphere</I>
<DD>Self-explanatory.
<DT><I>Temperature control must be used with fix nvt/sllod</I>
<DD>Self-explanatory.
<DT><I>Temperature control must be used with fix nvt/sphere</I>
<DD>Self-explanatory.
<DT><I>Temperature control must be used with fix nvt</I>
<DD>Self-explanatory.
<DT><I>Temperature for fix nvt/sllod does not have a bias</I>
<DD>The specified compute must compute temperature with a bias.
<DT><I>Tempering could not find thermo_pe compute</I>
<DD>This compute is created by the thermo command. It must have been
explicitly deleted by a uncompute command.
<DT><I>Tempering fix ID is not defined</I>
<DD>The fix ID specified by the temper command does not exist.
<DT><I>Tempering temperature fix is not valid</I>
<DD>The fix specified by the temper command is not one that controls
temperature (nvt or langevin).
<DT><I>Thermo and fix not computed at compatible times</I>
<DD>Fixes generate values on specific timesteps. The thermo output
does not match these timesteps.
<DT><I>Thermo compute array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Thermo compute does not compute array</I>
<DD>Self-explanatory.
<DT><I>Thermo compute does not compute scalar</I>
<DD>Self-explanatory.
<DT><I>Thermo compute does not compute vector</I>
<DD>Self-explanatory.
<DT><I>Thermo compute vector is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Thermo custom variable cannot be indexed</I>
<DD>Self-explanatory.
<DT><I>Thermo custom variable is not equal-style variable</I>
<DD>Only equal-style variables can be output with thermodynamics, not
atom-style variables.
<DT><I>Thermo every variable returned a bad timestep</I>
<DD>The variable must return a timestep greater than the current timestep.
<DT><I>Thermo fix array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Thermo fix does not compute array</I>
<DD>Self-explanatory.
<DT><I>Thermo fix does not compute scalar</I>
<DD>Self-explanatory.
<DT><I>Thermo fix does not compute vector</I>
<DD>Self-explanatory.
<DT><I>Thermo fix vector is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Thermo keyword in variable requires lattice be defined</I>
<DD>The xlat, ylat, zlat keywords refer to lattice properties.
<DT><I>Thermo keyword in variable requires thermo to use/init pe</I>
<DD>You are using a thermo keyword in a variable that requires
potential energy to be calculated, but your thermo output
does not use it. Add it to your thermo output.
<DT><I>Thermo keyword in variable requires thermo to use/init press</I>
<DD>You are using a thermo keyword in a variable that requires pressure to
be calculated, but your thermo output does not use it. Add it to your
thermo output.
<DT><I>Thermo keyword in variable requires thermo to use/init temp</I>
<DD>You are using a thermo keyword in a variable that requires temperature
to be calculated, but your thermo output does not use it. Add it to
your thermo output.
<DT><I>Thermo keyword requires lattice be defined</I>
<DD>The xlat, ylat, zlat keywords refer to lattice properties.
<DT><I>Thermo style does not use press</I>
<DD>Cannot use thermo_modify to set this parameter since the thermo_style
is not computing this quantity.
<DT><I>Thermo style does not use temp</I>
<DD>Cannot use thermo_modify to set this parameter since the thermo_style
is not computing this quantity.
<DT><I>Thermo_modify int format does not contain d character</I>
<DD>Self-explanatory.
<DT><I>Thermo_modify pressure ID does not compute pressure</I>
<DD>The specified compute ID does not compute pressure.
<DT><I>Thermo_modify temperature ID does not compute temperature</I>
<DD>The specified compute ID does not compute temperature.
<DT><I>Thermo_style command before simulation box is defined</I>
<DD>The thermo_style command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>This variable thermo keyword cannot be used between runs</I>
<DD>Keywords that refer to time (such as cpu, elapsed) do not
make sense in between runs.
<DT><I>Threshhold for an atom property that isn't allocated</I>
<DD>A dump threshhold has been requested on a quantity that is
not defined by the atom style used in this simulation.
<DT><I>Timestep must be >= 0</I>
<DD>Specified timestep size is invalid.
<DT><I>Too big a problem to use velocity create loop all</I>
<DD>The system size must fit in a 32-bit integer to use this option.
<DT><I>Too big a timestep for dump dcd</I>
<DD>The timestep must fit in a 32-bit integer to use this dump style.
<DT><I>Too big a timestep for dump xtc</I>
<DD>The timestep must fit in a 32-bit integer to use this dump style.
<DT><I>Too few bits for lookup table</I>
<DD>Table size specified via pair_modify command does not work with your
machine's floating point representation.
<DT><I>Too many atom sorting bins</I>
<DD>This is likely due to an immense simulation box that has blown up
to a large size.
<DT><I>Too many atoms for dump dcd</I>
<DD>The system size must fit in a 32-bit integer to use this dump
style.
<DT><I>Too many atoms for dump xtc</I>
<DD>The system size must fit in a 32-bit integer to use this dump
style.
<DT><I>Too many atoms to dump sort</I>
<DD>Cannot sort when running with more than 2^31 atoms.
<DT><I>Too many exponent bits for lookup table</I>
<DD>Table size specified via pair_modify command does not work with your
machine's floating point representation.
<DT><I>Too many groups</I>
<DD>The maximum number of atom groups (including the "all" group) is
given by MAX_GROUP in group.cpp and is 32.
<DT><I>Too many iterations</I>
<DD>You must use a number of iterations that fit in a 32-bit integer
for minimization.
<DT><I>Too many mantissa bits for lookup table</I>
<DD>Table size specified via pair_modify command does not work with your
machine's floating point representation.
<DT><I>Too many masses for fix shake</I>
<DD>The fix shake command cannot list more masses than there are atom
types.
<DT><I>Too many neighbor bins</I>
<DD>This is likely due to an immense simulation box that has blown up
to a large size.
<DT><I>Too many timesteps for NEB</I>
<DD>You must use a number of timesteps that fit in a 32-bit integer
for NEB.
<DT><I>Too many total atoms</I>
<DD>See the setting for bigint in the src/lmptype.h file.
<DT><I>Too many total bits for bitmapped lookup table</I>
<DD>Table size specified via pair_modify command is too large. Note that
a value of N generates a 2^N size table.
<DT><I>Too many touching neighbors - boost MAXTOUCH</I>
<DD>A granular simulation has too many neighbors touching one atom. The
MAXTOUCH parameter in fix_shear_history.cpp must be set larger and
LAMMPS must be re-built.
<DT><I>Too much per-proc info for dump</I>
<DD>Number of local atoms times number of columns must fit in a 32-bit
integer for dump.
<DT><I>Tree structure in joint connections</I>
<DD>Fix poems cannot (yet) work with coupled bodies whose joints connect
the bodies in a tree structure.
<DT><I>Triclinic box must be periodic in skewed dimensions</I>
<DD>This is a requirement for using a non-orthogonal box. E.g. to set a
non-zero xy tilt, both x and y must be periodic dimensions.
<DT><I>Triclinic box skew is too large</I>
<DD>The displacement in a skewed direction must 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.
<DT><I>Tried to convert a double to int, but input_double > INT_MAX</I>
<DD>Self-explanatory.
<DT><I>Two groups cannot be the same in fix spring couple</I>
<DD>Self-explanatory.
<DT><I>Unbalanced quotes in input line</I>
<DD>No matching end double quote was found following a leading double
quote.
<DT><I>Unexpected end of data file</I>
<DD>LAMMPS hit the end of the data file while attempting to read a
section. Something is wrong with the format of the data file.
<DT><I>Units command after simulation box is defined</I>
<DD>The units command cannot be used after a read_data, read_restart, or
create_box command.
<DT><I>Universe/uloop variable count < # of partitions</I>
<DD>A universe or uloop style variable must specify a number of values >= to the
number of processor partitions.
<DT><I>Unknown command: %s</I>
<DD>The command is not known to LAMMPS. Check the input script.
<DT><I>Unknown identifier in data file: %s</I>
<DD>A section of the data file cannot be read by LAMMPS.
<DT><I>Unknown table style in angle style table</I>
<DD>Self-explanatory.
<DT><I>Unknown table style in bond style table</I>
<DD>Self-explanatory.
<DT><I>Unknown table style in pair_style command</I>
<DD>Style of table is invalid for use with pair_style table command.
<DT><I>Unrecognized lattice type in MEAM file 1</I>
<DD>The lattice type in an entry of the MEAM library file is not
valid.
<DT><I>Unrecognized lattice type in MEAM file 2</I>
<DD>The lattice type in an entry of the MEAM parameter file is not
valid.
<DT><I>Unrecognized pair style in compute pair command</I>
<DD>Self-explanatory.
<DT><I>Use of compute temp/ramp with undefined lattice</I>
<DD>Must use lattice command with compute temp/ramp command if units
option is set to lattice.
<DT><I>Use of displace_atoms with undefined lattice</I>
<DD>Must use lattice command with displace_atoms command if units option
is set to lattice.
<DT><I>Use of displace_box with undefined lattice</I>
<DD>Must use lattice command with displace_box command if units option is
set to lattice.
<DT><I>Use of fix ave/spatial with undefined lattice</I>
<DD>A lattice must be defined to use fix ave/spatial with units = lattice.
<DT><I>Use of fix deform with undefined lattice</I>
<DD>A lattice must be defined to use fix deform with units = lattice.
<DT><I>Use of fix deposit with undefined lattice</I>
<DD>Must use lattice command with compute fix deposit command if units
option is set to lattice.
<DT><I>Use of fix dt/reset with undefined lattice</I>
<DD>Must use lattice command with fix dt/reset command if units option is
set to lattice.
<DT><I>Use of fix indent with undefined lattice</I>
<DD>The lattice command must be used to define a lattice before using the
fix indent command.
<DT><I>Use of fix move with undefined lattice</I>
<DD>Must use lattice command with fix move command if units option is
set to lattice.
<DT><I>Use of fix recenter with undefined lattice</I>
<DD>Must use lattice command with fix recenter command if units option is
set to lattice.
<DT><I>Use of fix wall with undefined lattice</I>
<DD>Must use lattice command with fix wall command if units option is set
to lattice.
<DT><I>Use of region with undefined lattice</I>
<DD>If scale = lattice (the default) for the region command, then a
lattice must first be defined via the lattice command.
<DT><I>Use of velocity with undefined lattice</I>
<DD>If scale = lattice (the default) for the velocity set or velocity ramp
command, then a lattice must first be defined via the lattice command.
<DT><I>Using fix nvt/sllod with inconsistent fix deform remap option</I>
<DD>Fix nvt/sllod requires that deforming atoms have a velocity profile
provided by "remap v" as a fix deform option.
<DT><I>Using fix nvt/sllod with no fix deform defined</I>
<DD>Self-explanatory.
<DT><I>Using fix srd with inconsistent fix deform remap option</I>
<DD>When shearing the box in an SRD simulation, the remap v option for fix
deform needs to be used.
<DT><I>Variable evaluation before simulation box is defined</I>
<DD>Cannot evaluate a compute or fix or atom-based value in a variable
before the simulation has been setup.
<DT><I>Variable for compute ti is invalid style</I>
<DD>Self-explanatory.
<DT><I>Variable for dump every is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for fix adapt is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for fix addforce is invalid style</I>
<DD>Self-explanatory.
<DT><I>Variable for fix aveforce is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for fix efield is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for fix indent is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for fix indent is not equal style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for fix move is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for fix setforce is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for fix wall is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for fix wall/reflect is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for fix wall/srd is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for region is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for region is not equal style</I>
<DD>Self-explanatory.
<DT><I>Variable for thermo every is invalid style</I>
<DD>Only equal-style variables can be used.
<DT><I>Variable for velocity set is invalid style</I>
<DD>Only atom-style variables can be used.
<DT><I>Variable formula compute array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Variable formula compute vector is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Variable formula fix array is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Variable formula fix vector is accessed out-of-range</I>
<DD>Self-explanatory.
<DT><I>Variable name for compute atom/molecule does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for compute reduce does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for compute ti does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for dump every does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix adapt does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix addforce does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix ave/atom does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix ave/correlate does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix ave/histo does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix ave/spatial does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix ave/time does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix aveforce does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix efield does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix indent does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix move does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix setforce does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix store/state does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix wall does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix wall/reflect does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for fix wall/srd does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for region does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for thermo every does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name for velocity set does not exist</I>
<DD>Self-explanatory.
<DT><I>Variable name must be alphanumeric or underscore characters</I>
<DD>Self-explanatory.
<DT><I>Velocity command before simulation box is defined</I>
<DD>The velocity command cannot be used before a read_data, read_restart,
or create_box command.
<DT><I>Velocity command with no atoms existing</I>
<DD>A velocity command has been used, but no atoms yet exist.
<DT><I>Velocity ramp in z for a 2d problem</I>
<DD>Self-explanatory.
<DT><I>Velocity temperature ID does not compute temperature</I>
<DD>The compute ID given to the velocity command must compute
temperature.
<DT><I>Virial was not tallied on needed timestep</I>
<DD>You are using a thermo keyword that requires potentials to
have tallied the virial, but they didn't on this timestep. See the
variable doc page for ideas on how to make this work.
<DT><I>Wall defined twice in fix wall command</I>
<DD>Self-explanatory.
<DT><I>Wall defined twice in fix wall/reflect command</I>
<DD>Self-explanatory.
<DT><I>Wall defined twice in fix wall/srd command</I>
<DD>Self-explanatory.
<DT><I>Weighted neighbor list values are too big</I>
<DD>You must have less atoms per processor to use this
style neighbor list.
<DT><I>World variable count doesn't match # of partitions</I>
<DD>A world-style variable must specify a number of values equal to the
number of processor partitions.
<DT><I>Write_restart command before simulation box is defined</I>
<DD>The write_restart command cannot be used before a read_data,
read_restart, or create_box command.
<DT><I>Zero-length lattice orient vector</I>
<DD>Self-explanatory.
</DL>
<H4><A NAME = "warn"></A>Warnings:
</H4>
<DL>
<DT><I>All element names have been set to 'C' for dump cfg</I>
<DD>Use the dump_modify command if you wish to override this.
<DT><I>Atom with molecule ID = 0 included in compute molecule group</I>
<DD>The group used in a compute command that operates on moleclues
includes atoms with no molecule ID. This is probably not what you
want.
<DT><I>Broken bonds will not alter angles, dihedrals, or impropers</I>
<DD>See the doc page for fix bond/break for more info on this
restriction.
<DT><I>Building an occasional neighobr list when atoms may have moved too far</I>
<DD>This can cause LAMMPS to crash when the neighbor list is built.
The solution is to check for building the regular neighbor lists
more frequently.
<DT><I>Compute cna/atom cutoff may be too large to find ghost atom neighbors</I>
<DD>The neighbor cutoff used may not encompass enough ghost atoms
to perform this operation correctly.
<DT><I>Computing temperature of portions of rigid bodies</I>
<DD>The group defined by the temperature compute does not encompass all
the atoms in one or more rigid bodies, so the change in
degrees-of-freedom for the atoms in those partial rigid bodies will
not be accounted for.
<DT><I>Created bonds will not create angles, dihedrals, or impropers</I>
<DD>See the doc page for fix bond/create for more info on this
restriction.
<DT><I>Dihedral problem: %d %d %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>Dump dcd/xtc timestamp may be wrong with fix dt/reset</I>
<DD>If the fix changes the timestep, the dump dcd file will not
reflect the change.
<DT><I>FENE bond too long: %d %d %d %g</I>
<DD>A FENE bond has stretched dangerously far. It's interaction strength
will be truncated to attempt to prevent the bond from blowing up.
<DT><I>FENE bond too long: %d %g</I>
<DD>A FENE bond has stretched dangerously far. It's interaction strength
will be truncated to attempt to prevent the bond from blowing up.
<DT><I>Fix SRD walls overlap but fix srd overlap not set</I>
<DD>You likely want to set this in your input script.
<DT><I>Fix bond/swap will ignore defined angles</I>
<DD>See the doc page for fix bond/swap for more info on this
restriction.
<DT><I>Fix move does not update angular momentum</I>
<DD>Atoms store this quantity, but fix move does not (yet) update it.
<DT><I>Fix move does not update quaternions</I>
<DD>Atoms store this quantity, but fix move does not (yet) update it.
<DT><I>Fix recenter should come after all other integration fixes</I>
<DD>Other fixes may change the position of the center-of-mass, so
fix recenter should come last.
<DT><I>Fix srd SRD moves may trigger frequent reneighboring</I>
<DD>This is because the SRD particles may move long distances.
<DT><I>Fix srd grid size > 1/4 of big particle diameter</I>
<DD>This may cause accuracy problems.
<DT><I>Fix srd no-slip wall collisions with bin shifting</I>
<DD>This is an inconsistent setting in your input script.
<DT><I>Fix srd particle moved outside valid domain</I>
<DD>This may indicate a problem with your simulation parameters.
<DT><I>Fix srd particles may move > big particle diameter</I>
<DD>This may cause accuracy problems.
<DT><I>Fix srd viscosity < 0.0 due to low SRD density</I>
<DD>This may cause accuracy problems.
<DT><I>Fix thermal/conductivity comes before fix ave/spatial</I>
<DD>The order of these 2 fixes in your input script is such that fix
thermal/conductivity comes first. If you are using fix ave/spatial to
measure the temperature profile induced by fix viscosity, then this
may cause a glitch in the profile since you are averaging immediately
after swaps have occurred. Flipping the order of the 2 fixes
typically helps.
<DT><I>Fix viscosity comes before fix ave/spatial</I>
<DD>The order of these 2 fixes in your input script is such that
fix viscosity comes first. If you are using fix ave/spatial
to measure the velocity profile induced by fix viscosity, then
this may cause a glitch in the profile since you are averaging
immediately after swaps have occurred. Flipping the order
of the 2 fixes typically helps.
<DT><I>Group for fix_modify temp != fix group</I>
<DD>The fix_modify command is specifying a temperature computation that
computes a temperature on a different group of atoms than the fix
itself operates on. This is probably not what you want to do.
<DT><I>Improper problem: %d %d %d %d %d %d</I>
<DD>Conformation of the 4 listed improper atoms is extreme; you may want
to check your simulation geometry.
<DT><I>Kspace_modify slab param < 2.0 may cause unphysical behavior</I>
<DD>The kspace_modify slab parameter should be larger to insure periodic
grids padded with empty space do not overlap.
<DT><I>Less insertions than requested</I>
<DD>Less atom insertions occurred on this timestep due to the fix pour
command than were scheduled. This is probably because there were too
many overlaps detected.
<DT><I>Lost atoms: original %.15g current %.15g</I>
<DD>A thermodynamic computation has detected lost atoms.
<DT><I>Mismatch between velocity and compute groups</I>
<DD>The temperature computation used by the velocity command will not be
on the same group of atoms that velocities are being set for.
<DT><I>More than one compute centro/atom</I>
<DD>It is not efficient to use compute centro/atom more than once.
<DT><I>More than one compute cluster/atom</I>
<DD>It is not efficient to use compute cluster/atom more than once.
<DT><I>More than one compute cna/atom defined</I>
<DD>It is not efficient to use compute cna/atom more than once.
<DT><I>More than one compute coord/atom</I>
<DD>It is not efficient to use compute coord/atom more than once.
<DT><I>More than one compute damage/atom</I>
<DD>It is not efficient to use compute ke/atom more than once.
<DT><I>More than one compute ke/atom</I>
<DD>It is not efficient to use compute ke/atom more than once.
<DT><I>More than one fix poems</I>
<DD>It is not efficient to use fix poems more than once.
<DT><I>More than one fix rigid</I>
<DD>It is not efficient to use fix rigid more than once.
<DT><I>New thermo_style command, previous thermo_modify settings will be lost</I>
<DD>If a thermo_style command is used after a thermo_modify command, the
settings changed by the thermo_modify command will be reset to their
default values. This is because the thermo_modify commmand acts on
the currently defined thermo style, and a thermo_style command creates
a new style.
<DT><I>No fixes defined, atoms won't move</I>
<DD>If you are not using a fix like nve, nvt, npt then atom velocities and
coordinates will not be updated during timestepping.
<DT><I>No joints between rigid bodies, use fix rigid instead</I>
<DD>The bodies defined by fix poems are not connected by joints. POEMS
will integrate the body motion, but it would be more efficient to use
fix rigid.
<DT><I>Not using real units with pair reax</I>
<DD>This is most likely an error, unless you have created your own ReaxFF
parameter file in a different set of units.
<DT><I>One or more atoms are time integrated more than once</I>
<DD>This is probably an error since you typically do not want to
advance the positions or velocities of an atom more than once
per timestep.
<DT><I>One or more compute molecules has atoms not in group</I>
<DD>The group used in a compute command that operates on moleclues does
not include all the atoms in some molecules. This is probably not
what you want.
<DT><I>One or more respa levels compute no forces</I>
<DD>This is computationally inefficient.
<DT><I>Pair COMB charge %.10f with force %.10f hit max barrier</I>
<DD>Something is possibly wrong with your model.
<DT><I>Pair COMB charge %.10f with force %.10f hit min barrier</I>
<DD>Something is possibly wrong with your model.
<DT><I>Pair dsmc: num_of_collisions > number_of_A</I>
<DD>Collision model in DSMC is breaking down.
<DT><I>Pair dsmc: num_of_collisions > number_of_B</I>
<DD>Collision model in DSMC is breaking down.
<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>Reducing PPPM order b/c stencil extends beyond neighbor processor</I>
<DD>LAMMPS is attempting this in order to allow the simulation
to run. It should not effect the PPPM accuracy.
<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>Restart file version does not match LAMMPS version</I>
<DD>This may cause problems when reading the restart file.
<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>Check if the new bin size is acceptable.
<DT><I>SRD bins for fix srd are not cubic enough</I>
<DD>Check if the bin shape is acceptable.
<DT><I>SRD particle %d started inside big particle %d on step %d bounce %d</I>
<DD>This may not be a problem, but indicates one or more SRD particles are
being left inside solute particles.
<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>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 Ewald or PPPM.
<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>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>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>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>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 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
infinity.
</DL>
</HTML>
diff --git a/doc/Section_errors.txt b/doc/Section_errors.txt
index 740798f63..0712fb922 100644
--- a/doc/Section_errors.txt
+++ b/doc/Section_errors.txt
@@ -1,6592 +1,6592 @@
"Previous Section"_Section_python.html - "LAMMPS WWW Site"_lws -
"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
Section"_Section_history.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
-11. Errors :h3
+12. Errors :h3
This section describes the various kinds of errors you can encounter
when using LAMMPS.
-11.1 "Common problems"_#11_1
-11.2 "Reporting bugs"_#11_2
-11.3 "Error & warning messages"_#11_3 :all(b)
+12.1 "Common problems"_#err_1
+12.2 "Reporting bugs"_#err_2
+12.3 "Error & warning messages"_#err_3 :all(b)
:line
-11.1 Common problems :link(11_1),h4
+12.1 Common problems :link(err_1),h4
If two LAMMPS runs do not produce the same answer on different
machines or different numbers of processors, this is typically not a
bug. In theory you should get identical answers on any number of
processors and on any machine. In practice, numerical round-off can
cause slight differences and eventual divergence of molecular dynamics
phase space trajectories within a few 100s or few 1000s of timesteps.
However, the statistical properties of the two runs (e.g. average
energy or temperature) should still be the same.
If the "velocity"_velocity.html command is used to set initial atom
velocities, a particular atom can be assigned a different velocity
when the problem is run on a different number of processors or on
different machines. If this happens, the phase space trajectories of
the two simulations will rapidly diverge. See the discussion of the
{loop} option in the "velocity"_velocity.html command for details and
options that avoid this issue.
Similarly, the "create_atoms"_create_atoms.html command generates a
lattice of atoms. For the same physical system, the ordering and
numbering of atoms by atom ID may be different depending on the number
of processors.
Some commands use random number generators which may be setup to
produce different random number streams on each processor and hence
will produce different effects when run on different numbers of
processors. A commonly-used example is the "fix
langevin"_fix_langevin.html command for thermostatting.
A LAMMPS simulation typically has two stages, setup and run. Most
LAMMPS errors are detected at setup time; others like a bond
stretching too far may not occur until the middle of a run.
LAMMPS tries to flag errors and print informative error messages so
you can fix the problem. Of course, LAMMPS cannot figure out your
physics or numerical mistakes, like choosing too big a timestep,
specifying erroneous force field coefficients, or putting 2 atoms on
top of each other! If you run into errors that LAMMPS doesn't catch
that you think it should flag, please send an email to the
"developers"_http://lammps.sandia.gov/authors.html.
If you get an error message about an invalid command in your input
script, you can determine what command is causing the problem by
looking in the log.lammps file or using the "echo command"_echo.html
to see it on the screen. For a given command, LAMMPS expects certain
arguments in a specified order. If you mess this up, LAMMPS will
often flag the error, but it may read a bogus argument and assign a
value that is valid, but not what you wanted. E.g. trying to read the
string "abc" as an integer value and assigning the associated variable
a value of 0.
Generally, LAMMPS will print a message to the screen and logfile and
exit gracefully when it encounters a fatal error. Sometimes it will
print a WARNING to the screen and logfile and continue on; you can
decide if the WARNING is important or not. A WARNING message that is
generated in the middle of a run is only printed to the screen, not to
the logfile, to avoid cluttering up thermodynamic output. If LAMMPS
crashes or hangs without spitting out an error message first then it
-could be a bug (see "this section"_#11_2) or one of the following
+could be a bug (see "this section"_#err_2) or one of the following
cases:
LAMMPS runs in the available memory a processor allows to be
allocated. Most reasonable MD runs are compute limited, not memory
limited, so this shouldn't be a bottleneck on most platforms. Almost
all large memory allocations in the code are done via C-style malloc's
which will generate an error message if you run out of memory.
Smaller chunks of memory are allocated via C++ "new" statements. If
you are unlucky you could run out of memory just when one of these
small requests is made, in which case the code will crash or hang (in
parallel), since LAMMPS doesn't trap on those errors.
Illegal arithmetic can cause LAMMPS to run slow or crash. This is
typically due to invalid physics and numerics that your simulation is
computing. If you see wild thermodynamic values or NaN values in your
LAMMPS output, something is wrong with your simulation. If you
suspect this is happening, it is a good idea to print out
thermodynamic info frequently (e.g. every timestep) via the
"thermo"_thermo.html so you can monitor what is happening.
Visualizing the atom movement is also a good idea to insure your model
is behaving as you expect.
In parallel, one way LAMMPS can hang is due to how different MPI
implementations handle buffering of messages. If the code hangs
without an error message, it may be that you need to specify an MPI
setting or two (usually via an environment variable) to enable
buffering or boost the sizes of messages that can be buffered.
:line
-11.2 Reporting bugs :link(11_2),h4
+12.2 Reporting bugs :link(err_2),h4
If you are confident that you have found a bug in LAMMPS, follow these
steps.
Check the "New features and bug
fixes"_http://lammps.sandia.gov/bug.html section of the "LAMMPS WWW
site"_lws to see if the bug has already been reported or fixed or the
"Unfixed bug"_http://lammps.sandia.gov/unbug.html to see if a fix is
pending.
Check the "mailing list"_http://lammps.sandia.gov/mail.html
to see if it has been discussed before.
If not, send an email to the mailing list describing the problem with
any ideas you have as to what is causing it or where in the code the
problem might be. The developers will ask for more info if needed,
such as an input script or data files.
The most useful thing you can do to help us fix the bug is to isolate
the problem. Run it on the smallest number of atoms and fewest number
of processors and with the simplest input script that reproduces the
bug and try to identify what command or combination of commands is
causing the problem.
As a last resort, you can send an email directly to the
"developers"_http://lammps.sandia.gov/authors.html.
:line
-11.3 Error & warning messages :h4,link(11_3)
+12.3 Error & warning messages :h4,link(err_3)
These are two alphabetic lists of the "ERROR"_#error and
"WARNING"_#warn messages LAMMPS prints out and the reason why. If the
explanation here is not sufficient, the documentation for the
offending command may help. Grepping the source files for the text of
the error message and staring at the source code and comments is also
not a bad idea! Note that sometimes the same message can be printed
from multiple places in the code.
Also note that error messages from "user-contributed
-packages"_Section_start.html#2_3 are not listed here. Is such an
+packages"_Section_start.html#start_3 are not listed here. Is such an
error occurs and is not self-explanatory, you'll need to look in the
source code or contact the author of the package.
Errors: :h4,link(error)
:dlb
{1-3 bond count is inconsistent} :dt
An inconsistency was detected when computing the number of 1-3
neighbors for each atom. This likely means something is wrong with
the bond topologies you have defined. :dd
{1-4 bond count is inconsistent} :dt
An inconsistency was detected when computing the number of 1-4
neighbors for each atom. This likely means something is wrong with
the bond topologies you have defined. :dd
{Accelerated style in input script but no fix gpu} :dt
GPU acceleration requires fix gpu in the input script. :dd
{All angle coeffs are not set} :dt
All angle coefficients must be set in the data file or by the
angle_coeff command before running a simulation. :dd
{All bond coeffs are not set} :dt
All bond coefficients must be set in the data file or by the
bond_coeff command before running a simulation. :dd
{All dihedral coeffs are not set} :dt
All dihedral coefficients must be set in the data file or by the
dihedral_coeff command before running a simulation. :dd
{All dipole moments are not set} :dt
For atom styles that define dipole moments for each atom type, all
moments must be set in the data file or by the dipole command before
running a simulation. :dd
{All improper coeffs are not set} :dt
All improper coefficients must be set in the data file or by the
improper_coeff command before running a simulation. :dd
{All masses are not set} :dt
For atom styles that define masses for each atom type, all masses must
be set in the data file or by the mass command before running a
simulation. They must also be set before using the velocity
command. :dd
{All pair coeffs are not set} :dt
All pair coefficients must be set in the data file or by the
pair_coeff command before running a simulation. :dd
{All shapes are not set} :dt
All atom types must have a shape setting, even if the particles
are spherical. :dd
{All universe/uloop variables must have same # of values} :dt
Self-explanatory. :dd
{All variables in next command must be same style} :dt
Self-explanatory. :dd
{Angle atom missing in delete_bonds} :dt
The delete_bonds command cannot find one or more atoms in a particular
angle on a particular processor. The pairwise cutoff is too short or
the atoms are too far apart to make a valid angle. :dd
{Angle atom missing in set command} :dt
The set command cannot find one or more atoms in a particular angle on
a particular processor. The pairwise cutoff is too short or the atoms
are too far apart to make a valid angle. :dd
{Angle atoms %d %d %d missing on proc %d at step} :dt
One or more of 3 atoms needed to compute a particular angle are
missing on this processor. Typically this is because the pairwise
cutoff is set too short or the angle has blown apart and an atom is
too far away. :dd
{Angle coeff for hybrid has invalid style} :dt
Angle style hybrid uses another angle style as one of its
coefficients. The angle style used in the angle_coeff command or read
from a restart file is not recognized. :dd
{Angle coeffs are not set} :dt
No angle coefficients have been assigned in the data file or via the
angle_coeff command. :dd
{Angle potential must be defined for SHAKE} :dt
When shaking angles, an angle_style potential must be used. :dd
{Angle style hybrid cannot have hybrid as an argument} :dt
Self-explanatory. :dd
{Angle style hybrid cannot have none as an argument} :dt
Self-explanatory. :dd
{Angle style hybrid cannot use same pair style twice} :dt
Self-explanatory. :dd
{Angle table must range from 0 to 180 degrees} :dt
Self-explanatory. :dd
{Angle table parameters did not set N} :dt
List of angle table parameters must include N setting. :dd
{Angle_coeff command before angle_style is defined} :dt
Coefficients cannot be set in the data file or via the angle_coeff
command until an angle_style has been assigned. :dd
{Angle_coeff command before simulation box is defined} :dt
The angle_coeff command cannot be used before a read_data,
read_restart, or create_box command. :dd
{Angle_coeff command when no angles allowed} :dt
The chosen atom style does not allow for angles to be defined. :dd
{Angle_style command when no angles allowed} :dt
The chosen atom style does not allow for angles to be defined. :dd
{Angles assigned incorrectly} :dt
Angles read in from the data file were not assigned correctly to
atoms. This means there is something invalid about the topology
definitions. :dd
{Angles defined but no angle types} :dt
The data file header lists angles but no angle types. :dd
{Another input script is already being processed} :dt
Cannot attempt to open a 2nd input script, when the original file is
still being processed. :dd
{Arccos of invalid value in variable formula} :dt
Argument of arccos() must be between -1 and 1. :dd
{Arcsin of invalid value in variable formula} :dt
Argument of arcsin() must be between -1 and 1. :dd
{Atom IDs must be consecutive for velocity create loop all} :dt
Self-explanatory. :dd
{Atom count changed in fix neb} :dt
This is not allowed in a NEB calculation. :dd
{Atom count is inconsistent, cannot write restart file} :dt
Sum of atoms across processors does not equal initial total count.
This is probably because you have lost some atoms. :dd
{Atom in too many rigid bodies - boost MAXBODY} :dt
Fix poems has a parameter MAXBODY (in fix_poems.cpp) which determines
the maximum number of rigid bodies a single atom can belong to (i.e. a
multibody joint). The bodies you have defined exceed this limit. :dd
{Atom sort did not operate correctly} :dt
This is an internal LAMMPS error. Please report it to the
developers. :dd
{Atom sorting has bin size = 0.0} :dt
The neighbor cutoff is being used as the bin size, but it is zero.
Thus you must explicitly list a bin size in the atom_modify sort
command or turn off sorting. :dd
{Atom style hybrid cannot have hybrid as an argument} :dt
Self-explanatory. :dd
{Atom style hybrid cannot use same atom style twice} :dt
Self-explanatory. :dd
{Atom vector in equal-style variable formula} :dt
Atom vectors generate one value per atom which is not allowed
in an equal-style variable. :dd
{Atom-style variable in equal-style variable formula} :dt
Atom-style variables generate one value per atom which is not allowed
in an equal-style variable. :dd
{Atom_modify map command after simulation box is defined} :dt
The atom_modify map command cannot be used after a read_data,
read_restart, or create_box command. :dd
{Atom_modify sort and first options cannot be used together} :dt
Self-explanatory. :dd
{Atom_style command after simulation box is defined} :dt
The atom_style command cannot be used after a read_data,
read_restart, or create_box command. :dd
{Attempt to pop empty stack in fix box/relax} :dt
Internal LAMMPS error. Please report it to the developers. :dd
{Attempt to push beyond stack limit in fix box/relax} :dt
Internal LAMMPS error. Please report it to the developers. :dd
{Attempting to rescale a 0.0 temperature} :dt
Cannot rescale a temperature that is already 0.0. :dd
{Bad FENE bond} :dt
Two atoms in a FENE bond have become so far apart that the bond cannot
be computed. :dd
{Bad TIP4P angle type for PPPM/TIP4P} :dt
Specified angle type is not valid. :dd
{Bad TIP4P bond type for PPPM/TIP4P} :dt
Specified bond type is not valid. :dd
{Bad grid of processors} :dt
The 3d grid of processors defined by the processors command does not
match the number of processors LAMMPS is being run on. :dd
{Bad kspace_modify slab parameter} :dt
Kspace_modify value for the slab/volume keyword must be >= 2.0. :dd
{Bad principal moments} :dt
Fix rigid did not compute the principal moments of inertia of a rigid
group of atoms correctly. :dd
{Bias compute does not calculate a velocity bias} :dt
The specified compute must compute a bias for temperature. :dd
{Bias compute does not calculate temperature} :dt
The specified compute must compute temperature. :dd
{Bias compute group does not match compute group} :dt
The specified compute must operate on the same group as the parent
compute. :dd
{Big particle in fix srd cannot be point particle} :dt
Big particles must be extended spheriods or ellipsoids. :dd
{Bigint setting in lmptype.h is invalid} :dt
Size of bigint is less than size of tagint. :dd
{Bigint setting in lmptype.h is not compatible} :dt
Bigint stored in restart file is not consistent with LAMMPS version
you are running. :dd
{Bitmapped lookup tables require int/float be same size} :dt
Cannot use pair tables on this machine, because of word sizes. Use
the pair_modify command with table 0 instead. :dd
{Bitmapped table in file does not match requested table} :dt
Setting for bitmapped table in pair_coeff command must match table
in file exactly. :dd
{Bitmapped table is incorrect length in table file} :dt
Number of table entries is not a correct power of 2. :dd
{Bond and angle potentials must be defined for TIP4P} :dt
Cannot use TIP4P pair potential unless bond and angle potentials
are defined. :dd
{Bond atom missing in delete_bonds} :dt
The delete_bonds command cannot find one or more atoms in a particular
bond on a particular processor. The pairwise cutoff is too short or
the atoms are too far apart to make a valid bond. :dd
{Bond atom missing in set command} :dt
The set command cannot find one or more atoms in a particular bond on
a particular processor. The pairwise cutoff is too short or the atoms
are too far apart to make a valid bond. :dd
{Bond atoms %d %d missing on proc %d at step} :dt
One or both of 2 atoms needed to compute a particular bond are
missing on this processor. Typically this is because the pairwise
cutoff is set too short or the bond has blown apart and an atom is
too far away. :dd
{Bond coeff for hybrid has invalid style} :dt
Bond style hybrid uses another bond style as one of its coefficients.
The bond style used in the bond_coeff command or read from a restart
file is not recognized. :dd
{Bond coeffs are not set} :dt
No bond coefficients have been assigned in the data file or via the
bond_coeff command. :dd
{Bond potential must be defined for SHAKE} :dt
Cannot use fix shake unless bond potential is defined. :dd
{Bond style hybrid cannot have hybrid as an argument} :dt
Self-explanatory. :dd
{Bond style hybrid cannot have none as an argument} :dt
Self-explanatory. :dd
{Bond style hybrid cannot use same pair style twice} :dt
Self-explanatory. :dd
{Bond style quartic cannot be used with 3,4-body interactions} :dt
No angle, dihedral, or improper styles can be defined when using
bond style quartic. :dd
{Bond style quartic requires special_bonds = 1,1,1} :dt
This is a restriction of the current bond quartic implementation. :dd
{Bond table parameters did not set N} :dt
List of bond table parameters must include N setting. :dd
{Bond table values are not increasing} :dt
The values in the tabulated file must be monotonically increasing. :dd
{Bond_coeff command before bond_style is defined} :dt
Coefficients cannot be set in the data file or via the bond_coeff
command until an bond_style has been assigned. :dd
{Bond_coeff command before simulation box is defined} :dt
The bond_coeff command cannot be used before a read_data,
read_restart, or create_box command. :dd
{Bond_coeff command when no bonds allowed} :dt
The chosen atom style does not allow for bonds to be defined. :dd
{Bond_style command when no bonds allowed} :dt
The chosen atom style does not allow for bonds to be defined. :dd
{Bonds assigned incorrectly} :dt
Bonds read in from the data file were not assigned correctly to atoms.
This means there is something invalid about the topology definitions. :dd
{Bonds defined but no bond types} :dt
The data file header lists bonds but no bond types. :dd
{Both sides of boundary must be periodic} :dt
Cannot specify a boundary as periodic only on the lo or hi side. Must
be periodic on both sides. :dd
{Boundary command after simulation box is defined} :dt
The boundary command cannot be used after a read_data, read_restart,
or create_box command. :dd
{Box bounds are invalid} :dt
The box boundaries specified in the read_data file are invalid. The
lo value must be less than the hi value for all 3 dimensions. :dd
{Can not specify Pxy/Pxz/Pyz in fix box/relax with non-triclinic box} :dt
Only triclinic boxes can be used with off-diagonal pressure components.
See the region prism command for details. :dd
{Can not specify Pxy/Pxz/Pyz in fix nvt/npt/nph with non-triclinic box} :dt
Only triclinic boxes can be used with off-diagonal pressure components.
See the region prism command for details. :dd
{Can only use NEB with 1-processor replicas} :dt
This is current restriction for NEB as implemented in LAMMPS. :dd
{Can only use TAD with 1-processor replicas for NEB} :dt
This is current restriction for NEB as implemented in LAMMPS. :dd
{Cannot (yet) use PPPM with triclinic box} :dt
This feature is not yet supported. :dd
{Cannot add atoms to fix move variable} :dt
Atoms can not be added afterwards to this fix option. :dd
{Cannot change box to orthogonal when tilt is non-zero} :dt
Self-explanatory :dd
{Cannot change box with certain fixes defined} :dt
The change_box command cannot be used when fix ave/spatial or
fix/deform are defined . :dd
{Cannot change box with dumps defined} :dt
Self-explanatory. :dd
{Cannot change dump_modify every for dump dcd} :dt
The frequency of writing dump dcd snapshots cannot be changed. :dd
{Cannot change dump_modify every for dump xtc} :dt
The frequency of writing dump xtc snapshots cannot be changed. :dd
{Cannot change timestep once fix srd is setup} :dt
This is because various SRD properties depend on the timestep
size. :dd
{Cannot change timestep with fix pour} :dt
This fix pre-computes some values based on the timestep, so it cannot
be changed during a simulation run. :dd
{Cannot compute PPPM G} :dt
LAMMPS failed to compute a valid approximation for the PPPM g_ewald
factor that partitions the computation between real space and k-space. :dd
{Cannot create an atom map unless atoms have IDs} :dt
The simulation requires a mapping from global atom IDs to local atoms,
but the atoms that have been defined have no IDs. :dd
{Cannot create atoms with undefined lattice} :dt
Must use the lattice command before using the create_atoms
command. :dd
{Cannot create/grow a vector/array of pointers for %s} :dt
LAMMPS code is making an illegal call to the templated memory
allocaters, to create a vector or array of pointers. :dd
{Cannot create_atoms after reading restart file with per-atom info} :dt
The per-atom info was stored to be used when by a fix that you
may re-define. If you add atoms before re-defining the fix, then
there will not be a correct amount of per-atom info. :dd
{Cannot create_box after simulation box is defined} :dt
The create_box command cannot be used after a read_data, read_restart,
or create_box command. :dd
{Cannot currently use pair reax with pair hybrid} :dt
This is not yet supported. :dd
{Cannot delete group all} :dt
Self-explanatory. :dd
{Cannot delete group currently used by a compute} :dt
Self-explanatory. :dd
{Cannot delete group currently used by a dump} :dt
Self-explanatory. :dd
{Cannot delete group currently used by a fix} :dt
Self-explanatory. :dd
{Cannot delete group currently used by atom_modify first} :dt
Self-explanatory. :dd
{Cannot displace_atoms after reading restart file with per-atom info} :dt
This is because the restart file info cannot be migrated with the
atoms. You can get around this by performing a 0-timestep run which
will assign the restart file info to actual atoms. :dd
{Cannot displace_box after reading restart file with per-atom info} :dt
This is because the restart file info cannot be migrated with the
atoms. You can get around this by performing a 0-timestep run which
will assign the restart file info to actual atoms. :dd
{Cannot displace_box on a non-periodic boundary} :dt
Self-explanatory. :dd
{Cannot dump sort on atom IDs with no atom IDs defined} :dt
Self-explanatory. :dd
{Cannot evaporate atoms in atom_modify first group} :dt
This is a restriction due to the way atoms are organized in
a list to enable the atom_modify first command. :dd
{Cannot find delete_bonds group ID} :dt
Group ID used in the delete_bonds command does not exist. :dd
{Cannot have both pair_modify shift and tail set to yes} :dt
These 2 options are contradictory. :dd
{Cannot open AIREBO potential file %s} :dt
The specified AIREBO potential file cannot be opened. Check that the
path and name are correct. :dd
{Cannot open COMB potential file %s} :dt
The specified COMB potential file cannot be opened. Check that the
path and name are correct. :dd
{Cannot open EAM potential file %s} :dt
The specified EAM potential file cannot be opened. Check that the
path and name are correct. :dd
{Cannot open EIM potential file %s} :dt
The specified EIM potential file cannot be opened. Check that the
path and name are correct. :dd
{Cannot open MEAM potential file %s} :dt
The specified MEAM potential file cannot be opened. Check that the
path and name are correct. :dd
{Cannot open Stillinger-Weber potential file %s} :dt
The specified SW potential file cannot be opened. Check that the path
and name are correct. :dd
{Cannot open Tersoff potential file %s} :dt
The specified Tersoff potential file cannot be opened. Check that the
path and name are correct. :dd
{Cannot open dir to search for restart file} :dt
Using a "*" in the name of the restart file will open the current
directory to search for matching file names. :dd
{Cannot open dump file} :dt
The output file for the dump command cannot be opened. Check that the
path and name are correct. :dd
{Cannot open file %s} :dt
The specified file cannot be opened. Check that the path and name are
correct. :dd
{Cannot open fix ave/correlate file %s} :dt
The specified file cannot be opened. Check that the path and name are
correct. :dd
{Cannot open fix ave/histo file %s} :dt
The specified file cannot be opened. Check that the path and name are
correct. :dd
{Cannot open fix ave/spatial file %s} :dt
The specified file cannot be opened. Check that the path and name are
correct. :dd
{Cannot open fix ave/time file %s} :dt
The specified file cannot be opened. Check that the path and name are
correct. :dd
{Cannot open fix poems file %s} :dt
The specified file cannot be opened. Check that the path and name are
correct. :dd
{Cannot open fix print file %s} :dt
The output file generated by the fix print command cannot be opened :dd
{Cannot open fix qeq/comb file %s} :dt
The output file for the fix qeq/combs command cannot be opened.
Check that the path and name are correct. :dd
{Cannot open fix reax/bonds file %s} :dt
The output file for the fix reax/bonds command cannot be opened.
Check that the path and name are correct. :dd
{Cannot open fix tmd file %s} :dt
The output file for the fix tmd command cannot be opened. Check that
the path and name are correct. :dd
{Cannot open fix ttm file %s} :dt
The output file for the fix ttm command cannot be opened. Check that
the path and name are correct. :dd
{Cannot open gzipped file} :dt
LAMMPS is attempting to open a gzipped version of the specified file
but was unsuccessful. Check that the path and name are correct. :dd
{Cannot open input script %s} :dt
Self-explanatory. :dd
{Cannot open log.lammps} :dt
The default LAMMPS log file cannot be opened. Check that the
directory you are running in allows for files to be created. :dd
{Cannot open logfile %s} :dt
The LAMMPS log file specified in the input script cannot be opened.
Check that the path and name are correct. :dd
{Cannot open logfile} :dt
The LAMMPS log file named in a command-line argument cannot be opened.
Check that the path and name are correct. :dd
{Cannot open pair_write file} :dt
The specified output file for pair energies and forces cannot be
opened. Check that the path and name are correct. :dd
{Cannot open restart file %s} :dt
Self-explanatory. :dd
{Cannot open screen file} :dt
The screen file specified as a command-line argument cannot be
opened. Check that the directory you are running in allows for files
to be created. :dd
{Cannot open universe log file} :dt
For a multi-partition run, the master log file cannot be opened.
Check that the directory you are running in allows for files to be
created. :dd
{Cannot open universe screen file} :dt
For a multi-partition run, the master screen file cannot be opened.
Check that the directory you are running in allows for files to be
created. :dd
{Cannot read_data after simulation box is defined} :dt
The read_data command cannot be used after a read_data,
read_restart, or create_box command. :dd
{Cannot read_restart after simulation box is defined} :dt
The read_restart command cannot be used after a read_data,
read_restart, or create_box command. :dd
{Cannot redefine variable as a different style} :dt
An equal-style variable can be re-defined but only if it was
originally an equal-style variable. :dd
{Cannot replicate 2d simulation in z dimension} :dt
The replicate command cannot replicate a 2d simulation in the z
dimension. :dd
{Cannot replicate with fixes that store atom quantities} :dt
Either fixes are defined that create and store atom-based vectors or a
restart file was read which included atom-based vectors for fixes.
The replicate command cannot duplicate that information for new atoms.
You should use the replicate command before fixes are applied to the
system. :dd
{Cannot reset timestep with a dynamic region defined} :dt
Dynamic regions (see the region command) have a time dependence.
Thus you cannot change the timestep when one or more of these
are defined. :dd
{Cannot reset timestep with a time-dependent fix defined} :dt
You cannot reset the timestep when a fix that keeps track of elapsed
time is in place. :dd
{Cannot reset timestep with dump file already written to} :dt
Changing the timestep will confuse when a dump file is written. Use
the undump command, then restart the dump file. :dd
{Cannot reset timestep with restart file already written} :dt
Changing the timestep will confuse when a restart file is written.
Use the "restart 0" command to turn off restarts, then start them
again. :dd
{Cannot restart fix rigid/nvt with different # of chains} :dt
This is because the restart file contains per-chain info. :dd
{Cannot run 2d simulation with nonperiodic Z dimension} :dt
Use the boundary command to make the z dimension periodic in order to
run a 2d simulation. :dd
{Cannot set both respa pair and inner/middle/outer} :dt
In the rRESPA integrator, you must compute pairwise potentials either
all together (pair), or in pieces (inner/middle/outer). You can't do
both. :dd
{Cannot set dipole for this atom style} :dt
This atom style does not support dipole settings for each atom type. :dd
{Cannot set dump_modify flush for dump xtc} :dt
Self-explanatory. :dd
{Cannot set mass for this atom style} :dt
This atom style does not support mass settings for each atom type.
Instead they are defined on a per-atom basis in the data file. :dd
{Cannot set non-zero image flag for non-periodic dimension} :dt
Self-explanatory. :dd
{Cannot set non-zero z velocity for 2d simulation} :dt
Self-explanatory. :dd
{Cannot set respa middle without inner/outer} :dt
In the rRESPA integrator, you must define both a inner and outer
setting in order to use a middle setting. :dd
{Cannot set shape for this atom style} :dt
The atom style does not support this setting. :dd
{Cannot set this attribute for this atom style} :dt
The attribute being set does not exist for the defined atom style. :dd
{Cannot set variable z velocity for 2d simulation} :dt
Self-explanatory. :dd
{Cannot skew triclinic box in z for 2d simulation} :dt
Self-explanatory. :dd
{Cannot use Ewald with 2d simulation} :dt
The kspace style ewald cannot be used in 2d simulations. You can use
2d Ewald in a 3d simulation; see the kspace_modify command. :dd
{Cannot use Ewald with triclinic box} :dt
This feature is not yet supported. :dd
{Cannot use NEB unless atom map exists} :dt
Use the atom_modify command to create an atom map. :dd
{Cannot use NEB with a single replica} :dt
Self-explanatory. :dd
{Cannot use NEB with atom_modify sort enabled} :dt
This is current restriction for NEB implemented in LAMMPS. :dd
{Cannot use PPPM with 2d simulation} :dt
The kspace style pppm cannot be used in 2d simulations. You can use
2d PPPM in a 3d simulation; see the kspace_modify command. :dd
{Cannot use PRD with a time-dependent fix defined} :dt
PRD alters the timestep in ways that will mess up these fixes. :dd
{Cannot use PRD with a time-dependent region defined} :dt
PRD alters the timestep in ways that will mess up these regions. :dd
{Cannot use PRD with atom_modify sort enabled} :dt
This is a current restriction of PRD. You must turn off sorting,
which is enabled by default, via the atom_modify command. :dd
{Cannot use PRD with multi-processor replicas unless atom map exists} :dt
Use the atom_modify command to create an atom map. :dd
{Cannot use TAD unless atom map exists for NEB} :dt
See atom_modify map command to set this. :dd
{Cannot use TAD with a single replica for NEB} :dt
NEB requires multiple replicas. :dd
{Cannot use TAD with atom_modify sort enabled for NEB} :dt
This is a current restriction of NEB. :dd
{Cannot use a damped dynamics min style with fix box/relax} :dt
This is a current restriction in LAMMPS. Use another minimizer
style. :dd
{Cannot use a damped dynamics min style with per-atom DOF} :dt
This is a current restriction in LAMMPS. Use another minimizer
style. :dd
{Cannot use compute cluster/atom unless atoms have IDs} :dt
Atom IDs are used to identify clusters. :dd
{Cannot use cwiggle in variable formula between runs} :dt
This is a function of elapsed time. :dd
{Cannot use delete_atoms unless atoms have IDs} :dt
Your atoms do not have IDs, so the delete_atoms command cannot be
used. :dd
{Cannot use delete_bonds with non-molecular system} :dt
Your choice of atom style does not have bonds. :dd
{Cannot use fix TMD unless atom map exists} :dt
Using this fix requires the ability to lookup an atom index, which is
provided by an atom map. An atom map does not exist (by default) for
non-molecular problems. Using the atom_modify map command will force
an atom map to be created. :dd
{Cannot use fix ave/spatial z for 2 dimensional model} :dt
Self-explanatory. :dd
{Cannot use fix bond/break with non-molecular systems} :dt
Self-explanatory. :dd
{Cannot use fix bond/create with non-molecular systems} :dt
Self-explanatory. :dd
{Cannot use fix box/relax on a 2nd non-periodic dimension} :dt
When specifying an off-diagonal pressure component, the 2nd of the two
dimensions must be periodic. E.g. if the xy component is specified,
then the y dimension must be periodic. :dd
{Cannot use fix box/relax on a non-periodic dimension} :dt
When specifying a diagonal pressure component, the dimension must be
periodic. :dd
{Cannot use fix deform on a 2nd non-periodic boundary} :dt
When specifying a tilt factor change, the 2nd of the two dimensions
must be periodic. E.g. if the xy tilt is specified, then the y
dimension must be periodic. :dd
{Cannot use fix deform on a non-periodic boundary} :dt
When specifying a change is a box dimension, the dimension must be
periodic. :dd
{Cannot use fix deform trate on a box with zero tilt} :dt
The trate style alters the current strain. :dd
{Cannot use fix enforce2d with 3d simulation} :dt
Self-explanatory. :dd
{Cannot use fix msst without per-type mass defined} :dt
Self-explanatory. :dd
{Cannot use fix npt and fix deform on same component of stress tensor} :dt
This would be changing the same box dimension twice. :dd
{Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension} :dt
When specifying an off-diagonal pressure component, the 2nd of the two
dimensions must be periodic. E.g. if the xy component is specified,
then the y dimension must be periodic. :dd
{Cannot use fix nvt/npt/nph on a non-periodic dimension} :dt
When specifying a diagonal pressure component, the dimension must be
periodic. :dd
{Cannot use fix pour with triclinic box} :dt
This feature is not yet supported. :dd
{Cannot use fix press/berendsen and fix deform on same component of stress tensor} :dt
These commands both change the box size/shape, so you cannot use both
together. :dd
{Cannot use fix press/berendsen on a non-periodic dimension} :dt
Self-explanatory. :dd
{Cannot use fix press/berendsen with triclinic box} :dt
Self-explanatory. :dd
{Cannot use fix reax/bonds without pair_style reax} :dt
Self-explantory. :dd
{Cannot use fix shake with non-molecular system} :dt
Your choice of atom style does not have bonds. :dd
{Cannot use fix ttm with 2d simulation} :dt
This is a current restriction of this fix due to the grid it creates. :dd
{Cannot use fix ttm with triclinic box} :dt
This is a current restriction of this fix due to the grid it creates. :dd
{Cannot use fix wall in periodic dimension} :dt
Self-explanatory. :dd
{Cannot use fix wall zlo/zhi for a 2d simulation} :dt
Self-explanatory. :dd
{Cannot use fix wall/reflect in periodic dimension} :dt
Self-explanatory. :dd
{Cannot use fix wall/reflect zlo/zhi for a 2d simulation} :dt
Self-explanatory. :dd
{Cannot use fix wall/srd in periodic dimension} :dt
Self-explanatory. :dd
{Cannot use fix wall/srd more than once} :dt
Nor is their a need to since multiple walls can be specified
in one command. :dd
{Cannot use fix wall/srd without fix srd} :dt
Self-explanatory. :dd
{Cannot use fix wall/srd zlo/zhi for a 2d simulation} :dt
Self-explanatory. :dd
{Cannot use force/neigh with triclinic box} :dt
This is a current limitation of the GPU implementation
in LAMMPS. :dd
{Cannot use kspace solver on system with no charge} :dt
No atoms in system have a non-zero charge. :dd
{Cannot use neighbor bins - box size << cutoff} :dt
Too many neighbor bins will be created. This typically happens when
the simulation box is very small in some dimension, compared to the
neighbor cutoff. Use the "nsq" style instead of "bin" style. :dd
{Cannot use newton pair with GPU CHARMM pair style} :dt
See the newton command to change the setting. :dd
{Cannot use newton pair with GPU Gay-Berne pair style} :dt
See the newton command to change the setting. :dd
{Cannot use newton pair with GPU LJ pair style} :dt
See the newton command to change the setting. :dd
{Cannot use newton pair with GPU LJ96 pair style} :dt
See the newton command to change the setting. :dd
{Cannot use non-zero forces in an energy minimization} :dt
Fix setforce cannot be used in this manner. Use fix addforce
instead. :dd
{Cannot use nonperiodic boundares with fix ttm} :dt
This fix requires a fully periodic simulation box. :dd
{Cannot use nonperiodic boundaries with Ewald} :dt
For kspace style ewald, all 3 dimensions must have periodic boundaries
unless you use the kspace_modify command to define a 2d slab with a
non-periodic z dimension. :dd
{Cannot use nonperiodic boundaries with PPPM} :dt
For kspace style pppm, all 3 dimensions must have periodic boundaries
unless you use the kspace_modify command to define a 2d slab with a
non-periodic z dimension. :dd
{Cannot use pair hybrid with GPU neighbor builds} :dt
See documentation for fix gpu. :dd
{Cannot use pair tail corrections with 2d simulations} :dt
The correction factors are only currently defined for 3d systems. :dd
{Cannot use ramp in variable formula between runs} :dt
This is because the ramp() function is time dependent. :dd
{Cannot use region INF or EDGE when box does not exist} :dt
Regions that extend to the box boundaries can only be used after the
create_box command has been used. :dd
{Cannot use set atom with no atom IDs defined} :dt
Atom IDs are not defined, so they cannot be used to identify an atom. :dd
{Cannot use swiggle in variable formula between runs} :dt
This is a function of elapsed time. :dd
{Cannot use variable energy with constant force in fix addforce} :dt
This is because for constant force, LAMMPS can compute the change
in energy directly. :dd
{Cannot use variable every setting for dump dcd} :dt
The format of DCD dump files requires snapshots be output
at a constant frequency. :dd
{Cannot use variable every setting for dump xtc} :dt
The format of this file requires snapshots at regular intervals. :dd
{Cannot use vdisplace in variable formula between runs} :dt
This is a function of elapsed time. :dd
{Cannot use velocity create loop all unless atoms have IDs} :dt
Atoms in the simulation to do not have IDs, so this style
of velocity creation cannot be performed. :dd
{Cannot use wall in periodic dimension} :dt
Self-explanatory. :dd
{Cannot wiggle and shear fix wall/gran} :dt
Cannot specify both options at the same time. :dd
{Cannot zero momentum of 0 atoms} :dt
The collection of atoms for which momentum is being computed has no
atoms. :dd
{Change_box command before simulation box is defined} :dt
Self-explanatory. :dd
{Change_box operation is invalid} :dt
Cannot change orthogonal box to orthogonal or a triclinic box to
triclinic. :dd
{Communicate group != atom_modify first group} :dt
Self-explanatory. :dd
{Compute ID for compute atom/molecule does not exist} :dt
Self-explanatory. :dd
{Compute ID for compute reduce does not exist} :dt
Self-explanatory. :dd
{Compute ID for fix ave/atom does not exist} :dt
Self-explanatory. :dd
{Compute ID for fix ave/correlate does not exist} :dt
Self-explanatory. :dd
{Compute ID for fix ave/histo does not exist} :dt
Self-explanatory. :dd
{Compute ID for fix ave/spatial does not exist} :dt
Self-explanatory. :dd
{Compute ID for fix ave/time does not exist} :dt
Self-explanatory. :dd
{Compute ID for fix store/state does not exist} :dt
Self-explanatory. :dd
{Compute ID must be alphanumeric or underscore characters} :dt
Self-explanatory. :dd
{Compute angle/local used when angles are not allowed} :dt
The atom style does not support angles. :dd
{Compute atom/molecule compute array is accessed out-of-range} :dt
Self-explanatory. :dd
{Compute atom/molecule compute does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Compute atom/molecule compute does not calculate a per-atom vector} :dt
Self-explanatory. :dd
{Compute atom/molecule compute does not calculate per-atom values} :dt
Self-explanatory. :dd
{Compute atom/molecule fix array is accessed out-of-range} :dt
Self-explanatory. :dd
{Compute atom/molecule fix does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Compute atom/molecule fix does not calculate a per-atom vector} :dt
Self-explanatory. :dd
{Compute atom/molecule fix does not calculate per-atom values} :dt
Self-explanatory. :dd
{Compute atom/molecule requires molecular atom style} :dt
Self-explanatory. :dd
{Compute atom/molecule variable is not atom-style variable} :dt
Self-explanatory. :dd
{Compute bond/local used when bonds are not allowed} :dt
The atom style does not support bonds. :dd
{Compute centro/atom requires a pair style be defined} :dt
This is because the computation of the centro-symmetry values
uses a pairwise neighbor list. :dd
{Compute cluster/atom cutoff is longer than pairwise cutoff} :dt
Cannot identify clusters beyond cutoff. :dd
{Compute cluster/atom requires a pair style be defined} :dt
This is so that the pair style defines a cutoff distance which
is used to find clusters. :dd
{Compute cna/atom cutoff is longer than pairwise cutoff} :dt
Self-explantory. :dd
{Compute cna/atom requires a pair style be defined} :dt
Self-explantory. :dd
{Compute com/molecule requires molecular atom style} :dt
Self-explanatory. :dd
{Compute coord/atom cutoff is longer than pairwise cutoff} :dt
Cannot compute coordination at distances longer than the pair cutoff,
since those atoms are not in the neighbor list. :dd
{Compute coord/atom requires a pair style be defined} :dt
Self-explantory. :dd
{Compute damage/atom requires peridynamic potential} :dt
Damage is a Peridynamic-specific metric. It requires you
to be running a Peridynamics simulation. :dd
{Compute dihedral/local used when dihedrals are not allowed} :dt
The atom style does not support dihedrals. :dd
{Compute does not allow an extra compute or fix to be reset} :dt
This is an internal LAMMPS error. Please report it to the
developers. :dd
{Compute erotate/asphere cannot be used with atom attributes diameter or rmass} :dt
These attributes override the shape and mass settings, so cannot be
used. :dd
{Compute erotate/asphere requires atom attributes angmom, quat, shape} :dt
An atom style that defines these attributes must be used. :dd
{Compute erotate/asphere requires extended particles} :dt
This compute cannot be used with point paritlces. :dd
{Compute erotate/sphere requires atom attribute omega} :dt
An atom style that defines this attribute must be used. :dd
{Compute erotate/sphere requires atom attribute radius or shape} :dt
An atom style that defines these attributes must be used. :dd
{Compute erotate/sphere requires spherical particle shapes} :dt
Self-explanatory. :dd
{Compute event/displace has invalid fix event assigned} :dt
This is an internal LAMMPS error. Please report it to the
developers. :dd
{Compute group/group group ID does not exist} :dt
Self-explanatory. :dd
{Compute gyration/molecule requires molecular atom style} :dt
Self-explanatory. :dd
{Compute heat/flux compute ID does not compute ke/atom} :dt
Self-explanatory. :dd
{Compute heat/flux compute ID does not compute pe/atom} :dt
Self-explanatory. :dd
{Compute heat/flux compute ID does not compute stress/atom} :dt
Self-explanatory. :dd
{Compute improper/local used when impropers are not allowed} :dt
The atom style does not support impropers. :dd
{Compute msd/molecule requires molecular atom style} :dt
Self-explanatory. :dd
{Compute pair must use group all} :dt
Pair styles accumlate energy on all atoms. :dd
{Compute pe must use group all} :dt
Energies computed by potentials (pair, bond, etc) are computed on all
atoms. :dd
{Compute pressure must use group all} :dt
Virial contributions computed by potentials (pair, bond, etc) are
computed on all atoms. :dd
{Compute pressure temperature ID does not compute temperature} :dt
The compute ID assigned to a pressure computation must compute
temperature. :dd
{Compute property/atom for atom property that isn't allocated} :dt
Self-explanatory. :dd
{Compute property/local cannot use these inputs together} :dt
Only inputs that generate the same number of datums can be used
togther. E.g. bond and angle quantities cannot be mixed. :dd
{Compute property/local for property that isn't allocated} :dt
Self-explanatory. :dd
{Compute property/molecule requires molecular atom style} :dt
Self-explanatory. :dd
{Compute rdf requires a pair style be defined} :dt
Self-explanatory. :dd
{Compute reduce compute array is accessed out-of-range} :dt
Self-explanatory. :dd
{Compute reduce compute calculates global values} :dt
A compute that calculates peratom or local values is required. :dd
{Compute reduce compute does not calculate a local array} :dt
Self-explanatory. :dd
{Compute reduce compute does not calculate a local vector} :dt
Self-explanatory. :dd
{Compute reduce compute does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Compute reduce compute does not calculate a per-atom vector} :dt
Self-explanatory. :dd
{Compute reduce fix array is accessed out-of-range} :dt
Self-explanatory. :dd
{Compute reduce fix calculates global values} :dt
A fix that calculates peratom or local values is required. :dd
{Compute reduce fix does not calculate a local array} :dt
Self-explanatory. :dd
{Compute reduce fix does not calculate a local vector} :dt
Self-explanatory. :dd
{Compute reduce fix does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Compute reduce fix does not calculate a per-atom vector} :dt
Self-explanatory. :dd
{Compute reduce replace requires min or max mode} :dt
Self-explanatory. :dd
{Compute reduce variable is not atom-style variable} :dt
Self-explanatory. :dd
{Compute temp/asphere cannot be used with atom attributes diameter or rmass} :dt
These attributes override the shape and mass settings, so cannot be
used. :dd
{Compute temp/asphere requires atom attributes angmom, quat, shape} :dt
An atom style that defines these attributes must be used. :dd
{Compute temp/asphere requires extended particles} :dt
This compute cannot be used with point paritlces. :dd
{Compute temp/partial cannot use vz for 2d systemx} :dt
Self-explanatory. :dd
{Compute temp/profile cannot bin z for 2d systems} :dt
Self-explanatory. :dd
{Compute temp/profile cannot use vz for 2d systemx} :dt
Self-explanatory. :dd
{Compute temp/sphere requires atom attribute omega} :dt
An atom style that defines this attribute must be used. :dd
{Compute temp/sphere requires atom attribute radius or shape} :dt
An atom style that defines these attributes must be used. :dd
{Compute temp/sphere requires spherical particle shapes} :dt
Self-explanatory. :dd
{Compute ti kspace style does not exist} :dt
Self-explanatory. :dd
{Compute ti pair style does not exist} :dt
Self-explanatory. :dd
{Compute ti tail when pair style does not compute tail corrections} :dt
Self-explanatory. :dd
{Compute used in variable between runs is not current} :dt
Computes cannot be invoked by a variable in between runs. Thus they
must have been evaluated on the last timestep of the previous run in
order for their value(s) to be accessed. See the doc page for the
variable command for more info. :dd
{Compute used in variable thermo keyword between runs is not current} :dt
Some thermo keywords rely on a compute to calculate their value(s).
Computes cannot be invoked by a variable in between runs. Thus they
must have been evaluated on the last timestep of the previous run in
order for their value(s) to be accessed. See the doc page for the
variable command for more info. :dd
{Computed temperature for fix temp/berendsen cannot be 0.0} :dt
Self-explanatory. :dd
{Computed temperature for fix temp/rescale cannot be 0.0} :dt
Cannot rescale the temperature to a new value if the current
temperature is 0.0. :dd
{Could not count initial bonds in fix bond/create} :dt
Could not find one of the atoms in a bond on this processor. :dd
{Could not create 3d FFT plan} :dt
The FFT setup in pppm failed. :dd
{Could not create 3d remap plan} :dt
The FFT setup in pppm failed. :dd
{Could not find atom_modify first group ID} :dt
Self-explanatory. :dd
{Could not find compute ID for PRD} :dt
Self-explanatory. :dd
{Could not find compute ID for TAD} :dt
Self-explanatory. :dd
{Could not find compute ID for temperature bias} :dt
Self-explanatory. :dd
{Could not find compute ID to delete} :dt
Self-explanatory. :dd
{Could not find compute displace/atom fix ID} :dt
Self-explanatory. :dd
{Could not find compute event/displace fix ID} :dt
Self-explanatory. :dd
{Could not find compute group ID} :dt
Self-explanatory. :dd
{Could not find compute heat/flux compute ID} :dt
Self-explanatory. :dd
{Could not find compute msd fix ID} :dt
Self-explanatory. :dd
{Could not find compute pressure temperature ID} :dt
The compute ID for calculating temperature does not exist. :dd
{Could not find compute_modify ID} :dt
Self-explanatory. :dd
{Could not find delete_atoms group ID} :dt
Group ID used in the delete_atoms command does not exist. :dd
{Could not find delete_atoms region ID} :dt
Region ID used in the delete_atoms command does not exist. :dd
{Could not find displace_atoms group ID} :dt
Group ID used in the displace_atoms command does not exist. :dd
{Could not find displace_box group ID} :dt
Group ID used in the displace_box command does not exist. :dd
{Could not find dump cfg compute ID} :dt
Self-explanatory. :dd
{Could not find dump cfg fix ID} :dt
Self-explanatory. :dd
{Could not find dump cfg variable name} :dt
Self-explanatory. :dd
{Could not find dump custom compute ID} :dt
The compute ID needed by dump custom to compute a per-atom quantity
does not exist. :dd
{Could not find dump custom fix ID} :dt
Self-explanatory. :dd
{Could not find dump custom variable name} :dt
Self-explanatory. :dd
{Could not find dump group ID} :dt
A group ID used in the dump command does not exist. :dd
{Could not find dump local compute ID} :dt
Self-explanatory. :dd
{Could not find dump local fix ID} :dt
Self-explanatory. :dd
{Could not find dump modify compute ID} :dt
Self-explanatory. :dd
{Could not find dump modify fix ID} :dt
Self-explanatory. :dd
{Could not find dump modify variable name} :dt
Self-explanatory. :dd
{Could not find fix ID to delete} :dt
Self-explanatory. :dd
{Could not find fix group ID} :dt
A group ID used in the fix command does not exist. :dd
{Could not find fix msst compute ID} :dt
Self-explanatory. :dd
{Could not find fix poems group ID} :dt
A group ID used in the fix poems command does not exist. :dd
{Could not find fix recenter group ID} :dt
A group ID used in the fix recenter command does not exist. :dd
{Could not find fix rigid group ID} :dt
A group ID used in the fix rigid command does not exist. :dd
{Could not find fix srd group ID} :dt
Self-explanatory. :dd
{Could not find fix_modify ID} :dt
A fix ID used in the fix_modify command does not exist. :dd
{Could not find fix_modify pressure ID} :dt
The compute ID for computing pressure does not exist. :dd
{Could not find fix_modify temperature ID} :dt
The compute ID for computing temperature does not exist. :dd
{Could not find group delete group ID} :dt
Self-explanatory. :dd
{Could not find/initialize a specified accelerator device} :dt
Your GPU setup is invalid. :dd
{Could not find set group ID} :dt
Group ID specified in set command does not exist. :dd
{Could not find thermo compute ID} :dt
Compute ID specified in thermo_style command does not exist. :dd
{Could not find thermo custom compute ID} :dt
The compute ID needed by thermo style custom to compute a requested
quantity does not exist. :dd
{Could not find thermo custom fix ID} :dt
The fix ID needed by thermo style custom to compute a requested
quantity does not exist. :dd
{Could not find thermo custom variable name} :dt
Self-explanatory. :dd
{Could not find thermo fix ID} :dt
Fix ID specified in thermo_style command does not exist. :dd
{Could not find thermo_modify pressure ID} :dt
The compute ID needed by thermo style custom to compute pressure does
not exist. :dd
{Could not find thermo_modify temperature ID} :dt
The compute ID needed by thermo style custom to compute temperature does
not exist. :dd
{Could not find undump ID} :dt
A dump ID used in the undump command does not exist. :dd
{Could not find velocity group ID} :dt
A group ID used in the velocity command does not exist. :dd
{Could not find velocity temperature ID} :dt
The compute ID needed by the velocity command to compute temperature
does not exist. :dd
{Could not grab element entry from EIM potential file} :dt
Self-explanatory :dd
{Could not grab global entry from EIM potential file} :dt
Self-explanatory. :dd
{Could not grab pair entry from EIM potential file} :dt
Self-explanatory. :dd
{Could not set finite-size particle attribute in fix rigid} :dt
The particle has a finite size but its attributes could not be
determined. :dd
{Coulomb cutoffs of pair hybrid sub-styles do not match} :dt
If using a Kspace solver, all Coulomb cutoffs of long pair styles must
be the same. :dd
{Cound not find dump_modify ID} :dt
Self-explanatory. :dd
{Create_atoms command before simulation box is defined} :dt
The create_atoms command cannot be used before a read_data,
read_restart, or create_box command. :dd
{Create_atoms region ID does not exist} :dt
A region ID used in the create_atoms command does not exist. :dd
{Create_box region ID does not exist} :dt
A region ID used in the create_box command does not exist. :dd
{Create_box region does not support a bounding box} :dt
Not all regions represent bounded volumes. You cannot use
such a region with the create_box command. :dd
{Cyclic loop in joint connections} :dt
Fix poems cannot (yet) work with coupled bodies whose joints connect
the bodies in a ring (or cycle). :dd
{Degenerate lattice primitive vectors} :dt
Invalid set of 3 lattice vectors for lattice command. :dd
{Delete region ID does not exist} :dt
Self-explanatory. :dd
{Delete_atoms command before simulation box is defined} :dt
The delete_atoms command cannot be used before a read_data,
read_restart, or create_box command. :dd
{Delete_atoms cutoff > neighbor cutoff} :dt
Cannot delete atoms further away than a processor knows about. :dd
{Delete_atoms requires a pair style be defined} :dt
This is because atom deletion within a cutoff uses a pairwise
neighbor list. :dd
{Delete_bonds command before simulation box is defined} :dt
The delete_bonds command cannot be used before a read_data,
read_restart, or create_box command. :dd
{Delete_bonds command with no atoms existing} :dt
No atoms are yet defined so the delete_bonds command cannot be used. :dd
{Deposition region extends outside simulation box} :dt
Self-explanatory. :dd
{Did not assign all atoms correctly} :dt
Atoms read in from a data file were not assigned correctly to
processors. This is likely due to some atom coordinates being
outside a non-periodic simulation box. :dd
{Did not find all elements in MEAM library file} :dt
The requested elements were not found in the MEAM file. :dd
{Did not find fix shake partner info} :dt
Could not find bond partners implied by fix shake command. This error
can be triggered if the delete_bonds command was used before fix
shake, and it removed bonds without resetting the 1-2, 1-3, 1-4
weighting list via the special keyword. :dd
{Did not find keyword in table file} :dt
Keyword used in pair_coeff command was not found in table file. :dd
{Did not set temp for fix rigid/nvt} :dt
The temp keyword must be used. :dd
{Dihedral atom missing in delete_bonds} :dt
The delete_bonds command cannot find one or more atoms in a particular
dihedral on a particular processor. The pairwise cutoff is too short
or the atoms are too far apart to make a valid dihedral. :dd
{Dihedral atom missing in set command} :dt
The set command cannot find one or more atoms in a particular dihedral
on a particular processor. The pairwise cutoff is too short or the
atoms are too far apart to make a valid dihedral. :dd
{Dihedral atoms %d %d %d %d missing on proc %d at step} :dt
One or more of 4 atoms needed to compute a particular dihedral are
missing on this processor. Typically this is because the pairwise
cutoff is set too short or the dihedral has blown apart and an atom is
too far away. :dd
{Dihedral charmm is incompatible with Pair style} :dt
Dihedral style charmm must be used with a pair style charmm
in order for the 1-4 epsilon/sigma parameters to be defined. :dd
{Dihedral coeff for hybrid has invalid style} :dt
Dihedral style hybrid uses another dihedral style as one of its
coefficients. The dihedral style used in the dihedral_coeff command
or read from a restart file is not recognized. :dd
{Dihedral coeffs are not set} :dt
No dihedral coefficients have been assigned in the data file or via
the dihedral_coeff command. :dd
{Dihedral style hybrid cannot have hybrid as an argument} :dt
Self-explanatory. :dd
{Dihedral style hybrid cannot have none as an argument} :dt
Self-explanatory. :dd
{Dihedral style hybrid cannot use same dihedral style twice} :dt
Self-explanatory. :dd
{Dihedral_coeff command before dihedral_style is defined} :dt
Coefficients cannot be set in the data file or via the dihedral_coeff
command until an dihedral_style has been assigned. :dd
{Dihedral_coeff command before simulation box is defined} :dt
The dihedral_coeff command cannot be used before a read_data,
read_restart, or create_box command. :dd
{Dihedral_coeff command when no dihedrals allowed} :dt
The chosen atom style does not allow for dihedrals to be defined. :dd
{Dihedral_style command when no dihedrals allowed} :dt
The chosen atom style does not allow for dihedrals to be defined. :dd
{Dihedrals assigned incorrectly} :dt
Dihedrals read in from the data file were not assigned correctly to
atoms. This means there is something invalid about the topology
definitions. :dd
{Dihedrals defined but no dihedral types} :dt
The data file header lists dihedrals but no dihedral types. :dd
{Dimension command after simulation box is defined} :dt
The dimension command cannot be used after a read_data,
read_restart, or create_box command. :dd
{Dipole command before simulation box is defined} :dt
The dipole command cannot be used before a read_data,
read_restart, or create_box command. :dd
{Displace_atoms command before simulation box is defined} :dt
The displace_atoms command cannot be used before a read_data,
read_restart, or create_box command. :dd
{Displace_box command before simulation box is defined} :dt
Self-explanatory. :dd
{Displace_box tilt factors require triclinic box} :dt
Cannot use tilt factors unless the simulation box is
non-orthogonal. :dd
{Distance must be > 0 for compute event/displace} :dt
Self-explanatory. :dd
{Divide by 0 in influence function of pair peri/lps} :dt
This should not normally occur. It is likely a problem with your
model. :dd
{Divide by 0 in variable formula} :dt
Self-explanatory. :dd
{Domain too large for neighbor bins} :dt
The domain has become extremely large so that neighbor bins cannot be
used. Most likely, one or more atoms have been blown out of the
simulation box to a great distance. :dd
{Double precision is not supported on this accelerator.} :dt
In this case, you must compile the GPU library for single precision. :dd
{Dump cfg and fix not computed at compatible times} :dt
The fix must produce per-atom quantities on timesteps that dump cfg
needs them. :dd
{Dump cfg arguments must start with 'id type xs ys zs'} :dt
This is a requirement of the CFG output format. :dd
{Dump cfg requires one snapshot per file} :dt
Use the wildcard "*" character in the filename. :dd
{Dump custom and fix not computed at compatible times} :dt
The fix must produce per-atom quantities on timesteps that dump custom
needs them. :dd
{Dump custom compute does not calculate per-atom array} :dt
Self-explanatory. :dd
{Dump custom compute does not calculate per-atom vector} :dt
Self-explanatory. :dd
{Dump custom compute does not compute per-atom info} :dt
Self-explanatory. :dd
{Dump custom compute vector is accessed out-of-range} :dt
Self-explanatory. :dd
{Dump custom fix does not compute per-atom array} :dt
Self-explanatory. :dd
{Dump custom fix does not compute per-atom info} :dt
Self-explanatory. :dd
{Dump custom fix does not compute per-atom vector} :dt
Self-explanatory. :dd
{Dump custom fix vector is accessed out-of-range} :dt
Self-explanatory. :dd
{Dump custom variable is not atom-style variable} :dt
Only atom-style variables generate per-atom quantities, needed for
dump output. :dd
{Dump dcd of non-matching # of atoms} :dt
Every snapshot written by dump dcd must contain the same # of atoms. :dd
{Dump dcd requires sorting by atom ID} :dt
Use the dump_modify sort command to enable this. :dd
{Dump every variable returned a bad timestep} :dt
The variable must return a timestep greater than the current timestep. :dd
{Dump local and fix not computed at compatible times} :dt
The fix must produce per-atom quantities on timesteps that dump local
needs them. :dd
{Dump local attributes contain no compute or fix} :dt
Self-explanatory. :dd
{Dump local cannot sort by atom ID} :dt
This is because dump local does not really dump per-atom info. :dd
{Dump local compute does not calculate local array} :dt
Self-explanatory. :dd
{Dump local compute does not calculate local vector} :dt
Self-explanatory. :dd
{Dump local compute does not compute local info} :dt
Self-explanatory. :dd
{Dump local compute vector is accessed out-of-range} :dt
Self-explanatory. :dd
{Dump local count is not consistent across input fields} :dt
Every column of output must be the same length. :dd
{Dump local fix does not compute local array} :dt
Self-explanatory. :dd
{Dump local fix does not compute local info} :dt
Self-explanatory. :dd
{Dump local fix does not compute local vector} :dt
Self-explanatory. :dd
{Dump local fix vector is accessed out-of-range} :dt
Self-explanatory. :dd
{Dump modify compute ID does not compute per-atom array} :dt
Self-explanatory. :dd
{Dump modify compute ID does not compute per-atom info} :dt
Self-explanatory. :dd
{Dump modify compute ID does not compute per-atom vector} :dt
Self-explanatory. :dd
{Dump modify compute ID vector is not large enough} :dt
Self-explanatory. :dd
{Dump modify element names do not match atom types} :dt
Number of element names must equal number of atom types. :dd
{Dump modify fix ID does not compute per-atom array} :dt
Self-explanatory. :dd
{Dump modify fix ID does not compute per-atom info} :dt
Self-explanatory. :dd
{Dump modify fix ID does not compute per-atom vector} :dt
Self-explanatory. :dd
{Dump modify fix ID vector is not large enough} :dt
Self-explanatory. :dd
{Dump modify variable is not atom-style variable} :dt
Self-explanatory. :dd
{Dump sort column is invalid} :dt
Self-explanatory. :dd
{Dump xtc requires sorting by atom ID} :dt
Use the dump_modify sort command to enable this. :dd
{Dump_modify region ID does not exist} :dt
Self-explanatory. :dd
{Dumping an atom property that isn't allocated} :dt
The chosen atom style does not define the per-atom quantity being
dumped. :dd
{Dumping an atom quantity that isn't allocated} :dt
Only per-atom quantities that are defined for the atom style being
used are allowed. :dd
{Duplicate particle in PeriDynamic bond - simulation box is too small} :dt
This is likely because your box length is shorter than 2 times
the bond length. :dd
{Electronic temperature dropped below zero} :dt
Something has gone wrong with the fix ttm electron temperature model. :dd
{Empty brackets in variable} :dt
There is no variable syntax that uses empty brackets. Check
the variable doc page. :dd
{Energy was not tallied on needed timestep} :dt
You are using a thermo keyword that requires potentials to
have tallied energy, but they didn't on this timestep. See the
variable doc page for ideas on how to make this work. :dd
{Expected floating point parameter in input script or data file} :dt
The quantity being read is an integer on non-numeric value. :dd
{Expected floating point parameter in variable definition} :dt
The quantity being read is a non-numeric value. :dd
{Expected integer parameter in input script or data file} :dt
The quantity being read is a floating point or non-numeric value. :dd
{Expected integer parameter in variable definition} :dt
The quantity being read is a floating point or non-numeric value. :dd
{Failed to allocate %d bytes for array %s} :dt
Your LAMMPS simulation has run out of memory. You need to run a
smaller simulation or on more processors. :dd
{Failed to reallocate %d bytes for array %s} :dt
Your LAMMPS simulation has run out of memory. You need to run a
smaller simulation or on more processors. :dd
{Fewer SRD bins than processors in some dimension} :dt
This is not allowed. Make your SRD bin size smaller. :dd
{Final box dimension due to fix deform is < 0.0} :dt
Self-explanatory. :dd
{Fix gpu split must be positive for hybrid pair styles.} :dt
See documentation for fix gpu. :dd
{Fix ID for compute atom/molecule does not exist} :dt
Self-explanatory. :dd
{Fix ID for compute reduce does not exist} :dt
Self-explanatory. :dd
{Fix ID for fix ave/atom does not exist} :dt
Self-explanatory. :dd
{Fix ID for fix ave/correlate does not exist} :dt
Self-explanatory. :dd
{Fix ID for fix ave/histo does not exist} :dt
Self-explanatory. :dd
{Fix ID for fix ave/spatial does not exist} :dt
Self-explanatory. :dd
{Fix ID for fix ave/time does not exist} :dt
Self-explanatory. :dd
{Fix ID for fix store/state does not exist} :dt
Self-explanatory :dd
{Fix ID must be alphanumeric or underscore characters} :dt
Self-explanatory. :dd
{Fix SRD cannot have both atom attributes angmom and omega} :dt
Use either spheroid solute particles or fully generalized
aspherical solute particles. :dd
{Fix SRD no-slip requires atom attribute torque} :dt
This is because the SRD collisions will impart torque to the solute
particles. :dd
{Fix SRD requires atom attribute angmom or omega} :dt
This is because the SRD collisions with cause the solute particles to
rotate. :dd
{Fix SRD requires atom attribute radius or shape} :dt
This is because the solute particles must be finite-size particles,
not point particles. :dd
{Fix SRD: bad bin assignment for SRD advection} :dt
Something has gone wrong in your SRD model; try using more
conservative settings. :dd
{Fix SRD: bad search bin assignment} :dt
Something has gone wrong in your SRD model; try using more
conservative settings. :dd
{Fix SRD: bad stencil bin for big particle} :dt
Something has gone wrong in your SRD model; try using more
conservative settings. :dd
{Fix SRD: too many big particles in bin} :dt
Reset the ATOMPERBIN parameter at the top of fix_srd.cpp
to a larger value, and re-compile the code. :dd
{Fix SRD: too many walls in bin} :dt
This should not happen unless your system has been setup incorrectly. :dd
{Fix adapt kspace style does not exist} :dt
Self-explanatory. :dd
{Fix adapt pair style does not exist} :dt
Self-explanatory :dd
{Fix adapt pair style param not supported} :dt
The pair style does not know about the parameter you specified. :dd
{Fix adapt requires atom attribute diameter} :dt
The atom style being used does not specify an atom diameter. :dd
{Fix adapt type pair range is not valid for pair hybrid sub-style} :dt
Self-explanatory. :dd
{Fix ave/atom compute array is accessed out-of-range} :dt
Self-explanatory. :dd
{Fix ave/atom compute does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Fix ave/atom compute does not calculate a per-atom vector} :dt
A compute used by fix ave/atom must generate per-atom values. :dd
{Fix ave/atom compute does not calculate per-atom values} :dt
A compute used by fix ave/atom must generate per-atom values. :dd
{Fix ave/atom fix array is accessed out-of-range} :dt
Self-explanatory. :dd
{Fix ave/atom fix does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Fix ave/atom fix does not calculate a per-atom vector} :dt
A fix used by fix ave/atom must generate per-atom values. :dd
{Fix ave/atom fix does not calculate per-atom values} :dt
A fix used by fix ave/atom must generate per-atom values. :dd
{Fix ave/atom variable is not atom-style variable} :dt
A variable used by fix ave/atom must generate per-atom values. :dd
{Fix ave/histo cannot input local values in scalar mode} :dt
Self-explanatory. :dd
{Fix ave/histo cannot input per-atom values in scalar mode} :dt
Self-explanatory. :dd
{Fix ave/histo compute array is accessed out-of-range} :dt
Self-explanatory. :dd
{Fix ave/histo compute does not calculate a global array} :dt
Self-explanatory. :dd
{Fix ave/histo compute does not calculate a global scalar} :dt
Self-explanatory. :dd
{Fix ave/histo compute does not calculate a global vector} :dt
Self-explanatory. :dd
{Fix ave/histo compute does not calculate a local array} :dt
Self-explanatory. :dd
{Fix ave/histo compute does not calculate a local vector} :dt
Self-explanatory. :dd
{Fix ave/histo compute does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Fix ave/histo compute does not calculate a per-atom vector} :dt
Self-explanatory. :dd
{Fix ave/histo compute does not calculate local values} :dt
Self-explanatory. :dd
{Fix ave/histo compute does not calculate per-atom values} :dt
Self-explanatory. :dd
{Fix ave/histo compute vector is accessed out-of-range} :dt
Self-explanatory. :dd
{Fix ave/histo fix array is accessed out-of-range} :dt
Self-explanatory. :dd
{Fix ave/histo fix does not calculate a global array} :dt
Self-explanatory. :dd
{Fix ave/histo fix does not calculate a global scalar} :dt
Self-explanatory. :dd
{Fix ave/histo fix does not calculate a global vector} :dt
Self-explanatory. :dd
{Fix ave/histo fix does not calculate a local array} :dt
Self-explanatory. :dd
{Fix ave/histo fix does not calculate a local vector} :dt
Self-explanatory. :dd
{Fix ave/histo fix does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Fix ave/histo fix does not calculate a per-atom vector} :dt
Self-explanatory. :dd
{Fix ave/histo fix does not calculate local values} :dt
Self-explanatory. :dd
{Fix ave/histo fix does not calculate per-atom values} :dt
Self-explanatory. :dd
{Fix ave/histo fix vector is accessed out-of-range} :dt
Self-explanatory. :dd
{Fix ave/histo input is invalid compute} :dt
Self-explanatory. :dd
{Fix ave/histo input is invalid fix} :dt
Self-explanatory. :dd
{Fix ave/histo input is invalid variable} :dt
Self-explanatory. :dd
{Fix ave/histo inputs are not all global, peratom, or local} :dt
All inputs in a single fix ave/histo command must be of the
same style. :dd
{Fix ave/spatial compute does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Fix ave/spatial compute does not calculate a per-atom vector} :dt
A compute used by fix ave/spatial must generate per-atom values. :dd
{Fix ave/spatial compute does not calculate per-atom values} :dt
A compute used by fix ave/spatial must generate per-atom values. :dd
{Fix ave/spatial compute vector is accessed out-of-range} :dt
The index for the vector is out of bounds. :dd
{Fix ave/spatial fix does not calculate a per-atom array} :dt
Self-explanatory. :dd
{Fix ave/spatial fix does not calculate a per-atom vector} :dt
A fix used by fix ave/spatial must generate per-atom values. :dd
{Fix ave/spatial fix does not calculate per-atom values} :dt
A fix used by fix ave/spatial must generate per-atom values. :dd
{Fix ave/spatial fix vector is accessed out-of-range} :dt
The index for the vector is out of bounds. :dd
{Fix ave/spatial for triclinic boxes requires units reduced} :dt
Self-explanatory. :dd
{Fix ave/spatial settings invalid with changing box} :dt
If the ave setting is "running" or "window" and the box size/shape
changes during the simulation, then the units setting must be
"reduced", else the number of bins may change. :dd
{Fix ave/spatial variable is not atom-style variable} :dt
A variable used by fix ave/spatial must generate per-atom values. :dd
{Fix ave/time cannot set output array intensive/extensive from these inputs} :dt
One of more of the vector inputs has individual elements which are
flagged as intensive or extensive. Such an input cannot be flagged as
all intensive/extensive when turned into an array by fix ave/time. :dd
{Fix ave/time cannot use variable with vector mode} :dt
Variables produce scalar values. :dd
{Fix ave/time columns are inconsistent lengths} :dt
Self-explanatory. :dd
{Fix ave/time compute array is accessed out-of-range} :dt
Self-explanatory. :dd
{Fix ave/time compute does not calculate a scalar} :dt
Only computes that calculate a scalar or vector quantity (not a
per-atom quantity) can be used with fix ave/time. :dd
{Fix ave/time compute does not calculate a vector} :dt
Only computes that calculate a scalar or vector quantity (not a
per-atom quantity) can be used with fix ave/time. :dd
{Fix ave/time compute does not calculate an array} :dt
Self-explanatory. :dd
{Fix ave/time compute vector is accessed out-of-range} :dt
The index for the vector is out of bounds. :dd
{Fix ave/time fix array is accessed out-of-range} :dt
Self-explanatory. :dd
{Fix ave/time fix does not calculate a scalar} :dt
A fix used by fix ave/time must generate global values. :dd
{Fix ave/time fix does not calculate a vector} :dt
A fix used by fix ave/time must generate global values. :dd
{Fix ave/time fix does not calculate an array} :dt
Self-explanatory. :dd
{Fix ave/time fix vector is accessed out-of-range} :dt
The index for the vector is out of bounds. :dd
{Fix ave/time variable is not equal-style variable} :dt
A variable used by fix ave/time must generate a global value. :dd
{Fix bond/break requires special_bonds = 0,1,1} :dt
This is a restriction of the current fix bond/break implementation. :dd
{Fix bond/create cutoff is longer than pairwise cutoff} :dt
This is not allowed because bond creation is done using the
pairwise neighbor list. :dd
{Fix bond/create requires special_bonds coul = 0,1,1} :dt
Self-explanatory. :dd
{Fix bond/create requires special_bonds lj = 0,1,1} :dt
Self-explanatory. :dd
{Fix bond/swap cannot use dihedral or improper styles} :dt
These styles cannot be defined when using this fix. :dd
{Fix bond/swap requires pair and bond styles} :dt
Self-explanatory. :dd
{Fix bond/swap requires special_bonds = 0,1,1} :dt
Self-explanatory. :dd
{Fix box/relax generated negative box length} :dt
The pressure being applied is likely too large. Try applying
it incrementally, to build to the high pressure. :dd
{Fix command before simulation box is defined} :dt
The fix command cannot be used before a read_data, read_restart, or
create_box command. :dd
{Fix deform is changing yz by too much with changing xy} :dt
When both yz and xy are changing, it induces changes in xz if the
box must flip from one tilt extreme to another. Thus it is not
allowed for yz to grow so much that a flip is induced. :dd
{Fix deform tilt factors require triclinic box} :dt
Cannot deform the tilt factors of a simulation box unless it
is a triclinic (non-orthogonal) box. :dd
{Fix deform volume setting is invalid} :dt
Cannot use volume style unless other dimensions are being controlled. :dd
{Fix deposit region cannot be dynamic} :dt
Only static regions can be used with fix deposit. :dd
{Fix deposit region does not support a bounding box} :dt
Not all regions represent bounded volumes. You cannot use
such a region with the fix deposit command. :dd
{Fix efield requires atom attribute q} :dt
Self-explanatory. :dd
{Fix evaporate molecule requires atom attribute molecule} :dt
The atom style being used does not define a molecule ID. :dd
{Fix external callback function not set} :dt
This must be done by an external program in order to use this fix. :dd
{Fix for fix ave/atom not computed at compatible time} :dt
Fixes generate their values on specific timesteps. Fix ave/atom is
requesting a value on a non-allowed timestep. :dd
{Fix for fix ave/correlate not computed at compatible time} :dt
Fixes generate their values on specific timesteps. Fix ave/correlate
is requesting a value on a non-allowed timestep. :dd
{Fix for fix ave/histo not computed at compatible time} :dt
Fixes generate their values on specific timesteps. Fix ave/histo is
requesting a value on a non-allowed timestep. :dd
{Fix for fix ave/spatial not computed at compatible time} :dt
Fixes generate their values on specific timesteps. Fix ave/spatial is
requesting a value on a non-allowed timestep. :dd
{Fix for fix ave/time not computed at compatible time} :dt
Fixes generate their values on specific timesteps. Fix ave/time
is requesting a value on a non-allowed timestep. :dd
{Fix for fix store/state not computed at compatible time} :dt
Fixes generate their values on specific timesteps. Fix store/state
is requesting a value on a non-allowed timestep. :dd
{Fix freeze requires atom attribute torque} :dt
The atom style defined does not have this attribute. :dd
{Fix heat group has no atoms} :dt
Self-explanatory. :dd
{Fix heat kinetic energy went negative} :dt
This will cause the velocity rescaling about to be performed by fix
heat to be invalid. :dd
{Fix in variable not computed at compatible time} :dt
Fixes generate their values on specific timesteps. The variable is
requesting the values on a non-allowed timestep. :dd
{Fix langevin period must be > 0.0} :dt
The time window for temperature relaxation must be > 0 :dd
{Fix momentum group has no atoms} :dt
Self-explanatory. :dd
{Fix move cannot define z or vz variable for 2d problem} :dt
Self-explanatory. :dd
{Fix move cannot have 0 length rotation vector} :dt
Self-explanatory. :dd
{Fix move cannot rotate aroung non z-axis for 2d problem} :dt
Self-explanatory. :dd
{Fix move cannot set linear z motion for 2d problem} :dt
Self-explanatory. :dd
{Fix move cannot set wiggle z motion for 2d problem} :dt
Self-explanatory. :dd
{Fix msst compute ID does not compute potential energy} :dt
Self-explanatory. :dd
{Fix msst compute ID does not compute pressure} :dt
Self-explanatory. :dd
{Fix msst compute ID does not compute temperature} :dt
Self-explanatory. :dd
{Fix msst requires a periodic box} :dt
Self-explanatory. :dd
{Fix msst tscale must satisfy 0 <= tscale < 1} :dt
Self-explanatory. :dd
{Fix npt/nph has tilted box too far - box flips are not yet implemented} :dt
This feature has not yet been added. However, if you are applying
an off-diagonal pressure to a fluid, the box may want to tilt indefinitely,
because the fluid cannot support the pressure you are imposing. :dd
{Fix nve/asphere cannot be used with atom attributes diameter or rmass} :dt
These attributes override the shape and mass settings, so cannot be
used. :dd
{Fix nve/asphere requires atom attributes angmom, quat, torque, shape} :dt
An atom style that specifies these quantities is needed. :dd
{Fix nve/asphere requires extended particles} :dt
This fix can only be used for particles with a shape setting. :dd
{Fix nve/sphere requires atom attribute diameter or shape} :dt
An atom style that specifies these quantities is needed. :dd
{Fix nve/sphere requires atom attribute mu} :dt
An atom style with this attribute is needed. :dd
{Fix nve/sphere requires atom attributes omega, torque} :dt
An atom style with these attributes is needed. :dd
{Fix nve/sphere requires extended particles} :dt
This fix can only be used for particles of a finite size. :dd
{Fix nve/sphere requires spherical particle shapes} :dt
Self-explanatory. :dd
{Fix nvt/nph/npt asphere cannot be used with atom attributes diameter or rmass} :dt
Those attributes are for spherical particles. :dd
{Fix nvt/nph/npt asphere requires atom attributes quat, angmom, torque, shape} :dt
Those attributes are what are used to define aspherical particles. :dd
{Fix nvt/nph/npt asphere requires extended particles} :dt
The shape setting for a particle in the fix group has shape = 0.0,
which means it is a point particle. :dd
{Fix nvt/nph/npt sphere requires atom attribute diameter or shape} :dt
An atom style that specifies these quantities is needed. :dd
{Fix nvt/nph/npt sphere requires atom attributes omega, torque} :dt
Those attributes are what are used to define spherical particles. :dd
{Fix nvt/npt/nph damping parameters must be > 0.0} :dt
Self-explanatory. :dd
{Fix nvt/sphere requires extended particles} :dt
This fix can only be used for particles of a finite size. :dd
{Fix nvt/sphere requires spherical particle shapes} :dt
Self-explanatory. :dd
{Fix orient/fcc file open failed} :dt
The fix orient/fcc command could not open a specified file. :dd
{Fix orient/fcc file read failed} :dt
The fix orient/fcc command could not read the needed parameters from a
specified file. :dd
{Fix orient/fcc found self twice} :dt
The neighbor lists used by fix orient/fcc are messed up. If this
error occurs, it is likely a bug, so send an email to the
"developers"_http://lammps.sandia.gov/authors.html. :dd
{Fix peri neigh does not exist} :dt
Somehow a fix that the pair style defines has been deleted. :dd
{Fix pour region ID does not exist} :dt
Self-explanatory. :dd
{Fix pour region cannot be dynamic} :dt
Only static regions can be used with fix pour. :dd
{Fix pour region does not support a bounding box} :dt
Not all regions represent bounded volumes. You cannot use
such a region with the fix pour command. :dd
{Fix pour requires atom attributes radius, rmass} :dt
The atom style defined does not have these attributes. :dd
{Fix press/berendsen damping parameters must be > 0.0} :dt
Self-explanatory. :dd
{Fix qeq/comb group has no atoms} :dt
Self-explanatory. :dd
{Fix qeq/comb requires atom attribute q} :dt
An atom style with charge must be used to perform charge equilibration. :dd
{Fix reax/bonds numbonds > nsbmax_most} :dt
The limit of the number of bonds expected by the ReaxFF force field
was exceeded. :dd
{Fix recenter group has no atoms} :dt
Self-explanatory. :dd
{Fix rigid atom has non-zero image flag in a non-periodic dimension} :dt
You cannot set image flags for non-periodic dimensions. :dd
{Fix rigid molecule requires atom attribute molecule} :dt
Self-explanatory. :dd
{Fix rigid/nvt period must be > 0.0} :dt
Self-explanatory :dd
{Fix rigid: Bad principal moments} :dt
The principal moments of inertia computed for a rigid body
are not within the required tolerances. :dd
{Fix shake cannot be used with minimization} :dt
Cannot use fix shake while doing an energy minimization since
it turns off bonds that should contribute to the energy. :dd
{Fix spring couple group ID does not exist} :dt
Self-explanatory. :dd
{Fix srd lamda must be >= 0.6 of SRD grid size} :dt
This is a requirement for accuracy reasons. :dd
{Fix srd requires SRD particles all have same mass} :dt
Self-explanatory. :dd
{Fix srd requires ghost atoms store velocity} :dt
Use the communicate vel yes command to enable this. :dd
{Fix srd requires newton pair on} :dt
Self-explanatory. :dd
{Fix store/state compute array is accessed out-of-range} :dt
Self-explanatory. :dd
{Fix store/state compute does not calculate a per-atom array} :dt
The compute calculates a per-atom vector. :dd
{Fix store/state compute does not calculate a per-atom vector} :dt
The compute calculates a per-atom vector. :dd
{Fix store/state compute does not calculate per-atom values} :dt
Computes that calculate global or local quantities cannot be used
with fix store/state. :dd
{Fix store/state fix array is accessed out-of-range} :dt
Self-explanatory. :dd
{Fix store/state fix does not calculate a per-atom array} :dt
The fix calculates a per-atom vector. :dd
{Fix store/state fix does not calculate a per-atom vector} :dt
The fix calculates a per-atom array. :dd
{Fix store/state fix does not calculate per-atom values} :dt
Fixes that calculate global or local quantities cannot be used with
fix store/state. :dd
{Fix store/state for atom property that isn't allocated} :dt
Self-explanatory. :dd
{Fix store/state variable is not atom-style variable} :dt
Only atom-style variables calculate per-atom quantities. :dd
{Fix temp/berendsen period must be > 0.0} :dt
Self-explanatory. :dd
{Fix thermal/conductivity swap value must be positive} :dt
Self-explanatory. :dd
{Fix tmd must come after integration fixes} :dt
Any fix tmd command must appear in the input script after all time
integration fixes (nve, nvt, npt). See the fix tmd documentation for
details. :dd
{Fix ttm electron temperatures must be > 0.0} :dt
Self-explanatory. :dd
{Fix ttm electronic_density must be > 0.0} :dt
Self-explanatory. :dd
{Fix ttm electronic_specific_heat must be > 0.0} :dt
Self-explanatory. :dd
{Fix ttm electronic_thermal_conductivity must be >= 0.0} :dt
Self-explanatory. :dd
{Fix ttm gamma_p must be > 0.0} :dt
Self-explanatory. :dd
{Fix ttm gamma_s must be >= 0.0} :dt
Self-explanatory. :dd
{Fix ttm number of nodes must be > 0} :dt
Self-explanatory. :dd
{Fix ttm v_0 must be >= 0.0} :dt
Self-explanatory. :dd
{Fix used in compute atom/molecule not computed at compatible time} :dt
The fix must produce per-atom quantities on timesteps that the compute
needs them. :dd
{Fix used in compute reduce not computed at compatible time} :dt
Fixes generate their values on specific timesteps. Compute sum is
requesting a value on a non-allowed timestep. :dd
{Fix viscosity swap value must be positive} :dt
Self-explanatory. :dd
{Fix viscosity vtarget value must be positive} :dt
Self-explanatory. :dd
{Fix wall cutoff <= 0.0} :dt
Self-explanatory. :dd
{Fix wall/colloid cannot be used with atom attribute diameter} :dt
Only finite-size particles defined by the shape command can be used. :dd
{Fix wall/colloid requires atom attribute shape} :dt
Self-explanatory. :dd
{Fix wall/colloid requires extended particles} :dt
Self-explanatory. :dd
{Fix wall/colloid requires spherical particles} :dt
Self-explanatory. :dd
{Fix wall/gran is incompatible with Pair style} :dt
Must use a granular pair style to define the parameters needed for
this fix. :dd
{Fix wall/gran requires atom attributes radius, omega, torque} :dt
The atom style defined does not have these attributes. :dd
{Fix wall/region colloid cannot be used with atom attribute diameter} :dt
Only finite-size particles defined by the shape command can be used. :dd
{Fix wall/region colloid requires atom attribute shape} :dt
Self-explanatory. :dd
{Fix wall/region colloid requires extended particles} :dt
Self-explanatory. :dd
{Fix wall/region colloid requires spherical particles} :dt
Self-explanatory. :dd
{Fix wall/region cutoff <= 0.0} :dt
Self-explanatory. :dd
{Fix_modify order must be 3 or 5} :dt
Self-explanatory. :dd
{Fix_modify pressure ID does not compute pressure} :dt
The compute ID assigned to the fix must compute pressure. :dd
{Fix_modify temperature ID does not compute temperature} :dt
The compute ID assigned to the fix must compute temperature. :dd
{Found no restart file matching pattern} :dt
When using a "*" in the restart file name, no matching file was found. :dd
{GPU is not the first fix for this run} :dt
This is the way the fix must be defined in your input script. :dd
{GPU library not compiled for this accelerator} :dt
The GPU library was not built for your accelerator. Check the arch flag in
lib/gpu. :dd
{Gmask function in equal-style variable formula} :dt
Gmask is per-atom operation. :dd
{Gravity changed since fix pour was created} :dt
Gravity must be static and not dynamic for use with fix pour. :dd
{Gravity must point in -y to use with fix pour in 2d} :dt
Gravity must be pointing "down" in a 2d box. :dd
{Gravity must point in -z to use with fix pour in 3d} :dt
Gravity must be pointing "down" in a 3d box, i.e. theta = 180.0. :dd
{Grmask function in equal-style variable formula} :dt
Grmask is per-atom operation. :dd
{Group ID does not exist} :dt
A group ID used in the group command does not exist. :dd
{Group ID in variable formula does not exist} :dt
Self-explanatory. :dd
{Group command before simulation box is defined} :dt
The group command cannot be used before a read_data, read_restart, or
create_box command. :dd
{Group region ID does not exist} :dt
A region ID used in the group command does not exist. :dd
{Illegal ... command} :dt
Self-explanatory. Check the input script syntax and compare to the
documentation for the command. You can use -echo screen as a
command-line option when running LAMMPS to see the offending line. :dd
{Illegal COMB parameter} :dt
One or more of the coefficients defined in the potential file is
invalid. :dd
{Illegal Stillinger-Weber parameter} :dt
One or more of the coefficients defined in the potential file is
invalid. :dd
{Illegal Tersoff parameter} :dt
One or more of the coefficients defined in the potential file is
invalid. :dd
{Illegal chemical element names} :dt
The name is too long to be a chemical element. :dd
{Illegal fix gpu command} :dt
Self-explanatory. :dd
{Illegal number of angle table entries} :dt
There must be at least 2 table entries. :dd
{Illegal number of bond table entries} :dt
There must be at least 2 table entries. :dd
{Illegal number of pair table entries} :dt
There must be at least 2 table entries. :dd
{Illegal simulation box} :dt
The lower bound of the simulation box is greater than the upper bound. :dd
{Improper atom missing in delete_bonds} :dt
The delete_bonds command cannot find one or more atoms in a particular
improper on a particular processor. The pairwise cutoff is too short
or the atoms are too far apart to make a valid improper. :dd
{Improper atom missing in set command} :dt
The set command cannot find one or more atoms in a particular improper
on a particular processor. The pairwise cutoff is too short or the
atoms are too far apart to make a valid improper. :dd
{Improper atoms %d %d %d %d missing on proc %d at step} :dt
One or more of 4 atoms needed to compute a particular improper are
missing on this processor. Typically this is because the pairwise
cutoff is set too short or the improper has blown apart and an atom is
too far away. :dd
{Improper coeff for hybrid has invalid style} :dt
Improper style hybrid uses another improper style as one of its
coefficients. The improper style used in the improper_coeff command
or read from a restart file is not recognized. :dd
{Improper coeffs are not set} :dt
No improper coefficients have been assigned in the data file or via
the improper_coeff command. :dd
{Improper style hybrid cannot have hybrid as an argument} :dt
Self-explanatory. :dd
{Improper style hybrid cannot have none as an argument} :dt
Self-explanatory. :dd
{Improper style hybrid cannot use same improper style twice} :dt
Self-explanatory. :dd
{Improper_coeff command before improper_style is defined} :dt
Coefficients cannot be set in the data file or via the improper_coeff
command until an improper_style has been assigned. :dd
{Improper_coeff command before simulation box is defined} :dt
The improper_coeff command cannot be used before a read_data,
read_restart, or create_box command. :dd
{Improper_coeff command when no impropers allowed} :dt
The chosen atom style does not allow for impropers to be defined. :dd
{Improper_style command when no impropers allowed} :dt
The chosen atom style does not allow for impropers to be defined. :dd
{Impropers assigned incorrectly} :dt
Impropers read in from the data file were not assigned correctly to
atoms. This means there is something invalid about the topology
definitions. :dd
{Impropers defined but no improper types} :dt
The data file header lists improper but no improper types. :dd
{Inconsistent iparam/jparam values in fix bond/create command} :dt
If itype and jtype are the same, then their maxbond and newtype
settings must also be the same. :dd
{Incorrect args for angle coefficients} :dt
Self-explanatory. Check the input script or data file. :dd
{Incorrect args for bond coefficients} :dt
Self-explanatory. Check the input script or data file. :dd
{Incorrect args for dihedral coefficients} :dt
Self-explanatory. Check the input script or data file. :dd
{Incorrect args for improper coefficients} :dt
Self-explanatory. Check the input script or data file. :dd
{Incorrect args for pair coefficients} :dt
Self-explanatory. Check the input script or data file. :dd
{Incorrect args in pair_style command} :dt
Self-explanatory. :dd
{Incorrect atom format in data file} :dt
Number of values per atom line in the data file is not consistent with
the atom style. :dd
{Incorrect boundaries with slab Ewald} :dt
Must have periodic x,y dimensions and non-periodic z dimension to use
2d slab option with Ewald. :dd
{Incorrect boundaries with slab PPPM} :dt
Must have periodic x,y dimensions and non-periodic z dimension to use
2d slab option with PPPM. :dd
{Incorrect element names in EAM potential file} :dt
The element names in the EAM file do not match those requested. :dd
{Incorrect format in COMB potential file} :dt
Incorrect number of words per line in the potential file. :dd
{Incorrect format in MEAM potential file} :dt
Incorrect number of words per line in the potential file. :dd
{Incorrect format in NEB coordinate file} :dt
Self-explanatory. :dd
{Incorrect format in Stillinger-Weber potential file} :dt
Incorrect number of words per line in the potential file. :dd
{Incorrect format in TMD target file} :dt
Format of file read by fix tmd command is incorrect. :dd
{Incorrect format in Tersoff potential file} :dt
Incorrect number of words per line in the potential file. :dd
{Incorrect multiplicity arg for dihedral coefficients} :dt
Self-explanatory. Check the input script or data file. :dd
{Incorrect sign arg for dihedral coefficients} :dt
Self-explanatory. Check the input script or data file. :dd
{Incorrect velocity format in data file} :dt
Each atom style defines a format for the Velocity section
of the data file. The read-in lines do not match. :dd
{Incorrect weight arg for dihedral coefficients} :dt
Self-explanatory. Check the input script or data file. :dd
{Index between variable brackets must be positive} :dt
Self-explanatory. :dd
{Indexed per-atom vector in variable formula without atom map} :dt
Accessing a value from an atom vector requires the ability to lookup
an atom index, which is provided by an atom map. An atom map does not
exist (by default) for non-molecular problems. Using the atom_modify
map command will force an atom map to be created. :dd
{Induced tilt by displace_box is too large} :dt
The final tilt value must be between -1/2 and 1/2 of the perpendicular
box length. :dd
{Initial temperatures not all set in fix ttm} :dt
Self-explantory. :dd
{Input line too long after variable substitution} :dt
This is a hard (very large) limit defined in the input.cpp file. :dd
{Input line too long: %s} :dt
This is a hard (very large) limit defined in the input.cpp file. :dd
{Insertion region extends outside simulation box} :dt
Region specified with fix pour command extends outside the global
simulation box. :dd
{Insufficient Jacobi rotations for POEMS body} :dt
Eigensolve for rigid body was not sufficiently accurate. :dd
{Insufficient Jacobi rotations for rigid body} :dt
Eigensolve for rigid body was not sufficiently accurate. :dd
{Insufficient memory on accelerator. } :dt
Self-explanatory. :dd
{Invalid Boolean syntax in if command} :dt
Self-explanatory. :dd
{Invalid REAX atom type} :dt
There is a mis-match between LAMMPS atom types and the elements
listed in the ReaxFF force field file. :dd
{Invalid angle style} :dt
The choice of angle style is unknown. :dd
{Invalid angle table length} :dt
Length must be 2 or greater. :dd
{Invalid angle type in Angles section of data file} :dt
Angle type must be positive integer and within range of specified angle
types. :dd
{Invalid angle type index for fix shake} :dt
Self-explanatory. :dd
{Invalid atom ID in Angles section of data file} :dt
Atom IDs must be positive integers and within range of defined
atoms. :dd
{Invalid atom ID in Atoms section of data file} :dt
Atom IDs must be positive integers. :dd
{Invalid atom ID in Bonds section of data file} :dt
Atom IDs must be positive integers and within range of defined
atoms. :dd
{Invalid atom ID in Dihedrals section of data file} :dt
Atom IDs must be positive integers and within range of defined
atoms. :dd
{Invalid atom ID in Impropers section of data file} :dt
Atom IDs must be positive integers and within range of defined
atoms. :dd
{Invalid atom ID in Velocities section of data file} :dt
Atom IDs must be positive integers and within range of defined
atoms. :dd
{Invalid atom mass for fix shake} :dt
Mass specified in fix shake command must be > 0.0. :dd
{Invalid atom style} :dt
The choice of atom style is unknown. :dd
{Invalid atom type in Atoms section of data file} :dt
Atom types must range from 1 to specified # of types. :dd
{Invalid atom type in create_atoms command} :dt
The create_box command specified the range of valid atom types.
An invalid type is being requested. :dd
{Invalid atom type in fix bond/create command} :dt
Self-explanatory. :dd
{Invalid atom type in neighbor exclusion list} :dt
Atom types must range from 1 to Ntypes inclusive. :dd
{Invalid atom type index for fix shake} :dt
Atom types must range from 1 to Ntypes inclusive. :dd
{Invalid atom types in pair_write command} :dt
Atom types must range from 1 to Ntypes inclusive. :dd
{Invalid atom vector in variable formula} :dt
The atom vector is not recognized. :dd
{Invalid attribute in dump custom command} :dt
Self-explantory. :dd
{Invalid attribute in dump local command} :dt
Self-explantory. :dd
{Invalid attribute in dump modify command} :dt
Self-explantory. :dd
{Invalid bond style} :dt
The choice of bond style is unknown. :dd
{Invalid bond table length} :dt
Length must be 2 or greater. :dd
{Invalid bond type in Bonds section of data file} :dt
Bond type must be positive integer and within range of specified bond
types. :dd
{Invalid bond type in fix bond/break command} :dt
Self-explanatory. :dd
{Invalid bond type in fix bond/create command} :dt
Self-explanatory. :dd
{Invalid bond type index for fix shake} :dt
Self-explanatory. Check the fix shake command in the input script. :dd
{Invalid coeffs for this dihedral style} :dt
Cannot set class 2 coeffs in data file for this dihedral style. :dd
{Invalid command-line argument} :dt
One or more command-line arguments is invalid. Check the syntax of
the command you are using to launch LAMMPS. :dd
{Invalid compute ID in variable formula} :dt
The compute is not recognized. :dd
{Invalid compute style} :dt
Self-explanatory. :dd
{Invalid cutoff in communicate command} :dt
Specified cutoff must be >= 0.0. :dd
{Invalid cutoffs in pair_write command} :dt
Inner cutoff must be larger than 0.0 and less than outer cutoff. :dd
{Invalid d1 or d2 value for pair colloid coeff} :dt
Neither d1 or d2 can be < 0. :dd
{Invalid data file section: Angle Coeffs} :dt
Atom style does not allow angles. :dd
{Invalid data file section: AngleAngle Coeffs} :dt
Atom style does not allow impropers. :dd
{Invalid data file section: AngleAngleTorsion Coeffs} :dt
Atom style does not allow dihedrals. :dd
{Invalid data file section: AngleTorsion Coeffs} :dt
Atom style does not allow dihedrals. :dd
{Invalid data file section: Angles} :dt
Atom style does not allow angles. :dd
{Invalid data file section: Bond Coeffs} :dt
Atom style does not allow bonds. :dd
{Invalid data file section: BondAngle Coeffs} :dt
Atom style does not allow angles. :dd
{Invalid data file section: BondBond Coeffs} :dt
Atom style does not allow angles. :dd
{Invalid data file section: BondBond13 Coeffs} :dt
Atom style does not allow dihedrals. :dd
{Invalid data file section: Bonds} :dt
Atom style does not allow bonds. :dd
{Invalid data file section: Dihedral Coeffs} :dt
Atom style does not allow dihedrals. :dd
{Invalid data file section: Dihedrals} :dt
Atom style does not allow dihedrals. :dd
{Invalid data file section: EndBondTorsion Coeffs} :dt
Atom style does not allow dihedrals. :dd
{Invalid data file section: Improper Coeffs} :dt
Atom style does not allow impropers. :dd
{Invalid data file section: Impropers} :dt
Atom style does not allow impropers. :dd
{Invalid data file section: MiddleBondTorsion Coeffs} :dt
Atom style does not allow dihedrals. :dd
{Invalid delta_conf in tad command} :dt
The value must be between 0 and 1 inclusive. :dd
{Invalid density in Atoms section of data file} :dt
Density value cannot be <= 0.0. :dd
{Invalid dihedral style} :dt
The choice of dihedral style is unknown. :dd
{Invalid dihedral type in Dihedrals section of data file} :dt
Dihedral type must be positive integer and within range of specified
dihedral types. :dd
{Invalid dipole line in data file} :dt
Self-explanatory. :dd
{Invalid dipole value} :dt
Self-explanatory. :dd
{Invalid dump dcd filename} :dt
Filenames used with the dump dcd style cannot be binary or compressed
or cause multiple files to be written. :dd
{Invalid dump frequency} :dt
Dump frequency must be 1 or greater. :dd
{Invalid dump style} :dt
The choice of dump style is unknown. :dd
{Invalid dump xtc filename} :dt
Filenames used with the dump xtc style cannot be binary or compressed
or cause multiple files to be written. :dd
{Invalid dump xyz filename} :dt
Filenames used with the dump xyz style cannot be binary or cause files
to be written by each processor. :dd
{Invalid dump_modify threshhold operator} :dt
Operator keyword used for threshold specification in not recognized. :dd
{Invalid fix ID in variable formula} :dt
The fix is not recognized. :dd
{Invalid fix ave/time off column} :dt
Self-explantory. :dd
{Invalid fix box/relax command for a 2d simulation} :dt
Fix box/relax styles involving the z dimension cannot be used in
a 2d simulation. :dd
{Invalid fix box/relax command pressure settings} :dt
If multiple dimensions are coupled, those dimensions must be specified. :dd
{Invalid fix box/relax pressure settings} :dt
Settings for coupled dimensions must be the same. :dd
{Invalid fix nvt/npt/nph command for a 2d simulation} :dt
Cannot control z dimension in a 2d model. :dd
{Invalid fix nvt/npt/nph command pressure settings} :dt
If multiple dimensions are coupled, those dimensions must be
specified. :dd
{Invalid fix nvt/npt/nph pressure settings} :dt
Settings for coupled dimensions must be the same. :dd
{Invalid fix press/berendsen for a 2d simulation} :dt
The z component of pressure cannot be controlled for a 2d model. :dd
{Invalid fix press/berendsen pressure settings} :dt
Settings for coupled dimensions must be the same. :dd
{Invalid fix style} :dt
The choice of fix style is unknown. :dd
{Invalid flag in force field section of restart file} :dt
Unrecognized entry in restart file. :dd
{Invalid flag in header section of restart file} :dt
Unrecognized entry in restart file. :dd
{Invalid flag in type arrays section of restart file} :dt
Unrecognized entry in restart file. :dd
{Invalid frequency in temper command} :dt
Nevery must be > 0. :dd
{Invalid group ID in neigh_modify command} :dt
A group ID used in the neigh_modify command does not exist. :dd
{Invalid group function in variable formula} :dt
Group function is not recognized. :dd
{Invalid group in communicate command} :dt
Self-explanatory. :dd
{Invalid improper style} :dt
The choice of improper style is unknown. :dd
{Invalid improper type in Impropers section of data file} :dt
Improper type must be positive integer and within range of specified
improper types. :dd
{Invalid keyword in angle table parameters} :dt
Self-explanatory. :dd
{Invalid keyword in bond table parameters} :dt
Self-explanatory. :dd
{Invalid keyword in compute angle/local command} :dt
Self-explanatory. :dd
{Invalid keyword in compute bond/local command} :dt
Self-explanatory. :dd
{Invalid keyword in compute dihedral/local command} :dt
Self-explanatory. :dd
{Invalid keyword in compute improper/local command} :dt
Self-explanatory. :dd
{Invalid keyword in compute pair/local command} :dt
Self-explanatory. :dd
{Invalid keyword in compute property/atom command} :dt
Self-explanatory. :dd
{Invalid keyword in compute property/local command} :dt
Self-explanatory. :dd
{Invalid keyword in compute property/molecule command} :dt
Self-explanatory. :dd
{Invalid keyword in dump cfg command} :dt
Self-explanatory. :dd
{Invalid keyword in pair table parameters} :dt
Keyword used in list of table parameters is not recognized. :dd
{Invalid keyword in thermo_style custom command} :dt
One or more specified keywords are not recognized. :dd
{Invalid kspace style} :dt
The choice of kspace style is unknown. :dd
{Invalid mass line in data file} :dt
Self-explanatory. :dd
{Invalid mass value} :dt
Self-explanatory. :dd
{Invalid math function in variable formula} :dt
Self-explanatory. :dd
{Invalid math/group/special function in variable formula} :dt
Self-explanatory. :dd
{Invalid option in lattice command for non-custom style} :dt
Certain lattice keywords are not supported unless the
lattice style is "custom". :dd
{Invalid order of forces within respa levels} :dt
For respa, ordering of force computations within respa levels must
obey certain rules. E.g. bonds cannot be compute less frequently than
angles, pairwise forces cannot be computed less frequently than
kspace, etc. :dd
{Invalid pair style} :dt
The choice of pair style is unknown. :dd
{Invalid pair table cutoff} :dt
Cutoffs in pair_coeff command are not valid with read-in pair table. :dd
{Invalid pair table length} :dt
Length of read-in pair table is invalid :dd
{Invalid radius in Atoms section of data file} :dt
Radius must be >= 0.0. :dd
{Invalid random number seed in fix ttm command} :dt
Random number seed must be > 0. :dd
{Invalid random number seed in set command} :dt
Random number seed must be > 0. :dd
{Invalid region style} :dt
The choice of region style is unknown. :dd
{Invalid replace values in compute reduce} :dt
Self-explanatory. :dd
{Invalid run command N value} :dt
The number of timesteps must fit in a 32-bit integer. If you want to
run for more steps than this, perform multiple shorter runs. :dd
{Invalid run command start/stop value} :dt
Self-explanatory. :dd
{Invalid run command upto value} :dt
Self-explanatory. :dd
{Invalid seed for Marsaglia random # generator} :dt
The initial seed for this random number generator must be a positive
integer less than or equal to 900 million. :dd
{Invalid seed for Park random # generator} :dt
The initial seed for this random number generator must be a positive
integer. :dd
{Invalid shape line in data file} :dt
Self-explanatory. :dd
{Invalid shape line in data file} :dt
Self-explanatory. :dd
{Invalid shape value} :dt
Self-explanatory. :dd
{Invalid shear direction for fix wall/gran} :dt
Self-explanatory. :dd
{Invalid special function in variable formula} :dt
Self-explanatory. :dd
{Invalid style in pair_write command} :dt
Self-explanatory. Check the input script. :dd
{Invalid syntax in variable formula} :dt
Self-explanatory. :dd
{Invalid t_event in prd command} :dt
Self-explanatory. :dd
{Invalid t_event in tad command} :dt
The value must be greater than 0. :dd
{Invalid thermo keyword in variable formula} :dt
The keyword is not recognized. :dd
{Invalid tmax in tad command} :dt
The value must be greater than 0.0. :dd
{Invalid type for dipole set} :dt
Dipole command must set a type from 1-N where N is the number of atom
types. :dd
{Invalid type for mass set} :dt
Mass command must set a type from 1-N where N is the number of atom
types. :dd
{Invalid type for shape set} :dt
Atom type is out of bounds. :dd
{Invalid value in set command} :dt
The value specified for the setting is invalid, likely because it is
too small or too large. :dd
{Invalid variable evaluation in variable formula} :dt
A variable used in a formula could not be evaluated. :dd
{Invalid variable in next command} :dt
Self-explanatory. :dd
{Invalid variable name in variable formula} :dt
Variable name is not recognized. :dd
{Invalid variable name} :dt
Variable name used in an input script line is invalid. :dd
{Invalid variable style with next command} :dt
Variable styles {equal} and {world} cannot be used in a next
command. :dd
{Invalid wiggle direction for fix wall/gran} :dt
Self-explanatory. :dd
{Invoked angle equil angle on angle style none} :dt
Self-explanatory. :dd
{Invoked angle single on angle style none} :dt
Self-explanatory. :dd
{Invoked bond equil distance on bond style none} :dt
Self-explanatory. :dd
{Invoked bond single on bond style none} :dt
Self-explanatory. :dd
{Invoked pair single on pair style none} :dt
A command (e.g. a dump) attempted to invoke the single() function on a
pair style none, which is illegal. You are probably attempting to
compute per-atom quantities with an undefined pair style. :dd
{KSpace style has not yet been set} :dt
Cannot use kspace_modify command until a kspace style is set. :dd
{KSpace style is incompatible with Pair style} :dt
Setting a kspace style requires that a pair style with a long-range
Coulombic component be selected. :dd
{Keyword %s in MEAM parameter file not recognized} :dt
Self-explanatory. :dd
{Kspace style requires atom attribute q} :dt
The atom style defined does not have these attributes. :dd
{Label wasn't found in input script} :dt
Self-explanatory. :dd
{Lattice orient vectors are not orthogonal} :dt
The three specified lattice orientation vectors must be mutually
orthogonal. :dd
{Lattice orient vectors are not right-handed} :dt
The three specified lattice orientation vectors must create a
right-handed coordinate system such that a1 cross a2 = a3. :dd
{Lattice primitive vectors are collinear} :dt
The specified lattice primitive vectors do not for a unit cell with
non-zero volume. :dd
{Lattice settings are not compatible with 2d simulation} :dt
One or more of the specified lattice vectors has a non-zero z
component. :dd
{Lattice spacings are invalid} :dt
Each x,y,z spacing must be > 0. :dd
{Lattice style incompatible with simulation dimension} :dt
2d simulation can use sq, sq2, or hex lattice. 3d simulation can use
sc, bcc, or fcc lattice. :dd
{Log of zero/negative value in variable formula} :dt
Self-explanatory. :dd
{MEAM library error %d} :dt
A call to the MEAM Fortran library returned an error. :dd
{MPI_LMP_BIGINT and bigint in lmptype.h are not compatible} :dt
The size of the MPI datatype does not match the size of a bigint. :dd
{MPI_LMP_TAGINT and tagint in lmptype.h are not compatible} :dt
The size of the MPI datatype does not match the size of a tagint. :dd
{Mass command before simulation box is defined} :dt
The mass command cannot be used before a read_data, read_restart, or
create_box command. :dd
{Min_style command before simulation box is defined} :dt
The min_style command cannot be used before a read_data, read_restart,
or create_box command. :dd
{Minimization could not find thermo_pe compute} :dt
This compute is created by the thermo command. It must have been
explicitly deleted by a uncompute command. :dd
{Minimize command before simulation box is defined} :dt
The minimize command cannot be used before a read_data, read_restart,
or create_box command. :dd
{Mismatched brackets in variable} :dt
Self-explanatory. :dd
{Mismatched compute in variable formula} :dt
A compute is referenced incorrectly or a compute that produces per-atom
values is used in an equal-style variable formula. :dd
{Mismatched fix in variable formula} :dt
A fix is referenced incorrectly or a fix that produces per-atom
values is used in an equal-style variable formula. :dd
{Mismatched variable in variable formula} :dt
A variable is referenced incorrectly or an atom-style variable that
produces per-atom values is used in an equal-style variable
formula. :dd
{Molecular data file has too many atoms} :dt
These kids of data files are currently limited to a number
of atoms that fits in a 32-bit integer. :dd
{Molecule count changed in compute atom/molecule} :dt
Number of molecules must remain constant over time. :dd
{Molecule count changed in compute com/molecule} :dt
Number of molecules must remain constant over time. :dd
{Molecule count changed in compute gyration/molecule} :dt
Number of molecules must remain constant over time. :dd
{Molecule count changed in compute msd/molecule} :dt
Number of molecules must remain constant over time. :dd
{Molecule count changed in compute property/molecule} :dt
Number of molecules must remain constant over time. :dd
{More than one fix deform} :dt
Only one fix deform can be defined at a time. :dd
{More than one fix freeze} :dt
Only one of these fixes can be defined, since the granular pair
potentials access it. :dd
{More than one fix shake} :dt
Only one fix shake can be defined. :dd
{Must define angle_style before Angle Coeffs} :dt
Must use an angle_style command before reading a data file that
defines Angle Coeffs. :dd
{Must define angle_style before BondAngle Coeffs} :dt
Must use an angle_style command before reading a data file that
defines Angle Coeffs. :dd
{Must define angle_style before BondBond Coeffs} :dt
Must use an angle_style command before reading a data file that
defines Angle Coeffs. :dd
{Must define bond_style before Bond Coeffs} :dt
Must use a bond_style command before reading a data file that
defines Bond Coeffs. :dd
{Must define dihedral_style before AngleAngleTorsion Coeffs} :dt
Must use a dihedral_style command before reading a data file that
defines AngleAngleTorsion Coeffs. :dd
{Must define dihedral_style before AngleTorsion Coeffs} :dt
Must use a dihedral_style command before reading a data file that
defines AngleTorsion Coeffs. :dd
{Must define dihedral_style before BondBond13 Coeffs} :dt
Must use a dihedral_style command before reading a data file that
defines BondBond13 Coeffs. :dd
{Must define dihedral_style before Dihedral Coeffs} :dt
Must use a dihedral_style command before reading a data file that
defines Dihedral Coeffs. :dd
{Must define dihedral_style before EndBondTorsion Coeffs} :dt
Must use a dihedral_style command before reading a data file that
defines EndBondTorsion Coeffs. :dd
{Must define dihedral_style before MiddleBondTorsion Coeffs} :dt
Must use a dihedral_style command before reading a data file that
defines MiddleBondTorsion Coeffs. :dd
{Must define improper_style before AngleAngle Coeffs} :dt
Must use an improper_style command before reading a data file that
defines AngleAngle Coeffs. :dd
{Must define improper_style before Improper Coeffs} :dt
Must use an improper_style command before reading a data file that
defines Improper Coeffs. :dd
{Must define pair_style before Pair Coeffs} :dt
Must use a pair_style command before reading a data file that defines
Pair Coeffs. :dd
{Must have more than one processor partition to temper} :dt
Cannot use the temper command with only one processor partition. Use
the -partition command-line option. :dd
{Must read Atoms before Angles} :dt
The Atoms section of a data file must come before an Angles section. :dd
{Must read Atoms before Bonds} :dt
The Atoms section of a data file must come before a Bonds section. :dd
{Must read Atoms before Dihedrals} :dt
The Atoms section of a data file must come before a Dihedrals section. :dd
{Must read Atoms before Impropers} :dt
The Atoms section of a data file must come before an Impropers
section. :dd
{Must read Atoms before Velocities} :dt
The Atoms section of a data file must come before a Velocities
section. :dd
{Must set both respa inner and outer} :dt
Cannot use just the inner or outer option with respa without using the
other. :dd
{Must specify a region in fix deposit} :dt
The region keyword must be specified with this fix. :dd
{Must specify a region in fix pour} :dt
The region keyword must be specified with this fix. :dd
{Must use -in switch with multiple partitions} :dt
A multi-partition simulation cannot read the input script from stdin.
The -in command-line option must be used to specify a file. :dd
{Must use a block or cylinder region with fix pour} :dt
Self-explanatory. :dd
{Must use a block region with fix pour for 2d simulations} :dt
Self-explanatory. :dd
{Must use a bond style with TIP4P potential} :dt
TIP4P potentials assume bond lengths in water are constrained
by a fix shake command. :dd
{Must use a molecular atom style with fix poems molecule} :dt
Self-explanatory. :dd
{Must use a z-axis cylinder with fix pour} :dt
The axis of the cylinder region used with the fix pour command must
be oriented along the z dimension. :dd
{Must use an angle style with TIP4P potential} :dt
TIP4P potentials assume angles in water are constrained by a fix shake
command. :dd
{Must use atom style with molecule IDs with fix bond/swap} :dt
Self-explanatory. :dd
{Must use pair_style comb with fix qeq/comb} :dt
Self-explanatory. :dd
{Must use variable energy with fix addforce} :dt
Must define an energy vartiable when applyting a dynamic
force during minimization. :dd
{NEB command before simulation box is defined} :dt
Self-explanatory. :dd
{NEB requires damped dynamics minimizer} :dt
Use a different minimization style. :dd
{NEB requires use of fix neb} :dt
Self-explanatory. :dd
{Needed topology not in data file} :dt
The header of the data file indicated that bonds or angles or
dihedrals or impropers would be included, but they were not present. :dd
{Neigh_modify exclude molecule requires atom attribute molecule} :dt
Self-explanatory. :dd
{Neigh_modify include group != atom_modify first group} :dt
Self-explanatory. :dd
{Neighbor delay must be 0 or multiple of every setting} :dt
The delay and every parameters set via the neigh_modify command are
inconsistent. If the delay setting is non-zero, then it must be a
multiple of the every setting. :dd
{Neighbor include group not allowed with ghost neighbors} :dt
This is a current restriction within LAMMPS. :dd
{Neighbor list overflow, boost neigh_modify one or page} :dt
There are too many neighbors of a single atom. Use the neigh_modify
command to increase the neighbor page size and the max number of
neighbors allowed for one atom. :dd
{Neighbor multi not yet enabled for ghost neighbors} :dt
This is a current restriction within LAMMPS. :dd
{Neighbor multi not yet enabled for granular} :dt
Self-explanatory. :dd
{Neighbor multi not yet enabled for rRESPA} :dt
Self-explanatory. :dd
{Neighbor page size must be >= 10x the one atom setting} :dt
This is required to prevent wasting too much memory. :dd
{Neighbors of ghost atoms only allowed for full neighbor lists} :dt
This is a current restriction within LAMMPS. :dd
{New bond exceeded bonds per atom in fix bond/create} :dt
See the read_data command for info on setting the "extra bond per
atom" header value to allow for additional bonds to be formed. :dd
{New bond exceeded special list size in fix bond/create} :dt
See the special_bonds extra command for info on how to leave space in
the special bonds list to allow for additional bonds to be formed. :dd
{Newton bond change after simulation box is defined} :dt
The newton command cannot be used to change the newton bond value
after a read_data, read_restart, or create_box command. :dd
{No angle style is defined for compute angle/local} :dt
Self-explanatory. :dd
{No angles allowed with this atom style} :dt
Self-explanatory. Check data file. :dd
{No atoms in data file} :dt
The header of the data file indicated that atoms would be included,
but they were not present. :dd
{No basis atoms in lattice} :dt
Basis atoms must be defined for lattice style user. :dd
{No bond style is defined for compute bond/local} :dt
Self-explanatory. :dd
{No bonds allowed with this atom style} :dt
Self-explanatory. Check data file. :dd
{No dihedral style is defined for compute dihedral/local} :dt
Self-explanatory. :dd
{No dihedrals allowed with this atom style} :dt
Self-explanatory. Check data file. :dd
{No dump custom arguments specified} :dt
The dump custom command requires that atom quantities be specified to
output to dump file. :dd
{No dump local arguments specified} :dt
Self-explanatory. :dd
{No fix gravity defined for fix pour} :dt
Cannot add poured particles without gravity to move them. :dd
{No improper style is defined for compute improper/local} :dt
Self-explanatory. :dd
{No impropers allowed with this atom style} :dt
Self-explanatory. Check data file. :dd
{No matching element in EAM potential file} :dt
The EAM potential file does not contain elements that match the
requested elements. :dd
{No pair hbond/dreiding coefficients set} :dt
Self-explanatory. :dd
{No pair style defined for compute group/group} :dt
Cannot calculate group interactions without a pair style defined. :dd
{No pair style is defined for compute pair/local} :dt
Self-explanatory. :dd
{No pair style is defined for compute property/local} :dt
Self-explanatory. :dd
{No rigid bodies defined} :dt
The fix specification did not end up defining any rigid bodies. :dd
{Non digit character between brackets in variable} :dt
Self-explantory. :dd
{Non integer # of swaps in temper command} :dt
Swap frequency in temper command must evenly divide the total # of
timesteps. :dd
{One or more atoms belong to multiple rigid bodies} :dt
Two or more rigid bodies defined by the fix rigid command cannot
contain the same atom. :dd
{One or zero atoms in rigid body} :dt
Any rigid body defined by the fix rigid command must contain 2 or more
atoms. :dd
{Out of range atoms - cannot compute PPPM} :dt
One or more atoms are attempting to map their charge to a PPPM grid
point that is not owned by a processor. This is likely for one of two
reasons, both of them bad. First, it may mean that an atom near the
boundary of a processor's sub-domain has moved more than 1/2 the
"neighbor skin distance"_neighbor.html without neighbor lists being
rebuilt and atoms being migrated to new processors. This also means
you may be missing pairwise interactions that need to be computed.
The solution is to change the re-neighboring criteria via the
"neigh_modify"_neigh_modify command. The safest settings are "delay 0
every 1 check yes". Second, it may mean that an atom has moved far
outside a processor's sub-domain or even the entire simulation box.
This indicates bad physics, e.g. due to highly overlapping atoms, too
large a timestep, etc. :dd
{Overlapping large/large in pair colloid} :dt
This potential is infinite when there is an overlap. :dd
{Overlapping small/large in pair colloid} :dt
This potential is inifinte when there is an overlap. :dd
{POEMS fix must come before NPT/NPH fix} :dt
NPT/NPH fix must be defined in input script after all poems fixes,
else the fix contribution to the pressure virial is incorrect. :dd
{PPPM grid is too large} :dt
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 precision. :dd
{PPPM order cannot be greater than %d} :dt
Self-explanatory. :dd
{PPPM order has been reduced to 0} :dt
LAMMPS has attempted to reduce the PPPM order to enable the simulation
to run, but can reduce the order no further. Try increasing the
accuracy of PPPM by reducing the tolerance size, thus inducing a
larger PPPM grid. :dd
{PRD command before simulation box is defined} :dt
The prd command cannot be used before a read_data,
read_restart, or create_box command. :dd
{PRD nsteps must be multiple of t_event} :dt
Self-explanatory. :dd
{PRD t_corr must be multiple of t_event} :dt
Self-explanatory. :dd
{Pair coeff for hybrid has invalid style} :dt
Style in pair coeff must have been listed in pair_style command. :dd
{Pair cutoff < Respa interior cutoff} :dt
One or more pairwise cutoffs are too short to use with the specified
rRESPA cutoffs. :dd
{Pair dipole/cut requires atom attributes q, mu, torque, dipole} :dt
An atom style that specifies these quantities is needed. :dd
{Pair distance < table inner cutoff} :dt
Two atoms are closer together than the pairwise table allows. :dd
{Pair distance > table outer cutoff} :dt
Two atoms are further apart than the pairwise table allows. :dd
{Pair dpd requires ghost atoms store velocity} :dt
Use the communicate vel yes command to enable this. :dd
{Pair gayberne cannot be used with atom attribute diameter} :dt
Finite-size particles must be defined with the shape command. :dd
{Pair gayberne epsilon a,b,c coeffs are not all set} :dt
Each atom type involved in pair_style gayberne must
have these 3 coefficients set at least once. :dd
{Pair gayberne requires atom attributes quat, torque, shape} :dt
An atom style that defines these attributes must be used. :dd
{Pair granular requires atom attributes radius, omega, torque} :dt
The atom style defined does not have these attributes. :dd
{Pair granular requires ghost atoms store velocity} :dt
Use the communicate vel yes command to enable this. :dd
{Pair granular with shear history requires newton pair off} :dt
This is a current restriction of the implementation of pair
granular styles with history. :dd
{Pair hybrid sub-style does not support single call} :dt
You are attempting to invoke a single() call on a pair style
that doesn't support it. :dd
{Pair hybrid sub-style is not used} :dt
No pair_coeff command used a sub-style specified in the pair_style
command. :dd
{Pair inner cutoff < Respa interior cutoff} :dt
One or more pairwise cutoffs are too short to use with the specified
rRESPA cutoffs. :dd
{Pair inner cutoff >= Pair outer cutoff} :dt
The specified cutoffs for the pair style are inconsistent. :dd
{Pair lubricate cannot be used with atom attributes diameter or rmass} :dt
These attributes override the shape and mass settings, so cannot be
used. :dd
{Pair lubricate requires atom attribute omega or angmom} :dt
An atom style that defines these attributes must be used. :dd
{Pair lubricate requires atom attributes torque and shape} :dt
An atom style that defines these attributes must be used. :dd
{Pair lubricate requires extended particles} :dt
This pair style can only be used for particles with a shape
setting. :dd
{Pair lubricate requires ghost atoms store velocity} :dt
Use the communicate vel yes command to enable this. :dd
{Pair lubricate requires spherical, mono-disperse particles} :dt
This is a current restriction of this pair style. :dd
{Pair peri lattice is not identical in x, y, and z} :dt
The lattice defined by the lattice command must be cubic. :dd
{Pair peri requires a lattice be defined} :dt
Use the lattice command for this purpose. :dd
{Pair peri requires an atom map, see atom_modify} :dt
Even for atomic systems, an atom map is required to find Peridynamic
bonds. Use the atom_modify command to define one. :dd
{Pair resquared cannot be used with atom attribute diameter} :dt
This attribute overrides the shape settings, so cannot be used. :dd
{Pair resquared epsilon a,b,c coeffs are not all set} :dt
Self-explanatory. :dd
{Pair resquared epsilon and sigma coeffs are not all set} :dt
Self-explanatory. :dd
{Pair resquared requires atom attributes quat, torque, shape} :dt
An atom style that defines these attributes must be used. :dd
{Pair style AIREBO requires atom IDs} :dt
This is a requirement to use the AIREBO potential. :dd
{Pair style AIREBO requires newton pair on} :dt
See the newton command. This is a restriction to use the AIREBO
potential. :dd
{Pair style COMB requires atom IDs} :dt
This is a requirement to use the AIREBO potential. :dd
{Pair style COMB requires atom attribute q} :dt
Self-explanatory. :dd
{Pair style COMB requires newton pair on} :dt
See the newton command. This is a restriction to use the COMB
potential. :dd
{Pair style MEAM requires newton pair on} :dt
See the newton command. This is a restriction to use the MEAM
potential. :dd
{Pair style Stillinger-Weber requires atom IDs} :dt
This is a requirement to use the SW potential. :dd
{Pair style Stillinger-Weber requires newton pair on} :dt
See the newton command. This is a restriction to use the SW
potential. :dd
{Pair style Tersoff requires atom IDs} :dt
This is a requirement to use the Tersoff potential. :dd
{Pair style Tersoff requires newton pair on} :dt
See the newton command. This is a restriction to use the Tersoff
potential. :dd
{Pair style born/coul/long requires atom attribute q} :dt
An atom style that defines this attribute must be used. :dd
{Pair style buck/coul/cut requires atom attribute q} :dt
The atom style defined does not have this attribute. :dd
{Pair style buck/coul/long requires atom attribute q} :dt
The atom style defined does not have these attributes. :dd
{Pair style coul/cut requires atom attribute q} :dt
The atom style defined does not have these attributes. :dd
{Pair style does not support bond_style quartic} :dt
The pair style does not have a single() function, so it can
not be invoked by bond_style quartic. :dd
{Pair style does not support compute group/group} :dt
The pair_style does not have a single() function, so it cannot be
invokded by the compute group/group command. :dd
{Pair style does not support compute pair/local} :dt
The pair style does not have a single() function, so it can
not be invoked by fix bond/swap. :dd
{Pair style does not support compute property/local} :dt
The pair style does not have a single() function, so it can
not be invoked by fix bond/swap. :dd
{Pair style does not support fix bond/swap} :dt
The pair style does not have a single() function, so it can
not be invoked by fix bond/swap. :dd
{Pair style does not support pair_write} :dt
The pair style does not have a single() function, so it can
not be invoked by pair write. :dd
{Pair style does not support rRESPA inner/middle/outer} :dt
You are attempting to use rRESPA options with a pair style that
does not support them. :dd
{Pair style granular with history requires atoms have IDs} :dt
Atoms in the simulation do not have IDs, so history effects
cannot be tracked by the granular pair potential. :dd
{Pair style hbond/dreiding requires an atom map, see atom_modify} :dt
Self-explanatory. :dd
{Pair style hbond/dreiding requires atom IDs} :dt
Self-explanatory. :dd
{Pair style hbond/dreiding requires molecular system} :dt
Self-explanatory. :dd
{Pair style hbond/dreiding requires newton pair on} :dt
See the newton command for details. :dd
{Pair style hybrid cannot have hybrid as an argument} :dt
Self-explanatory. :dd
{Pair style hybrid cannot have none as an argument} :dt
Self-explanatory. :dd
{Pair style hybrid cannot use same pair style twice} :dt
The sub-style arguments of pair_style hybrid cannot be duplicated.
Check the input script. :dd
{Pair style is incompatible with KSpace style} :dt
If a pair style with a long-range Coulombic component is selected,
then a kspace style must also be used. :dd
{Pair style lj/charmm/coul/charmm requires atom attribute q} :dt
The atom style defined does not have these attributes. :dd
{Pair style lj/charmm/coul/long requires atom attribute q} :dt
The atom style defined does not have these attributes. :dd
{Pair style lj/class2/coul/cut requires atom attribute q} :dt
The atom style defined does not have this attribute. :dd
{Pair style lj/class2/coul/long requires atom attribute q} :dt
The atom style defined does not have this attribute. :dd
{Pair style lj/cut/coul/cut requires atom attribute q} :dt
The atom style defined does not have this attribute. :dd
{Pair style lj/cut/coul/long requires atom attribute q} :dt
The atom style defined does not have this attribute. :dd
{Pair style lj/cut/coul/long/tip4p requires atom IDs} :dt
There are no atom IDs defined in the system and the TIP4P potential
requires them to find O,H atoms with a water molecule. :dd
{Pair style lj/cut/coul/long/tip4p requires atom attribute q} :dt
The atom style defined does not have these attributes. :dd
{Pair style lj/cut/coul/long/tip4p requires newton pair on} :dt
This is because the computation of constraint forces within a water
molecule adds forces to atoms owned by other processors. :dd
{Pair style lj/gromacs/coul/gromacs requires atom attribute q} :dt
An atom_style with this attribute is needed. :dd
{Pair style peri_lps requires atom style peri} :dt
This is because atom style peri stores quantities needed by
the peridynamic potential. :dd
{Pair style peri_pmb requires atom style peri} :dt
This is because atom style peri stores quantities needed by
the peridynamic potential. :dd
{Pair style reax requires atom IDs} :dt
This is a requirement to use the ReaxFF potential. :dd
{Pair style reax requires newton pair on} :dt
This is a requirement to use the ReaxFF potential. :dd
{Pair table cutoffs must all be equal to use with KSpace} :dt
When using pair style table with a long-range KSpace solver, the
cutoffs for all atom type pairs must all be the same, since the
long-range solver starts at that cutoff. :dd
{Pair table parameters did not set N} :dt
List of pair table parameters must include N setting. :dd
{Pair tersoff/zbl requires metal or real units} :dt
This is a current restriction of this pair potential. :dd
{Pair yukawa/colloid cannot be used with atom attribute diameter} :dt
Only finite-size particles defined by the shape command can be used. :dd
{Pair yukawa/colloid requires atom attribute shape} :dt
Self-explanatory. :dd
{Pair yukawa/colloid requires spherical particles} :dt
Self-explanatory. :dd
{Pair_coeff command before pair_style is defined} :dt
Self-explanatory. :dd
{Pair_coeff command before simulation box is defined} :dt
The pair_coeff command cannot be used before a read_data,
read_restart, or create_box command. :dd
{Pair_modify command before pair_style is defined} :dt
Self-explanatory. :dd
{Pair_write command before pair_style is defined} :dt
Self-explanatory. :dd
{Particle on or inside fix wall surface} :dt
Particles must be "exterior" to the wall in order for energy/force to
be calculated. :dd
{Particle on or inside surface of region used in fix wall/region} :dt
Particles must be "exterior" to the region surface in order for
energy/force to be calculated. :dd
{Per-atom compute in equal-style variable formula} :dt
Equal-style variables cannot use per-atom quantities. :dd
{Per-atom energy was not tallied on needed timestep} :dt
You are using a thermo keyword that requires potentials to
have tallied energy, but they didn't on this timestep. See the
variable doc page for ideas on how to make this work. :dd
{Per-atom fix in equal-style variable formula} :dt
Equal-style variables cannot use per-atom quantities. :dd
{Per-atom virial was not tallied on needed timestep} :dt
You are using a thermo keyword that requires potentials to have
tallied the virial, but they didn't on this timestep. See the
variable doc page for ideas on how to make this work. :dd
{Per-processor system is too big} :dt
The number of owned atoms plus ghost atoms on a single
processor must fit in 32-bit integer. :dd
{Potential energy ID for fix neb does not exist} :dt
Self-explanatory. :dd
{Potential file has duplicate entry} :dt
The potential file for a SW or Tersoff potential has more than
one entry for the same 3 ordered elements. :dd
{Potential file is missing an entry} :dt
The potential file for a SW or Tersoff potential does not have a
needed entry. :dd
{Power by 0 in variable formula} :dt
Self-explanatory. :dd
{Pressure ID for fix box/relax does not exist} :dt
The compute ID needed to compute pressure for the fix does not
exist. :dd
{Pressure ID for fix modify does not exist} :dt
Self-explanatory. :dd
{Pressure ID for fix npt/nph does not exist} :dt
Self-explanatory. :dd
{Pressure ID for fix press/berendsen does not exist} :dt
The compute ID needed to compute pressure for the fix does not
exist. :dd
{Pressure ID for thermo does not exist} :dt
The compute ID needed to compute pressure for thermodynamics does not
exist. :dd
{Pressure control can not be used with fix nvt/asphere} :dt
Self-explanatory. :dd
{Pressure control can not be used with fix nvt/sllod} :dt
Self-explanatory. :dd
{Pressure control can not be used with fix nvt/sphere} :dt
Self-explanatory. :dd
{Pressure control can not be used with fix nvt} :dt
Self-explanatory. :dd
{Pressure control must be used with fix nph/asphere} :dt
Self-explanatory. :dd
{Pressure control must be used with fix nph/sphere} :dt
Self-explanatory. :dd
{Pressure control must be used with fix nph} :dt
Self-explanatory. :dd
{Pressure control must be used with fix npt/asphere} :dt
Self-explanatory. :dd
{Pressure control must be used with fix npt/sphere} :dt
Self-explanatory. :dd
{Pressure control must be used with fix npt} :dt
Self-explanatory. :dd
{Processor count in z must be 1 for 2d simulation} :dt
Self-explanatory. :dd
{Processor partitions are inconsistent} :dt
The total number of processors in all partitions must match the number
of processors LAMMPS is running on. :dd
{Processors command after simulation box is defined} :dt
The processors command cannot be used after a read_data, read_restart,
or create_box command. :dd
{Quaternion creation numeric error} :dt
A numeric error occurred in the creation of a rigid body by the fix
rigid command. :dd
{R0 < 0 for fix spring command} :dt
Equilibrium spring length is invalid. :dd
{Reax_defs.h setting for NATDEF is too small} :dt
Edit the setting in the ReaxFF library and re-compile the
library and re-build LAMMPS. :dd
{Reax_defs.h setting for NNEIGHMAXDEF is too small} :dt
Edit the setting in the ReaxFF library and re-compile the
library and re-build LAMMPS. :dd
{Region ID for compute reduce/region does not exist} :dt
Self-explanatory. :dd
{Region ID for compute temp/region does not exist} :dt
Self-explanatory. :dd
{Region ID for dump cfg does not exist} :dt
Self-explanatory. :dd
{Region ID for dump custom does not exist} :dt
Self-explanatory. :dd
{Region ID for fix addforce does not exist} :dt
Self-explanatory. :dd
{Region ID for fix ave/spatial does not exist} :dt
Self-explanatory. :dd
{Region ID for fix aveforce does not exist} :dt
Self-explanatory. :dd
{Region ID for fix deposit does not exist} :dt
Self-explanatory. :dd
{Region ID for fix evaporate does not exist} :dt
Self-explanatory. :dd
{Region ID for fix heat does not exist} :dt
Self-explanatory. :dd
{Region ID for fix setforce does not exist} :dt
Self-explanatory. :dd
{Region ID for fix wall/region does not exist} :dt
Self-explanatory. :dd
{Region ID in variable formula does not exist} :dt
Self-explanatory. :dd
{Region cannot have 0 length rotation vector} :dt
Self-explanatory. :dd
{Region intersect region ID does not exist} :dt
Self-explanatory. :dd
{Region union or intersect cannot be dynamic} :dt
The sub-regions can be dynamic, but not the combined region. :dd
{Region union region ID does not exist} :dt
One or more of the region IDs specified by the region union command
does not exist. :dd
{Replacing a fix, but new style != old style} :dt
A fix ID can be used a 2nd time, but only if the style matches the
previous fix. In this case it is assumed you with to reset a fix's
parameters. This error may mean you are mistakenly re-using a fix ID
when you do not intend to. :dd
{Replicate command before simulation box is defined} :dt
The replicate command cannot be used before a read_data, read_restart,
or create_box command. :dd
{Replicate did not assign all atoms correctly} :dt
Atoms replicated by the replicate command were not assigned correctly
to processors. This is likely due to some atom coordinates being
outside a non-periodic simulation box. :dd
{Replicated molecular system atom IDs are too big} :dt
See the setting for the allowed atom ID size in the src/lmptype.h
file. :dd
{Replicated system is too big} :dt
See the setting for bigint in the src/lmptype.h file. :dd
{Resetting timestep is not allowed with fix move} :dt
This is because fix move is moving atoms based on elapsed time. :dd
{Respa inner cutoffs are invalid} :dt
The first cutoff must be <= the second cutoff. :dd
{Respa levels must be >= 1} :dt
Self-explanatory. :dd
{Respa middle cutoffs are invalid} :dt
The first cutoff must be <= the second cutoff. :dd
{Reuse of compute ID} :dt
A compute ID cannot be used twice. :dd
{Reuse of dump ID} :dt
A dump ID cannot be used twice. :dd
{Reuse of region ID} :dt
A region ID cannot be used twice. :dd
{Rigid body has degenerate moment of inertia} :dt
Fix poems will only work with bodies (collections of atoms) that have
non-zero principal moments of inertia. This means they must be 3 or
more non-collinear atoms, even with joint atoms removed. :dd
{Rigid fix must come before NPT/NPH fix} :dt
NPT/NPH fix must be defined in input script after all rigid fixes,
else the rigid fix contribution to the pressure virial is
incorrect. :dd
{Rmask function in equal-style variable formula} :dt
Rmask is per-atom operation. :dd
{Run command before simulation box is defined} :dt
The run command cannot be used before a read_data, read_restart, or
create_box command. :dd
{Run command start value is after start of run} :dt
Self-explanatory. :dd
{Run command stop value is before end of run} :dt
Self-explanatory. :dd
{Run_style command before simulation box is defined} :dt
The run_style command cannot be used before a read_data,
read_restart, or create_box command. :dd
{SRD bin size for fix srd differs from user request} :dt
Fix SRD had to adjust the bin size to fit the simulation box. :dd
{SRD bins for fix srd are not cubic enough} :dt
The bin shape is not within tolerance of cubic. :dd
{Same dimension twice in fix ave/spatial} :dt
Self-explanatory. :dd
{Set command before simulation box is defined} :dt
The set command cannot be used before a read_data, read_restart,
or create_box command. :dd
{Set command with no atoms existing} :dt
No atoms are yet defined so the set command cannot be used. :dd
{Set region ID does not exist} :dt
Region ID specified in set command does not exist. :dd
{Shake angles have different bond types} :dt
All 3-atom angle-constrained SHAKE clusters specified by the fix shake
command that are the same angle type, must also have the same bond
types for the 2 bonds in the angle. :dd
{Shake atoms %d %d %d %d missing on proc %d at step} :dt
The 4 atoms in a single shake cluster specified by the fix shake
command are not all accessible to a processor. This probably means
an atom has moved too far. :dd
{Shake atoms %d %d %d missing on proc %d at step} :dt
The 3 atoms in a single shake cluster specified by the fix shake
command are not all accessible to a processor. This probably means
an atom has moved too far. :dd
{Shake atoms %d %d missing on proc %d at step} :dt
The 2 atoms in a single shake cluster specified by the fix shake
command are not all accessible to a processor. This probably means
an atom has moved too far. :dd
{Shake cluster of more than 4 atoms} :dt
A single cluster specified by the fix shake command can have no more
than 4 atoms. :dd
{Shake clusters are connected} :dt
A single cluster specified by the fix shake command must have a single
central atom with up to 3 other atoms bonded to it. :dd
{Shake determinant = 0.0} :dt
The determinant of the matrix being solved for a single cluster
specified by the fix shake command is numerically invalid. :dd
{Shake fix must come before NPT/NPH fix} :dt
NPT fix must be defined in input script after SHAKE fix, else the
SHAKE fix contribution to the pressure virial is incorrect. :dd
{Shape command before simulation box is defined} :dt
Self-explanatory. :dd
{Smallint setting in lmptype.h is invalid} :dt
It has to be the size of an integer. :dd
{Smallint setting in lmptype.h is not compatible} :dt
Smallint stored in restart file is not consistent with LAMMPS version
you are running. :dd
{Sqrt of negative value in variable formula} :dt
Self-explanatory. :dd
{Substitution for illegal variable} :dt
Input script line contained a variable that could not be substituted
for. :dd
{System in data file is too big} :dt
See the setting for bigint in the src/lmptype.h file. :dd
{TAD nsteps must be multiple of t_event} :dt
Self-explanatory. :dd
{TIP4P hydrogen has incorrect atom type} :dt
The TIP4P pairwise computation found an H atom whose type does not
agree with the specified H type. :dd
{TIP4P hydrogen is missing} :dt
The TIP4P pairwise computation failed to find the correct H atom
within a water molecule. :dd
{TMD target file did not list all group atoms} :dt
The target file for the fix tmd command did not list all atoms in the
fix group. :dd
{Tad command before simulation box is defined} :dt
Self-explanatory. :dd
{Tagint setting in lmptype.h is invalid} :dt
Tagint must be as large or larger than smallint. :dd
{Tagint setting in lmptype.h is not compatible} :dt
Smallint stored in restart file is not consistent with LAMMPS version
you are running. :dd
{Target temperature for fix nvt/npt/nph cannot be 0.0} :dt
Self-explanatory. :dd
{Target temperature for fix rigid/nvt cannot be 0.0} :dt
Self-explanatory. :dd
{Temper command before simulation box is defined} :dt
The temper command cannot be used before a read_data, read_restart, or
create_box command. :dd
{Temperature ID for fix bond/swap does not exist} :dt
Self-explanatory. :dd
{Temperature ID for fix box/relax does not exist} :dt
Self-explanatory. :dd
{Temperature ID for fix nvt/nph/npt does not exist} :dt
Self-explanatory. :dd
{Temperature ID for fix press/berendsen does not exist} :dt
Self-explanatory. :dd
{Temperature ID for fix temp/berendsen does not exist} :dt
Self-explanatory. :dd
{Temperature ID for fix temp/rescale does not exist} :dt
Self-explanatory. :dd
{Temperature control can not be used with fix nph/asphere} :dt
Self-explanatory. :dd
{Temperature control can not be used with fix nph/sphere} :dt
Self-explanatory. :dd
{Temperature control can not be used with fix nph} :dt
Self-explanatory. :dd
{Temperature control must be used with fix npt/asphere} :dt
Self-explanatory. :dd
{Temperature control must be used with fix npt/sphere} :dt
Self-explanatory. :dd
{Temperature control must be used with fix npt} :dt
Self-explanatory. :dd
{Temperature control must be used with fix nvt/asphere} :dt
Self-explanatory. :dd
{Temperature control must be used with fix nvt/sllod} :dt
Self-explanatory. :dd
{Temperature control must be used with fix nvt/sphere} :dt
Self-explanatory. :dd
{Temperature control must be used with fix nvt} :dt
Self-explanatory. :dd
{Temperature for fix nvt/sllod does not have a bias} :dt
The specified compute must compute temperature with a bias. :dd
{Tempering could not find thermo_pe compute} :dt
This compute is created by the thermo command. It must have been
explicitly deleted by a uncompute command. :dd
{Tempering fix ID is not defined} :dt
The fix ID specified by the temper command does not exist. :dd
{Tempering temperature fix is not valid} :dt
The fix specified by the temper command is not one that controls
temperature (nvt or langevin). :dd
{Thermo and fix not computed at compatible times} :dt
Fixes generate values on specific timesteps. The thermo output
does not match these timesteps. :dd
{Thermo compute array is accessed out-of-range} :dt
Self-explanatory. :dd
{Thermo compute does not compute array} :dt
Self-explanatory. :dd
{Thermo compute does not compute scalar} :dt
Self-explanatory. :dd
{Thermo compute does not compute vector} :dt
Self-explanatory. :dd
{Thermo compute vector is accessed out-of-range} :dt
Self-explanatory. :dd
{Thermo custom variable cannot be indexed} :dt
Self-explanatory. :dd
{Thermo custom variable is not equal-style variable} :dt
Only equal-style variables can be output with thermodynamics, not
atom-style variables. :dd
{Thermo every variable returned a bad timestep} :dt
The variable must return a timestep greater than the current timestep. :dd
{Thermo fix array is accessed out-of-range} :dt
Self-explanatory. :dd
{Thermo fix does not compute array} :dt
Self-explanatory. :dd
{Thermo fix does not compute scalar} :dt
Self-explanatory. :dd
{Thermo fix does not compute vector} :dt
Self-explanatory. :dd
{Thermo fix vector is accessed out-of-range} :dt
Self-explanatory. :dd
{Thermo keyword in variable requires lattice be defined} :dt
The xlat, ylat, zlat keywords refer to lattice properties. :dd
{Thermo keyword in variable requires thermo to use/init pe} :dt
You are using a thermo keyword in a variable that requires
potential energy to be calculated, but your thermo output
does not use it. Add it to your thermo output. :dd
{Thermo keyword in variable requires thermo to use/init press} :dt
You are using a thermo keyword in a variable that requires pressure to
be calculated, but your thermo output does not use it. Add it to your
thermo output. :dd
{Thermo keyword in variable requires thermo to use/init temp} :dt
You are using a thermo keyword in a variable that requires temperature
to be calculated, but your thermo output does not use it. Add it to
your thermo output. :dd
{Thermo keyword requires lattice be defined} :dt
The xlat, ylat, zlat keywords refer to lattice properties. :dd
{Thermo style does not use press} :dt
Cannot use thermo_modify to set this parameter since the thermo_style
is not computing this quantity. :dd
{Thermo style does not use temp} :dt
Cannot use thermo_modify to set this parameter since the thermo_style
is not computing this quantity. :dd
{Thermo_modify int format does not contain d character} :dt
Self-explanatory. :dd
{Thermo_modify pressure ID does not compute pressure} :dt
The specified compute ID does not compute pressure. :dd
{Thermo_modify temperature ID does not compute temperature} :dt
The specified compute ID does not compute temperature. :dd
{Thermo_style command before simulation box is defined} :dt
The thermo_style command cannot be used before a read_data,
read_restart, or create_box command. :dd
{This variable thermo keyword cannot be used between runs} :dt
Keywords that refer to time (such as cpu, elapsed) do not
make sense in between runs. :dd
{Threshhold for an atom property that isn't allocated} :dt
A dump threshhold has been requested on a quantity that is
not defined by the atom style used in this simulation. :dd
{Timestep must be >= 0} :dt
Specified timestep size is invalid. :dd
{Too big a problem to use velocity create loop all} :dt
The system size must fit in a 32-bit integer to use this option. :dd
{Too big a timestep for dump dcd} :dt
The timestep must fit in a 32-bit integer to use this dump style. :dd
{Too big a timestep for dump xtc} :dt
The timestep must fit in a 32-bit integer to use this dump style. :dd
{Too few bits for lookup table} :dt
Table size specified via pair_modify command does not work with your
machine's floating point representation. :dd
{Too many atom sorting bins} :dt
This is likely due to an immense simulation box that has blown up
to a large size. :dd
{Too many atoms for dump dcd} :dt
The system size must fit in a 32-bit integer to use this dump
style. :dd
{Too many atoms for dump xtc} :dt
The system size must fit in a 32-bit integer to use this dump
style. :dd
{Too many atoms to dump sort} :dt
Cannot sort when running with more than 2^31 atoms. :dd
{Too many exponent bits for lookup table} :dt
Table size specified via pair_modify command does not work with your
machine's floating point representation. :dd
{Too many groups} :dt
The maximum number of atom groups (including the "all" group) is
given by MAX_GROUP in group.cpp and is 32. :dd
{Too many iterations} :dt
You must use a number of iterations that fit in a 32-bit integer
for minimization. :dd
{Too many mantissa bits for lookup table} :dt
Table size specified via pair_modify command does not work with your
machine's floating point representation. :dd
{Too many masses for fix shake} :dt
The fix shake command cannot list more masses than there are atom
types. :dd
{Too many neighbor bins} :dt
This is likely due to an immense simulation box that has blown up
to a large size. :dd
{Too many timesteps for NEB} :dt
You must use a number of timesteps that fit in a 32-bit integer
for NEB. :dd
{Too many total atoms} :dt
See the setting for bigint in the src/lmptype.h file. :dd
{Too many total bits for bitmapped lookup table} :dt
Table size specified via pair_modify command is too large. Note that
a value of N generates a 2^N size table. :dd
{Too many touching neighbors - boost MAXTOUCH} :dt
A granular simulation has too many neighbors touching one atom. The
MAXTOUCH parameter in fix_shear_history.cpp must be set larger and
LAMMPS must be re-built. :dd
{Too much per-proc info for dump} :dt
Number of local atoms times number of columns must fit in a 32-bit
integer for dump. :dd
{Tree structure in joint connections} :dt
Fix poems cannot (yet) work with coupled bodies whose joints connect
the bodies in a tree structure. :dd
{Triclinic box must be periodic in skewed dimensions} :dt
This is a requirement for using a non-orthogonal box. E.g. to set a
non-zero xy tilt, both x and y must be periodic dimensions. :dd
{Triclinic box skew is too large} :dt
The displacement in a skewed direction must 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. :dd
{Tried to convert a double to int, but input_double > INT_MAX} :dt
Self-explanatory. :dd
{Two groups cannot be the same in fix spring couple} :dt
Self-explanatory. :dd
{Unbalanced quotes in input line} :dt
No matching end double quote was found following a leading double
quote. :dd
{Unexpected end of data file} :dt
LAMMPS hit the end of the data file while attempting to read a
section. Something is wrong with the format of the data file. :dd
{Units command after simulation box is defined} :dt
The units command cannot be used after a read_data, read_restart, or
create_box command. :dd
{Universe/uloop variable count < # of partitions} :dt
A universe or uloop style variable must specify a number of values >= to the
number of processor partitions. :dd
{Unknown command: %s} :dt
The command is not known to LAMMPS. Check the input script. :dd
{Unknown identifier in data file: %s} :dt
A section of the data file cannot be read by LAMMPS. :dd
{Unknown table style in angle style table} :dt
Self-explanatory. :dd
{Unknown table style in bond style table} :dt
Self-explanatory. :dd
{Unknown table style in pair_style command} :dt
Style of table is invalid for use with pair_style table command. :dd
{Unrecognized lattice type in MEAM file 1} :dt
The lattice type in an entry of the MEAM library file is not
valid. :dd
{Unrecognized lattice type in MEAM file 2} :dt
The lattice type in an entry of the MEAM parameter file is not
valid. :dd
{Unrecognized pair style in compute pair command} :dt
Self-explanatory. :dd
{Use of compute temp/ramp with undefined lattice} :dt
Must use lattice command with compute temp/ramp command if units
option is set to lattice. :dd
{Use of displace_atoms with undefined lattice} :dt
Must use lattice command with displace_atoms command if units option
is set to lattice. :dd
{Use of displace_box with undefined lattice} :dt
Must use lattice command with displace_box command if units option is
set to lattice. :dd
{Use of fix ave/spatial with undefined lattice} :dt
A lattice must be defined to use fix ave/spatial with units = lattice. :dd
{Use of fix deform with undefined lattice} :dt
A lattice must be defined to use fix deform with units = lattice. :dd
{Use of fix deposit with undefined lattice} :dt
Must use lattice command with compute fix deposit command if units
option is set to lattice. :dd
{Use of fix dt/reset with undefined lattice} :dt
Must use lattice command with fix dt/reset command if units option is
set to lattice. :dd
{Use of fix indent with undefined lattice} :dt
The lattice command must be used to define a lattice before using the
fix indent command. :dd
{Use of fix move with undefined lattice} :dt
Must use lattice command with fix move command if units option is
set to lattice. :dd
{Use of fix recenter with undefined lattice} :dt
Must use lattice command with fix recenter command if units option is
set to lattice. :dd
{Use of fix wall with undefined lattice} :dt
Must use lattice command with fix wall command if units option is set
to lattice. :dd
{Use of region with undefined lattice} :dt
If scale = lattice (the default) for the region command, then a
lattice must first be defined via the lattice command. :dd
{Use of velocity with undefined lattice} :dt
If scale = lattice (the default) for the velocity set or velocity ramp
command, then a lattice must first be defined via the lattice command. :dd
{Using fix nvt/sllod with inconsistent fix deform remap option} :dt
Fix nvt/sllod requires that deforming atoms have a velocity profile
provided by "remap v" as a fix deform option. :dd
{Using fix nvt/sllod with no fix deform defined} :dt
Self-explanatory. :dd
{Using fix srd with inconsistent fix deform remap option} :dt
When shearing the box in an SRD simulation, the remap v option for fix
deform needs to be used. :dd
{Variable evaluation before simulation box is defined} :dt
Cannot evaluate a compute or fix or atom-based value in a variable
before the simulation has been setup. :dd
{Variable for compute ti is invalid style} :dt
Self-explanatory. :dd
{Variable for dump every is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for fix adapt is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for fix addforce is invalid style} :dt
Self-explanatory. :dd
{Variable for fix aveforce is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for fix efield is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for fix indent is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for fix indent is not equal style} :dt
Only equal-style variables can be used. :dd
{Variable for fix move is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for fix setforce is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for fix wall is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for fix wall/reflect is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for fix wall/srd is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for region is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for region is not equal style} :dt
Self-explanatory. :dd
{Variable for thermo every is invalid style} :dt
Only equal-style variables can be used. :dd
{Variable for velocity set is invalid style} :dt
Only atom-style variables can be used. :dd
{Variable formula compute array is accessed out-of-range} :dt
Self-explanatory. :dd
{Variable formula compute vector is accessed out-of-range} :dt
Self-explanatory. :dd
{Variable formula fix array is accessed out-of-range} :dt
Self-explanatory. :dd
{Variable formula fix vector is accessed out-of-range} :dt
Self-explanatory. :dd
{Variable name for compute atom/molecule does not exist} :dt
Self-explanatory. :dd
{Variable name for compute reduce does not exist} :dt
Self-explanatory. :dd
{Variable name for compute ti does not exist} :dt
Self-explanatory. :dd
{Variable name for dump every does not exist} :dt
Self-explanatory. :dd
{Variable name for fix adapt does not exist} :dt
Self-explanatory. :dd
{Variable name for fix addforce does not exist} :dt
Self-explanatory. :dd
{Variable name for fix ave/atom does not exist} :dt
Self-explanatory. :dd
{Variable name for fix ave/correlate does not exist} :dt
Self-explanatory. :dd
{Variable name for fix ave/histo does not exist} :dt
Self-explanatory. :dd
{Variable name for fix ave/spatial does not exist} :dt
Self-explanatory. :dd
{Variable name for fix ave/time does not exist} :dt
Self-explanatory. :dd
{Variable name for fix aveforce does not exist} :dt
Self-explanatory. :dd
{Variable name for fix efield does not exist} :dt
Self-explanatory. :dd
{Variable name for fix indent does not exist} :dt
Self-explanatory. :dd
{Variable name for fix move does not exist} :dt
Self-explanatory. :dd
{Variable name for fix setforce does not exist} :dt
Self-explanatory. :dd
{Variable name for fix store/state does not exist} :dt
Self-explanatory. :dd
{Variable name for fix wall does not exist} :dt
Self-explanatory. :dd
{Variable name for fix wall/reflect does not exist} :dt
Self-explanatory. :dd
{Variable name for fix wall/srd does not exist} :dt
Self-explanatory. :dd
{Variable name for region does not exist} :dt
Self-explanatory. :dd
{Variable name for thermo every does not exist} :dt
Self-explanatory. :dd
{Variable name for velocity set does not exist} :dt
Self-explanatory. :dd
{Variable name must be alphanumeric or underscore characters} :dt
Self-explanatory. :dd
{Velocity command before simulation box is defined} :dt
The velocity command cannot be used before a read_data, read_restart,
or create_box command. :dd
{Velocity command with no atoms existing} :dt
A velocity command has been used, but no atoms yet exist. :dd
{Velocity ramp in z for a 2d problem} :dt
Self-explanatory. :dd
{Velocity temperature ID does not compute temperature} :dt
The compute ID given to the velocity command must compute
temperature. :dd
{Virial was not tallied on needed timestep} :dt
You are using a thermo keyword that requires potentials to
have tallied the virial, but they didn't on this timestep. See the
variable doc page for ideas on how to make this work. :dd
{Wall defined twice in fix wall command} :dt
Self-explanatory. :dd
{Wall defined twice in fix wall/reflect command} :dt
Self-explanatory. :dd
{Wall defined twice in fix wall/srd command} :dt
Self-explanatory. :dd
{Weighted neighbor list values are too big} :dt
You must have less atoms per processor to use this
style neighbor list. :dd
{World variable count doesn't match # of partitions} :dt
A world-style variable must specify a number of values equal to the
number of processor partitions. :dd
{Write_restart command before simulation box is defined} :dt
The write_restart command cannot be used before a read_data,
read_restart, or create_box command. :dd
{Zero-length lattice orient vector} :dt
Self-explanatory. :dd
:dle
Warnings: :h4,link(warn)
:dlb
{All element names have been set to 'C' for dump cfg} :dt
Use the dump_modify command if you wish to override this. :dd
{Atom with molecule ID = 0 included in compute molecule group} :dt
The group used in a compute command that operates on moleclues
includes atoms with no molecule ID. This is probably not what you
want. :dd
{Broken bonds will not alter angles, dihedrals, or impropers} :dt
See the doc page for fix bond/break for more info on this
restriction. :dd
{Building an occasional neighobr list when atoms may have moved too far} :dt
This can cause LAMMPS to crash when the neighbor list is built.
The solution is to check for building the regular neighbor lists
more frequently. :dd
{Compute cna/atom cutoff may be too large to find ghost atom neighbors} :dt
The neighbor cutoff used may not encompass enough ghost atoms
to perform this operation correctly. :dd
{Computing temperature of portions of rigid bodies} :dt
The group defined by the temperature compute does not encompass all
the atoms in one or more rigid bodies, so the change in
degrees-of-freedom for the atoms in those partial rigid bodies will
not be accounted for. :dd
{Created bonds will not create angles, dihedrals, or impropers} :dt
See the doc page for fix bond/create for more info on this
restriction. :dd
{Dihedral problem: %d %d %d %d %d %d} :dt
Conformation of the 4 listed dihedral atoms is extreme; you may want
to check your simulation geometry. :dd
{Dump dcd/xtc timestamp may be wrong with fix dt/reset} :dt
If the fix changes the timestep, the dump dcd file will not
reflect the change. :dd
{FENE bond too long: %d %d %d %g} :dt
A FENE bond has stretched dangerously far. It's interaction strength
will be truncated to attempt to prevent the bond from blowing up. :dd
{FENE bond too long: %d %g} :dt
A FENE bond has stretched dangerously far. It's interaction strength
will be truncated to attempt to prevent the bond from blowing up. :dd
{Fix SRD walls overlap but fix srd overlap not set} :dt
You likely want to set this in your input script. :dd
{Fix bond/swap will ignore defined angles} :dt
See the doc page for fix bond/swap for more info on this
restriction. :dd
{Fix move does not update angular momentum} :dt
Atoms store this quantity, but fix move does not (yet) update it. :dd
{Fix move does not update quaternions} :dt
Atoms store this quantity, but fix move does not (yet) update it. :dd
{Fix recenter should come after all other integration fixes} :dt
Other fixes may change the position of the center-of-mass, so
fix recenter should come last. :dd
{Fix srd SRD moves may trigger frequent reneighboring} :dt
This is because the SRD particles may move long distances. :dd
{Fix srd grid size > 1/4 of big particle diameter} :dt
This may cause accuracy problems. :dd
{Fix srd no-slip wall collisions with bin shifting} :dt
This is an inconsistent setting in your input script. :dd
{Fix srd particle moved outside valid domain} :dt
This may indicate a problem with your simulation parameters. :dd
{Fix srd particles may move > big particle diameter} :dt
This may cause accuracy problems. :dd
{Fix srd viscosity < 0.0 due to low SRD density} :dt
This may cause accuracy problems. :dd
{Fix thermal/conductivity comes before fix ave/spatial} :dt
The order of these 2 fixes in your input script is such that fix
thermal/conductivity comes first. If you are using fix ave/spatial to
measure the temperature profile induced by fix viscosity, then this
may cause a glitch in the profile since you are averaging immediately
after swaps have occurred. Flipping the order of the 2 fixes
typically helps. :dd
{Fix viscosity comes before fix ave/spatial} :dt
The order of these 2 fixes in your input script is such that
fix viscosity comes first. If you are using fix ave/spatial
to measure the velocity profile induced by fix viscosity, then
this may cause a glitch in the profile since you are averaging
immediately after swaps have occurred. Flipping the order
of the 2 fixes typically helps. :dd
{Group for fix_modify temp != fix group} :dt
The fix_modify command is specifying a temperature computation that
computes a temperature on a different group of atoms than the fix
itself operates on. This is probably not what you want to do. :dd
{Improper problem: %d %d %d %d %d %d} :dt
Conformation of the 4 listed improper atoms is extreme; you may want
to check your simulation geometry. :dd
{Kspace_modify slab param < 2.0 may cause unphysical behavior} :dt
The kspace_modify slab parameter should be larger to insure periodic
grids padded with empty space do not overlap. :dd
{Less insertions than requested} :dt
Less atom insertions occurred on this timestep due to the fix pour
command than were scheduled. This is probably because there were too
many overlaps detected. :dd
{Lost atoms: original %.15g current %.15g} :dt
A thermodynamic computation has detected lost atoms. :dd
{Mismatch between velocity and compute groups} :dt
The temperature computation used by the velocity command will not be
on the same group of atoms that velocities are being set for. :dd
{More than one compute centro/atom} :dt
It is not efficient to use compute centro/atom more than once. :dd
{More than one compute cluster/atom} :dt
It is not efficient to use compute cluster/atom more than once. :dd
{More than one compute cna/atom defined} :dt
It is not efficient to use compute cna/atom more than once. :dd
{More than one compute coord/atom} :dt
It is not efficient to use compute coord/atom more than once. :dd
{More than one compute damage/atom} :dt
It is not efficient to use compute ke/atom more than once. :dd
{More than one compute ke/atom} :dt
It is not efficient to use compute ke/atom more than once. :dd
{More than one fix poems} :dt
It is not efficient to use fix poems more than once. :dd
{More than one fix rigid} :dt
It is not efficient to use fix rigid more than once. :dd
{New thermo_style command, previous thermo_modify settings will be lost} :dt
If a thermo_style command is used after a thermo_modify command, the
settings changed by the thermo_modify command will be reset to their
default values. This is because the thermo_modify commmand acts on
the currently defined thermo style, and a thermo_style command creates
a new style. :dd
{No fixes defined, atoms won't move} :dt
If you are not using a fix like nve, nvt, npt then atom velocities and
coordinates will not be updated during timestepping. :dd
{No joints between rigid bodies, use fix rigid instead} :dt
The bodies defined by fix poems are not connected by joints. POEMS
will integrate the body motion, but it would be more efficient to use
fix rigid. :dd
{Not using real units with pair reax} :dt
This is most likely an error, unless you have created your own ReaxFF
parameter file in a different set of units. :dd
{One or more atoms are time integrated more than once} :dt
This is probably an error since you typically do not want to
advance the positions or velocities of an atom more than once
per timestep. :dd
{One or more compute molecules has atoms not in group} :dt
The group used in a compute command that operates on moleclues does
not include all the atoms in some molecules. This is probably not
what you want. :dd
{One or more respa levels compute no forces} :dt
This is computationally inefficient. :dd
{Pair COMB charge %.10f with force %.10f hit max barrier} :dt
Something is possibly wrong with your model. :dd
{Pair COMB charge %.10f with force %.10f hit min barrier} :dt
Something is possibly wrong with your model. :dd
{Pair dsmc: num_of_collisions > number_of_A} :dt
Collision model in DSMC is breaking down. :dd
{Pair dsmc: num_of_collisions > number_of_B} :dt
Collision model in DSMC is breaking down. :dd
{Particle deposition was unsuccessful} :dt
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. :dd
{Reducing PPPM order b/c stencil extends beyond neighbor processor} :dt
LAMMPS is attempting this in order to allow the simulation
to run. It should not effect the PPPM accuracy. :dd
{Replacing a fix, but new group != old group} :dt
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. :dd
{Replicating in a non-periodic dimension} :dt
The parameters for a replicate command will cause a non-periodic
dimension to be replicated; this may cause unwanted behavior. :dd
{Resetting reneighboring criteria during PRD} :dt
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. :dd
{Resetting reneighboring criteria during TAD} :dt
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. :dd
{Resetting reneighboring criteria during minimization} :dt
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. :dd
{Restart file used different # of processors} :dt
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. :dd
{Restart file used different 3d processor grid} :dt
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. :dd
{Restart file used different boundary settings, using restart file values} :dt
Your input script cannot change these restart file settings. :dd
{Restart file used different newton bond setting, using restart file value} :dt
The restart file value will override the setting in the input script. :dd
{Restart file used different newton pair setting, using input script value} :dt
The input script value will override the setting in the restart file. :dd
{Restart file version does not match LAMMPS version} :dt
This may cause problems when reading the restart file. :dd
{Running PRD with only one replica} :dt
This is allowed, but you will get no parallel speed-up. :dd
{SRD bin shifting turned on due to small lamda} :dt
This is done to try to preserve accuracy. :dd
{SRD bin size for fix srd differs from user request} :dt
Check if the new bin size is acceptable. :dd
{SRD bins for fix srd are not cubic enough} :dt
Check if the bin shape is acceptable. :dd
{SRD particle %d started inside big particle %d on step %d bounce %d} :dt
This may not be a problem, but indicates one or more SRD particles are
being left inside solute particles. :dd
{Shake determinant < 0.0} :dt
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. :dd
{Should not allow rigid bodies to bounce off relecting walls} :dt
LAMMPS allows this, but their dynamics are not computed correctly. :dd
{System is not charge neutral, net charge = %g} :dt
The total charge on all atoms on the system is not 0.0, which
is not valid for Ewald or PPPM. :dd
{Table inner cutoff >= outer cutoff} :dt
You specified an inner cutoff for a Coulombic table that is longer
than the global cutoff. Probably not what you wanted. :dd
{Temperature for MSST is not for group all} :dt
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. :dd
{Temperature for NPT is not for group all} :dt
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. :dd
{Temperature for fix modify is not for group all} :dt
The temperature compute is being used with a pressure calculation
which does operate on group all, so this may be inconsistent. :dd
{Temperature for thermo pressure is not for group all} :dt
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. :dd
{Too many common neighbors in CNA %d times} :dt
More than the maximum # of neighbors was found multiple times. This
was unexpected. :dd
{Too many inner timesteps in fix ttm} :dt
Self-explanatory. :dd
{Too many neighbors in CNA for %d atoms} :dt
More than the maximum # of neighbors was found multiple times. This
was unexpected. :dd
{Use special bonds = 0,1,1 with bond style fene/expand} :dt
Most FENE models need this setting for the special_bonds command. :dd
{Use special bonds = 0,1,1 with bond style fene} :dt
Most FENE models need this setting for the special_bonds command. :dd
{Using compute temp/deform with inconsistent fix deform remap option} :dt
Fix nvt/sllod assumes deforming atoms have a velocity profile provided
by "remap v" or "remap none" as a fix deform option. :dd
{Using compute temp/deform with no fix deform defined} :dt
This is probably an error, since it makes little sense to use
compute temp/deform in this case. :dd
{Using pair tail corrections with nonperiodic system} :dt
This is probably a bogus thing to do, since tail corrections are
computed by integrating the density of a periodic system out to
infinity. :dd
:dle
diff --git a/doc/Section_example.html b/doc/Section_example.html
index 5e32f0ca3..94e2d95d6 100644
--- a/doc/Section_example.html
+++ b/doc/Section_example.html
@@ -1,83 +1,83 @@
<HTML>
<CENTER><A HREF = "Section_howto.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_perf.html">Next Section</A>
</CENTER>
<HR>
-<H3>5. Example problems
+<H3>7. Example problems
</H3>
<P>The LAMMPS distribution includes an examples sub-directory with
several sample problems. Each problem is in a sub-directory of its
own. Most are 2d models so that they run quickly, requiring at most a
couple of minutes to run on a desktop machine. Each problem has an
input script (in.*) and produces a log file (log.*) and dump file
(dump.*) when it runs. Some use a data file (data.*) of initial
coordinates as additional input. A few sample log file outputs on
different machines and different numbers of processors are included in
the directories to compare your answers to. E.g. a log file like
log.crack.foo.P means it ran on P processors of machine "foo".
</P>
<P>The dump files produced by the example runs can be animated using the
xmovie tool described in the <A HREF = "Section_tools.html">Additional Tools</A>
section of the LAMMPS documentation. Animations of many of these
examples can be viewed on the Movies section of the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW
Site</A>.
</P>
<P>These are the sample problems in the examples sub-directories:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >colloid</TD><TD > big colloid particles in a small particle solvent, 2d system</TD></TR>
<TR><TD >comb</TD><TD > models using the COMB potential</TD></TR>
<TR><TD >crack</TD><TD > crack propagation in a 2d solid</TD></TR>
<TR><TD >dipole</TD><TD > point dipolar particles, 2d system</TD></TR>
<TR><TD >eim</TD><TD > NaCl using the EIM potential</TD></TR>
<TR><TD >ellipse</TD><TD > ellipsoidal particles in spherical solvent, 2d system</TD></TR>
<TR><TD >flow</TD><TD > Couette and Poiseuille flow in a 2d channel</TD></TR>
<TR><TD >friction</TD><TD > frictional contact of spherical asperities between 2d surfaces</TD></TR>
<TR><TD >indent</TD><TD > spherical indenter into a 2d solid</TD></TR>
<TR><TD >meam</TD><TD > MEAM test for SiC and shear (same as shear examples)</TD></TR>
<TR><TD >melt</TD><TD > rapid melt of 3d LJ system</TD></TR>
<TR><TD >micelle</TD><TD > self-assembly of small lipid-like molecules into 2d bilayers</TD></TR>
<TR><TD >min</TD><TD > energy minimization of 2d LJ melt</TD></TR>
<TR><TD >msst</TD><TD > MSST shock dynamics</TD></TR>
<TR><TD >neb</TD><TD > nudged elastic band (NEB) calculation for barrier finding</TD></TR>
<TR><TD >nemd</TD><TD > non-equilibrium MD of 2d sheared system</TD></TR>
<TR><TD >obstacle</TD><TD > flow around two voids in a 2d channel</TD></TR>
<TR><TD >peptide</TD><TD > dynamics of a small solvated peptide chain (5-mer)</TD></TR>
<TR><TD >peri</TD><TD > Peridynamic model of cylinder impacted by indenter</TD></TR>
<TR><TD >pour</TD><TD > pouring of granular particles into a 3d box, then chute flow</TD></TR>
<TR><TD >prd</TD><TD > parallel replica dynamics of a vacancy diffusion in bulk Si</TD></TR>
<TR><TD >reax</TD><TD > RDX and TATB models using the ReaxFF</TD></TR>
<TR><TD >rigid</TD><TD > rigid bodies modeled as independent or coupled</TD></TR>
<TR><TD >shear</TD><TD > sideways shear applied to 2d solid, with and without a void</TD></TR>
<TR><TD >srd</TD><TD > stochastic rotation dynamics (SRD) particles as solvent
</TD></TR></TABLE></DIV>
<P>Here is how you might run and visualize one of the sample problems:
</P>
<PRE>cd indent
cp ../../src/lmp_linux . # copy LAMMPS executable to this dir
lmp_linux < in.indent # run the problem
</PRE>
<P>Running the simulation produces the files <I>dump.indent</I> and
<I>log.lammps</I>. You can visualize the dump file as follows:
</P>
<PRE>../../tools/xmovie/xmovie -scale dump.indent
</PRE>
<HR>
<P>There is also an ELASTIC directory with an example script for
computing elastic constants, using a zero temperature Si example. See
the in.elastic file for more info.
</P>
<P>There is also a USER directory which contains subdirectories of
user-provided examples for user packages. See the README files in
those directories for more info. See the doc/Section_start.html file
for more info about user packages.
</P>
</HTML>
diff --git a/doc/Section_example.txt b/doc/Section_example.txt
index 241f01f70..947c7957c 100644
--- a/doc/Section_example.txt
+++ b/doc/Section_example.txt
@@ -1,76 +1,76 @@
"Previous Section"_Section_howto.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_perf.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
-5. Example problems :h3
+7. Example problems :h3
The LAMMPS distribution includes an examples sub-directory with
several sample problems. Each problem is in a sub-directory of its
own. Most are 2d models so that they run quickly, requiring at most a
couple of minutes to run on a desktop machine. Each problem has an
input script (in.*) and produces a log file (log.*) and dump file
(dump.*) when it runs. Some use a data file (data.*) of initial
coordinates as additional input. A few sample log file outputs on
different machines and different numbers of processors are included in
the directories to compare your answers to. E.g. a log file like
log.crack.foo.P means it ran on P processors of machine "foo".
The dump files produced by the example runs can be animated using the
xmovie tool described in the "Additional Tools"_Section_tools.html
section of the LAMMPS documentation. Animations of many of these
examples can be viewed on the Movies section of the "LAMMPS WWW
Site"_lws.
These are the sample problems in the examples sub-directories:
colloid: big colloid particles in a small particle solvent, 2d system
comb: models using the COMB potential
crack: crack propagation in a 2d solid
dipole: point dipolar particles, 2d system
eim: NaCl using the EIM potential
ellipse: ellipsoidal particles in spherical solvent, 2d system
flow: Couette and Poiseuille flow in a 2d channel
friction: frictional contact of spherical asperities between 2d surfaces
indent: spherical indenter into a 2d solid
meam: MEAM test for SiC and shear (same as shear examples)
melt: rapid melt of 3d LJ system
micelle: self-assembly of small lipid-like molecules into 2d bilayers
min: energy minimization of 2d LJ melt
msst: MSST shock dynamics
neb: nudged elastic band (NEB) calculation for barrier finding
nemd: non-equilibrium MD of 2d sheared system
obstacle: flow around two voids in a 2d channel
peptide: dynamics of a small solvated peptide chain (5-mer)
peri: Peridynamic model of cylinder impacted by indenter
pour: pouring of granular particles into a 3d box, then chute flow
prd: parallel replica dynamics of a vacancy diffusion in bulk Si
reax: RDX and TATB models using the ReaxFF
rigid: rigid bodies modeled as independent or coupled
shear: sideways shear applied to 2d solid, with and without a void
srd: stochastic rotation dynamics (SRD) particles as solvent :tb(s=:)
Here is how you might run and visualize one of the sample problems:
cd indent
cp ../../src/lmp_linux . # copy LAMMPS executable to this dir
lmp_linux < in.indent # run the problem :pre
Running the simulation produces the files {dump.indent} and
{log.lammps}. You can visualize the dump file as follows:
../../tools/xmovie/xmovie -scale dump.indent :pre
:line
There is also an ELASTIC directory with an example script for
computing elastic constants, using a zero temperature Si example. See
the in.elastic file for more info.
There is also a USER directory which contains subdirectories of
user-provided examples for user packages. See the README files in
those directories for more info. See the doc/Section_start.html file
for more info about user packages.
diff --git a/doc/Section_history.html b/doc/Section_history.html
index 399b4dc23..e84bb721e 100644
--- a/doc/Section_history.html
+++ b/doc/Section_history.html
@@ -1,135 +1,137 @@
<HTML>
-<CENTER><A HREF = "Section_errors.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Manual.html">Next Section</A>
+<CENTER><A HREF = "Section_errors.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> -
+<A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Manual.html">Next
+Section</A>
</CENTER>
<HR>
-<H3>12. Future and history
+<H3>13. Future and history
</H3>
<P>This section lists features we are planning to add to LAMMPS, features
of previous versions of LAMMPS, and features of other parallel
molecular dynamics codes I've distributed.
</P>
-12.1 <A HREF = "#12_1">Coming attractions</A><BR>
-12.2 <A HREF = "#12_2">Past versions</A> <BR>
+13.1 <A HREF = "#hist_1">Coming attractions</A><BR>
+13.2 <A HREF = "#hist_2">Past versions</A> <BR>
<HR>
-<H4><A NAME = "12_1"></A>12.1 Coming attractions
+<H4><A NAME = "hist_1"></A>13.1 Coming attractions
</H4>
<P>The current version of LAMMPS incorporates nearly all the features
from previous parallel MD codes developed at Sandia. These include
earlier versions of LAMMPS itself, Warp and ParaDyn for metals, and
GranFlow for granular materials.
</P>
<P>These are new features we'd like to eventually add to LAMMPS. Some
are being worked on; some haven't been implemented because of lack of
time or interest; others are just a lot of work! See <A HREF = "http://lammps.sandia.gov/future.html">this
page</A> on the LAMMPS WWW site for more details.
</P>
<UL><LI>Coupling to finite elements for streess-strain
<LI>New ReaxFF implementation
<LI>Nudged elastic band
<LI>Temperature accelerated dynamics
<LI>Triangulated particles
<LI>Stochastic rotation dynamics
<LI>Stokesian dynamics via fast lubrication dynamics
<LI>Long-range point-dipole solver
<LI>Per-atom energy and stress for long-range Coulombics
<LI>Long-range Coulombics via Ewald and PPPM for triclinic boxes
<LI>Metadynamics
<LI>Direct Simulation Monte Carlo - DSMC
</UL>
<HR>
-<H4><A NAME = "12_2"></A>12.2 Past versions
+<H4><A NAME = "hist_2"></A>13.2 Past versions
</H4>
<P>LAMMPS development began in the mid 1990s under a cooperative research
& development agreement (CRADA) between two DOE labs (Sandia and LLNL)
and 3 companies (Cray, Bristol Myers Squibb, and Dupont). Soon after
the CRADA ended, a final F77 version of the code, LAMMPS 99, was
released. As development of LAMMPS continued at Sandia, the memory
management in the code was converted to F90; a final F90 version was
released as LAMMPS 2001.
</P>
<P>The current LAMMPS is a rewrite in C++ and was first publicly released
in 2004. It includes many new features, including features from other
parallel molecular dynamics codes written at Sandia, namely ParaDyn,
Warp, and GranFlow. ParaDyn is a parallel implementation of the
popular serial DYNAMO code developed by Stephen Foiles and Murray Daw
for their embedded atom method (EAM) metal potentials. ParaDyn uses
atom- and force-decomposition algorithms to run in parallel. Warp is
also a parallel implementation of the EAM potentials designed for
large problems, with boundary conditions specific to shearing solids
in varying geometries. GranFlow is a granular materials code with
potentials and boundary conditions peculiar to granular systems. All
of these codes (except ParaDyn) use spatial-decomposition techniques
for their parallelism.
</P>
<P>These older codes are available for download from the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW
site</A>, except for Warp & GranFlow which were primarily used
internally. A brief listing of their features is given here.
</P>
<P>LAMMPS 2001
</P>
<UL><LI> F90 + MPI
<LI> dynamic memory
<LI> spatial-decomposition parallelism
<LI> NVE, NVT, NPT, NPH, rRESPA integrators
<LI> LJ and Coulombic pairwise force fields
<LI> all-atom, united-atom, bead-spring polymer force fields
<LI> CHARMM-compatible force fields
<LI> class 2 force fields
<LI> 3d/2d Ewald & PPPM
<LI> various force and temperature constraints
<LI> SHAKE
<LI> Hessian-free truncated-Newton minimizer
<LI> user-defined diagnostics
</UL>
<P>LAMMPS 99
</P>
<UL><LI> F77 + MPI
<LI> static memory allocation
<LI> spatial-decomposition parallelism
<LI> most of the LAMMPS 2001 features with a few exceptions
<LI> no 2d Ewald & PPPM
<LI> molecular force fields are missing a few CHARMM terms
<LI> no SHAKE
</UL>
<P>Warp
</P>
<UL><LI> F90 + MPI
<LI> spatial-decomposition parallelism
<LI> embedded atom method (EAM) metal potentials + LJ
<LI> lattice and grain-boundary atom creation
<LI> NVE, NVT integrators
<LI> boundary conditions for applying shear stresses
<LI> temperature controls for actively sheared systems
<LI> per-atom energy and centro-symmetry computation and output
</UL>
<P>ParaDyn
</P>
<UL><LI> F77 + MPI
<LI> atom- and force-decomposition parallelism
<LI> embedded atom method (EAM) metal potentials
<LI> lattice atom creation
<LI> NVE, NVT, NPT integrators
<LI> all serial DYNAMO features for controls and constraints
</UL>
<P>GranFlow
</P>
<UL><LI> F90 + MPI
<LI> spatial-decomposition parallelism
<LI> frictional granular potentials
<LI> NVE integrator
<LI> boundary conditions for granular flow and packing and walls
<LI> particle insertion
</UL>
</HTML>
diff --git a/doc/Section_history.txt b/doc/Section_history.txt
index f3887b7e0..de84ffb2b 100644
--- a/doc/Section_history.txt
+++ b/doc/Section_history.txt
@@ -1,130 +1,132 @@
-"Previous Section"_Section_errors.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Manual.html :c
+"Previous Section"_Section_errors.html - "LAMMPS WWW Site"_lws -
+"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
+Section"_Manual.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
-12. Future and history :h3
+13. Future and history :h3
This section lists features we are planning to add to LAMMPS, features
of previous versions of LAMMPS, and features of other parallel
molecular dynamics codes I've distributed.
-12.1 "Coming attractions"_#12_1
-12.2 "Past versions"_#12_2 :all(b)
+13.1 "Coming attractions"_#hist_1
+13.2 "Past versions"_#hist_2 :all(b)
:line
-12.1 Coming attractions :h4,link(12_1)
+13.1 Coming attractions :h4,link(hist_1)
The current version of LAMMPS incorporates nearly all the features
from previous parallel MD codes developed at Sandia. These include
earlier versions of LAMMPS itself, Warp and ParaDyn for metals, and
GranFlow for granular materials.
These are new features we'd like to eventually add to LAMMPS. Some
are being worked on; some haven't been implemented because of lack of
time or interest; others are just a lot of work! See "this
page"_lwsfuture on the LAMMPS WWW site for more details.
:link(lwsfuture,http://lammps.sandia.gov/future.html)
Coupling to finite elements for streess-strain
New ReaxFF implementation
Nudged elastic band
Temperature accelerated dynamics
Triangulated particles
Stochastic rotation dynamics
Stokesian dynamics via fast lubrication dynamics
Long-range point-dipole solver
Per-atom energy and stress for long-range Coulombics
Long-range Coulombics via Ewald and PPPM for triclinic boxes
Metadynamics
Direct Simulation Monte Carlo - DSMC :ul
:line
-12.2 Past versions :h4,link(12_2)
+13.2 Past versions :h4,link(hist_2)
LAMMPS development began in the mid 1990s under a cooperative research
& development agreement (CRADA) between two DOE labs (Sandia and LLNL)
and 3 companies (Cray, Bristol Myers Squibb, and Dupont). Soon after
the CRADA ended, a final F77 version of the code, LAMMPS 99, was
released. As development of LAMMPS continued at Sandia, the memory
management in the code was converted to F90; a final F90 version was
released as LAMMPS 2001.
The current LAMMPS is a rewrite in C++ and was first publicly released
in 2004. It includes many new features, including features from other
parallel molecular dynamics codes written at Sandia, namely ParaDyn,
Warp, and GranFlow. ParaDyn is a parallel implementation of the
popular serial DYNAMO code developed by Stephen Foiles and Murray Daw
for their embedded atom method (EAM) metal potentials. ParaDyn uses
atom- and force-decomposition algorithms to run in parallel. Warp is
also a parallel implementation of the EAM potentials designed for
large problems, with boundary conditions specific to shearing solids
in varying geometries. GranFlow is a granular materials code with
potentials and boundary conditions peculiar to granular systems. All
of these codes (except ParaDyn) use spatial-decomposition techniques
for their parallelism.
These older codes are available for download from the "LAMMPS WWW
site"_lws, except for Warp & GranFlow which were primarily used
internally. A brief listing of their features is given here.
LAMMPS 2001
F90 + MPI
dynamic memory
spatial-decomposition parallelism
NVE, NVT, NPT, NPH, rRESPA integrators
LJ and Coulombic pairwise force fields
all-atom, united-atom, bead-spring polymer force fields
CHARMM-compatible force fields
class 2 force fields
3d/2d Ewald & PPPM
various force and temperature constraints
SHAKE
Hessian-free truncated-Newton minimizer
user-defined diagnostics :ul
LAMMPS 99
F77 + MPI
static memory allocation
spatial-decomposition parallelism
most of the LAMMPS 2001 features with a few exceptions
no 2d Ewald & PPPM
molecular force fields are missing a few CHARMM terms
no SHAKE :ul
Warp
F90 + MPI
spatial-decomposition parallelism
embedded atom method (EAM) metal potentials + LJ
lattice and grain-boundary atom creation
NVE, NVT integrators
boundary conditions for applying shear stresses
temperature controls for actively sheared systems
per-atom energy and centro-symmetry computation and output :ul
ParaDyn
F77 + MPI
atom- and force-decomposition parallelism
embedded atom method (EAM) metal potentials
lattice atom creation
NVE, NVT, NPT integrators
all serial DYNAMO features for controls and constraints :ul
GranFlow
F90 + MPI
spatial-decomposition parallelism
frictional granular potentials
NVE integrator
boundary conditions for granular flow and packing and walls
particle insertion :ul
diff --git a/doc/Section_howto.html b/doc/Section_howto.html
index 1bc6d97ec..7f200f929 100644
--- a/doc/Section_howto.html
+++ b/doc/Section_howto.html
@@ -1,1961 +1,1962 @@
<HTML>
-<CENTER><A HREF = "Section_commands.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_example.html">Next Section</A>
+<CENTER><A HREF = "Section_accelerate.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_example.html">Next Section</A>
</CENTER>
<HR>
-<H3>4. How-to discussions
+<H3>6. How-to discussions
</H3>
<P>The following sections describe how to use various options within
LAMMPS.
</P>
-4.1 <A HREF = "#4_1">Restarting a simulation</A><BR>
-4.2 <A HREF = "#4_2">2d simulations</A><BR>
-4.3 <A HREF = "#4_3">CHARMM, AMBER, and DREIDING force fields</A><BR>
-4.4 <A HREF = "#4_4">Running multiple simulations from one input script</A><BR>
-4.5 <A HREF = "#4_5">Multi-replica simulations</A><BR>
-4.6 <A HREF = "#4_6">Granular models</A><BR>
-4.7 <A HREF = "#4_7">TIP3P water model</A><BR>
-4.8 <A HREF = "#4_8">TIP4P water model</A><BR>
-4.9 <A HREF = "#4_9">SPC water model</A><BR>
-4.10 <A HREF = "#4_10">Coupling LAMMPS to other codes</A><BR>
-4.11 <A HREF = "#4_11">Visualizing LAMMPS snapshots</A><BR>
-4.12 <A HREF = "#4_12">Triclinic (non-orthogonal) simulation boxes</A><BR>
-4.13 <A HREF = "#4_13">NEMD simulations</A><BR>
-4.14 <A HREF = "#4_14">Extended spherical and aspherical particles</A><BR>
-4.15 <A HREF = "#4_15">Output from LAMMPS (thermo, dumps, computes, fixes, variables)</A><BR>
-4.16 <A HREF = "#4_16">Thermostatting, barostatting and computing temperature</A><BR>
-4.17 <A HREF = "#4_17">Walls</A><BR>
-4.18 <A HREF = "#4_18">Elastic constants</A><BR>
-4.19 <A HREF = "#4_19">Library interface to LAMMPS</A><BR>
-4.20 <A HREF = "#4_20">Calculating thermal conductivity</A><BR>
-4.21 <A HREF = "#4_21">Calculating viscosity</A> <BR>
+6.1 <A HREF = "#howto_1">Restarting a simulation</A><BR>
+6.2 <A HREF = "#howto_2">2d simulations</A><BR>
+6.3 <A HREF = "#howto_3">CHARMM, AMBER, and DREIDING force fields</A><BR>
+6.4 <A HREF = "#howto_4">Running multiple simulations from one input script</A><BR>
+6.5 <A HREF = "#howto_5">Multi-replica simulations</A><BR>
+6.6 <A HREF = "#howto_6">Granular models</A><BR>
+6.7 <A HREF = "#howto_7">TIP3P water model</A><BR>
+6.8 <A HREF = "#howto_8">TIP4P water model</A><BR>
+6.9 <A HREF = "#howto_9">SPC water model</A><BR>
+6.10 <A HREF = "#howto_10">Coupling LAMMPS to other codes</A><BR>
+6.11 <A HREF = "#howto_11">Visualizing LAMMPS snapshots</A><BR>
+6.12 <A HREF = "#howto_12">Triclinic (non-orthogonal) simulation boxes</A><BR>
+6.13 <A HREF = "#howto_13">NEMD simulations</A><BR>
+6.14 <A HREF = "#howto_14">Extended spherical and aspherical particles</A><BR>
+6.15 <A HREF = "#howto_15">Output from LAMMPS (thermo, dumps, computes, fixes, variables)</A><BR>
+6.16 <A HREF = "#howto_16">Thermostatting, barostatting and computing temperature</A><BR>
+6.17 <A HREF = "#howto_17">Walls</A><BR>
+6.18 <A HREF = "#howto_18">Elastic constants</A><BR>
+6.19 <A HREF = "#howto_19">Library interface to LAMMPS</A><BR>
+6.20 <A HREF = "#howto_20">Calculating thermal conductivity</A><BR>
+6.21 <A HREF = "#howto_21">Calculating viscosity</A> <BR>
<P>The example input scripts included in the LAMMPS distribution and
highlighted in <A HREF = "Section_example.html">this section</A> also show how to
setup and run various kinds of simulations.
</P>
<HR>
-<A NAME = "4_1"></A><H4>4.1 Restarting a simulation
+<A NAME = "howto_1"></A><H4>6.1 Restarting a simulation
</H4>
<P>There are 3 ways to continue a long LAMMPS simulation. Multiple
<A HREF = "run.html">run</A> commands can be used in the same input script. Each
run will continue from where the previous run left off. Or binary
restart files can be saved to disk using the <A HREF = "restart.html">restart</A>
command. At a later time, these binary files can be read via a
<A HREF = "read_restart.html">read_restart</A> command in a new script. Or they can
be converted to text data files and read by a
<A HREF = "read_data.html">read_data</A> command in a new script. <A HREF = "Section_tools.html">This
section</A> discusses the <I>restart2data</I> tool that is
used to perform the conversion.
</P>
<P>Here we give examples of 2 scripts that read either a binary restart
file or a converted data file and then issue a new run command to
continue where the previous run left off. They illustrate what
settings must be made in the new script. Details are discussed in the
documentation for the <A HREF = "read_restart.html">read_restart</A> and
<A HREF = "read_data.html">read_data</A> commands.
</P>
<P>Look at the <I>in.chain</I> input script provided in the <I>bench</I> directory
of the LAMMPS distribution to see the original script that these 2
scripts are based on. If that script had the line
</P>
<PRE>restart 50 tmp.restart
</PRE>
<P>added to it, it would produce 2 binary restart files (tmp.restart.50
and tmp.restart.100) as it ran.
</P>
<P>This script could be used to read the 1st restart file and re-run the
last 50 timesteps:
</P>
<PRE>read_restart tmp.restart.50
</PRE>
<PRE>neighbor 0.4 bin
neigh_modify every 1 delay 1
</PRE>
<PRE>fix 1 all nve
fix 2 all langevin 1.0 1.0 10.0 904297
</PRE>
<PRE>timestep 0.012
</PRE>
<PRE>run 50
</PRE>
<P>Note that the following commands do not need to be repeated because
their settings are included in the restart file: <I>units, atom_style,
special_bonds, pair_style, bond_style</I>. However these commands do
need to be used, since their settings are not in the restart file:
<I>neighbor, fix, timestep</I>.
</P>
<P>If you actually use this script to perform a restarted run, you will
notice that the thermodynamic data match at step 50 (if you also put a
"thermo 50" command in the original script), but do not match at step
100. This is because the <A HREF = "fix_langevin.html">fix langevin</A> command
uses random numbers in a way that does not allow for perfect restarts.
</P>
<P>As an alternate approach, the restart file could be converted to a data
file using this tool:
</P>
<PRE>restart2data tmp.restart.50 tmp.restart.data
</PRE>
<P>Then, this script could be used to re-run the last 50 steps:
</P>
<PRE>units lj
atom_style bond
pair_style lj/cut 1.12
pair_modify shift yes
bond_style fene
special_bonds 0.0 1.0 1.0
</PRE>
<PRE>read_data tmp.restart.data
</PRE>
<PRE>neighbor 0.4 bin
neigh_modify every 1 delay 1
</PRE>
<PRE>fix 1 all nve
fix 2 all langevin 1.0 1.0 10.0 904297
</PRE>
<PRE>timestep 0.012
</PRE>
<PRE>reset_timestep 50
run 50
</PRE>
<P>Note that nearly all the settings specified in the original <I>in.chain</I>
script must be repeated, except the <I>pair_coeff</I> and <I>bond_coeff</I>
commands since the new data file lists the force field coefficients.
Also, the <A HREF = "reset_timestep.html">reset_timestep</A> command is used to tell
LAMMPS the current timestep. This value is stored in restart files,
but not in data files.
</P>
<HR>
-<A NAME = "4_2"></A><H4>4.2 2d simulations
+<A NAME = "howto_2"></A><H4>6.2 2d simulations
</H4>
<P>Use the <A HREF = "dimension.html">dimension</A> command to specify a 2d simulation.
</P>
<P>Make the simulation box periodic in z via the <A HREF = "boundary.html">boundary</A>
command. This is the default.
</P>
<P>If using the <A HREF = "create_box.html">create box</A> command to define a
simulation box, set the z dimensions narrow, but finite, so that the
create_atoms command will tile the 3d simulation box with a single z
plane of atoms - e.g.
</P>
<PRE><A HREF = "create_box.html">create box</A> 1 -10 10 -10 10 -0.25 0.25
</PRE>
<P>If using the <A HREF = "read_data.html">read data</A> command to read in a file of
atom coordinates, set the "zlo zhi" values to be finite but narrow,
similar to the create_box command settings just described. For each
atom in the file, assign a z coordinate so it falls inside the
z-boundaries of the box - e.g. 0.0.
</P>
<P>Use the <A HREF = "fix_enforce2d.html">fix enforce2d</A> command as the last
defined fix to insure that the z-components of velocities and forces
are zeroed out every timestep. The reason to make it the last fix is
so that any forces induced by other fixes will be zeroed out.
</P>
<P>Many of the example input scripts included in the LAMMPS distribution
are for 2d models.
</P>
<P>IMPORTANT NOTE: Some models in LAMMPS treat particles as extended
spheres, as opposed to point particles. In 2d, the particles will
still be spheres, not disks, meaning their moment of inertia will be
the same as in 3d.
</P>
<HR>
-<A NAME = "4_3"></A><H4>4.3 CHARMM, AMBER, and DREIDING force fields
+<A NAME = "howto_3"></A><H4>6.3 CHARMM, AMBER, and DREIDING force fields
</H4>
<P>A force field has 2 parts: the formulas that define it and the
coefficients used for a particular system. Here we only discuss
formulas implemented in LAMMPS that correspond to formulas commonly
used in the CHARMM, AMBER, and DREIDING force fields. Setting
coefficients is done in the input data file via the
<A HREF = "read_data.html">read_data</A> command or in the input script with
commands like <A HREF = "pair_coeff.html">pair_coeff</A> or
<A HREF = "bond_coeff.html">bond_coeff</A>. See <A HREF = "Section_tools.html">this section</A>
for additional tools that can use CHARMM or AMBER to assign force
field coefficients and convert their output into LAMMPS input.
</P>
<P>See <A HREF = "#MacKerell">(MacKerell)</A> for a description of the CHARMM force
field. See <A HREF = "#Cornell">(Cornell)</A> for a description of the AMBER force
field.
</P>
<P>These style choices compute force field formulas that are consistent
with common options in CHARMM or AMBER. See each command's
documentation for the formula it computes.
</P>
<UL><LI><A HREF = "bond_harmonic.html">bond_style</A> harmonic
<LI><A HREF = "angle_charmm.html">angle_style</A> charmm
<LI><A HREF = "dihedral_charmm.html">dihedral_style</A> charmm
<LI><A HREF = "pair_charmm.html">pair_style</A> lj/charmm/coul/charmm
<LI><A HREF = "pair_charmm.html">pair_style</A> lj/charmm/coul/charmm/implicit
<LI><A HREF = "pair_charmm.html">pair_style</A> lj/charmm/coul/long
</UL>
<UL><LI><A HREF = "special_bonds.html">special_bonds</A> charmm
<LI><A HREF = "special_bonds.html">special_bonds</A> amber
</UL>
<P>DREIDING is a generic force field developed by the <A HREF = "http://www.wag.caltech.edu">Goddard
group</A> at Caltech and is useful for
predicting structures and dynamics of organic, biological and
main-group inorganic molecules. The philosophy in DREIDING is to use
general force constants and geometry parameters based on simple
hybridization considerations, rather than individual force constants
and geometric parameters that depend on the particular combinations of
atoms involved in the bond, angle, or torsion terms. DREIDING has an
<A HREF = "pair_hbond_dreiding.html">explicit hydrogen bond term</A> to describe
interactions involving a hydrogen atom on very electronegative atoms
(N, O, F).
</P>
<P>See <A HREF = "#Mayo">(Mayo)</A> for a description of the DREIDING force field
</P>
<P>These style choices compute force field formulas that are consistent
with the DREIDING force field. See each command's
documentation for the formula it computes.
</P>
<UL><LI><A HREF = "bond_harmonic.html">bond_style</A> harmonic
<LI><A HREF = "bond_morse.html">bond_style</A> morse
</UL>
<UL><LI><A HREF = "angle_harmonic.html">angle_style</A> harmonic
<LI><A HREF = "angle_cosine.html">angle_style</A> cosine
<LI><A HREF = "angle_cosine_periodic.html">angle_style</A> cosine/periodic
</UL>
<UL><LI><A HREF = "dihedral_charmm.html">dihedral_style</A> charmm
<LI><A HREF = "improper_umbrella.html">improper_style</A> umbrella
</UL>
<UL><LI><A HREF = "pair_buck.html">pair_style</A> buck
<LI><A HREF = "pair_buck.html">pair_style</A> buck/coul/cut
<LI><A HREF = "pair_buck.html">pair_style</A> buck/coul/long
<LI><A HREF = "pair_lj.html">pair_style</A> lj/cut
<LI><A HREF = "pair_lj.html">pair_style</A> lj/cut/coul/cut
<LI><A HREF = "pair_lj.html">pair_style</A> lj/cut/coul/long
</UL>
<UL><LI><A HREF = "pair_hbond_dreiding.html">pair_style</A> hbond/dreiding/lj
<LI><A HREF = "pair_hbond_dreiding.html">pair_style</A> hbond/dreiding/morse
</UL>
<UL><LI><A HREF = "special_bonds.html">special_bonds</A> dreiding
</UL>
<HR>
-<A NAME = "4_4"></A><H4>4.4 Running multiple simulations from one input script
+<A NAME = "howto_4"></A><H4>6.4 Running multiple simulations from one input script
</H4>
<P>This can be done in several ways. See the documentation for
individual commands for more details on how these examples work.
</P>
<P>If "multiple simulations" means continue a previous simulation for
more timesteps, then you simply use the <A HREF = "run.html">run</A> command
multiple times. For example, this script
</P>
<PRE>units lj
atom_style atomic
read_data data.lj
run 10000
run 10000
run 10000
run 10000
run 10000
</PRE>
<P>would run 5 successive simulations of the same system for a total of
50,000 timesteps.
</P>
<P>If you wish to run totally different simulations, one after the other,
the <A HREF = "clear.html">clear</A> command can be used in between them to
re-initialize LAMMPS. For example, this script
</P>
<PRE>units lj
atom_style atomic
read_data data.lj
run 10000
clear
units lj
atom_style atomic
read_data data.lj.new
run 10000
</PRE>
<P>would run 2 independent simulations, one after the other.
</P>
<P>For large numbers of independent simulations, you can use
<A HREF = "variable.html">variables</A> and the <A HREF = "next.html">next</A> and
<A HREF = "jump.html">jump</A> commands to loop over the same input script
multiple times with different settings. For example, this
script, named in.polymer
</P>
<PRE>variable d index run1 run2 run3 run4 run5 run6 run7 run8
shell cd $d
read_data data.polymer
run 10000
shell cd ..
clear
next d
jump in.polymer
</PRE>
<P>would run 8 simulations in different directories, using a data.polymer
file in each directory. The same concept could be used to run the
same system at 8 different temperatures, using a temperature variable
and storing the output in different log and dump files, for example
</P>
<PRE>variable a loop 8
variable t index 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15
log log.$a
read data.polymer
velocity all create $t 352839
fix 1 all nvt $t $t 100.0
dump 1 all atom 1000 dump.$a
run 100000
next t
next a
jump in.polymer
</PRE>
<P>All of the above examples work whether you are running on 1 or
multiple processors, but assumed you are running LAMMPS on a single
partition of processors. LAMMPS can be run on multiple partitions via
-the "-partition" command-line switch as described in <A HREF = "Section_start.html#2_6">this
+the "-partition" command-line switch as described in <A HREF = "Section_start.html#start_6">this
section</A> of the manual.
</P>
<P>In the last 2 examples, if LAMMPS were run on 3 partitions, the same
scripts could be used if the "index" and "loop" variables were
replaced with <I>universe</I>-style variables, as described in the
<A HREF = "variable.html">variable</A> command. Also, the "next t" and "next a"
commands would need to be replaced with a single "next a t" command.
With these modifications, the 8 simulations of each script would run
on the 3 partitions one after the other until all were finished.
Initially, 3 simulations would be started simultaneously, one on each
partition. When one finished, that partition would then start
the 4th simulation, and so forth, until all 8 were completed.
</P>
<HR>
-<A NAME = "4_5"></A><H4>4.5 Multi-replica simulations
+<A NAME = "howto_5"></A><H4>6.5 Multi-replica simulations
</H4>
<P>Several commands in LAMMPS run mutli-replica simulations, meaning
that multiple instances (replicas) of your simulation are run
simultaneously, with small amounts of data exchanged between replicas
periodically.
</P>
<P>These are the relevant commands:
</P>
<UL><LI><A HREF = "neb.html">neb</A> for nudged elastic band calculations
<LI><A HREF = "prd.html">prd</A> for parallel replica dynamics
<LI><A HREF = "tad.html">tad</A> for temperature accelerated dynamics
<LI><A HREF = "temper.html">temper</A> for parallel tempering
</UL>
<P>NEB is a method for finding transition states and barrier energies.
PRD and TAD are methods for performing accelerated dynamics to find
and perform infrequent events. Parallel tempering or replica exchange
runs different replicas at a series of temperature to facilitate
rare-event sampling.
</P>
<P>These command can only be used if LAMMPS was built with the "replica"
-package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info on packages.
+package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info on packages.
</P>
<P>In all these cases, you must run with one or more processors per
replica. The processors assigned to each replica are determined at
-run-time by using the <A HREF = "Section_start.html#2_6">-partition command-line
+run-time by using the <A HREF = "Section_start.html#start_6">-partition command-line
switch</A> to launch LAMMPS on multiple
partitions, which in this context are the same as replicas. E.g.
these commands:
</P>
<PRE>mpirun -np 16 lmp_linux -partition 8x2 -in in.temper
mpirun -np 8 lmp_linux -partition 8x1 -in in.neb
</PRE>
<P>would each run 8 replicas, on either 16 or 8 processors. Note the use
-of the <A HREF = "Section_start.html#2_6">-in command-line switch</A> to specify the
-input script which is required when running in multi-replica mode.
+of the <A HREF = "Section_start.html#start_6">-in command-line switch</A> to specify
+the input script which is required when running in multi-replica mode.
</P>
<P>Also note that with MPI installed on a machine (e.g. your desktop),
you can run on more (virtual) processors than you have physical
processors. Thus the above commands could be run on a
single-processor (or few-processor) desktop so that you can run
a multi-replica simulation on more replicas than you have
physical processors.
</P>
<HR>
-<A NAME = "4_6"></A><H4>4.6 Granular models
+<A NAME = "howto_6"></A><H4>6.6 Granular models
</H4>
<P>Granular system are composed of spherical particles with a diameter,
as opposed to point particles. This means they have an angular
velocity and torque can be imparted to them to cause them to rotate.
</P>
<P>To run a simulation of a granular model, you will want to use
the following commands:
</P>
<UL><LI><A HREF = "atom_style.html">atom_style sphere</A>
<LI><A HREF = "fix_nve_sphere.html">fix nve/sphere</A>
<LI><A HREF = "fix_gravity.html">fix gravity</A>
</UL>
<P>This compute
</P>
<UL><LI><A HREF = "compute_erotate_sphere.html">compute erotate/sphere</A>
</UL>
-<P>calculates rotational kinetic energy which can be <A HREF = "Section_howto.html#4_15">output with
+<P>calculates rotational kinetic energy which can be <A HREF = "Section_howto.html#howto_15">output with
thermodynamic info</A>.
</P>
<P>Use one of these 3 pair potentials, which compute forces and torques
between interacting pairs of particles:
</P>
<UL><LI><A HREF = "pair_style.html">pair_style</A> gran/history
<LI><A HREF = "pair_style.html">pair_style</A> gran/no_history
<LI><A HREF = "pair_style.html">pair_style</A> gran/hertzian
</UL>
<P>These commands implement fix options specific to granular systems:
</P>
<UL><LI><A HREF = "fix_freeze.html">fix freeze</A>
<LI><A HREF = "fix_pour.html">fix pour</A>
<LI><A HREF = "fix_viscous.html">fix viscous</A>
<LI><A HREF = "fix_wall_gran.html">fix wall/gran</A>
</UL>
<P>The fix style <I>freeze</I> zeroes both the force and torque of frozen
atoms, and should be used for granular system instead of the fix style
<I>setforce</I>.
</P>
<P>For computational efficiency, you can eliminate needless pairwise
computations between frozen atoms by using this command:
</P>
<UL><LI><A HREF = "neigh_modify.html">neigh_modify</A> exclude
</UL>
<HR>
-<A NAME = "4_7"></A><H4>4.7 TIP3P water model
+<A NAME = "howto_7"></A><H4>6.7 TIP3P water model
</H4>
<P>The TIP3P water model as implemented in CHARMM
<A HREF = "#MacKerell">(MacKerell)</A> specifies a 3-site rigid water molecule with
charges and Lennard-Jones parameters assigned to each of the 3 atoms.
In LAMMPS the <A HREF = "fix_shake.html">fix shake</A> command can be used to hold
the two O-H bonds and the H-O-H angle rigid. A bond style of
<I>harmonic</I> and an angle style of <I>harmonic</I> or <I>charmm</I> should also be
used.
</P>
<P>These are the additional parameters (in real units) to set for O and H
atoms and the water molecule to run a rigid TIP3P-CHARMM model with a
cutoff. The K values can be used if a flexible TIP3P model (without
fix shake) is desired. If the LJ epsilon and sigma for HH and OH are
set to 0.0, it corresponds to the original 1983 TIP3P model
<A HREF = "#Jorgensen">(Jorgensen)</A>.
</P>
<P>O mass = 15.9994<BR>
H mass = 1.008 <BR>
</P>
<P>O charge = -0.834<BR>
H charge = 0.417 <BR>
</P>
<P>LJ epsilon of OO = 0.1521<BR>
LJ sigma of OO = 3.1507<BR>
LJ epsilon of HH = 0.0460<BR>
LJ sigma of HH = 0.4000<BR>
LJ epsilon of OH = 0.0836<BR>
LJ sigma of OH = 1.7753 <BR>
</P>
<P>K of OH bond = 450<BR>
r0 of OH bond = 0.9572 <BR>
</P>
<P>K of HOH angle = 55<BR>
theta of HOH angle = 104.52 <BR>
</P>
<P>These are the parameters to use for TIP3P with a long-range Coulombic
solver (Ewald or PPPM in LAMMPS), see <A HREF = "#Price">(Price)</A> for details:
</P>
<P>O mass = 15.9994<BR>
H mass = 1.008 <BR>
</P>
<P>O charge = -0.830<BR>
H charge = 0.415 <BR>
</P>
<P>LJ epsilon of OO = 0.102<BR>
LJ sigma of OO = 3.188<BR>
LJ epsilon, sigma of OH, HH = 0.0 <BR>
</P>
<P>K of OH bond = 450<BR>
r0 of OH bond = 0.9572 <BR>
</P>
<P>K of HOH angle = 55<BR>
theta of HOH angle = 104.52 <BR>
</P>
<P>Wikipedia also has a nice article on <A HREF = "http://en.wikipedia.org/wiki/Water_model">water
models</A>.
</P>
<HR>
-<A NAME = "4_8"></A><H4>4.8 TIP4P water model
+<A NAME = "howto_8"></A><H4>6.8 TIP4P water model
</H4>
<P>The four-point TIP4P rigid water model extends the traditional
three-point TIP3P model by adding an additional site, usually
massless, where the charge associated with the oxygen atom is placed.
This site M is located at a fixed distance away from the oxygen along
the bisector of the HOH bond angle. A bond style of <I>harmonic</I> and an
angle style of <I>harmonic</I> or <I>charmm</I> should also be used.
</P>
<P>Currently, only a four-point model for long-range Coulombics is
implemented via the LAMMPS <A HREF = "pair_lj.html">pair style
lj/cut/coul/long/tip4p</A>. A cutoff version may be added
the future. For both models, the bond lengths and bond angles should
be held fixed using the <A HREF = "fix_shake.html">fix shake</A> command.
</P>
<P>These are the additional parameters (in real units) to set for O and H
atoms and the water molecule to run a rigid TIP4P model with a cutoff
<A HREF = "#Jorgensen">(Jorgensen)</A>. Note that the OM distance is specified in
the <A HREF = "pair_style.html">pair_style</A> command, not as part of the pair
coefficients.
</P>
<P>O mass = 15.9994<BR>
H mass = 1.008 <BR>
</P>
<P>O charge = -1.040<BR>
H charge = 0.520 <BR>
</P>
<P>r0 of OH bond = 0.9572<BR>
theta of HOH angle = 104.52 <BR>
</P>
<P>OM distance = 0.15 <BR>
</P>
<P>LJ epsilon of O-O = 0.1550<BR>
LJ sigma of O-O = 3.1536<BR>
LJ epsilon, sigma of OH, HH = 0.0 <BR>
</P>
<P>These are the parameters to use for TIP4P with a long-range Coulombic
solver (Ewald or PPPM in LAMMPS):
</P>
<P>O mass = 15.9994<BR>
H mass = 1.008 <BR>
</P>
<P>O charge = -1.0484<BR>
H charge = 0.5242 <BR>
</P>
<P>r0 of OH bond = 0.9572<BR>
theta of HOH angle = 104.52 <BR>
</P>
<P>OM distance = 0.1250 <BR>
</P>
<P>LJ epsilon of O-O = 0.16275<BR>
LJ sigma of O-O = 3.16435<BR>
LJ epsilon, sigma of OH, HH = 0.0 <BR>
</P>
<P>Wikipedia also has a nice article on <A HREF = "http://en.wikipedia.org/wiki/Water_model">water
models</A>.
</P>
<HR>
-<A NAME = "4_9"></A><H4>4.9 SPC water model
+<A NAME = "howto_9"></A><H4>6.9 SPC water model
</H4>
<P>The SPC water model specifies a 3-site rigid water molecule with
charges and Lennard-Jones parameters assigned to each of the 3 atoms.
In LAMMPS the <A HREF = "fix_shake.html">fix shake</A> command can be used to hold
the two O-H bonds and the H-O-H angle rigid. A bond style of
<I>harmonic</I> and an angle style of <I>harmonic</I> or <I>charmm</I> should also be
used.
</P>
<P>These are the additional parameters (in real units) to set for O and H
atoms and the water molecule to run a rigid SPC model.
</P>
<P>O mass = 15.9994<BR>
H mass = 1.008 <BR>
</P>
<P>O charge = -0.820<BR>
H charge = 0.410 <BR>
</P>
<P>LJ epsilon of OO = 0.1553<BR>
LJ sigma of OO = 3.166<BR>
LJ epsilon, sigma of OH, HH = 0.0 <BR>
</P>
<P>r0 of OH bond = 1.0<BR>
theta of HOH angle = 109.47 <BR>
</P>
<P>Note that as originally proposed, the SPC model was run with a 9
Angstrom cutoff for both LJ and Coulommbic terms. It can also be used
with long-range Coulombics (Ewald or PPPM in LAMMPS), without changing
any of the parameters above, though it becomes a different model in
that mode of usage.
</P>
<P>The SPC/E (extended) water model is the same, except
the partial charge assignemnts change:
</P>
<P>O charge = -0.8476<BR>
H charge = 0.4238 <BR>
</P>
<P>See the <A HREF = "#Berendsen">(Berendsen)</A> reference for more details on both
the SPC and SPC/E models.
</P>
<P>Wikipedia also has a nice article on <A HREF = "http://en.wikipedia.org/wiki/Water_model">water
models</A>.
</P>
<HR>
-<A NAME = "4_10"></A><H4>4.10 Coupling LAMMPS to other codes
+<A NAME = "howto_10"></A><H4>6.10 Coupling LAMMPS to other codes
</H4>
<P>LAMMPS is designed to allow it to be coupled to other codes. For
example, a quantum mechanics code might compute forces on a subset of
atoms and pass those forces to LAMMPS. Or a continuum finite element
(FE) simulation might use atom positions as boundary conditions on FE
nodal points, compute a FE solution, and return interpolated forces on
MD atoms.
</P>
<P>LAMMPS can be coupled to other codes in at least 3 ways. Each has
advantages and disadvantages, which you'll have to think about in the
context of your application.
</P>
<P>(1) Define a new <A HREF = "fix.html">fix</A> command that calls the other code. In
this scenario, LAMMPS is the driver code. During its timestepping,
the fix is invoked, and can make library calls to the other code,
which has been linked to LAMMPS as a library. This is the way the
<A HREF = "http://www.rpi.edu/~anderk5/lab">POEMS</A> package that performs constrained rigid-body motion on
groups of atoms is hooked to LAMMPS. See the
<A HREF = "fix_poems.html">fix_poems</A> command for more details. See <A HREF = "Section_modify.html">this
section</A> of the documentation for info on how to add
a new fix to LAMMPS.
</P>
<P>(2) Define a new LAMMPS command that calls the other code. This is
conceptually similar to method (1), but in this case LAMMPS and the
other code are on a more equal footing. Note that now the other code
is not called during the timestepping of a LAMMPS run, but between
runs. The LAMMPS input script can be used to alternate LAMMPS runs
with calls to the other code, invoked via the new command. The
<A HREF = "run.html">run</A> command facilitates this with its <I>every</I> option, which
makes it easy to run a few steps, invoke the command, run a few steps,
invoke the command, etc.
</P>
<P>In this scenario, the other code can be called as a library, as in
(1), or it could be a stand-alone code, invoked by a system() call
made by the command (assuming your parallel machine allows one or more
processors to start up another program). In the latter case the
stand-alone code could communicate with LAMMPS thru files that the
command writes and reads.
</P>
<P>See <A HREF = "Section_modify.html">this section</A> of the documentation for how to
add a new command to LAMMPS.
</P>
<P>(3) Use LAMMPS as a library called by another code. In this case the
other code is the driver and calls LAMMPS as needed. Or a wrapper
code could link and call both LAMMPS and another code as libraries.
Again, the <A HREF = "run.html">run</A> command has options that allow it to be
invoked with minimal overhead (no setup or clean-up) if you wish to do
multiple short runs, driven by another program.
</P>
<P>Examples of driver codes that call LAMMPS as a library are included in
the "couple" directory of the LAMMPS distribution; see couple/README
for more details:
</P>
<UL><LI>simple: simple driver programs in C++ and C which invoke LAMMPS as a
library
<LI>lammps_quest: coupling of LAMMPS and <A HREF = "http://dft.sandia.gov/Quest">Quest</A>, to run classical
MD with quantum forces calculated by a density functional code
<LI>lammps_spparks: coupling of LAMMPS and <A HREF = "http://www.sandia.gov/~sjplimp/spparks.html">SPPARKS</A>, to couple
a kinetic Monte Carlo model for grain growth using MD to calculate
strain induced across grain boundaries
</UL>
-<P><A HREF = "Section_start.html#2_4">This section</A> of the documentation describes
-how to build LAMMPS as a library. Once this is done, you can
-interface with LAMMPS either via C++, C, Fortran, or Python (or any
-other language that supports a vanilla C-like interface). For
+<P><A HREF = "Section_start.html#start_4">This section</A> of the documentation
+describes how to build LAMMPS as a library. Once this is done, you
+can interface with LAMMPS either via C++, C, Fortran, or Python (or
+any other language that supports a vanilla C-like interface). For
example, from C++ you could create one (or more) "instances" of
LAMMPS, pass it an input script to process, or execute individual
commands, all by invoking the correct class methods in LAMMPS. From C
or Fortran you can make function calls to do the same things. See
<A HREF = "Section_python.html">this section</A> of the manual for a description of
the Python wrapper provided with LAMMPS that operates through the
LAMMPS library interface.
</P>
<P>The files src/library.cpp and library.h contain the C-style interface
-to LAMMPS. See <A HREF = "Section_howto.html#4_19">this section</A> of the manual
+to LAMMPS. See <A HREF = "Section_howto.html#howto_19">this section</A> of the manual
for a description of the interface and how to extend it for your
needs.
</P>
<P>Note that the lammps_open() function that creates an instance of
LAMMPS takes an MPI communicator as an argument. This means that
instance of LAMMPS will run on the set of processors in the
communicator. Thus the calling code can run LAMMPS on all or a subset
of processors. For example, a wrapper script might decide to
alternate between LAMMPS and another code, allowing them both to run
on all the processors. Or it might allocate half the processors to
LAMMPS and half to the other code and run both codes simultaneously
before syncing them up periodically. Or it might instantiate multiple
instances of LAMMPS to perform different calculations.
</P>
<HR>
-<A NAME = "4_11"></A><H4>4.11 Visualizing LAMMPS snapshots
+<A NAME = "howto_11"></A><H4>6.11 Visualizing LAMMPS snapshots
</H4>
<P>LAMMPS itself does not do visualization, but snapshots from LAMMPS
simulations can be visualized (and analyzed) in a variety of ways.
</P>
<P>LAMMPS snapshots are created by the <A HREF = "dump.html">dump</A> command which can
create files in several formats. The native LAMMPS dump format is a
text file (see "dump atom" or "dump custom") which can be visualized
by the <A HREF = "Section_tools.html#xmovie">xmovie</A> program, included with the
LAMMPS package. This produces simple, fast 2d projections of 3d
systems, and can be useful for rapid debugging of simulation geometry
and atom trajectories.
</P>
<P>Several programs included with LAMMPS as auxiliary tools can convert
native LAMMPS dump files to other formats. See the
<A HREF = "Section_tools.html">Section_tools</A> doc page for details. The first is
the <A HREF = "Section_tools.html#charmm">ch2lmp tool</A>, which contains a
lammps2pdb Perl script which converts LAMMPS dump files into PDB
files. The second is the <A HREF = "Section_tools.html#arc">lmp2arc tool</A> which
converts LAMMPS dump files into Accelrys' Insight MD program files.
The third is the <A HREF = "Section_tools.html#cfg">lmp2cfg tool</A> which converts
LAMMPS dump files into CFG files which can be read into the
<A HREF = "http://mt.seas.upenn.edu/Archive/Graphics/A">AtomEye</A> visualizer.
</P>
<P>A Python-based toolkit distributed by our group can read native LAMMPS
dump files, including custom dump files with additional columns of
user-specified atom information, and convert them to various formats
or pipe them into visualization software directly. See the <A HREF = "http://www.sandia.gov/~sjplimp/pizza.html">Pizza.py
WWW site</A> for details. Specifically, Pizza.py can convert
LAMMPS dump files into PDB, XYZ, <A HREF = "http://www.ensight.com">Ensight</A>, and VTK formats.
Pizza.py can pipe LAMMPS dump files directly into the Raster3d and
RasMol visualization programs. Pizza.py has tools that do interactive
3d OpenGL visualization and one that creates SVG images of dump file
snapshots.
</P>
<P>LAMMPS can create XYZ files directly (via "dump xyz") which is a
simple text-based file format used by many visualization programs
including <A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD</A>.
</P>
<P>LAMMPS can create DCD files directly (via "dump dcd") which can be
read by <A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD</A> in conjunction with a CHARMM PSF file. Using this
form of output avoids the need to convert LAMMPS snapshots to PDB
files. See the <A HREF = "dump.html">dump</A> command for more information on DCD
files.
</P>
<P>LAMMPS can create XTC files directly (via "dump xtc") which is GROMACS
file format which can also be read by <A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD</A> for visualization.
See the <A HREF = "dump.html">dump</A> command for more information on XTC files.
</P>
<HR>
-<A NAME = "4_12"></A><H4>4.12 Triclinic (non-orthogonal) simulation boxes
+<A NAME = "howto_12"></A><H4>6.12 Triclinic (non-orthogonal) simulation boxes
</H4>
<P>By default, LAMMPS uses an orthogonal simulation box to encompass the
particles. The <A HREF = "boundary.html">boundary</A> command sets the boundary
conditions of the box (periodic, non-periodic, etc). The orthogonal
box has its "origin" at (xlo,ylo,zlo) and is defined by 3 edge vectors
starting from the origin given by <B>a</B> = (xhi-xlo,0,0); <B>b</B> =
(0,yhi-ylo,0); <B>c</B> = (0,0,zhi-zlo). The 6 parameters
(xlo,xhi,ylo,yhi,zlo,zhi) are defined at the time the simluation box
is created, e.g. 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>
commands. Additionally, LAMMPS defines box size parameters lx,ly,lz
where lx = xhi-xlo, and similarly in the y and z dimensions. The 6
parameters, as well as lx,ly,lz, can be output via the <A HREF = "thermo_style.html">thermo_style
custom</A> command.
</P>
<P>LAMMPS also allows simulations to be perfored in non-orthogonal
simulation boxes shaped as a parallelepiped with triclinic symmetry.
The parallelepiped has its "origin" at (xlo,ylo,zlo) and is defined by
3 edge vectors starting from the origin given by <B>a</B> = (xhi-xlo,0,0); <B>b</B>
= (xy,yhi-ylo,0); <B>c</B> = (xz,yz,zhi-zlo). <I>Xy,xz,yz</I> can be 0.0 or
positive or negative values and are called "tilt factors" because they
are the amount of displacement applied to faces of an originally
orthogonal box to transform it into the parallelepiped. Note that in
LAMMPS the triclinic simulation box edge vectors <B>a</B>, <B>b</B>, and <B>c</B> cannot be
arbitrary vectors. As indicated, <B>a</B> must be aligned with the x axis, <B>b</B>
must be in the xy plane, and <B>c</B> is arbitrary. However, this is not a
restriction since it is possible to rotate any set of 3 crystal basis
vectors so that they meet this restriction.
</P>
<P>The 9 parameters (xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) are defined at the
time the simluation box is created. This happens in one of 3 ways.
If the <A HREF = "create_box.html">create_box</A> command is used with a region of
style <I>prism</I>, then a triclinic box is setup. See the
<A HREF = "region.html">region</A> command for details. If the
<A HREF = "read_data.html">read_data</A> command is used to define the simulation
box, and the header of the data file contains a line with the "xy xz
yz" keyword, then a triclinic box is setup. See the
<A HREF = "read_data.html">read_data</A> command for details. Finally, if the
<A HREF = "read_restart.html">read_restart</A> command reads a restart file which
was written from a simulation using a triclinic box, then a triclinic
box will be setup for the restarted simulation.
</P>
<P>Note that you can define a triclinic box with all 3 tilt factors =
0.0, so that it is initially orthogonal. This is necessary if the box
will become non-orthogonal, e.g. due to the <A HREF = "fix_nh.html">fix npt</A> or
<A HREF = "fix_deform.html">fix deform</A> commands. Alternatively, you can use the
<A HREF = "change_box.html">change_box</A> command to convert a simulation box from
orthogonal to triclinic and vice versa.
</P>
<P>As with orthogonal boxes, LAMMPS defines triclinic box size parameters
lx,ly,lz where lx = xhi-xlo, and similarly in the y and z dimensions.
The 9 parameters, as well as lx,ly,lz, can be output via the
<A HREF = "thermo_style.html">thermo_style custom</A> command.
</P>
<P>To avoid extremely tilted boxes (which would be computationally
inefficient), no tilt factor can skew the box more than half the
distance of the parallel box length, which is the 1st dimension in the
tilt factor (x for xz). For example, if xlo = 2 and xhi = 12, then
the x box length is 10 and the xy tilt factor must be between -5 and
5. Similarly, both xz and yz must be between -(xhi-xlo)/2 and
+(yhi-ylo)/2. Note that this is not a limitation, since if the
maximum tilt factor is 5 (as in this example), then configurations
with tilt = ..., -15, -5, 5, 15, 25, ... are geometrically all
equivalent.
</P>
<P>Triclinic crystal structures are often defined using three lattice
constants <I>a</I>, <I>b</I>, and <I>c</I>, and three angles <I>alpha</I>, <I>beta</I> and
<I>gamma</I>. Note that in this nomenclature, the a, b, and c lattice constants
are the scalar lengths of the edge vectors <B>a</B>, <B>b</B>, and <B>c</B> defined
above. The
relationship between these 6 quantities (a,b,c,alpha,beta,gamma) and
the LAMMPS box sizes (lx,ly,lz) = (xhi-xlo,yhi-ylo,zhi-zlo) and tilt
factors (xy,xz,yz) is as follows:
</P>
<CENTER><IMG SRC = "Eqs/box.jpg">
</CENTER>
<P>The inverse relationship can be written as follows:
</P>
<CENTER><IMG SRC = "Eqs/box_inverse.jpg">
</CENTER>
<P>The values of <I>a</I>, <I>b</I>, <I>c</I> , <I>alpha</I>, <I>beta</I> , and <I>gamma</I> can be printed
out or accessed by computes using the
<A HREF = "thermo_style.html">thermo_style custom</A> keywords
<I>cella</I>, <I>cellb</I>, <I>cellc</I>, <I>cellalpha</I>, <I>cellbeta</I>, <I>cellgamma</I>,
respectively.
</P>
<P>As discussed on the <A HREF = "dump.html">dump</A> command doc page, when the BOX
BOUNDS for a snapshot is written to a dump file for a triclinic box,
an orthogonal bounding box which encloses the triclinic simulation box
is output, along with the 3 tilt factors (xy, xz, yz) of the triclinic
box, formatted as follows:
</P>
<PRE>ITEM: BOX BOUNDS xy xz yz
xlo_bound xhi_bound xy
ylo_bound yhi_bound xz
zlo_bound zhi_bound yz
</PRE>
<P>This bounding box is convenient for many visualization programs and is
calculated from the 9 triclinic box parameters
(xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) as follows:
</P>
<PRE>xlo_bound = xlo + MIN(0.0,xy,xz,xy+xz)
xhi_bound = xhi + MAX(0.0,xy,xz,xy+xz)
ylo_bound = ylo + MIN(0.0,yz)
yhi_bound = yhi + MAX(0.0,yz)
zlo_bound = zlo
zhi_bound = zhi
</PRE>
<P>These formulas can be inverted if you need to convert the bounding box
back into the triclinic box parameters, e.g. xlo = xlo_bound -
MIN(0.0,xy,xz,xy+xz).
</P>
<P>One use of triclinic simulation boxes is to model solid-state crystals
with triclinic symmetry. The <A HREF = "lattice.html">lattice</A> command can be
used with non-orthogonal basis vectors to define a lattice that will
tile a triclinic simulation box via the
<A HREF = "create_atoms.html">create_atoms</A> command.
</P>
<P>A second use is to run Parinello-Rahman dyanamics via the <A HREF = "fix_nh.html">fix
npt</A> command, which will adjust the xy, xz, yz tilt
factors to compensate for off-diagonal components of the pressure
tensor. The analalog for an <A HREF = "minimize.html">energy minimization</A> is
the <A HREF = "fix_box_relax.html">fix box/relax</A> command.
</P>
<P>A third use is to shear a bulk solid to study the response of the
material. The <A HREF = "fix_deform.html">fix deform</A> command can be used for
this purpose. It allows dynamic control of the xy, xz, yz tilt
factors as a simulation runs. This is discussed in the next section
on non-equilibrium MD (NEMD) simulations.
</P>
<HR>
-<A NAME = "4_13"></A><H4>4.13 NEMD simulations
+<A NAME = "howto_13"></A><H4>6.13 NEMD simulations
</H4>
<P>Non-equilibrium molecular dynamics or NEMD simulations are typically
used to measure a fluid's rheological properties such as viscosity.
In LAMMPS, such simulations can be performed by first setting up a
non-orthogonal simulation box (see the preceding Howto section).
</P>
<P>A shear strain can be applied to the simulation box at a desired
strain rate by using the <A HREF = "fix_deform.html">fix deform</A> command. The
<A HREF = "fix_nvt_sllod.html">fix nvt/sllod</A> command can be used to thermostat
the sheared fluid and integrate the SLLOD equations of motion for the
system. Fix nvt/sllod uses <A HREF = "compute_temp_deform.html">compute
temp/deform</A> to compute a thermal temperature
by subtracting out the streaming velocity of the shearing atoms. The
velocity profile or other properties of the fluid can be monitored via
the <A HREF = "fix_ave_spatial.html">fix ave/spatial</A> command.
</P>
<P>As discussed in the previous section on non-orthogonal simulation
boxes, the amount of tilt or skew that can be applied is limited by
LAMMPS for computational efficiency to be 1/2 of the parallel box
length. However, <A HREF = "fix_deform.html">fix deform</A> can continuously strain
a box by an arbitrary amount. As discussed in the <A HREF = "fix_deform.html">fix
deform</A> command, when the tilt value reaches a limit,
the box is re-shaped to the opposite limit which is an equivalent
tiling of periodic space. The strain rate can then continue to change
as before. In a long NEMD simulation these box re-shaping events may
occur many times.
</P>
<P>In a NEMD simulation, the "remap" option of <A HREF = "fix_deform.html">fix
deform</A> should be set to "remap v", since that is what
<A HREF = "fix_nvt_sllod.html">fix nvt/sllod</A> assumes to generate a velocity
profile consistent with the applied shear strain rate.
</P>
<P>An alternative method for calculating viscosities is provided via the
<A HREF = "fix_viscosity.html">fix viscosity</A> command.
</P>
<HR>
-<A NAME = "4_14"></A><H4>4.14 Extended spherical and aspherical particles
+<A NAME = "howto_14"></A><H4>6.14 Extended spherical and aspherical particles
</H4>
<P>Typical MD models treat atoms or particles as point masses.
Sometimes, however, it is desirable to have a model with finite-size
particles such as spheres or aspherical ellipsoids. The difference is
that such particles have a moment of inertia, rotational energy, and
angular momentum. Rotation is induced by torque from interactions
with other particles.
</P>
<P>LAMMPS has several options for running simulations with these kinds of
particles. The following aspects are discussed in turn:
</P>
<UL><LI>atom styles
<LI>pair potentials
<LI>time integration
<LI>computes, thermodynamics, and dump output
<LI>rigid bodies composed of extended particles
</UL>
<H5>Atom styles
</H5>
<P>There are 2 <A HREF = "atom_style.html">atom styles</A> that allow for definition of
finite-size particles: sphere and ellipsoid. The peri atom style also
treats particles as having a volume, but that is internal to the
<A HREF = "pair_peri.html">pair_style peri</A> potentials. The dipole atom style is
most often used in conjunction with finite-size particles.
</P>
<P>The sphere style defines particles that are spheriods and each
particle can have a unique diameter and mass (or density). These
particles store an angular velocity (omega) and can be acted upon by
torque. The "set" command can be used to modify the diameter and mass
of individual particles, after then are created.
</P>
<P>The ellipsoid style defines particles that are ellipsoids and thus can
be aspherical. Each particle has a shape, specified by 3 diameters,
and mass (or density). These particles store an angular momentum and
their orientation (quaternion), and can be acted upon by torque. They
do not store an angular velocity (omega), which can be in a different
direction than angular momentum, rather they compute it as needed.
The "set" command can be used to modify the diameter, orientation, and
mass of individual particles, after then are created. It also has a
brief explanation of what quaternions are.
</P>
<P>The dipole style does not define extended particles, but is often
used in conjunction with spherical particles, via a command like
</P>
<PRE>atom_style hybrid sphere dipole
</PRE>
<P>This is because when dipoles interact with each other, they induce
torques, and a particle must be extended (i.e. have a moment of
inertia) in order to respond and rotate. See the <A HREF = "atom_style.html">atom_style
dipole</A> command for details. The "set" command can be
used to modify the orientation and length of the dipole moment of
individual particles, after then are created.
</P>
<P>Note that if one of these atom styles is used (or multiple styles via
the <A HREF = "atom_style.html">atom_style hybrid</A> command), not all particles in
the system are required to be finite-size or aspherical. For example,
if the 3 shape parameters are set to the same value, the particle will
be a sphere rather than an ellipsoid. If the 3 shape parameters are
all set to 0.0 or if the diameter is set to 0.0, it will be a point
particle. If the length of the dipole moment is set to zero, the
particle will not have a point dipole associated with it. The pair
styles used to compute pairwise interactions will typically compute
the correct interaction in these simplified (cheaper) cases.
<A HREF = "pair_hybrid.html">Pair_style hybrid</A> can be used to insure the correct
interactions are computed for the appropriate style of interactions.
Likewise, using groups to partition particles (ellipsoids versus
spheres versus point particles) will allow you to use the appropriate
time integrators and temperature computations for each class of
particles. See the doc pages for various commands for details.
</P>
<P>Also note that for <A HREF = "dimension.html">2d simulations</A>, finite-size
spheres and ellipsoids are still treated as 3d particles, rather than
as circular disks or ellipses. This means they have the same moment
of inertia for a 3d extended object. When their temperature is
coomputed, the correct degrees of freedom are used for rotation in a
2d versus 3d system.
</P>
<H5>Pair potentials
</H5>
<P>When a system with extended particles is defined, the particles will
only rotate and experience torque if the force field computes such
interactions. These are the various <A HREF = "pair_style.html">pair styles</A>
that generate torque:
</P>
<UL><LI><A HREF = "pair_gran.html">pair_style gran/history</A>
<LI><A HREF = "pair_gran.html">pair_style gran/hertzian</A>
<LI><A HREF = "pair_gran.html">pair_style gran/no_history</A>
<LI><A HREF = "pair_dipole.html">pair_style dipole/cut</A>
<LI><A HREF = "pair_gayberne.html">pair_style gayberne</A>
<LI><A HREF = "pair_resquared.html">pair_style resquared</A>
<LI><A HREF = "pair_lubricate.html">pair_style lubricate</A>
</UL>
<P>The <A HREF = "pair_gran.html">granular pair styles</A> are used with spherical
particles. The <A HREF = "pair_dipole.html">dipole pair style</A> is used with
<A HREF = "atom_style.html">atom_style dipole</A>, which could be applied to
spherical or ellipsoidal particles. The <A HREF = "pair_gayberne.html">GayBerne</A>
and <A HREF = "pair_resquared.html">REsquared</A> potentials require ellipsoidal
particles, though they will also work if the 3 shape parameters are
the same (a sphere). The <A HREF = "pair_lubricate.html">lubrication potential</A>
works with spherical particles.
</P>
<H5>Time integration
</H5>
<P>There are 3 fixes that perform time integration on extended spherical
particles, meaning the integrators update the rotational orientation
and angular velocity or angular momentum of the particles:
</P>
<UL><LI><A HREF = "fix_nve_sphere.html">fix nve/sphere</A>
<LI><A HREF = "fix_nvt_sphere.html">fix nvt/sphere</A>
<LI><A HREF = "fix_npt_sphere.html">fix npt/sphere</A>
</UL>
<P>Likewise, there are 3 fixes that perform time integration on
ellipsoids as extended aspherical particles:
</P>
<UL><LI><A HREF = "fix_nve_asphere.html">fix nve/asphere</A>
<LI><A HREF = "fix_nvt_asphere.html">fix nvt/asphere</A>
<LI><A HREF = "fix_npt_asphere.html">fix npt/asphere</A>
</UL>
<P>The advantage of these fixes is that those which thermostat the
particles include the rotational degrees of freedom in the temperature
calculation and thermostatting. Other thermostats can be used with
fix nve/sphere or fix nve/asphere, such as fix langevin or fix
temp/berendsen, but those thermostats only operate on the
translational kinetic energy of the extended particles.
</P>
<P>Note that for mixtures of point and extended particles, you should
only use these integration fixes on <A HREF = "group.html">groups</A> which contain
extended particles.
</P>
<H5>Computes, thermodynamics, and dump output
</H5>
<P>There are 4 computes that calculate the temperature or rotational energy
of extended spherical or aspherical particles (ellipsoids):
</P>
<UL><LI><A HREF = "compute_temp_sphere.html">compute temp/sphere</A>
<LI><A HREF = "compute_temp_asphere.html">compute temp/asphere</A>
<LI><A HREF = "compute_erotate_sphere.html">compute erotate/sphere</A>
<LI><A HREF = "compute_erotate_asphere.html">compute erotate/asphere</A>
</UL>
<P>These include rotational degrees of freedom in their computation. If
you wish the thermodynamic output of temperature or pressure to use
one of these computes (e.g. for a system entirely composed of extended
particles), then the compute can be defined and the
<A HREF = "thermo_modify.html">thermo_modify</A> command used. Note that by
default thermodynamic quantities will be calculated with a temperature
that only includes translational degrees of freedom. See the
<A HREF = "thermo_style.html">thermo_style</A> command for details.
</P>
<P>The <A HREF = "dump.html">dump custom</A> command can output various attributes of
extended particles, including the dipole moment (mu), the angular
velocity (omega), the angular momentum (angmom), the quaternion
(quat), and the torque (tq) on the particle.
</P>
<H5>Rigid bodies composed of extended particles
</H5>
<P>The <A HREF = "fix_rigid.html">fix rigid</A> command treats a collection of
particles as a rigid body, computes its inertia tensor, sums the total
force and torque on the rigid body each timestep due to forces on its
constituent particles, and integrates the motion of the rigid body.
</P>
<P>If any of the constituent particles of a rigid body are extended
particles (spheres or ellipsoids), then their contribution to the
inertia tensor of the body is different than if they were point
particles. This means the rotational dynamics of the rigid body will
be different. Thus a model of a dimer is different if the dimer
consists of two point masses versus two extended sphereoids, even if
the two particles have the same mass. Extended particles that
experience torque due to their interaction with other particles will
also impart that torque to a rigid body they are part of.
</P>
<P>See the "fix rigid" command for example of complex rigid-body models
it is possible to define in LAMMPS.
</P>
<P>Note that the <A HREF = "fix_shake.html">fix shake</A> command can also be used to
treat 2, 3, or 4 particles as a rigid body, but it always assumes the
particles are point masses.
</P>
<HR>
-<A NAME = "4_15"></A><H4>4.15 Output from LAMMPS (thermo, dumps, computes, fixes, variables)
+<A NAME = "howto_15"></A><H4>6.15 Output from LAMMPS (thermo, dumps, computes, fixes, variables)
</H4>
<P>There are four basic kinds of LAMMPS output:
</P>
<UL><LI><A HREF = "thermo_style.html">Thermodynamic output</A>, which is a list
of quantities printed every few timesteps to the screen and logfile.
<LI><A HREF = "dump.html">Dump files</A>, which contain snapshots of atoms and various
per-atom values and are written at a specified frequency.
<LI>Certain fixes can output user-specified quantities to files: <A HREF = "fix_ave_time.html">fix
ave/time</A> for time averaging, <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A> for spatial averaging, and <A HREF = "fix_print.html">fix
print</A> for single-line output of
<A HREF = "variable.html">variables</A>. Fix print can also output to the
screen.
<LI><A HREF = "restart.html">Restart files</A>.
</UL>
<P>A simulation prints one set of thermodynamic output and (optionally)
restart files. It can generate any number of dump files and fix
output files, depending on what <A HREF = "dump.html">dump</A> and <A HREF = "fix.html">fix</A>
commands you specify.
</P>
<P>As discussed below, LAMMPS gives you a variety of ways to determine
what quantities are computed and printed when the thermodynamics,
dump, or fix commands listed above perform output. Throughout this
discussion, note that users can also <A HREF = "Section_modify.html">add their own computes and fixes
to LAMMPS</A> which can then generate values that can
then be output with these commands.
</P>
<P>The following sub-sections discuss different LAMMPS command related
to output and the kind of data they operate on and produce:
</P>
<UL><LI><A HREF = "#global">Global/per-atom/local data</A>
<LI><A HREF = "#scalar">Scalar/vector/array data</A>
<LI><A HREF = "#thermo">Thermodynamic output</A>
<LI><A HREF = "#dump">Dump file output</A>
<LI><A HREF = "#fixoutput">Fixes that write output files</A>
<LI><A HREF = "#computeoutput">Computes that process output quantities</A>
<LI><A HREF = "#fixoutput">Fixes that process output quantities</A>
<LI><A HREF = "#compute">Computes that generate values to output</A>
<LI><A HREF = "#fix">Fixes that generate values to output</A>
<LI><A HREF = "#variable">Variables that generate values to output</A>
<LI><A HREF = "#table">Summary table of output options and data flow between commands</A>
</UL>
<H5><A NAME = "global"></A>Global/per-atom/local data
</H5>
<P>Various output-related commands work with three different styles of
data: global, per-atom, or local. A global datum is one or more
system-wide values, e.g. the temperature of the system. A per-atom
datum is one or more values per atom, e.g. the kinetic energy of each
atom. Local datums are calculated by each processor based on the
atoms it owns, but there may be zero or more per atom, e.g. a list of
bond distances.
</P>
<H5><A NAME = "scalar"></A>Scalar/vector/array data
</H5>
<P>Global, per-atom, and local datums can each come in three kinds: a
single scalar value, a vector of values, or a 2d array of values. The
doc page for a "compute" or "fix" or "variable" that generates data
will specify both the style and kind of data it produces, e.g. a
per-atom vector.
</P>
<P>When a quantity is accessed, as in many of the output commands
discussed below, it can be referenced via the following bracket
notation, where ID in this case is the ID of a compute. The leading
"c_" would be replaced by "f_" for a fix, or "v_" for a variable:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >c_ID </TD><TD > entire scalar, vector, or array</TD></TR>
<TR><TD >c_ID[I] </TD><TD > one element of vector, one column of array</TD></TR>
<TR><TD >c_ID[I][J] </TD><TD > one element of array
</TD></TR></TABLE></DIV>
<P>In other words, using one bracket reduces the dimension of the data
once (vector -> scalar, array -> vector). Using two brackets reduces
the dimension twice (array -> scalar). Thus a command that uses
scalar values as input can typically also process elements of a vector
or array.
</P>
<H5><A NAME = "thermo"></A>Thermodynamic output
</H5>
<P>The frequency and format of thermodynamic output is set by the
<A HREF = "thermo.html">thermo</A>, <A HREF = "thermo_style.html">thermo_style</A>, and
<A HREF = "thermo_modify.html">thermo_modify</A> commands. The
<A HREF = "thermo_style.html">thermo_style</A> command also specifies what values
are calculated and written out. Pre-defined keywords can be specified
(e.g. press, etotal, etc). Three additional kinds of keywords can
also be specified (c_ID, f_ID, v_name), where a <A HREF = "compute.html">compute</A>
or <A HREF = "fix.html">fix</A> or <A HREF = "variable.html">variable</A> provides the value to be
output. In each case, the compute, fix, or variable must generate
global values for input to the <A HREF = "dump.html">thermo_style custom</A>
command.
</P>
<H5><A NAME = "dump"></A>Dump file output
</H5>
<P>Dump file output is specified by the <A HREF = "dump.html">dump</A> and
<A HREF = "dump_modify.html">dump_modify</A> commands. There are several
pre-defined formats (dump atom, dump xtc, etc).
</P>
<P>There is also a <A HREF = "dump.html">dump custom</A> format where the user
specifies what values are output with each atom. Pre-defined atom
attributes can be specified (id, x, fx, etc). Three additional kinds
of keywords can also be specified (c_ID, f_ID, v_name), where a
<A HREF = "compute.html">compute</A> or <A HREF = "fix.html">fix</A> or <A HREF = "variable.html">variable</A>
provides the values to be output. In each case, the compute, fix, or
variable must generate per-atom values for input to the <A HREF = "dump.html">dump
custom</A> command.
</P>
<P>There is also a <A HREF = "dump.html">dump local</A> format where the user specifies
what local values to output. A pre-defined index keyword can be
specified to enumuerate the local values. Two additional kinds of
keywords can also be specified (c_ID, f_ID), where a
<A HREF = "compute.html">compute</A> or <A HREF = "fix.html">fix</A> or <A HREF = "variable.html">variable</A>
provides the values to be output. In each case, the compute or fix
must generate local values for input to the <A HREF = "dump.html">dump local</A>
command.
</P>
<H5><A NAME = "fixoutput"></A>Fixes that write output files
</H5>
<P>Sevarl fixes take various quantities as input and can write output
files: <A HREF = "fix_ave_time.html">fix ave/time</A>, <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A>, <A HREF = "fix_ave_histo.html">fix ave/histo</A>,
<A HREF = "fix_ave_correlate.html">fix ave/correlate</A>, and <A HREF = "fix_print.html">fix
print</A>.
</P>
<P>The <A HREF = "fix_ave_time.html">fix ave/time</A> command enables direct output to
a file and/or time-averaging of global scalars or vectors. The user
specifies one or more quantities as input. These can be global
<A HREF = "compute.html">compute</A> values, global <A HREF = "fix.html">fix</A> values, or
<A HREF = "variable.html">variables</A> of any style except the atom style which
produces per-atom values. Since a variable can refer to keywords used
by the <A HREF = "thermo_style.html">thermo_style custom</A> command (like temp or
press) and individual per-atom values, a wide variety of quantities
can be time averaged and/or output in this way. If the inputs are one
or more scalar values, then the fix generate a global scalar or vector
of output. If the inputs are one or more vector values, then the fix
generates a global vector or array of output. The time-averaged
output of this fix can also be used as input to other output commands.
</P>
<P>The <A HREF = "fix_ave_spatial.html">fix ave/spatial</A> command enables direct
output to a file of spatial-averaged per-atom quantities like those
output in dump files, within 1d layers of the simulation box. The
per-atom quantities can be atom density (mass or number) or atom
attributes such as position, velocity, force. They can also be
per-atom quantities calculated by a <A HREF = "compute.html">compute</A>, by a
<A HREF = "fix.html">fix</A>, or by an atom-style <A HREF = "variable.html">variable</A>. The
spatial-averaged output of this fix can also be used as input to other
output commands.
</P>
<P>The <A HREF = "fix_ave_histo.html">fix ave/histo</A> command enables direct output
to a file of histogrammed quantities, which can be global or per-atom
or local quantities. The histogram output of this fix can also be
used as input to other output commands.
</P>
<P>The <A HREF = "fix_ave_histo.html">fix ave/correlate</A> command enables direct
output to a file of time-correlated quantities, which can be global
scalars. The correlation matrix output of this fix can also be used
as input to other output commands.
</P>
<P>The <A HREF = "fix_print.html">fix print</A> command can generate a line of output
written to the screen and log file or to a separate file, periodically
during a running simulation. The line can contain one or more
<A HREF = "variable.html">variable</A> values for any style variable except the atom
style). As explained above, variables themselves can contain
references to global values generated by <A HREF = "thermo_style.html">thermodynamic
keywords</A>, <A HREF = "compute.html">computes</A>,
<A HREF = "fix.html">fixes</A>, or other <A HREF = "variable.html">variables</A>, or to per-atom
values for a specific atom. Thus the <A HREF = "fix_print.html">fix print</A>
command is a means to output a wide variety of quantities separate
from normal thermodynamic or dump file output.
</P>
<H5><A NAME = "computeoutput"></A>Computes that process output quantities
</H5>
<P>The <A HREF = "compute_reduce.html">compute reduce</A> and <A HREF = "compute_reduce.html">compute
reduce/region</A> commands take one or more per-atom
or local vector quantities as inputs and "reduce" them (sum, min, max,
ave) to scalar quantities. These are produced as output values which
can be used as input to other output commands.
</P>
<P>The <A HREF = "compute_slice.html">compute slice</A> command take one or more global
vector or array quantities as inputs and extracts a subset of their
values to create a new vector or array. These are produced as output
values which can be used as input to other output commands.
</P>
<P>The <A HREF = "compute_property_atom.html">compute property/atom</A> command takes a
list of one or more pre-defined atom attributes (id, x, fx, etc) and
stores the values in a per-atom vector or array. These are produced
as output values which can be used as input to other output commands.
The list of atom attributes is the same as for the <A HREF = "dump.html">dump
custom</A> command.
</P>
<P>The <A HREF = "compute_property_local.html">compute property/local</A> command takes
a list of one or more pre-defined local attributes (bond info, angle
info, etc) and stores the values in a local vector or array. These
are produced as output values which can be used as input to other
output commands.
</P>
<P>The <A HREF = "compute_atom_molecule.html">compute atom/molecule</A> command takes a
list of one or more per-atom quantities (from a compute, fix, per-atom
variable) and sums the quantities on a per-molecule basis. It
produces a global vector or array as output values which can be used
as input to other output commands.
</P>
<H5><A NAME = "fixoutput"></A>Fixes that process output quantities
</H5>
<P>The <A HREF = "fix_ave_atom.html">fix ave/atom</A> command performs time-averaging
of per-atom vectors. The per-atom quantities can be atom attributes
such as position, velocity, force. They can also be per-atom
quantities calculated by a <A HREF = "compute.html">compute</A>, by a
<A HREF = "fix.html">fix</A>, or by an atom-style <A HREF = "variable.html">variable</A>. The
time-averaged per-atom output of this fix can be used as input to
other output commands.
</P>
<P>The <A HREF = "fix_store_state.html">fix store/state</A> command can archive one or
more per-atom attributes at a particular time, so that the old values
can be used in a future calculation or output. The list of atom
attributes is the same as for the <A HREF = "dump.html">dump custom</A> command,
including per-atom quantities calculated by a <A HREF = "compute.html">compute</A>,
by a <A HREF = "fix.html">fix</A>, or by an atom-style <A HREF = "variable.html">variable</A>.
The output of this fix can be used as input to other output commands.
</P>
<H5><A NAME = "compute"></A>Computes that generate values to output
</H5>
<P>Every <A HREF = "compute.html">compute</A> in LAMMPS produces either global or
per-atom or local values. The values can be scalars or vectors or
arrays of data. These values can be output using the other commands
described in this section. The doc page for each compute command
describes what it produces. Computes that produce per-atom or local
values have the word "atom" or "local" in their style name. Computes
without the word "atom" or "local" produce global values.
</P>
<H5><A NAME = "fix"></A>Fixes that generate values to output
</H5>
<P>Some <A HREF = "fix.html">fixes</A> in LAMMPS produces either global or per-atom or
local values which can be accessed by other commands. The values can
be scalars or vectors or arrays of data. These values can be output
using the other commands described in this section. The doc page for
each fix command tells whether it produces any output quantities and
describes them.
</P>
<H5><A NAME = "variable"></A>Variables that generate values to output
</H5>
<P>Every <A HREF = "variable.html">variables</A> defined in an input script generates
either a global scalar value or a per-atom vector (only atom-style
variables) when it is accessed. The formulas used to define equal-
and atom-style variables can contain references to the thermodynamic
keywords and to global and per-atom data generated by computes, fixes,
and other variables. The values generated by variables can be output
using the other commands described in this section.
</P>
<H5><A NAME = "table"></A>Summary table of output options and data flow between commands
</H5>
<P>This table summarizes the various commands that can be used for
generating output from LAMMPS. Each command produces output data of
some kind and/or writes data to a file. Most of the commands can take
data from other commands as input. Thus you can link many of these
commands together in pipeline form, where data produced by one command
is used as input to another command and eventually written to the
screen or to a file. Note that to hook two commands together the
output and input data types must match, e.g. global/per-atom/local
data and scalar/vector/array data.
</P>
<P>Also note that, as described above, when a command takes a scalar as
input, that could be an element of a vector or array. Likewise a
vector input could be a column of an array.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >Command</TD><TD > Input</TD><TD > Output</TD><TD ></TD></TR>
<TR><TD ><A HREF = "thermo_style.html">thermo_style custom</A></TD><TD > global scalars</TD><TD > screen, log file</TD><TD ></TD></TR>
<TR><TD ><A HREF = "dump.html">dump custom</A></TD><TD > per-atom vectors</TD><TD > dump file</TD><TD ></TD></TR>
<TR><TD ><A HREF = "dump.html">dump local</A></TD><TD > local vectors</TD><TD > dump file</TD><TD ></TD></TR>
<TR><TD ><A HREF = "fix_print.html">fix print</A></TD><TD > global scalar from variable</TD><TD > screen, file</TD><TD ></TD></TR>
<TR><TD ><A HREF = "print.html">print</A></TD><TD > global scalar from variable</TD><TD > screen</TD><TD ></TD></TR>
<TR><TD ><A HREF = "compute.html">computes</A></TD><TD > N/A</TD><TD > global/per-atom/local scalar/vector/array</TD><TD ></TD></TR>
<TR><TD ><A HREF = "fix.html">fixes</A></TD><TD > N/A</TD><TD > global/per-atom/local scalar/vector/array</TD><TD ></TD></TR>
<TR><TD ><A HREF = "variable.html">variables</A></TD><TD > global scalars, per-atom vectors</TD><TD > global scalar, per-atom vector</TD><TD ></TD></TR>
<TR><TD ><A HREF = "compute_reduce.html">compute reduce</A></TD><TD > per-atom/local vectors</TD><TD > global scalar/vector</TD><TD ></TD></TR>
<TR><TD ><A HREF = "compute_slice.html">compute slice</A></TD><TD > global vectors/arrays</TD><TD > global vector/array</TD><TD ></TD></TR>
<TR><TD ><A HREF = "compute_property_atom.html">compute property/atom</A></TD><TD > per-atom vectors</TD><TD > per-atom vector/array</TD><TD ></TD></TR>
<TR><TD ><A HREF = "compute_property_local.html">compute property/local</A></TD><TD > local vectors</TD><TD > local vector/array</TD><TD ></TD></TR>
<TR><TD ><A HREF = "compute_atom_molecule.html">compute atom/molecule</A></TD><TD > per-atom vectors</TD><TD > global vector/array</TD><TD ></TD></TR>
<TR><TD ><A HREF = "fix_ave_atom.html">fix ave/atom</A></TD><TD > per-atom vectors</TD><TD > per-atom vector/array</TD><TD ></TD></TR>
<TR><TD ><A HREF = "fix_ave_time.html">fix ave/time</A></TD><TD > global scalars/vectors</TD><TD > global scalar/vector/array, file</TD><TD ></TD></TR>
<TR><TD ><A HREF = "fix_ave_spatial.html">fix ave/spatial</A></TD><TD > per-atom vectors</TD><TD > global array, file</TD><TD ></TD></TR>
<TR><TD ><A HREF = "fix_ave_histo.html">fix ave/histo</A></TD><TD > global/per-atom/local scalars and vectors</TD><TD > global array, file</TD><TD ></TD></TR>
<TR><TD ><A HREF = "fix_ave_correlate.html">fix ave/correlate</A></TD><TD > global scalars</TD><TD > global array, file</TD><TD ></TD></TR>
<TR><TD ><A HREF = "fix_store_state.html">fix store/state</A></TD><TD > per-atom vectors</TD><TD > per-atom vector/array</TD><TD ></TD></TR>
<TR><TD >
</TD></TR></TABLE></DIV>
<HR>
-<A NAME = "4_16"></A><H4>4.16 Thermostatting, barostatting, and computing temperature
+<A NAME = "howto_16"></A><H4>6.16 Thermostatting, barostatting, and computing temperature
</H4>
<P>Thermostatting means controlling the temperature of particles in an MD
simulation. Barostatting means controlling the pressure. Since the
pressure includes a kinetic component due to particle velocities, both
these operations require calculation of the temperature. Typically a
target temperature (T) and/or pressure (P) is specified by the user,
and the thermostat or barostat attempts to equilibrate the system to
the requested T and/or P.
</P>
<P>Temperature is computed as kinetic energy divided by some number of
degrees of freedom (and the Boltzmann constant). Since kinetic energy
is a function of particle velocity, there is often a need to
distinguish between a particle's advection velocity (due to some
aggregate motiion of particles) and its thermal velocity. The sum of
the two is the particle's total velocity, but the latter is often what
is wanted to compute a temperature.
</P>
<P>LAMMPS has several options for computing temperatures, any of which
can be used in thermostatting and barostatting. These <A HREF = "compute.html">compute
commands</A> calculate temperature, and the <A HREF = "compute_pressure.html">compute
pressure</A> command calculates pressure.
</P>
<UL><LI><A HREF = "compute_temp.html">compute temp</A>
<LI><A HREF = "compute_temp_sphere.html">compute temp/sphere</A>
<LI><A HREF = "compute_temp_asphere.html">compute temp/asphere</A>
<LI><A HREF = "compute_temp_com.html">compute temp/com</A>
<LI><A HREF = "compute_temp_deform.html">compute temp/deform</A>
<LI><A HREF = "compute_temp_partial.html">compute temp/partial</A>
<LI><A HREF = "compute_temp_profile.html">compute temp/profile</A>
<LI><A HREF = "compute_temp_ramp.html">compute temp/ramp</A>
<LI><A HREF = "compute_temp_region.html">compute temp/region</A>
</UL>
<P>All but the first 3 calculate velocity biases (i.e. advection
velocities) that are removed when computing the thermal temperature.
<A HREF = "compute_temp_sphere.html">Compute temp/sphere</A> and <A HREF = "compute_temp_asphere.html">compute
temp/asphere</A> compute kinetic energy for
extended particles that includes rotational degrees of freedom. They
both allow, as an extra argument, which is another temperature compute
that subtracts a velocity bias. This allows the translational
velocity of extended spherical or aspherical particles to be adjusted
in prescribed ways.
</P>
<P>Thermostatting in LAMMPS is performed by <A HREF = "fix.html">fixes</A>, or in one
case by a pair style. Four thermostatting fixes are currently
available: Nose-Hoover (nvt), Berendsen, Langevin, and direct
rescaling (temp/rescale). Dissipative particle dynamics (DPD)
thermostatting can be invoked via the <I>dpd/tstat</I> pair style:
</P>
<UL><LI><A HREF = "fix_nh.html">fix nvt</A>
<LI><A HREF = "fix_nvt_sphere.html">fix nvt/sphere</A>
<LI><A HREF = "fix_nvt_asphere.html">fix nvt/asphere</A>
<LI><A HREF = "fix_nvt_sllod.html">fix nvt/sllod</A>
<LI><A HREF = "fix_temp_berendsen.html">fix temp/berendsen</A>
<LI><A HREF = "fix_langevin.html">fix langevin</A>
<LI><A HREF = "fix_temp_rescale.html">fix temp/rescale</A>
<LI><A HREF = "pair_dpd.html">pair_style dpd/tstat</A>
</UL>
<P><A HREF = "fix_nh.html">Fix nvt</A> only thermostats the translational velocity of
particles. <A HREF = "fix_nvt_sllod.html">Fix nvt/sllod</A> also does this, except
that it subtracts out a velocity bias due to a deforming box and
-integrates the SLLOD equations of motion. See the <A HREF = "#4_13">NEMD
+integrates the SLLOD equations of motion. See the <A HREF = "#howto_13">NEMD
simulations</A> section of this page for further details. <A HREF = "fix_nvt_sphere.html">Fix
nvt/sphere</A> and <A HREF = "fix_nvt_asphere.html">fix
nvt/asphere</A> thermostat not only translation
velocities but also rotational velocities for spherical and aspherical
particles.
</P>
<P>DPD thermostatting alters pairwise interactions in a manner analagous
to the per-particle thermostatting of <A HREF = "fix_langevin.html">fix
langevin</A>.
</P>
<P>Any of the thermostatting fixes can use temperature computes that
remove bias for two purposes: (a) computing the current temperature to
compare to the requested target temperature, and (b) adjusting only
the thermal temperature component of the particle's velocities. See
the doc pages for the individual fixes and for the
<A HREF = "fix_modify.html">fix_modify</A> command for instructions on how to assign
a temperature compute to a thermostatting fix. For example, you can
apply a thermostat to only the x and z components of velocity by using
it in conjunction with <A HREF = "compute_temp_partial.html">compute
temp/partial</A>.
</P>
<P>IMPORTANT NOTE: Only the nvt fixes perform time integration, meaning
they update the velocities and positions of particles due to forces
and velocities respectively. The other thermostat fixes only adjust
velocities; they do NOT perform time integration updates. Thus they
should be used in conjunction with a constant NVE integration fix such
as these:
</P>
<UL><LI><A HREF = "fix_nve.html">fix nve</A>
<LI><A HREF = "fix_nve_sphere.html">fix nve/sphere</A>
<LI><A HREF = "fix_nve_asphere.html">fix nve/asphere</A>
</UL>
<P>Barostatting in LAMMPS is also performed by <A HREF = "fix.html">fixes</A>. Two
barosttating methods are currently available: Nose-Hoover (npt and
nph) and Berendsen:
</P>
<UL><LI><A HREF = "fix_nh.html">fix npt</A>
<LI><A HREF = "fix_npt_sphere.html">fix npt/sphere</A>
<LI><A HREF = "fix_npt_asphere.html">fix npt/asphere</A>
<LI><A HREF = "fix_nh.html">fix nph</A>
<LI><A HREF = "fix_press_berendsen.html">fix press/berendsen</A>
</UL>
<P>The <A HREF = "fix_nh.html">fix npt</A> commands include a Nose-Hoover thermostat
and barostat. <A HREF = "fix_nh.html">Fix nph</A> is just a Nose/Hoover barostat;
it does no thermostatting. Both <A HREF = "fix_nh.html">fix nph</A> and <A HREF = "fix_press_berendsen.html">fix
press/bernendsen</A> can be used in conjunction
with any of the thermostatting fixes.
</P>
<P>As with the thermostats, <A HREF = "fix_nh.html">fix npt</A> and <A HREF = "fix_nh.html">fix
nph</A> only use translational motion of the particles in
computing T and P and performing thermo/barostatting. <A HREF = "fix_npt_sphere.html">Fix
npt/sphere</A> and <A HREF = "fix_npt_asphere.html">fix
npt/asphere</A> thermo/barostat using not only
translation velocities but also rotational velocities for spherical
and aspherical particles.
</P>
<P>All of the barostatting fixes use the <A HREF = "compute_pressure.html">compute
pressure</A> compute to calculate a current
pressure. By default, this compute is created with a simple <A HREF = "compute_temp.html">compute
temp</A> (see the last argument of the <A HREF = "compute_pressure.html">compute
pressure</A> command), which is used to calculated
the kinetic componenet of the pressure. The barostatting fixes can
also use temperature computes that remove bias for the purpose of
computing the kinetic componenet which contributes to the current
pressure. See the doc pages for the individual fixes and for the
<A HREF = "fix_modify.html">fix_modify</A> command for instructions on how to assign
a temperature or pressure compute to a barostatting fix.
</P>
<P>IMPORTANT NOTE: As with the thermostats, the Nose/Hoover methods (<A HREF = "fix_nh.html">fix
npt</A> and <A HREF = "fix_nh.html">fix nph</A>) perform time
integration. <A HREF = "fix_press_berendsen.html">Fix press/berendsen</A> does NOT,
so it should be used with one of the constant NVE fixes or with one of
the NVT fixes.
</P>
<P>Finally, thermodynamic output, which can be setup via the
<A HREF = "thermo_style.html">thermo_style</A> command, often includes temperature
and pressure values. As explained on the doc page for the
<A HREF = "thermo_style.html">thermo_style</A> command, the default T and P are
setup by the thermo command itself. They are NOT the ones associated
with any thermostatting or barostatting fix you have defined or with
any compute that calculates a temperature or pressure. Thus if you
want to view these values of T and P, you need to specify them
explicitly via a <A HREF = "thermo_style.html">thermo_style custom</A> command. Or
you can use the <A HREF = "thermo_modify.html">thermo_modify</A> command to
re-define what temperature or pressure compute is used for default
thermodynamic output.
</P>
<HR>
-<A NAME = "4_17"></A><H4>4.17 Walls
+<A NAME = "howto_17"></A><H4>6.17 Walls
</H4>
<P>Walls in an MD simulation are typically used to bound particle motion,
i.e. to serve as a boundary condition.
</P>
<P>Walls in LAMMPS can be of rough (made of particles) or idealized
surfaces. Ideal walls can be smooth, generating forces only in the
normal direction, or frictional, generating forces also in the
tangential direction.
</P>
<P>Rough walls, built of particles, can be created in various ways. The
particles themselves can be generated like any other particle, via the
<A HREF = "lattice.html">lattice</A> and <A HREF = "create_atoms.html">create_atoms</A> commands,
or read in via the <A HREF = "read_data.html">read_data</A> command.
</P>
<P>Their motion can be constrained by many different commands, so that
they do not move at all, move together as a group at constant velocity
or in response to a net force acting on them, move in a prescribed
fashion (e.g. rotate around a point), etc. Note that if a time
integration fix like <A HREF = "fix_nve.html">fix nve</A> or <A HREF = "fix_nh.html">fix nvt</A>
is not used with the group that contains wall particles, their
positions and velocities will not be updated.
</P>
<UL><LI><A HREF = "fix_aveforce.html">fix aveforce</A> - set force on particles to average value, so they move together
<LI><A HREF = "fix_setforce.html">fix setforce</A> - set force on particles to a value, e.g. 0.0
<LI><A HREF = "fix_freeze.html">fix freeze</A> - freeze particles for use as granular walls
<LI><A HREF = "fix_nve_noforce.html">fix nve/noforce</A> - advect particles by their velocity, but without force
<LI><A HREF = "fix_move.html">fix move</A> - prescribe motion of particles by a linear velocity, oscillation, rotation, variable
</UL>
<P>The <A HREF = "fix_move.html">fix move</A> command offers the most generality, since
the motion of individual particles can be specified with
<A HREF = "variable.html">variable</A> formula which depends on time and/or the
particle position.
</P>
<P>For rough walls, it may be useful to turn off pairwise interactions
between wall particles via the <A HREF = "neigh_modify.html">neigh_modify
exclude</A> command.
</P>
<P>Rough walls can also be created by specifying frozen particles that do
not move and do not interact with mobile particles, and then tethering
other particles to the fixed particles, via a <A HREF = "bond_style.html">bond</A>.
The bonded particles do interact with other mobile particles.
</P>
<P>Idealized walls can be specified via several fix commands. <A HREF = "fix_wall_gran.html">Fix
wall/gran</A> creates frictional walls for use with
granular particles; all the other commands create smooth walls.
</P>
<UL><LI><A HREF = "fix_wall_reflect.html">fix wall/reflect</A> - reflective flat walls
<LI><A HREF = "fix_wall.html">fix wall/lj93</A> - flat walls, with Lennard-Jones 9/3 potential
<LI><A HREF = "fix_wall.html">fix wall/lj126</A> - flat walls, with Lennard-Jones 12/6 potential
<LI><A HREF = "fix_wall.html">fix wall/colloid</A> - flat walls, with <A HREF = "pair_colloid.html">pair_style colloid</A> potential
<LI><A HREF = "fix_wall.html">fix wall/harmonic</A> - flat walls, with repulsive harmonic spring potential
<LI><A HREF = "fix_wall_region.html">fix wall/region</A> - use region surface as wall
<LI><A HREF = "fix_wall_gran.html">fix wall/gran</A> - flat or curved walls with <A HREF = "pair_gran.html">pair_style granular</A> potential
</UL>
<P>The <I>lj93</I>, <I>lj126</I>, <I>colloid</I>, and <I>harmonic</I> styles all allow the
flat walls to move with a constant velocity, or oscillate in time.
The <A HREF = "fix_wall_region.html">fix wall/region</A> command offers the most
generality, since the region surface is treated as a wall, and the
geometry of the region can be a simple primitive volume (e.g. a
sphere, or cube, or plane), or a complex volume made from the union
and intersection of primitive volumes. <A HREF = "region.html">Regions</A> can also
specify a volume "interior" or "exterior" to the specified primitive
shape or <I>union</I> or <I>intersection</I>. <A HREF = "region.html">Regions</A> can also be
"dynamic" meaning they move with constant velocity, oscillate, or
rotate.
</P>
<P>The only frictional idealized walls currently in LAMMPS are flat or
curved surfaces specified by the <A HREF = "fix_wall_gran.html">fix wall/gran</A>
command. At some point we plan to allow regoin surfaces to be used as
frictional walls, as well as triangulated surfaces.
</P>
<HR>
-<A NAME = "4_18"></A><H4>4.18 Elastic constants
+<A NAME = "howto_18"></A><H4>6.18 Elastic constants
</H4>
<P>Elastic constants characterize the stiffness of a material. The formal
definition is provided by the linear relation that holds between the
stress and strain tensors in the limit of infinitesimal deformation.
In tensor notation, this is expressed as s_ij = C_ijkl * e_kl, where
the repeated indices imply summation. s_ij are the elements of the
symmetric stress tensor. e_kl are the elements of the symmetric strain
tensor. C_ijkl are the elements of the fourth rank tensor of elastic
constants. In three dimensions, this tensor has 3^4=81 elements. Using
Voigt notation, the tensor can be written as a 6x6 matrix, where C_ij
is now the derivative of s_i w.r.t. e_j. Because s_i is itself a
derivative w.r.t. e_i, it follows that C_ij is also symmetric, with at
most 7*6/2 = 21 distinct elements.
</P>
<P>At zero temperature, it is easy to estimate these derivatives by
deforming the cell in one of the six directions using the command
<A HREF = "displace_box.html">displace_box</A> and measuring the change in the
stress tensor. A general-purpose script that does this is given in the
examples/elastic directory described in <A HREF = "Section_example.html">this
section</A>.
</P>
<P>Calculating elastic constants at finite temperature is more
challenging, because it is necessary to run a simulation that perfoms
time averages of differential properties. One way to do this is to
measure the change in average stress tensor in an NVT simulations when
the cell volume undergoes a finite deformation. In order to balance
the systematic and statistical errors in this method, the magnitude of
the deformation must be chosen judiciously, and care must be taken to
fully equilibrate the deformed cell before sampling the stress
tensor. Another approach is to sample the triclinic cell fluctuations
that occur in an NPT simulation. This method can also be slow to
converge and requires careful post-processing <A HREF = "#Shinoda">(Shinoda)</A>
</P>
<HR>
-<A NAME = "4_19"></A><H4>4.19 Library interface to LAMMPS
+<A NAME = "howto_19"></A><H4>6.19 Library interface to LAMMPS
</H4>
-<P>As described in <A HREF = "Section_start.html#2_4">this section</A>, LAMMPS can be
-built as a library, so that it can be called by another code, used in
-a <A HREF = "Section_howto.html#4_10">coupled manner</A> with other codes, or driven
-through a <A HREF = "Section_python.html">Python interface</A>.
+<P>As described in <A HREF = "Section_start.html#start_4">this section</A>, LAMMPS can
+be built as a library, so that it can be called by another code, used
+in a <A HREF = "Section_howto.html#howto_10">coupled manner</A> with other codes, or
+driven through a <A HREF = "Section_python.html">Python interface</A>.
</P>
<P>All of these methodologies use a C-style interface to LAMMPS that is
provided in the files src/library.cpp and src/library.h. The
functions therein have a C-style argument list, but contain C++ code
you could write yourself in a C++ application that was invoking LAMMPS
directly. The C++ code in the functions illustrates how to invoke
internal LAMMPS operations. Note that LAMMPS classes are defined
within a LAMMPS namespace (LAMMPS_NS) if you use them from another C++
application.
</P>
<P>Library.cpp contains these 4 functions:
</P>
<PRE>void lammps_open(int, char **, MPI_Comm, void **);
void lammps_close(void *);
void lammps_file(void *, char *);
char *lammps_command(void *, char *);
</PRE>
<P>The lammps_open() function is used to initialize LAMMPS, passing in a
-list of strings as if they were <A HREF = "#2_6">command-line arguments</A> when
-LAMMPS is run in stand-alone mode from the command line, and a MPI
-communicator for LAMMPS to run under. It returns a ptr to the LAMMPS
-object that is created, and which is used in subsequent library calls.
-The lammps_open() function can be called multiple times, to create
+list of strings as if they were <A HREF = "Section_start.html#start_6">command-line
+arguments</A> when LAMMPS is run in
+stand-alone mode from the command line, and a MPI communicator for
+LAMMPS to run under. It returns a ptr to the LAMMPS object that is
+created, and which is used in subsequent library calls. The
+lammps_open() function can be called multiple times, to create
multiple instances of LAMMPS.
</P>
<P>LAMMPS will run on the set of processors in the communicator. This
means the calling code can run LAMMPS on all or a subset of
processors. For example, a wrapper script might decide to alternate
between LAMMPS and another code, allowing them both to run on all the
processors. Or it might allocate half the processors to LAMMPS and
half to the other code and run both codes simultaneously before
syncing them up periodically. Or it might instantiate multiple
instances of LAMMPS to perform different calculations.
</P>
<P>The lammps_close() function is used to shut down an instance of LAMMPS
and free all its memory.
</P>
<P>The lammps_file() and lammps_command() functions are used to pass a
file or string to LAMMPS as if it were an input script or single
command in an input script. Thus the calling code can read or
generate a series of LAMMPS commands one line at a time and pass it
thru the library interface to setup a problem and then run it,
interleaving the lammps_command() calls with other calls to extract
information from LAMMPS, perform its own operations, or call another
code's library.
</P>
<P>Other useful functions are also included in library.cpp. For example:
</P>
<PRE>void *lammps_extract_global(void *, char *)
void *lammps_extract_atom(void *, char *)
void *lammps_extract_compute(void *, char *, int, int)
void *lammps_extract_fix(void *, char *, int, int, int, int)
void *lammps_extract_variable(void *, char *, char *)
int lammps_get_natoms(void *)
void lammps_get_coords(void *, double *)
void lammps_put_coords(void *, double *)
</PRE>
<P>These can extract various global or per-atom quantities from LAMMPS as
well as values calculated by a compute, fix, or variable. The "get"
and "put" operations can retrieve and reset atom coordinates.
See the library.cpp file and its associated header file library.h for
details.
</P>
<P>The key idea of the library interface is that you can write any
functions you wish to define how your code talks to LAMMPS and add
them to src/library.cpp and src/library.h, as well as to the <A HREF = "Section_python.html">Python
interface</A>. The routines you add can access
or change any LAMMPS data you wish. The couple and python directories
have example C++ and C and Python codes which show how a driver code
can link to LAMMPS as a library, run LAMMPS on a subset of processors,
grab data from LAMMPS, change it, and put it back into LAMMPS.
</P>
<HR>
-<A NAME = "4_20"></A><H4>4.20 Calculating thermal conductivity
+<A NAME = "howto_20"></A><H4>6.20 Calculating thermal conductivity
</H4>
<P>The thermal conductivity kappa of a material can be measured in at
-least 3 ways using various options in LAMMPS. (See <A HREF = "Section_howto.html#4_21">this
+least 3 ways using various options in LAMMPS. (See <A HREF = "Section_howto.html#howto_21">this
section</A> of the manual for an analogous
discussion for viscosity). The thermal conducitivity tensor kappa is
a measure of the propensity of a material to transmit heat energy in a
diffusive manner as given by Fourier's law
</P>
<P>J = -kappa grad(T)
</P>
<P>where J is the heat flux in units of energy per area per time and
grad(T) is the spatial gradient of temperature. The thermal
conductivity thus has units of energy per distance per time per degree
K and is often approximated as an isotropic quantity, i.e. as a
scalar.
</P>
<P>The first method is to setup two thermostatted regions at opposite
ends of a simulation box, or one in the middle and one at the end of a
periodic box. By holding the two regions at different temperatures
-with a <A HREF = "Section_howto.html#4_13">thermostatting fix</A>, the energy added
+with a <A HREF = "Section_howto.html#howto_13">thermostatting fix</A>, the energy added
to the hot region should equal the energy subtracted from the cold
region and be proportional to the heat flux moving between the
regions. See the paper by <A HREF = "#Ikeshoji">Ikeshoji and Hafskjold</A> for
details of this idea. Note that thermostatting fixes such as <A HREF = "fix_nh.html">fix
nvt</A>, <A HREF = "fix_langevin.html">fix langevin</A>, and <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A> store the cumulative energy they
add/subtract. Alternatively, the <A HREF = "fix_heat.html">fix heat</A> command can
used in place of thermostats on each of two regions, and the resulting
temperatures of the two regions monitored with the "compute
temp/region" command or the temperature profile of the intermediate
region monitored with the <A HREF = "fix_ave_spatial.html">fix ave/spatial</A> and
<A HREF = "compute_ke_atom.html">compute ke/atom</A> commands.
</P>
<P>The second method is to perform a reverse non-equilibrium MD
simulation using the <A HREF = "fix_thermal_conductivity.html">fix
thermal/conductivity</A> command which
implements the rNEMD algorithm of Muller-Plathe. Kinetic energy is
swapped between atoms in two different layers of the simulation box.
This induces a temperature gradient between the two layers which can
be monitored with the <A HREF = "fix_ave_spatial.html">fix ave/spatial</A> and
<A HREF = "compute_ke_atom.html">compute ke/atom</A> commands. The fix tallies the
cumulative energy transfer that it performs. See the <A HREF = "fix_thermal_conductivity.html">fix
thermal/conductivity</A> command for
details.
</P>
<P>The third method is based on the Green-Kubo (GK) formula which relates
the ensemble average of the auto-correlation of the heat flux to
kappa. The heat flux can be calculated from the fluctuations of
per-atom potential and kinetic energies and per-atom stress tensor in
a steady-state equilibrated simulation. This is in contrast to the
two preceding non-equilibrium methods, where energy flows continuously
between hot and cold regions of the simulation box.
</P>
<P>The <A HREF = "compute_heat_flux.html">compute heat/flux</A> command can calculate
the needed heat flux and describes how to implement the Green_Kubo
formalism using additional LAMMPS commands, such as the <A HREF = "fix_ave_correlate.html">fix
ave/correlate</A> command to calculate the needed
auto-correlation. See the doc page for the <A HREF = "compute_heat_flux.html">compute
heat/flux</A> command for an example input script
that calculates the thermal conductivity of solid Ar via the GK
formalism.
</P>
<HR>
-<A NAME = "4_21"></A><H4>4.21 Calculating viscosity
+<A NAME = "howto_21"></A><H4>6.21 Calculating viscosity
</H4>
<P>The shear viscosity eta of a fluid can be measured in at least 3 ways
-using various options in LAMMPS. (See <A HREF = "Section_howto.html#4_20">this
+using various options in LAMMPS. (See <A HREF = "Section_howto.html#howto_20">this
section</A> of the manual for an analogous
discussion for thermal conductivity). Eta is a measure of the
propensity of a fluid to transmit momentum in a direction
perpendicular to the direction of velocity or momentum flow.
Alternatively it is the resistance the fluid has to being sheared. It
is given by
</P>
<P>J = -eta grad(Vstream)
</P>
<P>where J is the momentum flux in units of momentum per area per time.
and grad(Vstream) is the spatial gradient of the velocity of the fluid
moving in another direction, normal to the area through which the
momentum flows. Viscosity thus has units of pressure-time.
</P>
<P>The first method is to perform a non-equlibrium MD (NEMD) simulation
by shearing the simulation box via the <A HREF = "fix_deform.html">fix deform</A>
command, and using the <A HREF = "fix_nvt_sllod.html">fix nvt/sllod</A> command to
thermostat the fluid via the SLLOD equations of motion. The velocity
profile setup in the fluid by this procedure can be monitored by the
<A HREF = "fix_ave_spatial.html">fix ave/spatial</A> command, which determines
grad(Vstream) in the equation above. E.g. the derivative in the
y-direction of the Vx component of fluid motion or grad(Vstream) =
dVx/dy. In this case, the Pxy off-diagonal component of the pressure
or stress tensor, as calculated by the <A HREF = "compute_pressure.html">compute
pressure</A> command, can also be monitored, which
-is the J term in the equation above. See <A HREF = "Section_howto.html#4_13">this
+is the J term in the equation above. See <A HREF = "Section_howto.html#howto_13">this
section</A> of the manual for details on NEMD
simulations.
</P>
<P>The second method is to perform a reverse non-equilibrium MD
simulation using the <A HREF = "fix_viscosity.html">fix viscosity</A> command which
implements the rNEMD algorithm of Muller-Plathe. Momentum in one
dimension is swapped between atoms in two different layers of the
simulation box in a different dimension. This induces a velocity
gradient which can be monitored with the <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A> command. The fix tallies the
cummulative momentum transfer that it performs. See the <A HREF = "fix_viscosity.html">fix
viscosity</A> command for details.
</P>
<P>The third method is based on the Green-Kubo (GK) formula which relates
the ensemble average of the auto-correlation of the stress/pressure
tensor to eta. This can be done in a steady-state equilibrated
simulation which is in contrast to the two preceding non-equilibrium
methods, where momentum flows continuously through the simulation box.
</P>
<P>Here is an example input script that calculates the viscosity of
liquid Ar via the GK formalism:
</P>
<PRE># Sample LAMMPS input script for viscosity of liquid Ar
</PRE>
<PRE>units real
variable T equal 86.4956
variable V equal vol
variable dt equal 4.0
variable p equal 400 # correlation length
variable s equal 5 # sample interval
variable d equal $p*$s # dump interval
</PRE>
<PRE># convert from LAMMPS real units to SI
</PRE>
<PRE>variable kB equal 1.3806504e-23 # [J/K/</B> Boltzmann
variable atm2Pa equal 101325.0
variable A2m equal 1.0e-10
variable fs2s equal 1.0e-15
variable convert equal ${atm2Pa}*${atm2Pa}*${fs2s}*${A2m}*${A2m}*${A2m}
</PRE>
<PRE># setup problem
</PRE>
<PRE>dimension 3
boundary p p p
lattice fcc 5.376 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
region box block 0 4 0 4 0 4
create_box 1 box
create_atoms 1 box
mass 1 39.948
pair_style lj/cut 13.0
pair_coeff * * 0.2381 3.405
timestep ${dt}
thermo $d
</PRE>
<PRE># equilibration and thermalization
</PRE>
<PRE>velocity all create $T 102486 mom yes rot yes dist gaussian
fix NVT all nvt temp $T $T 10 drag 0.2
run 8000
</PRE>
<PRE># viscosity calculation, switch to NVE if desired
</PRE>
<PRE>#unfix NVT
#fix NVE all nve
</PRE>
<PRE>reset_timestep 0
variable pxy equal pxy
variable pxz equal pxz
variable pyz equal pyz
fix SS all ave/correlate $s $p $d &
v_pxy v_pxz v_pyz type auto file S0St.dat ave running
variable scale equal ${convert}/(${kB}*$T)*$V*$s*${dt}
variable v11 equal trap(f_SS[3/</B>)*${scale}
variable v22 equal trap(f_SS[4/</B>)*${scale}
variable v33 equal trap(f_SS[5/</B>)*${scale}
thermo_style custom step temp press v_pxy v_pxz v_pyz v_v11 v_v22 v_v33
run 100000
variable v equal (v_v11+v_v22+v_v33)/3.0
variable ndens equal count(all)/vol
print "average viscosity: $v [Pa.s/</B> @ $T K, ${ndens} /A^3"
</PRE>
<HR>
<HR>
<A NAME = "Berendsen"></A>
<P><B>(Berendsen)</B> Berendsen, Grigera, Straatsma, J Phys Chem, 91,
6269-6271 (1987).
</P>
<A NAME = "Cornell"></A>
<P><B>(Cornell)</B> Cornell, Cieplak, Bayly, Gould, Merz, Ferguson,
Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
</P>
<A NAME = "Horn"></A>
<P><B>(Horn)</B> Horn, Swope, Pitera, Madura, Dick, Hura, and Head-Gordon,
J Chem Phys, 120, 9665 (2004).
</P>
<A NAME = "Ikeshoji"></A>
<P><B>(Ikeshoji)</B> Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261
(1994).
</P>
<A NAME = "MacKerell"></A>
<P><B>(MacKerell)</B> MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
</P>
<A NAME = "Mayo"></A>
<P><B>(Mayo)</B> Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990).
</P>
<A NAME = "Jorgensen"></A>
<P><B>(Jorgensen)</B> Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem
Phys, 79, 926 (1983).
</P>
<A NAME = "Price"></A>
<P><B>(Price)</B> Price and Brooks, J Chem Phys, 121, 10096 (2004).
</P>
<A NAME = "Shinoda"></A>
<P><B>(Shinoda)</B> Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
</P>
</HTML>
diff --git a/doc/Section_howto.txt b/doc/Section_howto.txt
index b6337c7de..65131975f 100644
--- a/doc/Section_howto.txt
+++ b/doc/Section_howto.txt
@@ -1,1937 +1,1938 @@
-"Previous Section"_Section_commands.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_example.html :c
+"Previous Section"_Section_accelerate.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_example.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
-4. How-to discussions :h3
+6. How-to discussions :h3
The following sections describe how to use various options within
LAMMPS.
-4.1 "Restarting a simulation"_#4_1
-4.2 "2d simulations"_#4_2
-4.3 "CHARMM, AMBER, and DREIDING force fields"_#4_3
-4.4 "Running multiple simulations from one input script"_#4_4
-4.5 "Multi-replica simulations"_#4_5
-4.6 "Granular models"_#4_6
-4.7 "TIP3P water model"_#4_7
-4.8 "TIP4P water model"_#4_8
-4.9 "SPC water model"_#4_9
-4.10 "Coupling LAMMPS to other codes"_#4_10
-4.11 "Visualizing LAMMPS snapshots"_#4_11
-4.12 "Triclinic (non-orthogonal) simulation boxes"_#4_12
-4.13 "NEMD simulations"_#4_13
-4.14 "Extended spherical and aspherical particles"_#4_14
-4.15 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_#4_15
-4.16 "Thermostatting, barostatting and computing temperature"_#4_16
-4.17 "Walls"_#4_17
-4.18 "Elastic constants"_#4_18
-4.19 "Library interface to LAMMPS"_#4_19
-4.20 "Calculating thermal conductivity"_#4_20
-4.21 "Calculating viscosity"_#4_21 :all(b)
+6.1 "Restarting a simulation"_#howto_1
+6.2 "2d simulations"_#howto_2
+6.3 "CHARMM, AMBER, and DREIDING force fields"_#howto_3
+6.4 "Running multiple simulations from one input script"_#howto_4
+6.5 "Multi-replica simulations"_#howto_5
+6.6 "Granular models"_#howto_6
+6.7 "TIP3P water model"_#howto_7
+6.8 "TIP4P water model"_#howto_8
+6.9 "SPC water model"_#howto_9
+6.10 "Coupling LAMMPS to other codes"_#howto_10
+6.11 "Visualizing LAMMPS snapshots"_#howto_11
+6.12 "Triclinic (non-orthogonal) simulation boxes"_#howto_12
+6.13 "NEMD simulations"_#howto_13
+6.14 "Extended spherical and aspherical particles"_#howto_14
+6.15 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_#howto_15
+6.16 "Thermostatting, barostatting and computing temperature"_#howto_16
+6.17 "Walls"_#howto_17
+6.18 "Elastic constants"_#howto_18
+6.19 "Library interface to LAMMPS"_#howto_19
+6.20 "Calculating thermal conductivity"_#howto_20
+6.21 "Calculating viscosity"_#howto_21 :all(b)
The example input scripts included in the LAMMPS distribution and
highlighted in "this section"_Section_example.html also show how to
setup and run various kinds of simulations.
:line
-4.1 Restarting a simulation :link(4_1),h4
+6.1 Restarting a simulation :link(howto_1),h4
There are 3 ways to continue a long LAMMPS simulation. Multiple
"run"_run.html commands can be used in the same input script. Each
run will continue from where the previous run left off. Or binary
restart files can be saved to disk using the "restart"_restart.html
command. At a later time, these binary files can be read via a
"read_restart"_read_restart.html command in a new script. Or they can
be converted to text data files and read by a
"read_data"_read_data.html command in a new script. "This
section"_Section_tools.html discusses the {restart2data} tool that is
used to perform the conversion.
Here we give examples of 2 scripts that read either a binary restart
file or a converted data file and then issue a new run command to
continue where the previous run left off. They illustrate what
settings must be made in the new script. Details are discussed in the
documentation for the "read_restart"_read_restart.html and
"read_data"_read_data.html commands.
Look at the {in.chain} input script provided in the {bench} directory
of the LAMMPS distribution to see the original script that these 2
scripts are based on. If that script had the line
restart 50 tmp.restart :pre
added to it, it would produce 2 binary restart files (tmp.restart.50
and tmp.restart.100) as it ran.
This script could be used to read the 1st restart file and re-run the
last 50 timesteps:
read_restart tmp.restart.50 :pre
neighbor 0.4 bin
neigh_modify every 1 delay 1 :pre
fix 1 all nve
fix 2 all langevin 1.0 1.0 10.0 904297 :pre
timestep 0.012 :pre
run 50 :pre
Note that the following commands do not need to be repeated because
their settings are included in the restart file: {units, atom_style,
special_bonds, pair_style, bond_style}. However these commands do
need to be used, since their settings are not in the restart file:
{neighbor, fix, timestep}.
If you actually use this script to perform a restarted run, you will
notice that the thermodynamic data match at step 50 (if you also put a
"thermo 50" command in the original script), but do not match at step
100. This is because the "fix langevin"_fix_langevin.html command
uses random numbers in a way that does not allow for perfect restarts.
As an alternate approach, the restart file could be converted to a data
file using this tool:
restart2data tmp.restart.50 tmp.restart.data :pre
Then, this script could be used to re-run the last 50 steps:
units lj
atom_style bond
pair_style lj/cut 1.12
pair_modify shift yes
bond_style fene
special_bonds 0.0 1.0 1.0 :pre
read_data tmp.restart.data :pre
neighbor 0.4 bin
neigh_modify every 1 delay 1 :pre
fix 1 all nve
fix 2 all langevin 1.0 1.0 10.0 904297 :pre
timestep 0.012 :pre
reset_timestep 50
run 50 :pre
Note that nearly all the settings specified in the original {in.chain}
script must be repeated, except the {pair_coeff} and {bond_coeff}
commands since the new data file lists the force field coefficients.
Also, the "reset_timestep"_reset_timestep.html command is used to tell
LAMMPS the current timestep. This value is stored in restart files,
but not in data files.
:line
-4.2 2d simulations :link(4_2),h4
+6.2 2d simulations :link(howto_2),h4
Use the "dimension"_dimension.html command to specify a 2d simulation.
Make the simulation box periodic in z via the "boundary"_boundary.html
command. This is the default.
If using the "create box"_create_box.html command to define a
simulation box, set the z dimensions narrow, but finite, so that the
create_atoms command will tile the 3d simulation box with a single z
plane of atoms - e.g.
"create box"_create_box.html 1 -10 10 -10 10 -0.25 0.25 :pre
If using the "read data"_read_data.html command to read in a file of
atom coordinates, set the "zlo zhi" values to be finite but narrow,
similar to the create_box command settings just described. For each
atom in the file, assign a z coordinate so it falls inside the
z-boundaries of the box - e.g. 0.0.
Use the "fix enforce2d"_fix_enforce2d.html command as the last
defined fix to insure that the z-components of velocities and forces
are zeroed out every timestep. The reason to make it the last fix is
so that any forces induced by other fixes will be zeroed out.
Many of the example input scripts included in the LAMMPS distribution
are for 2d models.
IMPORTANT NOTE: Some models in LAMMPS treat particles as extended
spheres, as opposed to point particles. In 2d, the particles will
still be spheres, not disks, meaning their moment of inertia will be
the same as in 3d.
:line
-4.3 CHARMM, AMBER, and DREIDING force fields :link(4_3),h4
+6.3 CHARMM, AMBER, and DREIDING force fields :link(howto_3),h4
A force field has 2 parts: the formulas that define it and the
coefficients used for a particular system. Here we only discuss
formulas implemented in LAMMPS that correspond to formulas commonly
used in the CHARMM, AMBER, and DREIDING force fields. Setting
coefficients is done in the input data file via the
"read_data"_read_data.html command or in the input script with
commands like "pair_coeff"_pair_coeff.html or
"bond_coeff"_bond_coeff.html. See "this section"_Section_tools.html
for additional tools that can use CHARMM or AMBER to assign force
field coefficients and convert their output into LAMMPS input.
See "(MacKerell)"_#MacKerell for a description of the CHARMM force
field. See "(Cornell)"_#Cornell for a description of the AMBER force
field.
:link(charmm,http://www.scripps.edu/brooks)
:link(amber,http://amber.scripps.edu)
These style choices compute force field formulas that are consistent
with common options in CHARMM or AMBER. See each command's
documentation for the formula it computes.
"bond_style"_bond_harmonic.html harmonic
"angle_style"_angle_charmm.html charmm
"dihedral_style"_dihedral_charmm.html charmm
"pair_style"_pair_charmm.html lj/charmm/coul/charmm
"pair_style"_pair_charmm.html lj/charmm/coul/charmm/implicit
"pair_style"_pair_charmm.html lj/charmm/coul/long :ul
"special_bonds"_special_bonds.html charmm
"special_bonds"_special_bonds.html amber :ul
DREIDING is a generic force field developed by the "Goddard
group"_http://www.wag.caltech.edu at Caltech and is useful for
predicting structures and dynamics of organic, biological and
main-group inorganic molecules. The philosophy in DREIDING is to use
general force constants and geometry parameters based on simple
hybridization considerations, rather than individual force constants
and geometric parameters that depend on the particular combinations of
atoms involved in the bond, angle, or torsion terms. DREIDING has an
"explicit hydrogen bond term"_pair_hbond_dreiding.html to describe
interactions involving a hydrogen atom on very electronegative atoms
(N, O, F).
See "(Mayo)"_#Mayo for a description of the DREIDING force field
These style choices compute force field formulas that are consistent
with the DREIDING force field. See each command's
documentation for the formula it computes.
"bond_style"_bond_harmonic.html harmonic
"bond_style"_bond_morse.html morse :ul
"angle_style"_angle_harmonic.html harmonic
"angle_style"_angle_cosine.html cosine
"angle_style"_angle_cosine_periodic.html cosine/periodic :ul
"dihedral_style"_dihedral_charmm.html charmm
"improper_style"_improper_umbrella.html umbrella :ul
"pair_style"_pair_buck.html buck
"pair_style"_pair_buck.html buck/coul/cut
"pair_style"_pair_buck.html buck/coul/long
"pair_style"_pair_lj.html lj/cut
"pair_style"_pair_lj.html lj/cut/coul/cut
"pair_style"_pair_lj.html lj/cut/coul/long :ul
"pair_style"_pair_hbond_dreiding.html hbond/dreiding/lj
"pair_style"_pair_hbond_dreiding.html hbond/dreiding/morse :ul
"special_bonds"_special_bonds.html dreiding :ul
:line
-4.4 Running multiple simulations from one input script :link(4_4),h4
+6.4 Running multiple simulations from one input script :link(howto_4),h4
This can be done in several ways. See the documentation for
individual commands for more details on how these examples work.
If "multiple simulations" means continue a previous simulation for
more timesteps, then you simply use the "run"_run.html command
multiple times. For example, this script
units lj
atom_style atomic
read_data data.lj
run 10000
run 10000
run 10000
run 10000
run 10000 :pre
would run 5 successive simulations of the same system for a total of
50,000 timesteps.
If you wish to run totally different simulations, one after the other,
the "clear"_clear.html command can be used in between them to
re-initialize LAMMPS. For example, this script
units lj
atom_style atomic
read_data data.lj
run 10000
clear
units lj
atom_style atomic
read_data data.lj.new
run 10000 :pre
would run 2 independent simulations, one after the other.
For large numbers of independent simulations, you can use
"variables"_variable.html and the "next"_next.html and
"jump"_jump.html commands to loop over the same input script
multiple times with different settings. For example, this
script, named in.polymer
variable d index run1 run2 run3 run4 run5 run6 run7 run8
shell cd $d
read_data data.polymer
run 10000
shell cd ..
clear
next d
jump in.polymer :pre
would run 8 simulations in different directories, using a data.polymer
file in each directory. The same concept could be used to run the
same system at 8 different temperatures, using a temperature variable
and storing the output in different log and dump files, for example
variable a loop 8
variable t index 0.8 0.85 0.9 0.95 1.0 1.05 1.1 1.15
log log.$a
read data.polymer
velocity all create $t 352839
fix 1 all nvt $t $t 100.0
dump 1 all atom 1000 dump.$a
run 100000
next t
next a
jump in.polymer :pre
All of the above examples work whether you are running on 1 or
multiple processors, but assumed you are running LAMMPS on a single
partition of processors. LAMMPS can be run on multiple partitions via
the "-partition" command-line switch as described in "this
-section"_Section_start.html#2_6 of the manual.
+section"_Section_start.html#start_6 of the manual.
In the last 2 examples, if LAMMPS were run on 3 partitions, the same
scripts could be used if the "index" and "loop" variables were
replaced with {universe}-style variables, as described in the
"variable"_variable.html command. Also, the "next t" and "next a"
commands would need to be replaced with a single "next a t" command.
With these modifications, the 8 simulations of each script would run
on the 3 partitions one after the other until all were finished.
Initially, 3 simulations would be started simultaneously, one on each
partition. When one finished, that partition would then start
the 4th simulation, and so forth, until all 8 were completed.
:line
-4.5 Multi-replica simulations :link(4_5),h4
+6.5 Multi-replica simulations :link(howto_5),h4
Several commands in LAMMPS run mutli-replica simulations, meaning
that multiple instances (replicas) of your simulation are run
simultaneously, with small amounts of data exchanged between replicas
periodically.
These are the relevant commands:
"neb"_neb.html for nudged elastic band calculations
"prd"_prd.html for parallel replica dynamics
"tad"_tad.html for temperature accelerated dynamics
"temper"_temper.html for parallel tempering :ul
NEB is a method for finding transition states and barrier energies.
PRD and TAD are methods for performing accelerated dynamics to find
and perform infrequent events. Parallel tempering or replica exchange
runs different replicas at a series of temperature to facilitate
rare-event sampling.
These command can only be used if LAMMPS was built with the "replica"
-package. See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info on packages.
+package. See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
In all these cases, you must run with one or more processors per
replica. The processors assigned to each replica are determined at
run-time by using the "-partition command-line
-switch"_Section_start.html#2_6 to launch LAMMPS on multiple
+switch"_Section_start.html#start_6 to launch LAMMPS on multiple
partitions, which in this context are the same as replicas. E.g.
these commands:
mpirun -np 16 lmp_linux -partition 8x2 -in in.temper
mpirun -np 8 lmp_linux -partition 8x1 -in in.neb :pre
would each run 8 replicas, on either 16 or 8 processors. Note the use
-of the "-in command-line switch"_Section_start.html#2_6 to specify the
-input script which is required when running in multi-replica mode.
+of the "-in command-line switch"_Section_start.html#start_6 to specify
+the input script which is required when running in multi-replica mode.
Also note that with MPI installed on a machine (e.g. your desktop),
you can run on more (virtual) processors than you have physical
processors. Thus the above commands could be run on a
single-processor (or few-processor) desktop so that you can run
a multi-replica simulation on more replicas than you have
physical processors.
:line
-4.6 Granular models :link(4_6),h4
+6.6 Granular models :link(howto_6),h4
Granular system are composed of spherical particles with a diameter,
as opposed to point particles. This means they have an angular
velocity and torque can be imparted to them to cause them to rotate.
To run a simulation of a granular model, you will want to use
the following commands:
"atom_style sphere"_atom_style.html
"fix nve/sphere"_fix_nve_sphere.html
"fix gravity"_fix_gravity.html :ul
This compute
"compute erotate/sphere"_compute_erotate_sphere.html :ul
calculates rotational kinetic energy which can be "output with
-thermodynamic info"_Section_howto.html#4_15.
+thermodynamic info"_Section_howto.html#howto_15.
Use one of these 3 pair potentials, which compute forces and torques
between interacting pairs of particles:
"pair_style"_pair_style.html gran/history
"pair_style"_pair_style.html gran/no_history
"pair_style"_pair_style.html gran/hertzian :ul
These commands implement fix options specific to granular systems:
"fix freeze"_fix_freeze.html
"fix pour"_fix_pour.html
"fix viscous"_fix_viscous.html
"fix wall/gran"_fix_wall_gran.html :ul
The fix style {freeze} zeroes both the force and torque of frozen
atoms, and should be used for granular system instead of the fix style
{setforce}.
For computational efficiency, you can eliminate needless pairwise
computations between frozen atoms by using this command:
"neigh_modify"_neigh_modify.html exclude :ul
:line
-4.7 TIP3P water model :link(4_7),h4
+6.7 TIP3P water model :link(howto_7),h4
The TIP3P water model as implemented in CHARMM
"(MacKerell)"_#MacKerell specifies a 3-site rigid water molecule with
charges and Lennard-Jones parameters assigned to each of the 3 atoms.
In LAMMPS the "fix shake"_fix_shake.html command can be used to hold
the two O-H bonds and the H-O-H angle rigid. A bond style of
{harmonic} and an angle style of {harmonic} or {charmm} should also be
used.
These are the additional parameters (in real units) to set for O and H
atoms and the water molecule to run a rigid TIP3P-CHARMM model with a
cutoff. The K values can be used if a flexible TIP3P model (without
fix shake) is desired. If the LJ epsilon and sigma for HH and OH are
set to 0.0, it corresponds to the original 1983 TIP3P model
"(Jorgensen)"_#Jorgensen.
O mass = 15.9994
H mass = 1.008 :all(b),p
O charge = -0.834
H charge = 0.417 :all(b),p
LJ epsilon of OO = 0.1521
LJ sigma of OO = 3.1507
LJ epsilon of HH = 0.0460
LJ sigma of HH = 0.4000
LJ epsilon of OH = 0.0836
LJ sigma of OH = 1.7753 :all(b),p
K of OH bond = 450
r0 of OH bond = 0.9572 :all(b),p
K of HOH angle = 55
theta of HOH angle = 104.52 :all(b),p
These are the parameters to use for TIP3P with a long-range Coulombic
solver (Ewald or PPPM in LAMMPS), see "(Price)"_#Price for details:
O mass = 15.9994
H mass = 1.008 :all(b),p
O charge = -0.830
H charge = 0.415 :all(b),p
LJ epsilon of OO = 0.102
LJ sigma of OO = 3.188
LJ epsilon, sigma of OH, HH = 0.0 :all(b),p
K of OH bond = 450
r0 of OH bond = 0.9572 :all(b),p
K of HOH angle = 55
theta of HOH angle = 104.52 :all(b),p
Wikipedia also has a nice article on "water
models"_http://en.wikipedia.org/wiki/Water_model.
:line
-4.8 TIP4P water model :link(4_8),h4
+6.8 TIP4P water model :link(howto_8),h4
The four-point TIP4P rigid water model extends the traditional
three-point TIP3P model by adding an additional site, usually
massless, where the charge associated with the oxygen atom is placed.
This site M is located at a fixed distance away from the oxygen along
the bisector of the HOH bond angle. A bond style of {harmonic} and an
angle style of {harmonic} or {charmm} should also be used.
Currently, only a four-point model for long-range Coulombics is
implemented via the LAMMPS "pair style
lj/cut/coul/long/tip4p"_pair_lj.html. A cutoff version may be added
the future. For both models, the bond lengths and bond angles should
be held fixed using the "fix shake"_fix_shake.html command.
These are the additional parameters (in real units) to set for O and H
atoms and the water molecule to run a rigid TIP4P model with a cutoff
"(Jorgensen)"_#Jorgensen. Note that the OM distance is specified in
the "pair_style"_pair_style.html command, not as part of the pair
coefficients.
O mass = 15.9994
H mass = 1.008 :all(b),p
O charge = -1.040
H charge = 0.520 :all(b),p
r0 of OH bond = 0.9572
theta of HOH angle = 104.52 :all(b),p
OM distance = 0.15 :all(b),p
LJ epsilon of O-O = 0.1550
LJ sigma of O-O = 3.1536
LJ epsilon, sigma of OH, HH = 0.0 :all(b),p
These are the parameters to use for TIP4P with a long-range Coulombic
solver (Ewald or PPPM in LAMMPS):
O mass = 15.9994
H mass = 1.008 :all(b),p
O charge = -1.0484
H charge = 0.5242 :all(b),p
r0 of OH bond = 0.9572
theta of HOH angle = 104.52 :all(b),p
OM distance = 0.1250 :all(b),p
LJ epsilon of O-O = 0.16275
LJ sigma of O-O = 3.16435
LJ epsilon, sigma of OH, HH = 0.0 :all(b),p
Wikipedia also has a nice article on "water
models"_http://en.wikipedia.org/wiki/Water_model.
:line
-4.9 SPC water model :link(4_9),h4
+6.9 SPC water model :link(howto_9),h4
The SPC water model specifies a 3-site rigid water molecule with
charges and Lennard-Jones parameters assigned to each of the 3 atoms.
In LAMMPS the "fix shake"_fix_shake.html command can be used to hold
the two O-H bonds and the H-O-H angle rigid. A bond style of
{harmonic} and an angle style of {harmonic} or {charmm} should also be
used.
These are the additional parameters (in real units) to set for O and H
atoms and the water molecule to run a rigid SPC model.
O mass = 15.9994
H mass = 1.008 :all(b),p
O charge = -0.820
H charge = 0.410 :all(b),p
LJ epsilon of OO = 0.1553
LJ sigma of OO = 3.166
LJ epsilon, sigma of OH, HH = 0.0 :all(b),p
r0 of OH bond = 1.0
theta of HOH angle = 109.47 :all(b),p
Note that as originally proposed, the SPC model was run with a 9
Angstrom cutoff for both LJ and Coulommbic terms. It can also be used
with long-range Coulombics (Ewald or PPPM in LAMMPS), without changing
any of the parameters above, though it becomes a different model in
that mode of usage.
The SPC/E (extended) water model is the same, except
the partial charge assignemnts change:
O charge = -0.8476
H charge = 0.4238 :all(b),p
See the "(Berendsen)"_#Berendsen reference for more details on both
the SPC and SPC/E models.
Wikipedia also has a nice article on "water
models"_http://en.wikipedia.org/wiki/Water_model.
:line
-4.10 Coupling LAMMPS to other codes :link(4_10),h4
+6.10 Coupling LAMMPS to other codes :link(howto_10),h4
LAMMPS is designed to allow it to be coupled to other codes. For
example, a quantum mechanics code might compute forces on a subset of
atoms and pass those forces to LAMMPS. Or a continuum finite element
(FE) simulation might use atom positions as boundary conditions on FE
nodal points, compute a FE solution, and return interpolated forces on
MD atoms.
LAMMPS can be coupled to other codes in at least 3 ways. Each has
advantages and disadvantages, which you'll have to think about in the
context of your application.
(1) Define a new "fix"_fix.html command that calls the other code. In
this scenario, LAMMPS is the driver code. During its timestepping,
the fix is invoked, and can make library calls to the other code,
which has been linked to LAMMPS as a library. This is the way the
"POEMS"_poems package that performs constrained rigid-body motion on
groups of atoms is hooked to LAMMPS. See the
"fix_poems"_fix_poems.html command for more details. See "this
section"_Section_modify.html of the documentation for info on how to add
a new fix to LAMMPS.
:link(poems,http://www.rpi.edu/~anderk5/lab)
(2) Define a new LAMMPS command that calls the other code. This is
conceptually similar to method (1), but in this case LAMMPS and the
other code are on a more equal footing. Note that now the other code
is not called during the timestepping of a LAMMPS run, but between
runs. The LAMMPS input script can be used to alternate LAMMPS runs
with calls to the other code, invoked via the new command. The
"run"_run.html command facilitates this with its {every} option, which
makes it easy to run a few steps, invoke the command, run a few steps,
invoke the command, etc.
In this scenario, the other code can be called as a library, as in
(1), or it could be a stand-alone code, invoked by a system() call
made by the command (assuming your parallel machine allows one or more
processors to start up another program). In the latter case the
stand-alone code could communicate with LAMMPS thru files that the
command writes and reads.
See "this section"_Section_modify.html of the documentation for how to
add a new command to LAMMPS.
(3) Use LAMMPS as a library called by another code. In this case the
other code is the driver and calls LAMMPS as needed. Or a wrapper
code could link and call both LAMMPS and another code as libraries.
Again, the "run"_run.html command has options that allow it to be
invoked with minimal overhead (no setup or clean-up) if you wish to do
multiple short runs, driven by another program.
Examples of driver codes that call LAMMPS as a library are included in
the "couple" directory of the LAMMPS distribution; see couple/README
for more details:
simple: simple driver programs in C++ and C which invoke LAMMPS as a
library :ulb,l
lammps_quest: coupling of LAMMPS and "Quest"_quest, to run classical
MD with quantum forces calculated by a density functional code :l
lammps_spparks: coupling of LAMMPS and "SPPARKS"_spparks, to couple
a kinetic Monte Carlo model for grain growth using MD to calculate
strain induced across grain boundaries :l,ule
:link(quest,http://dft.sandia.gov/Quest)
:link(spparks,http://www.sandia.gov/~sjplimp/spparks.html)
-"This section"_Section_start.html#2_4 of the documentation describes
-how to build LAMMPS as a library. Once this is done, you can
-interface with LAMMPS either via C++, C, Fortran, or Python (or any
-other language that supports a vanilla C-like interface). For
+"This section"_Section_start.html#start_4 of the documentation
+describes how to build LAMMPS as a library. Once this is done, you
+can interface with LAMMPS either via C++, C, Fortran, or Python (or
+any other language that supports a vanilla C-like interface). For
example, from C++ you could create one (or more) "instances" of
LAMMPS, pass it an input script to process, or execute individual
commands, all by invoking the correct class methods in LAMMPS. From C
or Fortran you can make function calls to do the same things. See
"this section"_Section_python.html of the manual for a description of
the Python wrapper provided with LAMMPS that operates through the
LAMMPS library interface.
The files src/library.cpp and library.h contain the C-style interface
-to LAMMPS. See "this section"_Section_howto.html#4_19 of the manual
+to LAMMPS. See "this section"_Section_howto.html#howto_19 of the manual
for a description of the interface and how to extend it for your
needs.
Note that the lammps_open() function that creates an instance of
LAMMPS takes an MPI communicator as an argument. This means that
instance of LAMMPS will run on the set of processors in the
communicator. Thus the calling code can run LAMMPS on all or a subset
of processors. For example, a wrapper script might decide to
alternate between LAMMPS and another code, allowing them both to run
on all the processors. Or it might allocate half the processors to
LAMMPS and half to the other code and run both codes simultaneously
before syncing them up periodically. Or it might instantiate multiple
instances of LAMMPS to perform different calculations.
:line
-4.11 Visualizing LAMMPS snapshots :link(4_11),h4
+6.11 Visualizing LAMMPS snapshots :link(howto_11),h4
LAMMPS itself does not do visualization, but snapshots from LAMMPS
simulations can be visualized (and analyzed) in a variety of ways.
LAMMPS snapshots are created by the "dump"_dump.html command which can
create files in several formats. The native LAMMPS dump format is a
text file (see "dump atom" or "dump custom") which can be visualized
by the "xmovie"_Section_tools.html#xmovie program, included with the
LAMMPS package. This produces simple, fast 2d projections of 3d
systems, and can be useful for rapid debugging of simulation geometry
and atom trajectories.
Several programs included with LAMMPS as auxiliary tools can convert
native LAMMPS dump files to other formats. See the
"Section_tools"_Section_tools.html doc page for details. The first is
the "ch2lmp tool"_Section_tools.html#charmm, which contains a
lammps2pdb Perl script which converts LAMMPS dump files into PDB
files. The second is the "lmp2arc tool"_Section_tools.html#arc which
converts LAMMPS dump files into Accelrys' Insight MD program files.
The third is the "lmp2cfg tool"_Section_tools.html#cfg which converts
LAMMPS dump files into CFG files which can be read into the
"AtomEye"_atomeye visualizer.
A Python-based toolkit distributed by our group can read native LAMMPS
dump files, including custom dump files with additional columns of
user-specified atom information, and convert them to various formats
or pipe them into visualization software directly. See the "Pizza.py
WWW site"_pizza for details. Specifically, Pizza.py can convert
LAMMPS dump files into PDB, XYZ, "Ensight"_ensight, and VTK formats.
Pizza.py can pipe LAMMPS dump files directly into the Raster3d and
RasMol visualization programs. Pizza.py has tools that do interactive
3d OpenGL visualization and one that creates SVG images of dump file
snapshots.
LAMMPS can create XYZ files directly (via "dump xyz") which is a
simple text-based file format used by many visualization programs
including "VMD"_vmd.
LAMMPS can create DCD files directly (via "dump dcd") which can be
read by "VMD"_vmd in conjunction with a CHARMM PSF file. Using this
form of output avoids the need to convert LAMMPS snapshots to PDB
files. See the "dump"_dump.html command for more information on DCD
files.
LAMMPS can create XTC files directly (via "dump xtc") which is GROMACS
file format which can also be read by "VMD"_vmd for visualization.
See the "dump"_dump.html command for more information on XTC files.
:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
:link(vmd,http://www.ks.uiuc.edu/Research/vmd)
:link(ensight,http://www.ensight.com)
:link(atomeye,http://mt.seas.upenn.edu/Archive/Graphics/A)
:line
-4.12 Triclinic (non-orthogonal) simulation boxes :link(4_12),h4
+6.12 Triclinic (non-orthogonal) simulation boxes :link(howto_12),h4
By default, LAMMPS uses an orthogonal simulation box to encompass the
particles. The "boundary"_boundary.html command sets the boundary
conditions of the box (periodic, non-periodic, etc). The orthogonal
box has its "origin" at (xlo,ylo,zlo) and is defined by 3 edge vectors
starting from the origin given by [a] = (xhi-xlo,0,0); [b] =
(0,yhi-ylo,0); [c] = (0,0,zhi-zlo). The 6 parameters
(xlo,xhi,ylo,yhi,zlo,zhi) are defined at the time the simluation box
is created, e.g. by the "create_box"_create_box.html or
"read_data"_read_data.html or "read_restart"_read_restart.html
commands. Additionally, LAMMPS defines box size parameters lx,ly,lz
where lx = xhi-xlo, and similarly in the y and z dimensions. The 6
parameters, as well as lx,ly,lz, can be output via the "thermo_style
custom"_thermo_style.html command.
LAMMPS also allows simulations to be perfored in non-orthogonal
simulation boxes shaped as a parallelepiped with triclinic symmetry.
The parallelepiped has its "origin" at (xlo,ylo,zlo) and is defined by
3 edge vectors starting from the origin given by [a] = (xhi-xlo,0,0); [b]
= (xy,yhi-ylo,0); [c] = (xz,yz,zhi-zlo). {Xy,xz,yz} can be 0.0 or
positive or negative values and are called "tilt factors" because they
are the amount of displacement applied to faces of an originally
orthogonal box to transform it into the parallelepiped. Note that in
LAMMPS the triclinic simulation box edge vectors [a], [b], and [c] cannot be
arbitrary vectors. As indicated, [a] must be aligned with the x axis, [b]
must be in the xy plane, and [c] is arbitrary. However, this is not a
restriction since it is possible to rotate any set of 3 crystal basis
vectors so that they meet this restriction.
The 9 parameters (xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) are defined at the
time the simluation box is created. This happens in one of 3 ways.
If the "create_box"_create_box.html command is used with a region of
style {prism}, then a triclinic box is setup. See the
"region"_region.html command for details. If the
"read_data"_read_data.html command is used to define the simulation
box, and the header of the data file contains a line with the "xy xz
yz" keyword, then a triclinic box is setup. See the
"read_data"_read_data.html command for details. Finally, if the
"read_restart"_read_restart.html command reads a restart file which
was written from a simulation using a triclinic box, then a triclinic
box will be setup for the restarted simulation.
Note that you can define a triclinic box with all 3 tilt factors =
0.0, so that it is initially orthogonal. This is necessary if the box
will become non-orthogonal, e.g. due to the "fix npt"_fix_nh.html or
"fix deform"_fix_deform.html commands. Alternatively, you can use the
"change_box"_change_box.html command to convert a simulation box from
orthogonal to triclinic and vice versa.
As with orthogonal boxes, LAMMPS defines triclinic box size parameters
lx,ly,lz where lx = xhi-xlo, and similarly in the y and z dimensions.
The 9 parameters, as well as lx,ly,lz, can be output via the
"thermo_style custom"_thermo_style.html command.
To avoid extremely tilted boxes (which would be computationally
inefficient), no tilt factor can skew the box more than half the
distance of the parallel box length, which is the 1st dimension in the
tilt factor (x for xz). For example, if xlo = 2 and xhi = 12, then
the x box length is 10 and the xy tilt factor must be between -5 and
5. Similarly, both xz and yz must be between -(xhi-xlo)/2 and
+(yhi-ylo)/2. Note that this is not a limitation, since if the
maximum tilt factor is 5 (as in this example), then configurations
with tilt = ..., -15, -5, 5, 15, 25, ... are geometrically all
equivalent.
Triclinic crystal structures are often defined using three lattice
constants {a}, {b}, and {c}, and three angles {alpha}, {beta} and
{gamma}. Note that in this nomenclature, the a, b, and c lattice constants
are the scalar lengths of the edge vectors [a], [b], and [c] defined
above. The
relationship between these 6 quantities (a,b,c,alpha,beta,gamma) and
the LAMMPS box sizes (lx,ly,lz) = (xhi-xlo,yhi-ylo,zhi-zlo) and tilt
factors (xy,xz,yz) is as follows:
:c,image(Eqs/box.jpg)
The inverse relationship can be written as follows:
:c,image(Eqs/box_inverse.jpg)
The values of {a}, {b}, {c} , {alpha}, {beta} , and {gamma} can be printed
out or accessed by computes using the
"thermo_style custom"_thermo_style.html keywords
{cella}, {cellb}, {cellc}, {cellalpha}, {cellbeta}, {cellgamma},
respectively.
As discussed on the "dump"_dump.html command doc page, when the BOX
BOUNDS for a snapshot is written to a dump file for a triclinic box,
an orthogonal bounding box which encloses the triclinic simulation box
is output, along with the 3 tilt factors (xy, xz, yz) of the triclinic
box, formatted as follows:
ITEM: BOX BOUNDS xy xz yz
xlo_bound xhi_bound xy
ylo_bound yhi_bound xz
zlo_bound zhi_bound yz :pre
This bounding box is convenient for many visualization programs and is
calculated from the 9 triclinic box parameters
(xlo,xhi,ylo,yhi,zlo,zhi,xy,xz,yz) as follows:
xlo_bound = xlo + MIN(0.0,xy,xz,xy+xz)
xhi_bound = xhi + MAX(0.0,xy,xz,xy+xz)
ylo_bound = ylo + MIN(0.0,yz)
yhi_bound = yhi + MAX(0.0,yz)
zlo_bound = zlo
zhi_bound = zhi :pre
These formulas can be inverted if you need to convert the bounding box
back into the triclinic box parameters, e.g. xlo = xlo_bound -
MIN(0.0,xy,xz,xy+xz).
One use of triclinic simulation boxes is to model solid-state crystals
with triclinic symmetry. The "lattice"_lattice.html command can be
used with non-orthogonal basis vectors to define a lattice that will
tile a triclinic simulation box via the
"create_atoms"_create_atoms.html command.
A second use is to run Parinello-Rahman dyanamics via the "fix
npt"_fix_nh.html command, which will adjust the xy, xz, yz tilt
factors to compensate for off-diagonal components of the pressure
tensor. The analalog for an "energy minimization"_minimize.html is
the "fix box/relax"_fix_box_relax.html command.
A third use is to shear a bulk solid to study the response of the
material. The "fix deform"_fix_deform.html command can be used for
this purpose. It allows dynamic control of the xy, xz, yz tilt
factors as a simulation runs. This is discussed in the next section
on non-equilibrium MD (NEMD) simulations.
:line
-4.13 NEMD simulations :link(4_13),h4
+6.13 NEMD simulations :link(howto_13),h4
Non-equilibrium molecular dynamics or NEMD simulations are typically
used to measure a fluid's rheological properties such as viscosity.
In LAMMPS, such simulations can be performed by first setting up a
non-orthogonal simulation box (see the preceding Howto section).
A shear strain can be applied to the simulation box at a desired
strain rate by using the "fix deform"_fix_deform.html command. The
"fix nvt/sllod"_fix_nvt_sllod.html command can be used to thermostat
the sheared fluid and integrate the SLLOD equations of motion for the
system. Fix nvt/sllod uses "compute
temp/deform"_compute_temp_deform.html to compute a thermal temperature
by subtracting out the streaming velocity of the shearing atoms. The
velocity profile or other properties of the fluid can be monitored via
the "fix ave/spatial"_fix_ave_spatial.html command.
As discussed in the previous section on non-orthogonal simulation
boxes, the amount of tilt or skew that can be applied is limited by
LAMMPS for computational efficiency to be 1/2 of the parallel box
length. However, "fix deform"_fix_deform.html can continuously strain
a box by an arbitrary amount. As discussed in the "fix
deform"_fix_deform.html command, when the tilt value reaches a limit,
the box is re-shaped to the opposite limit which is an equivalent
tiling of periodic space. The strain rate can then continue to change
as before. In a long NEMD simulation these box re-shaping events may
occur many times.
In a NEMD simulation, the "remap" option of "fix
deform"_fix_deform.html should be set to "remap v", since that is what
"fix nvt/sllod"_fix_nvt_sllod.html assumes to generate a velocity
profile consistent with the applied shear strain rate.
An alternative method for calculating viscosities is provided via the
"fix viscosity"_fix_viscosity.html command.
:line
-4.14 Extended spherical and aspherical particles :link(4_14),h4
+6.14 Extended spherical and aspherical particles :link(howto_14),h4
Typical MD models treat atoms or particles as point masses.
Sometimes, however, it is desirable to have a model with finite-size
particles such as spheres or aspherical ellipsoids. The difference is
that such particles have a moment of inertia, rotational energy, and
angular momentum. Rotation is induced by torque from interactions
with other particles.
LAMMPS has several options for running simulations with these kinds of
particles. The following aspects are discussed in turn:
atom styles
pair potentials
time integration
computes, thermodynamics, and dump output
rigid bodies composed of extended particles :ul
Atom styles :h5
There are 2 "atom styles"_atom_style.html that allow for definition of
finite-size particles: sphere and ellipsoid. The peri atom style also
treats particles as having a volume, but that is internal to the
"pair_style peri"_pair_peri.html potentials. The dipole atom style is
most often used in conjunction with finite-size particles.
The sphere style defines particles that are spheriods and each
particle can have a unique diameter and mass (or density). These
particles store an angular velocity (omega) and can be acted upon by
torque. The "set" command can be used to modify the diameter and mass
of individual particles, after then are created.
The ellipsoid style defines particles that are ellipsoids and thus can
be aspherical. Each particle has a shape, specified by 3 diameters,
and mass (or density). These particles store an angular momentum and
their orientation (quaternion), and can be acted upon by torque. They
do not store an angular velocity (omega), which can be in a different
direction than angular momentum, rather they compute it as needed.
The "set" command can be used to modify the diameter, orientation, and
mass of individual particles, after then are created. It also has a
brief explanation of what quaternions are.
The dipole style does not define extended particles, but is often
used in conjunction with spherical particles, via a command like
atom_style hybrid sphere dipole :pre
This is because when dipoles interact with each other, they induce
torques, and a particle must be extended (i.e. have a moment of
inertia) in order to respond and rotate. See the "atom_style
dipole"_atom_style.html command for details. The "set" command can be
used to modify the orientation and length of the dipole moment of
individual particles, after then are created.
Note that if one of these atom styles is used (or multiple styles via
the "atom_style hybrid"_atom_style.html command), not all particles in
the system are required to be finite-size or aspherical. For example,
if the 3 shape parameters are set to the same value, the particle will
be a sphere rather than an ellipsoid. If the 3 shape parameters are
all set to 0.0 or if the diameter is set to 0.0, it will be a point
particle. If the length of the dipole moment is set to zero, the
particle will not have a point dipole associated with it. The pair
styles used to compute pairwise interactions will typically compute
the correct interaction in these simplified (cheaper) cases.
"Pair_style hybrid"_pair_hybrid.html can be used to insure the correct
interactions are computed for the appropriate style of interactions.
Likewise, using groups to partition particles (ellipsoids versus
spheres versus point particles) will allow you to use the appropriate
time integrators and temperature computations for each class of
particles. See the doc pages for various commands for details.
Also note that for "2d simulations"_dimension.html, finite-size
spheres and ellipsoids are still treated as 3d particles, rather than
as circular disks or ellipses. This means they have the same moment
of inertia for a 3d extended object. When their temperature is
coomputed, the correct degrees of freedom are used for rotation in a
2d versus 3d system.
Pair potentials :h5
When a system with extended particles is defined, the particles will
only rotate and experience torque if the force field computes such
interactions. These are the various "pair styles"_pair_style.html
that generate torque:
"pair_style gran/history"_pair_gran.html
"pair_style gran/hertzian"_pair_gran.html
"pair_style gran/no_history"_pair_gran.html
"pair_style dipole/cut"_pair_dipole.html
"pair_style gayberne"_pair_gayberne.html
"pair_style resquared"_pair_resquared.html
"pair_style lubricate"_pair_lubricate.html :ul
The "granular pair styles"_pair_gran.html are used with spherical
particles. The "dipole pair style"_pair_dipole.html is used with
"atom_style dipole"_atom_style.html, which could be applied to
spherical or ellipsoidal particles. The "GayBerne"_pair_gayberne.html
and "REsquared"_pair_resquared.html potentials require ellipsoidal
particles, though they will also work if the 3 shape parameters are
the same (a sphere). The "lubrication potential"_pair_lubricate.html
works with spherical particles.
Time integration :h5
There are 3 fixes that perform time integration on extended spherical
particles, meaning the integrators update the rotational orientation
and angular velocity or angular momentum of the particles:
"fix nve/sphere"_fix_nve_sphere.html
"fix nvt/sphere"_fix_nvt_sphere.html
"fix npt/sphere"_fix_npt_sphere.html :ul
Likewise, there are 3 fixes that perform time integration on
ellipsoids as extended aspherical particles:
"fix nve/asphere"_fix_nve_asphere.html
"fix nvt/asphere"_fix_nvt_asphere.html
"fix npt/asphere"_fix_npt_asphere.html :ul
The advantage of these fixes is that those which thermostat the
particles include the rotational degrees of freedom in the temperature
calculation and thermostatting. Other thermostats can be used with
fix nve/sphere or fix nve/asphere, such as fix langevin or fix
temp/berendsen, but those thermostats only operate on the
translational kinetic energy of the extended particles.
Note that for mixtures of point and extended particles, you should
only use these integration fixes on "groups"_group.html which contain
extended particles.
Computes, thermodynamics, and dump output :h5
There are 4 computes that calculate the temperature or rotational energy
of extended spherical or aspherical particles (ellipsoids):
"compute temp/sphere"_compute_temp_sphere.html
"compute temp/asphere"_compute_temp_asphere.html
"compute erotate/sphere"_compute_erotate_sphere.html
"compute erotate/asphere"_compute_erotate_asphere.html :ul
These include rotational degrees of freedom in their computation. If
you wish the thermodynamic output of temperature or pressure to use
one of these computes (e.g. for a system entirely composed of extended
particles), then the compute can be defined and the
"thermo_modify"_thermo_modify.html command used. Note that by
default thermodynamic quantities will be calculated with a temperature
that only includes translational degrees of freedom. See the
"thermo_style"_thermo_style.html command for details.
The "dump custom"_dump.html command can output various attributes of
extended particles, including the dipole moment (mu), the angular
velocity (omega), the angular momentum (angmom), the quaternion
(quat), and the torque (tq) on the particle.
Rigid bodies composed of extended particles :h5
The "fix rigid"_fix_rigid.html command treats a collection of
particles as a rigid body, computes its inertia tensor, sums the total
force and torque on the rigid body each timestep due to forces on its
constituent particles, and integrates the motion of the rigid body.
If any of the constituent particles of a rigid body are extended
particles (spheres or ellipsoids), then their contribution to the
inertia tensor of the body is different than if they were point
particles. This means the rotational dynamics of the rigid body will
be different. Thus a model of a dimer is different if the dimer
consists of two point masses versus two extended sphereoids, even if
the two particles have the same mass. Extended particles that
experience torque due to their interaction with other particles will
also impart that torque to a rigid body they are part of.
See the "fix rigid" command for example of complex rigid-body models
it is possible to define in LAMMPS.
Note that the "fix shake"_fix_shake.html command can also be used to
treat 2, 3, or 4 particles as a rigid body, but it always assumes the
particles are point masses.
:line
-4.15 Output from LAMMPS (thermo, dumps, computes, fixes, variables) :link(4_15),h4
+6.15 Output from LAMMPS (thermo, dumps, computes, fixes, variables) :link(howto_15),h4
There are four basic kinds of LAMMPS output:
"Thermodynamic output"_thermo_style.html, which is a list
of quantities printed every few timesteps to the screen and logfile. :ulb,l
"Dump files"_dump.html, which contain snapshots of atoms and various
per-atom values and are written at a specified frequency. :l
Certain fixes can output user-specified quantities to files: "fix
ave/time"_fix_ave_time.html for time averaging, "fix
ave/spatial"_fix_ave_spatial.html for spatial averaging, and "fix
print"_fix_print.html for single-line output of
"variables"_variable.html. Fix print can also output to the
screen. :l
"Restart files"_restart.html. :l,ule
A simulation prints one set of thermodynamic output and (optionally)
restart files. It can generate any number of dump files and fix
output files, depending on what "dump"_dump.html and "fix"_fix.html
commands you specify.
As discussed below, LAMMPS gives you a variety of ways to determine
what quantities are computed and printed when the thermodynamics,
dump, or fix commands listed above perform output. Throughout this
discussion, note that users can also "add their own computes and fixes
to LAMMPS"_Section_modify.html which can then generate values that can
then be output with these commands.
The following sub-sections discuss different LAMMPS command related
to output and the kind of data they operate on and produce:
"Global/per-atom/local data"_#global
"Scalar/vector/array data"_#scalar
"Thermodynamic output"_#thermo
"Dump file output"_#dump
"Fixes that write output files"_#fixoutput
"Computes that process output quantities"_#computeoutput
"Fixes that process output quantities"_#fixoutput
"Computes that generate values to output"_#compute
"Fixes that generate values to output"_#fix
"Variables that generate values to output"_#variable
"Summary table of output options and data flow between commands"_#table :ul
Global/per-atom/local data :h5,link(global)
Various output-related commands work with three different styles of
data: global, per-atom, or local. A global datum is one or more
system-wide values, e.g. the temperature of the system. A per-atom
datum is one or more values per atom, e.g. the kinetic energy of each
atom. Local datums are calculated by each processor based on the
atoms it owns, but there may be zero or more per atom, e.g. a list of
bond distances.
Scalar/vector/array data :h5,link(scalar)
Global, per-atom, and local datums can each come in three kinds: a
single scalar value, a vector of values, or a 2d array of values. The
doc page for a "compute" or "fix" or "variable" that generates data
will specify both the style and kind of data it produces, e.g. a
per-atom vector.
When a quantity is accessed, as in many of the output commands
discussed below, it can be referenced via the following bracket
notation, where ID in this case is the ID of a compute. The leading
"c_" would be replaced by "f_" for a fix, or "v_" for a variable:
c_ID | entire scalar, vector, or array
c_ID\[I\] | one element of vector, one column of array
c_ID\[I\]\[J\] | one element of array :tb(s=|)
In other words, using one bracket reduces the dimension of the data
once (vector -> scalar, array -> vector). Using two brackets reduces
the dimension twice (array -> scalar). Thus a command that uses
scalar values as input can typically also process elements of a vector
or array.
Thermodynamic output :h5,link(thermo)
The frequency and format of thermodynamic output is set by the
"thermo"_thermo.html, "thermo_style"_thermo_style.html, and
"thermo_modify"_thermo_modify.html commands. The
"thermo_style"_thermo_style.html command also specifies what values
are calculated and written out. Pre-defined keywords can be specified
(e.g. press, etotal, etc). Three additional kinds of keywords can
also be specified (c_ID, f_ID, v_name), where a "compute"_compute.html
or "fix"_fix.html or "variable"_variable.html provides the value to be
output. In each case, the compute, fix, or variable must generate
global values for input to the "thermo_style custom"_dump.html
command.
Dump file output :h5,link(dump)
Dump file output is specified by the "dump"_dump.html and
"dump_modify"_dump_modify.html commands. There are several
pre-defined formats (dump atom, dump xtc, etc).
There is also a "dump custom"_dump.html format where the user
specifies what values are output with each atom. Pre-defined atom
attributes can be specified (id, x, fx, etc). Three additional kinds
of keywords can also be specified (c_ID, f_ID, v_name), where a
"compute"_compute.html or "fix"_fix.html or "variable"_variable.html
provides the values to be output. In each case, the compute, fix, or
variable must generate per-atom values for input to the "dump
custom"_dump.html command.
There is also a "dump local"_dump.html format where the user specifies
what local values to output. A pre-defined index keyword can be
specified to enumuerate the local values. Two additional kinds of
keywords can also be specified (c_ID, f_ID), where a
"compute"_compute.html or "fix"_fix.html or "variable"_variable.html
provides the values to be output. In each case, the compute or fix
must generate local values for input to the "dump local"_dump.html
command.
Fixes that write output files :h5,link(fixoutput)
Sevarl fixes take various quantities as input and can write output
files: "fix ave/time"_fix_ave_time.html, "fix
ave/spatial"_fix_ave_spatial.html, "fix ave/histo"_fix_ave_histo.html,
"fix ave/correlate"_fix_ave_correlate.html, and "fix
print"_fix_print.html.
The "fix ave/time"_fix_ave_time.html command enables direct output to
a file and/or time-averaging of global scalars or vectors. The user
specifies one or more quantities as input. These can be global
"compute"_compute.html values, global "fix"_fix.html values, or
"variables"_variable.html of any style except the atom style which
produces per-atom values. Since a variable can refer to keywords used
by the "thermo_style custom"_thermo_style.html command (like temp or
press) and individual per-atom values, a wide variety of quantities
can be time averaged and/or output in this way. If the inputs are one
or more scalar values, then the fix generate a global scalar or vector
of output. If the inputs are one or more vector values, then the fix
generates a global vector or array of output. The time-averaged
output of this fix can also be used as input to other output commands.
The "fix ave/spatial"_fix_ave_spatial.html command enables direct
output to a file of spatial-averaged per-atom quantities like those
output in dump files, within 1d layers of the simulation box. The
per-atom quantities can be atom density (mass or number) or atom
attributes such as position, velocity, force. They can also be
per-atom quantities calculated by a "compute"_compute.html, by a
"fix"_fix.html, or by an atom-style "variable"_variable.html. The
spatial-averaged output of this fix can also be used as input to other
output commands.
The "fix ave/histo"_fix_ave_histo.html command enables direct output
to a file of histogrammed quantities, which can be global or per-atom
or local quantities. The histogram output of this fix can also be
used as input to other output commands.
The "fix ave/correlate"_fix_ave_histo.html command enables direct
output to a file of time-correlated quantities, which can be global
scalars. The correlation matrix output of this fix can also be used
as input to other output commands.
The "fix print"_fix_print.html command can generate a line of output
written to the screen and log file or to a separate file, periodically
during a running simulation. The line can contain one or more
"variable"_variable.html values for any style variable except the atom
style). As explained above, variables themselves can contain
references to global values generated by "thermodynamic
keywords"_thermo_style.html, "computes"_compute.html,
"fixes"_fix.html, or other "variables"_variable.html, or to per-atom
values for a specific atom. Thus the "fix print"_fix_print.html
command is a means to output a wide variety of quantities separate
from normal thermodynamic or dump file output.
Computes that process output quantities :h5,link(computeoutput)
The "compute reduce"_compute_reduce.html and "compute
reduce/region"_compute_reduce.html commands take one or more per-atom
or local vector quantities as inputs and "reduce" them (sum, min, max,
ave) to scalar quantities. These are produced as output values which
can be used as input to other output commands.
The "compute slice"_compute_slice.html command take one or more global
vector or array quantities as inputs and extracts a subset of their
values to create a new vector or array. These are produced as output
values which can be used as input to other output commands.
The "compute property/atom"_compute_property_atom.html command takes a
list of one or more pre-defined atom attributes (id, x, fx, etc) and
stores the values in a per-atom vector or array. These are produced
as output values which can be used as input to other output commands.
The list of atom attributes is the same as for the "dump
custom"_dump.html command.
The "compute property/local"_compute_property_local.html command takes
a list of one or more pre-defined local attributes (bond info, angle
info, etc) and stores the values in a local vector or array. These
are produced as output values which can be used as input to other
output commands.
The "compute atom/molecule"_compute_atom_molecule.html command takes a
list of one or more per-atom quantities (from a compute, fix, per-atom
variable) and sums the quantities on a per-molecule basis. It
produces a global vector or array as output values which can be used
as input to other output commands.
Fixes that process output quantities :h5,link(fixoutput)
The "fix ave/atom"_fix_ave_atom.html command performs time-averaging
of per-atom vectors. The per-atom quantities can be atom attributes
such as position, velocity, force. They can also be per-atom
quantities calculated by a "compute"_compute.html, by a
"fix"_fix.html, or by an atom-style "variable"_variable.html. The
time-averaged per-atom output of this fix can be used as input to
other output commands.
The "fix store/state"_fix_store_state.html command can archive one or
more per-atom attributes at a particular time, so that the old values
can be used in a future calculation or output. The list of atom
attributes is the same as for the "dump custom"_dump.html command,
including per-atom quantities calculated by a "compute"_compute.html,
by a "fix"_fix.html, or by an atom-style "variable"_variable.html.
The output of this fix can be used as input to other output commands.
Computes that generate values to output :h5,link(compute)
Every "compute"_compute.html in LAMMPS produces either global or
per-atom or local values. The values can be scalars or vectors or
arrays of data. These values can be output using the other commands
described in this section. The doc page for each compute command
describes what it produces. Computes that produce per-atom or local
values have the word "atom" or "local" in their style name. Computes
without the word "atom" or "local" produce global values.
Fixes that generate values to output :h5,link(fix)
Some "fixes"_fix.html in LAMMPS produces either global or per-atom or
local values which can be accessed by other commands. The values can
be scalars or vectors or arrays of data. These values can be output
using the other commands described in this section. The doc page for
each fix command tells whether it produces any output quantities and
describes them.
Variables that generate values to output :h5,link(variable)
Every "variables"_variable.html defined in an input script generates
either a global scalar value or a per-atom vector (only atom-style
variables) when it is accessed. The formulas used to define equal-
and atom-style variables can contain references to the thermodynamic
keywords and to global and per-atom data generated by computes, fixes,
and other variables. The values generated by variables can be output
using the other commands described in this section.
Summary table of output options and data flow between commands :h5,link(table)
This table summarizes the various commands that can be used for
generating output from LAMMPS. Each command produces output data of
some kind and/or writes data to a file. Most of the commands can take
data from other commands as input. Thus you can link many of these
commands together in pipeline form, where data produced by one command
is used as input to another command and eventually written to the
screen or to a file. Note that to hook two commands together the
output and input data types must match, e.g. global/per-atom/local
data and scalar/vector/array data.
Also note that, as described above, when a command takes a scalar as
input, that could be an element of a vector or array. Likewise a
vector input could be a column of an array.
Command: Input: Output:
"thermo_style custom"_thermo_style.html: global scalars: screen, log file:
"dump custom"_dump.html: per-atom vectors: dump file:
"dump local"_dump.html: local vectors: dump file:
"fix print"_fix_print.html: global scalar from variable: screen, file:
"print"_print.html: global scalar from variable: screen:
"computes"_compute.html: N/A: global/per-atom/local scalar/vector/array:
"fixes"_fix.html: N/A: global/per-atom/local scalar/vector/array:
"variables"_variable.html: global scalars, per-atom vectors: global scalar, per-atom vector:
"compute reduce"_compute_reduce.html: per-atom/local vectors: global scalar/vector:
"compute slice"_compute_slice.html: global vectors/arrays: global vector/array:
"compute property/atom"_compute_property_atom.html: per-atom vectors: per-atom vector/array:
"compute property/local"_compute_property_local.html: local vectors: local vector/array:
"compute atom/molecule"_compute_atom_molecule.html: per-atom vectors: global vector/array:
"fix ave/atom"_fix_ave_atom.html: per-atom vectors: per-atom vector/array:
"fix ave/time"_fix_ave_time.html: global scalars/vectors: global scalar/vector/array, file:
"fix ave/spatial"_fix_ave_spatial.html: per-atom vectors: global array, file:
"fix ave/histo"_fix_ave_histo.html: global/per-atom/local scalars and vectors: global array, file:
"fix ave/correlate"_fix_ave_correlate.html: global scalars: global array, file:
"fix store/state"_fix_store_state.html: per-atom vectors: per-atom vector/array:
:tb(s=:)
:line
-4.16 Thermostatting, barostatting, and computing temperature :link(4_16),h4
+6.16 Thermostatting, barostatting, and computing temperature :link(howto_16),h4
Thermostatting means controlling the temperature of particles in an MD
simulation. Barostatting means controlling the pressure. Since the
pressure includes a kinetic component due to particle velocities, both
these operations require calculation of the temperature. Typically a
target temperature (T) and/or pressure (P) is specified by the user,
and the thermostat or barostat attempts to equilibrate the system to
the requested T and/or P.
Temperature is computed as kinetic energy divided by some number of
degrees of freedom (and the Boltzmann constant). Since kinetic energy
is a function of particle velocity, there is often a need to
distinguish between a particle's advection velocity (due to some
aggregate motiion of particles) and its thermal velocity. The sum of
the two is the particle's total velocity, but the latter is often what
is wanted to compute a temperature.
LAMMPS has several options for computing temperatures, any of which
can be used in thermostatting and barostatting. These "compute
commands"_compute.html calculate temperature, and the "compute
pressure"_compute_pressure.html command calculates pressure.
"compute temp"_compute_temp.html
"compute temp/sphere"_compute_temp_sphere.html
"compute temp/asphere"_compute_temp_asphere.html
"compute temp/com"_compute_temp_com.html
"compute temp/deform"_compute_temp_deform.html
"compute temp/partial"_compute_temp_partial.html
"compute temp/profile"_compute_temp_profile.html
"compute temp/ramp"_compute_temp_ramp.html
"compute temp/region"_compute_temp_region.html :ul
All but the first 3 calculate velocity biases (i.e. advection
velocities) that are removed when computing the thermal temperature.
"Compute temp/sphere"_compute_temp_sphere.html and "compute
temp/asphere"_compute_temp_asphere.html compute kinetic energy for
extended particles that includes rotational degrees of freedom. They
both allow, as an extra argument, which is another temperature compute
that subtracts a velocity bias. This allows the translational
velocity of extended spherical or aspherical particles to be adjusted
in prescribed ways.
Thermostatting in LAMMPS is performed by "fixes"_fix.html, or in one
case by a pair style. Four thermostatting fixes are currently
available: Nose-Hoover (nvt), Berendsen, Langevin, and direct
rescaling (temp/rescale). Dissipative particle dynamics (DPD)
thermostatting can be invoked via the {dpd/tstat} pair style:
"fix nvt"_fix_nh.html
"fix nvt/sphere"_fix_nvt_sphere.html
"fix nvt/asphere"_fix_nvt_asphere.html
"fix nvt/sllod"_fix_nvt_sllod.html
"fix temp/berendsen"_fix_temp_berendsen.html
"fix langevin"_fix_langevin.html
"fix temp/rescale"_fix_temp_rescale.html
"pair_style dpd/tstat"_pair_dpd.html :ul
"Fix nvt"_fix_nh.html only thermostats the translational velocity of
particles. "Fix nvt/sllod"_fix_nvt_sllod.html also does this, except
that it subtracts out a velocity bias due to a deforming box and
integrates the SLLOD equations of motion. See the "NEMD
-simulations"_#4_13 section of this page for further details. "Fix
+simulations"_#howto_13 section of this page for further details. "Fix
nvt/sphere"_fix_nvt_sphere.html and "fix
nvt/asphere"_fix_nvt_asphere.html thermostat not only translation
velocities but also rotational velocities for spherical and aspherical
particles.
DPD thermostatting alters pairwise interactions in a manner analagous
to the per-particle thermostatting of "fix
langevin"_fix_langevin.html.
Any of the thermostatting fixes can use temperature computes that
remove bias for two purposes: (a) computing the current temperature to
compare to the requested target temperature, and (b) adjusting only
the thermal temperature component of the particle's velocities. See
the doc pages for the individual fixes and for the
"fix_modify"_fix_modify.html command for instructions on how to assign
a temperature compute to a thermostatting fix. For example, you can
apply a thermostat to only the x and z components of velocity by using
it in conjunction with "compute
temp/partial"_compute_temp_partial.html.
IMPORTANT NOTE: Only the nvt fixes perform time integration, meaning
they update the velocities and positions of particles due to forces
and velocities respectively. The other thermostat fixes only adjust
velocities; they do NOT perform time integration updates. Thus they
should be used in conjunction with a constant NVE integration fix such
as these:
"fix nve"_fix_nve.html
"fix nve/sphere"_fix_nve_sphere.html
"fix nve/asphere"_fix_nve_asphere.html :ul
Barostatting in LAMMPS is also performed by "fixes"_fix.html. Two
barosttating methods are currently available: Nose-Hoover (npt and
nph) and Berendsen:
"fix npt"_fix_nh.html
"fix npt/sphere"_fix_npt_sphere.html
"fix npt/asphere"_fix_npt_asphere.html
"fix nph"_fix_nh.html
"fix press/berendsen"_fix_press_berendsen.html :ul
The "fix npt"_fix_nh.html commands include a Nose-Hoover thermostat
and barostat. "Fix nph"_fix_nh.html is just a Nose/Hoover barostat;
it does no thermostatting. Both "fix nph"_fix_nh.html and "fix
press/bernendsen"_fix_press_berendsen.html can be used in conjunction
with any of the thermostatting fixes.
As with the thermostats, "fix npt"_fix_nh.html and "fix
nph"_fix_nh.html only use translational motion of the particles in
computing T and P and performing thermo/barostatting. "Fix
npt/sphere"_fix_npt_sphere.html and "fix
npt/asphere"_fix_npt_asphere.html thermo/barostat using not only
translation velocities but also rotational velocities for spherical
and aspherical particles.
All of the barostatting fixes use the "compute
pressure"_compute_pressure.html compute to calculate a current
pressure. By default, this compute is created with a simple "compute
temp"_compute_temp.html (see the last argument of the "compute
pressure"_compute_pressure.html command), which is used to calculated
the kinetic componenet of the pressure. The barostatting fixes can
also use temperature computes that remove bias for the purpose of
computing the kinetic componenet which contributes to the current
pressure. See the doc pages for the individual fixes and for the
"fix_modify"_fix_modify.html command for instructions on how to assign
a temperature or pressure compute to a barostatting fix.
IMPORTANT NOTE: As with the thermostats, the Nose/Hoover methods ("fix
npt"_fix_nh.html and "fix nph"_fix_nh.html) perform time
integration. "Fix press/berendsen"_fix_press_berendsen.html does NOT,
so it should be used with one of the constant NVE fixes or with one of
the NVT fixes.
Finally, thermodynamic output, which can be setup via the
"thermo_style"_thermo_style.html command, often includes temperature
and pressure values. As explained on the doc page for the
"thermo_style"_thermo_style.html command, the default T and P are
setup by the thermo command itself. They are NOT the ones associated
with any thermostatting or barostatting fix you have defined or with
any compute that calculates a temperature or pressure. Thus if you
want to view these values of T and P, you need to specify them
explicitly via a "thermo_style custom"_thermo_style.html command. Or
you can use the "thermo_modify"_thermo_modify.html command to
re-define what temperature or pressure compute is used for default
thermodynamic output.
:line
-4.17 Walls :link(4_17),h4
+6.17 Walls :link(howto_17),h4
Walls in an MD simulation are typically used to bound particle motion,
i.e. to serve as a boundary condition.
Walls in LAMMPS can be of rough (made of particles) or idealized
surfaces. Ideal walls can be smooth, generating forces only in the
normal direction, or frictional, generating forces also in the
tangential direction.
Rough walls, built of particles, can be created in various ways. The
particles themselves can be generated like any other particle, via the
"lattice"_lattice.html and "create_atoms"_create_atoms.html commands,
or read in via the "read_data"_read_data.html command.
Their motion can be constrained by many different commands, so that
they do not move at all, move together as a group at constant velocity
or in response to a net force acting on them, move in a prescribed
fashion (e.g. rotate around a point), etc. Note that if a time
integration fix like "fix nve"_fix_nve.html or "fix nvt"_fix_nh.html
is not used with the group that contains wall particles, their
positions and velocities will not be updated.
"fix aveforce"_fix_aveforce.html - set force on particles to average value, so they move together
"fix setforce"_fix_setforce.html - set force on particles to a value, e.g. 0.0
"fix freeze"_fix_freeze.html - freeze particles for use as granular walls
"fix nve/noforce"_fix_nve_noforce.html - advect particles by their velocity, but without force
"fix move"_fix_move.html - prescribe motion of particles by a linear velocity, oscillation, rotation, variable :ul
The "fix move"_fix_move.html command offers the most generality, since
the motion of individual particles can be specified with
"variable"_variable.html formula which depends on time and/or the
particle position.
For rough walls, it may be useful to turn off pairwise interactions
between wall particles via the "neigh_modify
exclude"_neigh_modify.html command.
Rough walls can also be created by specifying frozen particles that do
not move and do not interact with mobile particles, and then tethering
other particles to the fixed particles, via a "bond"_bond_style.html.
The bonded particles do interact with other mobile particles.
Idealized walls can be specified via several fix commands. "Fix
wall/gran"_fix_wall_gran.html creates frictional walls for use with
granular particles; all the other commands create smooth walls.
"fix wall/reflect"_fix_wall_reflect.html - reflective flat walls
"fix wall/lj93"_fix_wall.html - flat walls, with Lennard-Jones 9/3 potential
"fix wall/lj126"_fix_wall.html - flat walls, with Lennard-Jones 12/6 potential
"fix wall/colloid"_fix_wall.html - flat walls, with "pair_style colloid"_pair_colloid.html potential
"fix wall/harmonic"_fix_wall.html - flat walls, with repulsive harmonic spring potential
"fix wall/region"_fix_wall_region.html - use region surface as wall
"fix wall/gran"_fix_wall_gran.html - flat or curved walls with "pair_style granular"_pair_gran.html potential :ul
The {lj93}, {lj126}, {colloid}, and {harmonic} styles all allow the
flat walls to move with a constant velocity, or oscillate in time.
The "fix wall/region"_fix_wall_region.html command offers the most
generality, since the region surface is treated as a wall, and the
geometry of the region can be a simple primitive volume (e.g. a
sphere, or cube, or plane), or a complex volume made from the union
and intersection of primitive volumes. "Regions"_region.html can also
specify a volume "interior" or "exterior" to the specified primitive
shape or {union} or {intersection}. "Regions"_region.html can also be
"dynamic" meaning they move with constant velocity, oscillate, or
rotate.
The only frictional idealized walls currently in LAMMPS are flat or
curved surfaces specified by the "fix wall/gran"_fix_wall_gran.html
command. At some point we plan to allow regoin surfaces to be used as
frictional walls, as well as triangulated surfaces.
:line
-4.18 Elastic constants :link(4_18),h4
+6.18 Elastic constants :link(howto_18),h4
Elastic constants characterize the stiffness of a material. The formal
definition is provided by the linear relation that holds between the
stress and strain tensors in the limit of infinitesimal deformation.
In tensor notation, this is expressed as s_ij = C_ijkl * e_kl, where
the repeated indices imply summation. s_ij are the elements of the
symmetric stress tensor. e_kl are the elements of the symmetric strain
tensor. C_ijkl are the elements of the fourth rank tensor of elastic
constants. In three dimensions, this tensor has 3^4=81 elements. Using
Voigt notation, the tensor can be written as a 6x6 matrix, where C_ij
is now the derivative of s_i w.r.t. e_j. Because s_i is itself a
derivative w.r.t. e_i, it follows that C_ij is also symmetric, with at
most 7*6/2 = 21 distinct elements.
At zero temperature, it is easy to estimate these derivatives by
deforming the cell in one of the six directions using the command
"displace_box"_displace_box.html and measuring the change in the
stress tensor. A general-purpose script that does this is given in the
examples/elastic directory described in "this
section"_Section_example.html.
Calculating elastic constants at finite temperature is more
challenging, because it is necessary to run a simulation that perfoms
time averages of differential properties. One way to do this is to
measure the change in average stress tensor in an NVT simulations when
the cell volume undergoes a finite deformation. In order to balance
the systematic and statistical errors in this method, the magnitude of
the deformation must be chosen judiciously, and care must be taken to
fully equilibrate the deformed cell before sampling the stress
tensor. Another approach is to sample the triclinic cell fluctuations
that occur in an NPT simulation. This method can also be slow to
converge and requires careful post-processing "(Shinoda)"_#Shinoda
:line
-4.19 Library interface to LAMMPS :link(4_19),h4
+6.19 Library interface to LAMMPS :link(howto_19),h4
-As described in "this section"_Section_start.html#2_4, LAMMPS can be
-built as a library, so that it can be called by another code, used in
-a "coupled manner"_Section_howto.html#4_10 with other codes, or driven
-through a "Python interface"_Section_python.html.
+As described in "this section"_Section_start.html#start_4, LAMMPS can
+be built as a library, so that it can be called by another code, used
+in a "coupled manner"_Section_howto.html#howto_10 with other codes, or
+driven through a "Python interface"_Section_python.html.
All of these methodologies use a C-style interface to LAMMPS that is
provided in the files src/library.cpp and src/library.h. The
functions therein have a C-style argument list, but contain C++ code
you could write yourself in a C++ application that was invoking LAMMPS
directly. The C++ code in the functions illustrates how to invoke
internal LAMMPS operations. Note that LAMMPS classes are defined
within a LAMMPS namespace (LAMMPS_NS) if you use them from another C++
application.
Library.cpp contains these 4 functions:
void lammps_open(int, char **, MPI_Comm, void **);
void lammps_close(void *);
void lammps_file(void *, char *);
char *lammps_command(void *, char *); :pre
The lammps_open() function is used to initialize LAMMPS, passing in a
-list of strings as if they were "command-line arguments"_#2_6 when
-LAMMPS is run in stand-alone mode from the command line, and a MPI
-communicator for LAMMPS to run under. It returns a ptr to the LAMMPS
-object that is created, and which is used in subsequent library calls.
-The lammps_open() function can be called multiple times, to create
+list of strings as if they were "command-line
+arguments"_Section_start.html#start_6 when LAMMPS is run in
+stand-alone mode from the command line, and a MPI communicator for
+LAMMPS to run under. It returns a ptr to the LAMMPS object that is
+created, and which is used in subsequent library calls. The
+lammps_open() function can be called multiple times, to create
multiple instances of LAMMPS.
LAMMPS will run on the set of processors in the communicator. This
means the calling code can run LAMMPS on all or a subset of
processors. For example, a wrapper script might decide to alternate
between LAMMPS and another code, allowing them both to run on all the
processors. Or it might allocate half the processors to LAMMPS and
half to the other code and run both codes simultaneously before
syncing them up periodically. Or it might instantiate multiple
instances of LAMMPS to perform different calculations.
The lammps_close() function is used to shut down an instance of LAMMPS
and free all its memory.
The lammps_file() and lammps_command() functions are used to pass a
file or string to LAMMPS as if it were an input script or single
command in an input script. Thus the calling code can read or
generate a series of LAMMPS commands one line at a time and pass it
thru the library interface to setup a problem and then run it,
interleaving the lammps_command() calls with other calls to extract
information from LAMMPS, perform its own operations, or call another
code's library.
Other useful functions are also included in library.cpp. For example:
void *lammps_extract_global(void *, char *)
void *lammps_extract_atom(void *, char *)
void *lammps_extract_compute(void *, char *, int, int)
void *lammps_extract_fix(void *, char *, int, int, int, int)
void *lammps_extract_variable(void *, char *, char *)
int lammps_get_natoms(void *)
void lammps_get_coords(void *, double *)
void lammps_put_coords(void *, double *) :pre
These can extract various global or per-atom quantities from LAMMPS as
well as values calculated by a compute, fix, or variable. The "get"
and "put" operations can retrieve and reset atom coordinates.
See the library.cpp file and its associated header file library.h for
details.
The key idea of the library interface is that you can write any
functions you wish to define how your code talks to LAMMPS and add
them to src/library.cpp and src/library.h, as well as to the "Python
interface"_Section_python.html. The routines you add can access
or change any LAMMPS data you wish. The couple and python directories
have example C++ and C and Python codes which show how a driver code
can link to LAMMPS as a library, run LAMMPS on a subset of processors,
grab data from LAMMPS, change it, and put it back into LAMMPS.
:line
-4.20 Calculating thermal conductivity :link(4_20),h4
+6.20 Calculating thermal conductivity :link(howto_20),h4
The thermal conductivity kappa of a material can be measured in at
least 3 ways using various options in LAMMPS. (See "this
-section"_Section_howto.html#4_21 of the manual for an analogous
+section"_Section_howto.html#howto_21 of the manual for an analogous
discussion for viscosity). The thermal conducitivity tensor kappa is
a measure of the propensity of a material to transmit heat energy in a
diffusive manner as given by Fourier's law
J = -kappa grad(T)
where J is the heat flux in units of energy per area per time and
grad(T) is the spatial gradient of temperature. The thermal
conductivity thus has units of energy per distance per time per degree
K and is often approximated as an isotropic quantity, i.e. as a
scalar.
The first method is to setup two thermostatted regions at opposite
ends of a simulation box, or one in the middle and one at the end of a
periodic box. By holding the two regions at different temperatures
-with a "thermostatting fix"_Section_howto.html#4_13, the energy added
+with a "thermostatting fix"_Section_howto.html#howto_13, the energy added
to the hot region should equal the energy subtracted from the cold
region and be proportional to the heat flux moving between the
regions. See the paper by "Ikeshoji and Hafskjold"_#Ikeshoji for
details of this idea. Note that thermostatting fixes such as "fix
nvt"_fix_nh.html, "fix langevin"_fix_langevin.html, and "fix
temp/rescale"_fix_temp_rescale.html store the cumulative energy they
add/subtract. Alternatively, the "fix heat"_fix_heat.html command can
used in place of thermostats on each of two regions, and the resulting
temperatures of the two regions monitored with the "compute
temp/region" command or the temperature profile of the intermediate
region monitored with the "fix ave/spatial"_fix_ave_spatial.html and
"compute ke/atom"_compute_ke_atom.html commands.
The second method is to perform a reverse non-equilibrium MD
simulation using the "fix
thermal/conductivity"_fix_thermal_conductivity.html command which
implements the rNEMD algorithm of Muller-Plathe. Kinetic energy is
swapped between atoms in two different layers of the simulation box.
This induces a temperature gradient between the two layers which can
be monitored with the "fix ave/spatial"_fix_ave_spatial.html and
"compute ke/atom"_compute_ke_atom.html commands. The fix tallies the
cumulative energy transfer that it performs. See the "fix
thermal/conductivity"_fix_thermal_conductivity.html command for
details.
The third method is based on the Green-Kubo (GK) formula which relates
the ensemble average of the auto-correlation of the heat flux to
kappa. The heat flux can be calculated from the fluctuations of
per-atom potential and kinetic energies and per-atom stress tensor in
a steady-state equilibrated simulation. This is in contrast to the
two preceding non-equilibrium methods, where energy flows continuously
between hot and cold regions of the simulation box.
The "compute heat/flux"_compute_heat_flux.html command can calculate
the needed heat flux and describes how to implement the Green_Kubo
formalism using additional LAMMPS commands, such as the "fix
ave/correlate"_fix_ave_correlate.html command to calculate the needed
auto-correlation. See the doc page for the "compute
heat/flux"_compute_heat_flux.html command for an example input script
that calculates the thermal conductivity of solid Ar via the GK
formalism.
:line
-4.21 Calculating viscosity :link(4_21),h4
+6.21 Calculating viscosity :link(howto_21),h4
The shear viscosity eta of a fluid can be measured in at least 3 ways
using various options in LAMMPS. (See "this
-section"_Section_howto.html#4_20 of the manual for an analogous
+section"_Section_howto.html#howto_20 of the manual for an analogous
discussion for thermal conductivity). Eta is a measure of the
propensity of a fluid to transmit momentum in a direction
perpendicular to the direction of velocity or momentum flow.
Alternatively it is the resistance the fluid has to being sheared. It
is given by
J = -eta grad(Vstream)
where J is the momentum flux in units of momentum per area per time.
and grad(Vstream) is the spatial gradient of the velocity of the fluid
moving in another direction, normal to the area through which the
momentum flows. Viscosity thus has units of pressure-time.
The first method is to perform a non-equlibrium MD (NEMD) simulation
by shearing the simulation box via the "fix deform"_fix_deform.html
command, and using the "fix nvt/sllod"_fix_nvt_sllod.html command to
thermostat the fluid via the SLLOD equations of motion. The velocity
profile setup in the fluid by this procedure can be monitored by the
"fix ave/spatial"_fix_ave_spatial.html command, which determines
grad(Vstream) in the equation above. E.g. the derivative in the
y-direction of the Vx component of fluid motion or grad(Vstream) =
dVx/dy. In this case, the Pxy off-diagonal component of the pressure
or stress tensor, as calculated by the "compute
pressure"_compute_pressure.html command, can also be monitored, which
is the J term in the equation above. See "this
-section"_Section_howto.html#4_13 of the manual for details on NEMD
+section"_Section_howto.html#howto_13 of the manual for details on NEMD
simulations.
The second method is to perform a reverse non-equilibrium MD
simulation using the "fix viscosity"_fix_viscosity.html command which
implements the rNEMD algorithm of Muller-Plathe. Momentum in one
dimension is swapped between atoms in two different layers of the
simulation box in a different dimension. This induces a velocity
gradient which can be monitored with the "fix
ave/spatial"_fix_ave_spatial.html command. The fix tallies the
cummulative momentum transfer that it performs. See the "fix
viscosity"_fix_viscosity.html command for details.
The third method is based on the Green-Kubo (GK) formula which relates
the ensemble average of the auto-correlation of the stress/pressure
tensor to eta. This can be done in a steady-state equilibrated
simulation which is in contrast to the two preceding non-equilibrium
methods, where momentum flows continuously through the simulation box.
Here is an example input script that calculates the viscosity of
liquid Ar via the GK formalism:
# Sample LAMMPS input script for viscosity of liquid Ar :pre
units real
variable T equal 86.4956
variable V equal vol
variable dt equal 4.0
variable p equal 400 # correlation length
variable s equal 5 # sample interval
variable d equal $p*$s # dump interval :pre
# convert from LAMMPS real units to SI :pre
variable kB equal 1.3806504e-23 # \[J/K/] Boltzmann
variable atm2Pa equal 101325.0
variable A2m equal 1.0e-10
variable fs2s equal 1.0e-15
variable convert equal $\{atm2Pa\}*$\{atm2Pa\}*$\{fs2s\}*$\{A2m\}*$\{A2m\}*$\{A2m\} :pre
# setup problem :pre
dimension 3
boundary p p p
lattice fcc 5.376 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
region box block 0 4 0 4 0 4
create_box 1 box
create_atoms 1 box
mass 1 39.948
pair_style lj/cut 13.0
pair_coeff * * 0.2381 3.405
timestep $\{dt\}
thermo $d :pre
# equilibration and thermalization :pre
velocity all create $T 102486 mom yes rot yes dist gaussian
fix NVT all nvt temp $T $T 10 drag 0.2
run 8000 :pre
# viscosity calculation, switch to NVE if desired :pre
#unfix NVT
#fix NVE all nve :pre
reset_timestep 0
variable pxy equal pxy
variable pxz equal pxz
variable pyz equal pyz
fix SS all ave/correlate $s $p $d &
v_pxy v_pxz v_pyz type auto file S0St.dat ave running
variable scale equal $\{convert\}/($\{kB\}*$T)*$V*$s*$\{dt\}
variable v11 equal trap(f_SS\[3/])*$\{scale\}
variable v22 equal trap(f_SS\[4/])*$\{scale\}
variable v33 equal trap(f_SS\[5/])*$\{scale\}
thermo_style custom step temp press v_pxy v_pxz v_pyz v_v11 v_v22 v_v33
run 100000
variable v equal (v_v11+v_v22+v_v33)/3.0
variable ndens equal count(all)/vol
print "average viscosity: $v \[Pa.s/] @ $T K, $\{ndens\} /A^3" :pre
:line
:line
:link(Berendsen)
[(Berendsen)] Berendsen, Grigera, Straatsma, J Phys Chem, 91,
6269-6271 (1987).
:link(Cornell)
[(Cornell)] Cornell, Cieplak, Bayly, Gould, Merz, Ferguson,
Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
:link(Horn)
[(Horn)] Horn, Swope, Pitera, Madura, Dick, Hura, and Head-Gordon,
J Chem Phys, 120, 9665 (2004).
:link(Ikeshoji)
[(Ikeshoji)] Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261
(1994).
:link(MacKerell)
[(MacKerell)] MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
:link(Mayo)
[(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990).
:link(Jorgensen)
[(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem
Phys, 79, 926 (1983).
:link(Price)
[(Price)] Price and Brooks, J Chem Phys, 121, 10096 (2004).
:link(Shinoda)
[(Shinoda)] Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
diff --git a/doc/Section_intro.html b/doc/Section_intro.html
index db64d2821..1e7001a9d 100644
--- a/doc/Section_intro.html
+++ b/doc/Section_intro.html
@@ -1,633 +1,634 @@
<HTML>
<CENTER><A HREF = "Manual.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_start.html">Next Section</A>
</CENTER>
<HR>
<H3>1. Introduction
</H3>
<P>These sections provide an overview of what LAMMPS can and can't do,
describe what it means for LAMMPS to be an open-source code, and
acknowledge the funding and people who have contributed to LAMMPS over
the years.
</P>
-1.1 <A HREF = "#1_1">What is LAMMPS</A><BR>
-1.2 <A HREF = "#1_2">LAMMPS features</A><BR>
-1.3 <A HREF = "#1_3">LAMMPS non-features</A><BR>
-1.4 <A HREF = "#1_4">Open source distribution</A><BR>
-1.5 <A HREF = "#1_5">Acknowledgments and citations</A> <BR>
+1.1 <A HREF = "#intro_1">What is LAMMPS</A><BR>
+1.2 <A HREF = "#intro_2">LAMMPS features</A><BR>
+1.3 <A HREF = "#intro_3">LAMMPS non-features</A><BR>
+1.4 <A HREF = "#intro_4">Open source distribution</A><BR>
+1.5 <A HREF = "#intro_5">Acknowledgments and citations</A> <BR>
<HR>
-<A NAME = "1_1"></A><H4>1.1 What is LAMMPS
+<A NAME = "intro_1"></A><H4>1.1 What is LAMMPS
</H4>
<P>LAMMPS is a classical molecular dynamics code that models an ensemble
of particles in a liquid, solid, or gaseous state. It can model
atomic, polymeric, biological, metallic, granular, and coarse-grained
systems using a variety of force fields and boundary conditions.
</P>
<P>For examples of LAMMPS simulations, see the Publications page of the
<A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A>.
</P>
<P>LAMMPS runs efficiently on single-processor desktop or laptop
machines, but is designed for parallel computers. It will run on any
parallel machine that compiles C++ and supports the <A HREF = "http://www-unix.mcs.anl.gov/mpi">MPI</A>
message-passing library. This includes distributed- or shared-memory
parallel machines and Beowulf-style clusters.
</P>
<P>LAMMPS can model systems with only a few particles up to millions or
billions. See <A HREF = "Section_perf.html">this section</A> for information on LAMMPS
performance and scalability, or the Benchmarks section of the <A HREF = "http://lammps.sandia.gov">LAMMPS
WWW Site</A>.
</P>
<P>LAMMPS is a freely-available open-source code, distributed under the
terms of the <A HREF = "http://www.gnu.org/copyleft/gpl.html">GNU Public License</A>, which means you can use or
-modify the code however you wish. See <A HREF = "#1_4">this section</A> for a brief
+modify the code however you wish. See <A HREF = "#intro_4">this section</A> for a brief
discussion of the open-source philosophy.
</P>
<P>LAMMPS is designed to be easy to modify or extend with new
capabilities, such as new force fields, atom types, boundary
conditions, or diagnostics. See <A HREF = "Section_modify.html">this section</A> for
more details.
</P>
<P>The current version of LAMMPS is written in C++. Earlier versions
were written in F77 and F90. See <A HREF = "Section_history.html">this section</A>
for more information on different versions. All versions can be
downloaded from the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A>.
</P>
<P>LAMMPS was originally developed under a US Department of Energy CRADA
(Cooperative Research and Development Agreement) between two DOE labs
and 3 companies. It is distributed by <A HREF = "http://www.sandia.gov">Sandia National Labs</A>.
-See <A HREF = "#1_5">this section</A> for more information on LAMMPS funding and
+See <A HREF = "#intro_5">this section</A> for more information on LAMMPS funding and
individuals who have contributed to LAMMPS.
</P>
<P>In the most general sense, LAMMPS integrates Newton's equations of
motion for collections of atoms, molecules, or macroscopic particles
that interact via short- or long-range forces with a variety of
initial and/or boundary conditions. For computational efficiency
LAMMPS uses neighbor lists to keep track of nearby particles. The
lists are optimized for systems with particles that are repulsive at
short distances, so that the local density of particles never becomes
too large. On parallel machines, LAMMPS uses spatial-decomposition
techniques to partition the simulation domain into small 3d
sub-domains, one of which is assigned to each processor. Processors
communicate and store "ghost" atom information for atoms that border
their sub-domain. LAMMPS is most efficient (in a parallel sense) for
systems whose particles fill a 3d rectangular box with roughly uniform
density. Papers with technical details of the algorithms used in
-LAMMPS are listed in <A HREF = "#1_5">this section</A>.
+LAMMPS are listed in <A HREF = "#intro_5">this section</A>.
</P>
<HR>
-<A NAME = "1_2"></A><H4>1.2 LAMMPS features
+<A NAME = "intro_2"></A><H4>1.2 LAMMPS features
</H4>
<P>This section highlights LAMMPS features, with pointers to specific
commands which give more details. If LAMMPS doesn't have your
favorite interatomic potential, boundary condition, or atom type, see
<A HREF = "Section_modify.html">this section</A>, which describes how you can add it to
LAMMPS.
</P>
<H4>General features
</H4>
<UL><LI> runs on a single processor or in parallel
<LI> distributed-memory message-passing parallelism (MPI)
<LI> spatial-decomposition of simulation domain for parallelism
<LI> open-source distribution
<LI> highly portable C++
<LI> optional libraries used: MPI and single-processor FFT
<LI> easy to extend with new features and functionality
<LI> runs from an input script
<LI> syntax for defining and using variables and formulas
<LI> syntax for looping over runs and breaking out of loops
<LI> run one or multiple simulations simultaneously (in parallel) from one script
<LI> build as library, invoke LAMMPS thru library interface or provided Python wrapper
<LI> couple with other codes: LAMMPS calls other code, other code calls LAMMPS, umbrella code calls both
</UL>
<H4>Particle and model types
</H4>
<P>(<A HREF = "atom_style.html">atom style</A> command)
</P>
<UL><LI> atoms
<LI> coarse-grained particles (e.g. bead-spring polymers)
<LI> united-atom polymers or organic molecules
<LI> all-atom polymers, organic molecules, proteins, DNA
<LI> metals
<LI> granular materials
<LI> coarse-grained mesoscale models
<LI> extended spherical and ellipsoidal particles
<LI> point dipolar particles
<LI> rigid collections of particles
<LI> hybrid combinations of these
</UL>
<H4>Force fields
</H4>
<P>(<A HREF = "pair_style.html">pair style</A>, <A HREF = "bond_style.html">bond style</A>,
<A HREF = "angle_style.html">angle style</A>, <A HREF = "dihedral_style.html">dihedral style</A>,
<A HREF = "improper_style.html">improper style</A>, <A HREF = "kspace_style.html">kspace style</A>
commands)
</P>
<UL><LI> pairwise potentials: Lennard-Jones, Buckingham, Morse, Born-Mayer-Huggins, Yukawa, soft, class 2 (COMPASS), hydrogen bond, tabulated
<LI> charged pairwise potentials: Coulombic, point-dipole
<LI> manybody potentials: EAM, Finnis/Sinclair EAM, modified EAM (MEAM), embedded ion method (EIM), ADP, Stillinger-Weber, Tersoff, REBO, AIREBO, ReaxFF, COMB
<LI> electron force field (eFF, AWPMD)
<LI> coarse-grained potentials: DPD, GayBerne, REsquared, colloidal, DLVO
<LI> mesoscopic potentials: granular, Peridynamics
<LI> bond potentials: harmonic, FENE, Morse, nonlinear, class 2, quartic (breakable)
<LI> angle potentials: harmonic, CHARMM, cosine, cosine/squared, cosine/periodic, class 2 (COMPASS)
<LI> dihedral potentials: harmonic, CHARMM, multi-harmonic, helix, class 2 (COMPASS), OPLS
<LI> improper potentials: harmonic, cvff, umbrella, class 2 (COMPASS)
<LI> polymer potentials: all-atom, united-atom, bead-spring, breakable
<LI> water potentials: TIP3P, TIP4P, SPC
<LI> implicit solvent potentials: hydrodynamic lubrication, Debye
<LI> long-range Coulombics and dispersion: Ewald, PPPM (similar to particle-mesh Ewald), Ewald/N for long-range Lennard-Jones
<LI> force-field compatibility with common CHARMM, AMBER, DREIDING, OPLS, GROMACS, COMPASS options
<LI> handful of GPU-enabled pair styles
</UL>
<P> hybrid potentials: multiple pair, bond, angle, dihedral, improper potentials can be used in one simulation
overlaid potentials: superposition of multiple pair potentials
</P>
<H4>Atom creation
</H4>
<P>(<A HREF = "read_data.html">read_data</A>, <A HREF = "lattice.html">lattice</A>,
<A HREF = "create_atoms.html">create_atoms</A>, <A HREF = "delete_atoms.html">delete_atoms</A>,
<A HREF = "displace_atoms.html">displace_atoms</A>, <A HREF = "replicate.html">replicate</A> commands)
</P>
<UL><LI> read in atom coords from files
<LI> create atoms on one or more lattices (e.g. grain boundaries)
<LI> delete geometric or logical groups of atoms (e.g. voids)
<LI> replicate existing atoms multiple times
<LI> displace atoms
</UL>
<H4>Ensembles, constraints, and boundary conditions
</H4>
<P>(<A HREF = "fix.html">fix</A> command)
</P>
<UL><LI> 2d or 3d systems
<LI> orthogonal or non-orthogonal (triclinic symmetry) simulation domains
<LI> constant NVE, NVT, NPT, NPH, Parinello/Rahman integrators
<LI> thermostatting options for groups and geometric regions of atoms
<LI> pressure control via Nose/Hoover or Berendsen barostatting in 1 to 3 dimensions
<LI> simulation box deformation (tensile and shear)
<LI> harmonic (umbrella) constraint forces
<LI> rigid body constraints
<LI> SHAKE bond and angle constraints
<LI> bond breaking, formation, swapping
<LI> walls of various kinds
<LI> non-equilibrium molecular dynamics (NEMD)
<LI> variety of additional boundary conditions and constraints
</UL>
<H4>Integrators
</H4>
<P>(<A HREF = "run.html">run</A>, <A HREF = "run_style.html">run_style</A>, <A HREF = "minimize.html">minimize</A> commands)
</P>
<UL><LI> velocity-Verlet integrator
<LI> Brownian dynamics
<LI> rigid body integration
<LI> energy minimization via conjugate gradient or steepest descent relaxation
<LI> rRESPA hierarchical timestepping
</UL>
<H4>Diagnostics
</H4>
<UL><LI> see the various flavors of the <A HREF = "fix.html">fix</A> and <A HREF = "compute.html">compute</A> commands
</UL>
<H4>Output
</H4>
<P>(<A HREF = "dump.html">dump</A>, <A HREF = "restart.html">restart</A> commands)
</P>
<UL><LI> log file of thermodynamic info
<LI> text dump files of atom coords, velocities, other per-atom quantities
<LI> binary restart files
<LI> parallel I/O of dump and restart files
<LI> per-atom quantities (energy, stress, centro-symmetry parameter, CNA, etc)
<LI> user-defined system-wide (log file) or per-atom (dump file) calculations
<LI> spatial and time averaging of per-atom quantities
<LI> time averaging of system-wide quantities
<LI> atom snapshots in native, XYZ, XTC, DCD, CFG formats
</UL>
<H4>Multi-replica models
</H4>
<P><A HREF = "neb.html">nudged elastic band</A>
<A HREF = "prd.html">parallel replica dynamics</A>
<A HREF = "tad.html">temperature accelerated dynamics</A>
<A HREF = "temper.html">parallel tempering</A>
</P>
<H4>Pre- and post-processing
</H4>
<UL><LI>Various pre- and post-processing serial tools are packaged
with LAMMPS; see these <A HREF = "Section_tools.html">doc pages</A>.
<LI>Our group has also written and released a separate toolkit called
<A HREF = "http://www.sandia.gov/~sjplimp/pizza.html">Pizza.py</A> which 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>.
</UL>
<H4>Specialized features
</H4>
<P>These are LAMMPS capabilities which you may not think of as typical
molecular dynamics options:
</P>
<UL><LI><A HREF = "fix_srd.html">stochastic rotation dynamics (SRD)</A>
<LI><A HREF = "fix_imd.html">real-time visualization and interactive MD</A>
<LI><A HREF = "fix_atc.html">atom-to-continuum coupling</A> with finite elements
<LI>coupled rigid body integration via the <A HREF = "fix_poems.html">POEMS</A> library
+<LI><A HREF = "doc/fix_gcmc.html">grand canonical Monte Carlo</A> insertions/deletions
<LI><A HREF = "pair_dsmc.html">Direct Simulation Monte Carlo</A> for low-density fluids
<LI><A HREF = "pair_peri.html">Peridynamics mesoscale modeling</A>
<LI><A HREF = "fix_tmd.html">targeted</A> and <A HREF = "fix_smd.html">steered</A> molecular dynamics
<LI><A HREF = "fix_ttm.html">two-temperature electron model</A>
</UL>
<HR>
-<A NAME = "1_3"></A><H4>1.3 LAMMPS non-features
+<A NAME = "intro_3"></A><H4>1.3 LAMMPS non-features
</H4>
<P>LAMMPS is designed to efficiently compute Newton's equations of motion
for a system of interacting particles. Many of the tools needed to
pre- and post-process the data for such simulations are not included
in the LAMMPS kernel for several reasons:
</P>
<UL><LI>the desire to keep LAMMPS simple
<LI>they are not parallel operations
<LI>other codes already do them
<LI>limited development resources
</UL>
<P>Specifically, LAMMPS itself does not:
</P>
<UL><LI>run thru a GUI
<LI>build molecular systems
<LI>assign force-field coefficients automagically
<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
coeff</A>, <A HREF = "angle_coeff.html">angle coeff</A>, etc commands.
For molecular systems or more complicated simulation geometries, users
typically use another code as a builder and convert its output to
LAMMPS input format, or write their own code to generate atom
coordinate and molecular topology for LAMMPS to read in.
</P>
<P>For complicated molecular systems (e.g. a protein), a multitude of
topology information and hundreds of force-field coefficients must
typically be specified. We suggest you use a program like
<A HREF = "http://www.scripps.edu/brooks">CHARMM</A> or <A HREF = "http://amber.scripps.edu">AMBER</A> or other molecular builders to setup
such problems and dump its information to a file. You can then
reformat the file as LAMMPS input. Some of the tools in <A HREF = "Section_tools.html">this
section</A> can assist in this process.
</P>
<P>Similarly, LAMMPS creates output files in a simple format. Most users
post-process these files with their own analysis tools or re-format
them for input into other programs, including visualization packages.
If you are convinced you need to compute something on-the-fly as
LAMMPS runs, see <A HREF = "Section_modify.html">this section</A> for a discussion
of how you can use the <A HREF = "dump.html">dump</A> and <A HREF = "compute.html">compute</A> and
<A HREF = "fix.html">fix</A> commands to print out data of your choosing. Keep in
mind that complicated computations can slow down the molecular
dynamics timestepping, particularly if the computations are not
parallel, so it is often better to leave such analysis to
post-processing codes.
</P>
<P>A very simple (yet fast) visualizer is provided with the LAMMPS
package - see the <A HREF = "Section_tools.html#xmovie">xmovie</A> tool in <A HREF = "Section_tools.html">this
section</A>. It creates xyz projection views of
atomic coordinates and animates them. We find it very useful for
debugging purposes. For high-quality visualization we recommend the
following packages:
</P>
<UL><LI><A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD</A>
<LI><A HREF = "http://mt.seas.upenn.edu/Archive/Graphics/A">AtomEye</A>
<LI><A HREF = "http://pymol.sourceforge.net">PyMol</A>
<LI><A HREF = "http://www.bmsc.washington.edu/raster3d/raster3d.html">Raster3d</A>
<LI><A HREF = "http://www.openrasmol.org">RasMol</A>
</UL>
<P>Other features that LAMMPS does not yet (and may never) support are
discussed in <A HREF = "Section_history.html">this section</A>.
</P>
<P>Finally, these are freely-available molecular dynamics codes, most of
them parallel, which may be well-suited to the problems you want to
model. They can also be used in conjunction with LAMMPS to perform
complementary modeling tasks.
</P>
<UL><LI><A HREF = "http://www.scripps.edu/brooks">CHARMM</A>
<LI><A HREF = "http://amber.scripps.edu">AMBER</A>
<LI><A HREF = "http://www.ks.uiuc.edu/Research/namd/">NAMD</A>
<LI><A HREF = "http://www.emsl.pnl.gov/docs/nwchem/nwchem.html">NWCHEM</A>
<LI><A HREF = "http://www.cse.clrc.ac.uk/msi/software/DL_POLY">DL_POLY</A>
<LI><A HREF = "http://dasher.wustl.edu/tinker">Tinker</A>
</UL>
<P>CHARMM, AMBER, NAMD, NWCHEM, and Tinker are designed primarily for
modeling biological molecules. CHARMM and AMBER use
atom-decomposition (replicated-data) strategies for parallelism; NAMD
and NWCHEM use spatial-decomposition approaches, similar to LAMMPS.
Tinker is a serial code. DL_POLY includes potentials for a variety of
biological and non-biological materials; both a replicated-data and
spatial-decomposition version exist.
</P>
<HR>
-<A NAME = "1_4"></A><H4>1.4 Open source distribution
+<A NAME = "intro_4"></A><H4>1.4 Open source distribution
</H4>
<P>LAMMPS comes with no warranty of any kind. As each source file states
in its header, it is a copyrighted code that is distributed free-of-
charge, under the terms of the <A HREF = "http://www.gnu.org/copyleft/gpl.html">GNU Public License</A> (GPL). This
is often referred to as open-source distribution - see
<A HREF = "http://www.gnu.org">www.gnu.org</A> or <A HREF = "http://www.opensource.org">www.opensource.org</A> for more
details. The legal text of the GPL is in the LICENSE file that is
included in the LAMMPS distribution.
</P>
<P>Here is a summary of what the GPL means for LAMMPS users:
</P>
<P>(1) Anyone is free to use, modify, or extend LAMMPS in any way they
choose, including for commercial purposes.
</P>
<P>(2) If you distribute a modified version of LAMMPS, it must remain
open-source, meaning you distribute it under the terms of the GPL.
You should clearly annotate such a code as a derivative version of
LAMMPS.
</P>
<P>(3) If you release any code that includes LAMMPS source code, then it
must also be open-sourced, meaning you distribute it under the terms
of the GPL.
</P>
<P>(4) If you give LAMMPS files to someone else, the GPL LICENSE file and
source file headers (including the copyright and GPL notices) should
remain part of the code.
</P>
<P>In the spirit of an open-source code, these are various ways you can
contribute to making LAMMPS better. You can send email to the
<A HREF = "http://lammps.sandia.gov/authors.html">developers</A> on any of these
items.
</P>
<UL><LI>Point prospective users to the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A>. Mention it in
talks or link to it from your WWW site.
<LI>If you find an error or omission in this manual or on the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW
Site</A>, or have a suggestion for something to clarify or include,
send an email to the
<A HREF = "http://lammps.sandia.gov/authors.html">developers</A>.
-<LI>If you find a bug, <A HREF = "Section_errors.html#10_2">this section</A> describes
+<LI>If you find a bug, <A HREF = "Section_errors.html#err_2">this section</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">this section</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 = "1_5"></A>1.5 Acknowledgments and citations
+<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 papers describe the parallel algorithms used in LAMMPS.
</P>
<P>S. J. Plimpton, <B>Fast Parallel Algorithms for Short-Range Molecular
Dynamics</B>, J Comp Phys, 117, 1-19 (1995).
</P>
<P>S. J. Plimpton, R. Pollock, M. Stevens, <B>Particle-Mesh Ewald and
rRESPA for Parallel Molecular Dynamics Simulations</B>, in Proc of the
Eighth SIAM Conference on Parallel Processing for Scientific
Computing, Minneapolis, MN (March 1997).
</P>
<P>If you use LAMMPS results in your published work, please cite the J
Comp Phys reference and include a pointer to the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A>
(http://lammps.sandia.gov).
</P>
<P>If you send is information about your publication, we'll be pleased to
add it to the Publications page of the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A>. Ditto
for a picture or movie for the Pictures or Movies pages.
</P>
<P>The core group of LAMMPS developers is at Sandia National Labs. They
include <A HREF = "http://www.sandia.gov/~sjplimp">Steve Plimpton</A>, Paul Crozier, and Aidan Thompson and can
be contacted via email: sjplimp, pscrozi, athomps at sandia.gov.
</P>
<P>Here are various folks who have made significant contributions to
features in LAMMPS. The most recent contributions are at the top of
the list.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >pppm GPU single and double </TD><TD > Mike Brown (ORNL)</TD></TR>
<TR><TD >pair_style lj/cut/expand </TD><TD > Inderaj Bains (NVIDIA)</TD></TR>
<TR><TD >temperature accelerated dynamics (TAD) </TD><TD > Aidan Thompson (Sandia)</TD></TR>
<TR><TD >pair reax/c and fix qeq/reax </TD><TD > Metin Aktulga (Purdue, now LBNL)</TD></TR>
<TR><TD >DREIDING force field, pair_style hbond/dreiding, etc </TD><TD > Tod Pascal (CalTech)</TD></TR>
<TR><TD >fix adapt and compute ti for thermodynamic integreation for free energies </TD><TD > Sai Jayaraman (Sandia)</TD></TR>
<TR><TD >pair born and pair gauss </TD><TD > Sai Jayaraman (Sandia)</TD></TR>
<TR><TD >stochastic rotation dynamics (SRD) via fix srd </TD><TD > Jemery Lechman (Sandia) and Pieter in 't Veld (BASF)</TD></TR>
<TR><TD >ipp Perl script tool </TD><TD > Reese Jones (Sandia)</TD></TR>
<TR><TD >eam_database and createatoms tools </TD><TD > Xiaowang Zhou (Sandia)</TD></TR>
<TR><TD >electron force field (eFF) </TD><TD > Andres Jaramillo-Botero and Julius Su (Caltech)</TD></TR>
<TR><TD >embedded ion method (EIM) potential </TD><TD > Xiaowang Zhou (Sandia)</TD></TR>
<TR><TD >COMB potential with charge equilibration </TD><TD > Tzu-Ray Shan (U Florida)</TD></TR>
<TR><TD >fix ave/correlate </TD><TD > Benoit Leblanc, Dave Rigby, Paul Saxe (Materials Design) and Reese Jones (Sandia)</TD></TR>
<TR><TD >pair_style peri/lps </TD><TD > Mike Parks (Sandia)</TD></TR>
<TR><TD >fix msst </TD><TD > Lawrence Fried (LLNL), Evan Reed (LLNL, Stanford)</TD></TR>
<TR><TD >thermo_style custom tpcpu & spcpu keywords </TD><TD > Axel Kohlmeyer (Temple U) </TD></TR>
<TR><TD >fix rigid/nve, fix rigid/nvt </TD><TD > Tony Sheh and Trung Dac Nguyen (U Michigan)</TD></TR>
<TR><TD >public SVN & Git repositories for LAMMPS </TD><TD > Axel Kohlmeyer (Temple U) and Bill Goldman (Sandia)</TD></TR>
<TR><TD >fix nvt, fix nph, fix npt, Parinello/Rahman dynamics, fix box/relax </TD><TD > Aidan Thompson (Sandia)</TD></TR>
<TR><TD >compute heat/flux </TD><TD > German Samolyuk (ORNL) and Mario Pinto (Computational Research Lab, Pune, India)</TD></TR>
<TR><TD >pair yukawa/colloid </TD><TD > Randy Schunk (Sandia)</TD></TR>
<TR><TD >fix wall/colloid </TD><TD > Jeremy Lechman (Sandia)</TD></TR>
<TR><TD >pair_style dsmc for Direct Simulation Monte Carlo (DSMC) modeling </TD><TD > Paul Crozier (Sandia)</TD></TR>
<TR><TD >fix imd for real-time viz and interactive MD </TD><TD > Axel Kohlmeyer (Temple Univ)</TD></TR>
<TR><TD >concentration-dependent EAM potential </TD><TD > Alexander Stukowski (Technical University of Darmstadt)</TD></TR>
<TR><TD >parallel replica dymamics (PRD) </TD><TD > Mike Brown (Sandia)</TD></TR>
<TR><TD >min_style hftn </TD><TD > Todd Plantenga (Sandia)</TD></TR>
<TR><TD >fix atc </TD><TD > Reese Jones, Jon Zimmerman, Jeremy Templeton (Sandia)</TD></TR>
<TR><TD >dump cfg </TD><TD > Liang Wan (Chinese Academy of Sciences)</TD></TR>
<TR><TD >fix nvt with Nose/Hoover chains </TD><TD > Andy Ballard (U Maryland)</TD></TR>
<TR><TD >pair_style lj/cut/gpu, pair_style gayberne/gpu </TD><TD > Mike Brown (Sandia)</TD></TR>
<TR><TD >pair_style lj96/cut, bond_style table, angle_style table </TD><TD > Chuanfu Luo</TD></TR>
<TR><TD >fix langevin tally </TD><TD > Carolyn Phillips (U Michigan)</TD></TR>
<TR><TD >compute heat/flux for Green-Kubo </TD><TD > Reese Jones (Sandia), Philip Howell (Siemens), Vikas Varsney (AFRL)</TD></TR>
<TR><TD >region cone </TD><TD > Pim Schravendijk</TD></TR>
<TR><TD >fix reax/bonds </TD><TD > Aidan Thompson (Sandia)</TD></TR>
<TR><TD >pair born/coul/long </TD><TD > Ahmed Ismail (Sandia)</TD></TR>
<TR><TD >fix ttm </TD><TD > Paul Crozier (Sandia) and Carolyn Phillips (U Michigan)</TD></TR>
<TR><TD >fix box/relax </TD><TD > Aidan Thompson and David Olmsted (Sandia)</TD></TR>
<TR><TD >ReaxFF potential </TD><TD > Aidan Thompson (Sandia) and Hansohl Cho (MIT)</TD></TR>
<TR><TD >compute cna/atom </TD><TD > Wan Liang (Chinese Academy of Sciences)</TD></TR>
<TR><TD >Tersoff/ZBL potential </TD><TD > Dave Farrell (Northwestern U)</TD></TR>
<TR><TD >peridynamics </TD><TD > Mike Parks (Sandia)</TD></TR>
<TR><TD >fix smd for steered MD </TD><TD > Axel Kohlmeyer (U Penn)</TD></TR>
<TR><TD >GROMACS pair potentials </TD><TD > Mark Stevens (Sandia)</TD></TR>
<TR><TD >lmp2vmd tool </TD><TD > Axel Kohlmeyer (U Penn)</TD></TR>
<TR><TD >compute group/group </TD><TD > Naveen Michaud-Agrawal (Johns Hopkins U)</TD></TR>
<TR><TD >CG-CMM user package for coarse-graining </TD><TD > Axel Kohlmeyer (U Penn)</TD></TR>
<TR><TD >cosine/delta angle potential </TD><TD > Axel Kohlmeyer (U Penn)</TD></TR>
<TR><TD >VIM editor add-ons for LAMMPS input scripts </TD><TD > Gerolf Ziegenhain</TD></TR>
<TR><TD >pair lubricate </TD><TD > Randy Schunk (Sandia)</TD></TR>
<TR><TD >compute ackland/atom </TD><TD > Gerolf Zeigenhain</TD></TR>
<TR><TD >kspace_style ewald/n, pair_style lj/coul, pair_style buck/coul </TD><TD > Pieter in 't Veld (Sandia)</TD></TR>
<TR><TD >AIREBO bond-order potential </TD><TD > Ase Henry (MIT)</TD></TR>
<TR><TD >making LAMMPS a true "object" that can be instantiated multiple times, e.g. as a library </TD><TD > Ben FrantzDale (RPI)</TD></TR>
<TR><TD >pymol_asphere viz tool </TD><TD > Mike Brown (Sandia)</TD></TR>
<TR><TD >NEMD SLLOD integration </TD><TD > Pieter in 't Veld (Sandia)</TD></TR>
<TR><TD >tensile and shear deformations </TD><TD > Pieter in 't Veld (Sandia)</TD></TR>
<TR><TD >GayBerne potential </TD><TD > Mike Brown (Sandia)</TD></TR>
<TR><TD >ellipsoidal particles </TD><TD > Mike Brown (Sandia)</TD></TR>
<TR><TD >colloid potentials </TD><TD > Pieter in 't Veld (Sandia)</TD></TR>
<TR><TD >fix heat </TD><TD > Paul Crozier and Ed Webb (Sandia)</TD></TR>
<TR><TD >neighbor multi and communicate multi </TD><TD > Pieter in 't Veld (Sandia)</TD></TR>
<TR><TD >MATLAB post-processing scripts </TD><TD > Arun Subramaniyan (Purdue)</TD></TR>
<TR><TD >triclinic (non-orthogonal) simulation domains </TD><TD > Pieter in 't Veld (Sandia)</TD></TR>
<TR><TD >thermo_extract tool</TD><TD > Vikas Varshney (Wright Patterson AFB)</TD></TR>
<TR><TD >fix ave/time and fix ave/spatial </TD><TD > Pieter in 't Veld (Sandia)</TD></TR>
<TR><TD >MEAM potential </TD><TD > Greg Wagner (Sandia)</TD></TR>
<TR><TD >optimized pair potentials for lj/cut, charmm/long, eam, morse </TD><TD > James Fischer (High Performance Technologies), David Richie and Vincent Natoli (Stone Ridge Technologies)</TD></TR>
<TR><TD >fix wall/lj126 </TD><TD > Mark Stevens (Sandia)</TD></TR>
<TR><TD >Stillinger-Weber and Tersoff potentials </TD><TD > Aidan Thompson and Xiaowang Zhou (Sandia)</TD></TR>
<TR><TD >region prism </TD><TD > Pieter in 't Veld (Sandia)</TD></TR>
<TR><TD >LJ tail corrections for energy/pressure </TD><TD > Paul Crozier (Sandia)</TD></TR>
<TR><TD >fix momentum and recenter </TD><TD > Naveen Michaud-Agrawal (Johns Hopkins U)</TD></TR>
<TR><TD >multi-letter variable names </TD><TD > Naveen Michaud-Agrawal (Johns Hopkins U)</TD></TR>
<TR><TD >OPLS dihedral potential</TD><TD > Mark Stevens (Sandia)</TD></TR>
<TR><TD >POEMS coupled rigid body integrator</TD><TD > Rudranarayan Mukherjee (RPI)</TD></TR>
<TR><TD >faster pair hybrid potential</TD><TD > James Fischer (High Performance Technologies, Inc), Vincent Natoli and David Richie (Stone Ridge Technology)</TD></TR>
<TR><TD >breakable bond quartic potential</TD><TD > Chris Lorenz and Mark Stevens (Sandia)</TD></TR>
<TR><TD >DCD and XTC dump styles</TD><TD > Naveen Michaud-Agrawal (Johns Hopkins U)</TD></TR>
<TR><TD >grain boundary orientation fix </TD><TD > Koenraad Janssens and David Olmsted (Sandia)</TD></TR>
<TR><TD >lj/smooth pair potential </TD><TD > Craig Maloney (UCSB) </TD></TR>
<TR><TD >radius-of-gyration spring fix </TD><TD > Naveen Michaud-Agrawal (Johns Hopkins U) and Paul Crozier (Sandia)</TD></TR>
<TR><TD >self spring fix </TD><TD > Naveen Michaud-Agrawal (Johns Hopkins U)</TD></TR>
<TR><TD >EAM CoAl and AlCu potentials </TD><TD > Kwang-Reoul Lee (KIST, Korea)</TD></TR>
<TR><TD >cosine/squared angle potential </TD><TD > Naveen Michaud-Agrawal (Johns Hopkins U)</TD></TR>
<TR><TD >helix dihedral potential </TD><TD > Naveen Michaud-Agrawal (Johns Hopkins U) and Mark Stevens (Sandia)</TD></TR>
<TR><TD >Finnis/Sinclair EAM</TD><TD > Tim Lau (MIT)</TD></TR>
<TR><TD >dissipative particle dynamics (DPD) potentials</TD><TD > Kurt Smith (U Pitt) and Frank van Swol (Sandia)</TD></TR>
<TR><TD >TIP4P potential (4-site water)</TD><TD > Ahmed Ismail and Amalie Frischknecht (Sandia)</TD></TR>
<TR><TD >uniaxial strain fix</TD><TD > Carsten Svaneborg (Max Planck Institute)</TD></TR>
<TR><TD >thermodynamics enhanced by fix quantities</TD><TD > Aidan Thompson (Sandia)</TD></TR>
<TR><TD >compressed dump files</TD><TD > Erik Luijten (U Illinois)</TD></TR>
<TR><TD >cylindrical indenter fix</TD><TD > Ravi Agrawal (Northwestern U)</TD></TR>
<TR><TD >electric field fix</TD><TD > Christina Payne (Vanderbilt U)</TD></TR>
<TR><TD >AMBER <-> LAMMPS tool</TD><TD > Keir Novik (Univ College London) and Vikas Varshney (U Akron)</TD></TR>
<TR><TD >CHARMM <-> LAMMPS tool</TD><TD > Pieter in 't Veld and Paul Crozier (Sandia)</TD></TR>
<TR><TD >Morse bond potential</TD><TD > Jeff Greathouse (Sandia)</TD></TR>
<TR><TD >radial distribution functions</TD><TD > Paul Crozier & Jeff Greathouse (Sandia)</TD></TR>
<TR><TD >force tables for long-range Coulombics</TD><TD > Paul Crozier (Sandia)</TD></TR>
<TR><TD >targeted molecular dynamics (TMD)</TD><TD > Paul Crozier (Sandia) and Christian Burisch (Bochum University, Germany)</TD></TR>
<TR><TD >FFT support for SGI SCSL (Altix)</TD><TD > Jim Shepherd (Ga Tech)</TD></TR>
<TR><TD >lmp2cfg and lmp2traj tools</TD><TD > Ara Kooser, Jeff Greathouse, Andrey Kalinichev (Sandia)</TD></TR>
<TR><TD >parallel tempering</TD><TD > Mark Sears (Sandia)</TD></TR>
<TR><TD >embedded atom method (EAM) potential</TD><TD > Stephen Foiles (Sandia)</TD></TR>
<TR><TD >multi-harmonic dihedral potential</TD><TD > Mathias Puetz (Sandia)</TD></TR>
<TR><TD >granular force fields and BC</TD><TD > Leo Silbert & Gary Grest (Sandia)</TD></TR>
<TR><TD >2d Ewald/PPPM</TD><TD > Paul Crozier (Sandia)</TD></TR>
<TR><TD >CHARMM force fields</TD><TD > Paul Crozier (Sandia)</TD></TR>
<TR><TD >msi2lmp tool</TD><TD > Steve Lustig (Dupont), Mike Peachey & John Carpenter (Cray)</TD></TR>
<TR><TD >HTFN energy minimizer</TD><TD > Todd Plantenga (Sandia)</TD></TR>
<TR><TD >class 2 force fields</TD><TD > Eric Simon (Cray)</TD></TR>
<TR><TD >NVT/NPT integrators</TD><TD > Mark Stevens (Sandia)</TD></TR>
<TR><TD >rRESPA</TD><TD > Mark Stevens & Paul Crozier (Sandia)</TD></TR>
<TR><TD >Ewald and PPPM solvers</TD><TD > Roy Pollock (LLNL) </TD><TD >
</TD></TR></TABLE></DIV>
<P>Other CRADA partners involved in the design and testing of LAMMPS were
</P>
<UL><LI>John Carpenter (Mayo Clinic, formerly at Cray Research)
<LI>Terry Stouch (Lexicon Pharmaceuticals, formerly at Bristol Myers Squibb)
<LI>Steve Lustig (Dupont)
<LI>Jim Belak (LLNL)
</UL>
</HTML>
diff --git a/doc/Section_intro.txt b/doc/Section_intro.txt
index 28c9a1a9d..4c3a6be8a 100644
--- a/doc/Section_intro.txt
+++ b/doc/Section_intro.txt
@@ -1,627 +1,628 @@
"Previous Section"_Manual.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_start.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
1. Introduction :h3
These sections provide an overview of what LAMMPS can and can't do,
describe what it means for LAMMPS to be an open-source code, and
acknowledge the funding and people who have contributed to LAMMPS over
the years.
-1.1 "What is LAMMPS"_#1_1
-1.2 "LAMMPS features"_#1_2
-1.3 "LAMMPS non-features"_#1_3
-1.4 "Open source distribution"_#1_4
-1.5 "Acknowledgments and citations"_#1_5 :all(b)
+1.1 "What is LAMMPS"_#intro_1
+1.2 "LAMMPS features"_#intro_2
+1.3 "LAMMPS non-features"_#intro_3
+1.4 "Open source distribution"_#intro_4
+1.5 "Acknowledgments and citations"_#intro_5 :all(b)
:line
-1.1 What is LAMMPS :link(1_1),h4
+1.1 What is LAMMPS :link(intro_1),h4
LAMMPS is a classical molecular dynamics code that models an ensemble
of particles in a liquid, solid, or gaseous state. It can model
atomic, polymeric, biological, metallic, granular, and coarse-grained
systems using a variety of force fields and boundary conditions.
For examples of LAMMPS simulations, see the Publications page of the
"LAMMPS WWW Site"_lws.
LAMMPS runs efficiently on single-processor desktop or laptop
machines, but is designed for parallel computers. It will run on any
parallel machine that compiles C++ and supports the "MPI"_mpi
message-passing library. This includes distributed- or shared-memory
parallel machines and Beowulf-style clusters.
:link(mpi,http://www-unix.mcs.anl.gov/mpi)
LAMMPS can model systems with only a few particles up to millions or
billions. See "this section"_Section_perf.html for information on LAMMPS
performance and scalability, or the Benchmarks section of the "LAMMPS
WWW Site"_lws.
LAMMPS is a freely-available open-source code, distributed under the
terms of the "GNU Public License"_gnu, which means you can use or
-modify the code however you wish. See "this section"_#1_4 for a brief
+modify the code however you wish. See "this section"_#intro_4 for a brief
discussion of the open-source philosophy.
:link(gnu,http://www.gnu.org/copyleft/gpl.html)
LAMMPS is designed to be easy to modify or extend with new
capabilities, such as new force fields, atom types, boundary
conditions, or diagnostics. See "this section"_Section_modify.html for
more details.
The current version of LAMMPS is written in C++. Earlier versions
were written in F77 and F90. See "this section"_Section_history.html
for more information on different versions. All versions can be
downloaded from the "LAMMPS WWW Site"_lws.
LAMMPS was originally developed under a US Department of Energy CRADA
(Cooperative Research and Development Agreement) between two DOE labs
and 3 companies. It is distributed by "Sandia National Labs"_snl.
-See "this section"_#1_5 for more information on LAMMPS funding and
+See "this section"_#intro_5 for more information on LAMMPS funding and
individuals who have contributed to LAMMPS.
:link(snl,http://www.sandia.gov)
In the most general sense, LAMMPS integrates Newton's equations of
motion for collections of atoms, molecules, or macroscopic particles
that interact via short- or long-range forces with a variety of
initial and/or boundary conditions. For computational efficiency
LAMMPS uses neighbor lists to keep track of nearby particles. The
lists are optimized for systems with particles that are repulsive at
short distances, so that the local density of particles never becomes
too large. On parallel machines, LAMMPS uses spatial-decomposition
techniques to partition the simulation domain into small 3d
sub-domains, one of which is assigned to each processor. Processors
communicate and store "ghost" atom information for atoms that border
their sub-domain. LAMMPS is most efficient (in a parallel sense) for
systems whose particles fill a 3d rectangular box with roughly uniform
density. Papers with technical details of the algorithms used in
-LAMMPS are listed in "this section"_#1_5.
+LAMMPS are listed in "this section"_#intro_5.
:line
-1.2 LAMMPS features :link(1_2),h4
+1.2 LAMMPS features :link(intro_2),h4
This section highlights LAMMPS features, with pointers to specific
commands which give more details. If LAMMPS doesn't have your
favorite interatomic potential, boundary condition, or atom type, see
"this section"_Section_modify.html, which describes how you can add it to
LAMMPS.
General features :h4
runs on a single processor or in parallel
distributed-memory message-passing parallelism (MPI)
spatial-decomposition of simulation domain for parallelism
open-source distribution
highly portable C++
optional libraries used: MPI and single-processor FFT
easy to extend with new features and functionality
runs from an input script
syntax for defining and using variables and formulas
syntax for looping over runs and breaking out of loops
run one or multiple simulations simultaneously (in parallel) from one script
build as library, invoke LAMMPS thru library interface or provided Python wrapper
couple with other codes: LAMMPS calls other code, other code calls LAMMPS, umbrella code calls both :ul
Particle and model types :h4
("atom style"_atom_style.html command)
atoms
coarse-grained particles (e.g. bead-spring polymers)
united-atom polymers or organic molecules
all-atom polymers, organic molecules, proteins, DNA
metals
granular materials
coarse-grained mesoscale models
extended spherical and ellipsoidal particles
point dipolar particles
rigid collections of particles
hybrid combinations of these :ul
Force fields :h4
("pair style"_pair_style.html, "bond style"_bond_style.html,
"angle style"_angle_style.html, "dihedral style"_dihedral_style.html,
"improper style"_improper_style.html, "kspace style"_kspace_style.html
commands)
pairwise potentials: Lennard-Jones, Buckingham, Morse, Born-Mayer-Huggins, \
Yukawa, soft, class 2 (COMPASS), hydrogen bond, tabulated
charged pairwise potentials: Coulombic, point-dipole
manybody potentials: EAM, Finnis/Sinclair EAM, modified EAM (MEAM), \
embedded ion method (EIM), ADP, Stillinger-Weber, Tersoff, REBO, AIREBO, ReaxFF, COMB
electron force field (eFF, AWPMD)
coarse-grained potentials: DPD, GayBerne, REsquared, colloidal, DLVO
mesoscopic potentials: granular, Peridynamics
bond potentials: harmonic, FENE, Morse, nonlinear, class 2, \
quartic (breakable)
angle potentials: harmonic, CHARMM, cosine, cosine/squared, cosine/periodic, \
class 2 (COMPASS)
dihedral potentials: harmonic, CHARMM, multi-harmonic, helix, \
class 2 (COMPASS), OPLS
improper potentials: harmonic, cvff, umbrella, class 2 (COMPASS)
polymer potentials: all-atom, united-atom, bead-spring, breakable
water potentials: TIP3P, TIP4P, SPC
implicit solvent potentials: hydrodynamic lubrication, Debye
long-range Coulombics and dispersion: Ewald, \
PPPM (similar to particle-mesh Ewald), Ewald/N for long-range Lennard-Jones
force-field compatibility with common CHARMM, AMBER, DREIDING, OPLS, GROMACS, COMPASS options
handful of GPU-enabled pair styles :ul
hybrid potentials: multiple pair, bond, angle, dihedral, improper \
potentials can be used in one simulation
overlaid potentials: superposition of multiple pair potentials
Atom creation :h4
("read_data"_read_data.html, "lattice"_lattice.html,
"create_atoms"_create_atoms.html, "delete_atoms"_delete_atoms.html,
"displace_atoms"_displace_atoms.html, "replicate"_replicate.html commands)
read in atom coords from files
create atoms on one or more lattices (e.g. grain boundaries)
delete geometric or logical groups of atoms (e.g. voids)
replicate existing atoms multiple times
displace atoms :ul
Ensembles, constraints, and boundary conditions :h4
("fix"_fix.html command)
2d or 3d systems
orthogonal or non-orthogonal (triclinic symmetry) simulation domains
constant NVE, NVT, NPT, NPH, Parinello/Rahman integrators
thermostatting options for groups and geometric regions of atoms
pressure control via Nose/Hoover or Berendsen barostatting in 1 to 3 dimensions
simulation box deformation (tensile and shear)
harmonic (umbrella) constraint forces
rigid body constraints
SHAKE bond and angle constraints
bond breaking, formation, swapping
walls of various kinds
non-equilibrium molecular dynamics (NEMD)
variety of additional boundary conditions and constraints :ul
Integrators :h4
("run"_run.html, "run_style"_run_style.html, "minimize"_minimize.html commands)
velocity-Verlet integrator
Brownian dynamics
rigid body integration
energy minimization via conjugate gradient or steepest descent relaxation
rRESPA hierarchical timestepping :ul
Diagnostics :h4
see the various flavors of the "fix"_fix.html and "compute"_compute.html commands :ul
Output :h4
("dump"_dump.html, "restart"_restart.html commands)
log file of thermodynamic info
text dump files of atom coords, velocities, other per-atom quantities
binary restart files
parallel I/O of dump and restart files
per-atom quantities (energy, stress, centro-symmetry parameter, CNA, etc)
user-defined system-wide (log file) or per-atom (dump file) calculations
spatial and time averaging of per-atom quantities
time averaging of system-wide quantities
atom snapshots in native, XYZ, XTC, DCD, CFG formats :ul
Multi-replica models :h4
"nudged elastic band"_neb.html
"parallel replica dynamics"_prd.html
"temperature accelerated dynamics"_tad.html
"parallel tempering"_temper.html
Pre- and post-processing :h4
Various pre- and post-processing serial tools are packaged
with LAMMPS; see these "doc pages"_Section_tools.html. :ulb,l
Our group has also written and released a separate toolkit called
"Pizza.py"_pizza which provides tools for doing setup, analysis,
plotting, and visualization for LAMMPS simulations. Pizza.py is
written in "Python"_python and is available for download from "the
Pizza.py WWW site"_pizza. :l,ule
:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
:link(python,http://www.python.org)
Specialized features :h4
These are LAMMPS capabilities which you may not think of as typical
molecular dynamics options:
"stochastic rotation dynamics (SRD)"_fix_srd.html
"real-time visualization and interactive MD"_fix_imd.html
"atom-to-continuum coupling"_fix_atc.html with finite elements
coupled rigid body integration via the "POEMS"_fix_poems.html library
+"grand canonical Monte Carlo"_doc/fix_gcmc.html insertions/deletions
"Direct Simulation Monte Carlo"_pair_dsmc.html for low-density fluids
"Peridynamics mesoscale modeling"_pair_peri.html
"targeted"_fix_tmd.html and "steered"_fix_smd.html molecular dynamics
"two-temperature electron model"_fix_ttm.html :ul
:line
-1.3 LAMMPS non-features :link(1_3),h4
+1.3 LAMMPS non-features :link(intro_3),h4
LAMMPS is designed to efficiently compute Newton's equations of motion
for a system of interacting particles. Many of the tools needed to
pre- and post-process the data for such simulations are not included
in the LAMMPS kernel for several reasons:
the desire to keep LAMMPS simple
they are not parallel operations
other codes already do them
limited development resources :ul
Specifically, LAMMPS itself does not:
run thru a GUI
build molecular systems
assign force-field coefficients automagically
perform sophisticated analyses of your MD simulation
visualize your MD simulation
plot your output data :ul
A few tools for pre- and post-processing tasks are provided as part of
the LAMMPS package; they are described in "this
section"_Section_tools.html. However, many people use other codes or
write their own tools for these tasks.
As noted above, our group has also written and released a separate
toolkit called "Pizza.py"_pizza 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
"Python"_python and is available for download from "the Pizza.py WWW
site"_pizza.
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.
For atomic systems LAMMPS provides a "create_atoms"_create_atoms.html
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 "pair coeff"_pair_coeff.html, "bond
coeff"_bond_coeff.html, "angle coeff"_angle_coeff.html, etc commands.
For molecular systems or more complicated simulation geometries, users
typically use another code as a builder and convert its output to
LAMMPS input format, or write their own code to generate atom
coordinate and molecular topology for LAMMPS to read in.
For complicated molecular systems (e.g. a protein), a multitude of
topology information and hundreds of force-field coefficients must
typically be specified. We suggest you use a program like
"CHARMM"_charmm or "AMBER"_amber or other molecular builders to setup
such problems and dump its information to a file. You can then
reformat the file as LAMMPS input. Some of the tools in "this
section"_Section_tools.html can assist in this process.
Similarly, LAMMPS creates output files in a simple format. Most users
post-process these files with their own analysis tools or re-format
them for input into other programs, including visualization packages.
If you are convinced you need to compute something on-the-fly as
LAMMPS runs, see "this section"_Section_modify.html for a discussion
of how you can use the "dump"_dump.html and "compute"_compute.html and
"fix"_fix.html commands to print out data of your choosing. Keep in
mind that complicated computations can slow down the molecular
dynamics timestepping, particularly if the computations are not
parallel, so it is often better to leave such analysis to
post-processing codes.
A very simple (yet fast) visualizer is provided with the LAMMPS
package - see the "xmovie"_Section_tools.html#xmovie tool in "this
section"_Section_tools.html. It creates xyz projection views of
atomic coordinates and animates them. We find it very useful for
debugging purposes. For high-quality visualization we recommend the
following packages:
"VMD"_http://www.ks.uiuc.edu/Research/vmd
"AtomEye"_http://mt.seas.upenn.edu/Archive/Graphics/A
"PyMol"_http://pymol.sourceforge.net
"Raster3d"_http://www.bmsc.washington.edu/raster3d/raster3d.html
"RasMol"_http://www.openrasmol.org :ul
Other features that LAMMPS does not yet (and may never) support are
discussed in "this section"_Section_history.html.
Finally, these are freely-available molecular dynamics codes, most of
them parallel, which may be well-suited to the problems you want to
model. They can also be used in conjunction with LAMMPS to perform
complementary modeling tasks.
"CHARMM"_charmm
"AMBER"_amber
"NAMD"_namd
"NWCHEM"_nwchem
"DL_POLY"_dlpoly
"Tinker"_tinker :ul
:link(charmm,http://www.scripps.edu/brooks)
:link(amber,http://amber.scripps.edu)
:link(namd,http://www.ks.uiuc.edu/Research/namd/)
:link(nwchem,http://www.emsl.pnl.gov/docs/nwchem/nwchem.html)
:link(dlpoly,http://www.cse.clrc.ac.uk/msi/software/DL_POLY)
:link(tinker,http://dasher.wustl.edu/tinker)
CHARMM, AMBER, NAMD, NWCHEM, and Tinker are designed primarily for
modeling biological molecules. CHARMM and AMBER use
atom-decomposition (replicated-data) strategies for parallelism; NAMD
and NWCHEM use spatial-decomposition approaches, similar to LAMMPS.
Tinker is a serial code. DL_POLY includes potentials for a variety of
biological and non-biological materials; both a replicated-data and
spatial-decomposition version exist.
:line
-1.4 Open source distribution :link(1_4),h4
+1.4 Open source distribution :link(intro_4),h4
LAMMPS comes with no warranty of any kind. As each source file states
in its header, it is a copyrighted code that is distributed free-of-
charge, under the terms of the "GNU Public License"_gnu (GPL). This
is often referred to as open-source distribution - see
"www.gnu.org"_gnuorg or "www.opensource.org"_opensource for more
details. The legal text of the GPL is in the LICENSE file that is
included in the LAMMPS distribution.
:link(gnuorg,http://www.gnu.org)
:link(opensource,http://www.opensource.org)
Here is a summary of what the GPL means for LAMMPS users:
(1) Anyone is free to use, modify, or extend LAMMPS in any way they
choose, including for commercial purposes.
(2) If you distribute a modified version of LAMMPS, it must remain
open-source, meaning you distribute it under the terms of the GPL.
You should clearly annotate such a code as a derivative version of
LAMMPS.
(3) If you release any code that includes LAMMPS source code, then it
must also be open-sourced, meaning you distribute it under the terms
of the GPL.
(4) If you give LAMMPS files to someone else, the GPL LICENSE file and
source file headers (including the copyright and GPL notices) should
remain part of the code.
In the spirit of an open-source code, these are various ways you can
contribute to making LAMMPS better. You can send email to the
"developers"_http://lammps.sandia.gov/authors.html on any of these
items.
Point prospective users to the "LAMMPS WWW Site"_lws. Mention it in
talks or link to it from your WWW site. :ulb,l
If you find an error or omission in this manual or on the "LAMMPS WWW
Site"_lws, or have a suggestion for something to clarify or include,
send an email to the
"developers"_http://lammps.sandia.gov/authors.html. :l
-If you find a bug, "this section"_Section_errors.html#10_2 describes
+If you find a bug, "this section"_Section_errors.html#err_2 describes
how to report it. :l
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 "LAMMPS WWW Site"_lws, with links
and attributions back to you. :l
Create a new Makefile.machine that can be added to the src/MAKE
directory. :l
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 "this section"_Section_tools.html. If you write
a new tool that users will find useful, it can be added to the LAMMPS
distribution. :l
LAMMPS is designed to be easy to extend with new code for features
like potentials, boundary conditions, diagnostic computations, etc.
"This section"_Section_modify.html gives details. If you add a
feature of general interest, it can be added to the LAMMPS
distribution. :l
The Benchmark page of the "LAMMPS WWW Site"_lws 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. :l
You can send feedback for the User Comments page of the "LAMMPS WWW
Site"_lws. It might be added to the page. No promises. :l
Cash. Small denominations, unmarked bills preferred. Paper sack OK.
Leave on desk. VISA also accepted. Chocolate chip cookies
encouraged. :ule,l
:line
-1.5 Acknowledgments and citations :h4,link(1_5)
+1.5 Acknowledgments and citations :h4,link(intro_5)
LAMMPS development has been funded by the "US Department of
Energy"_doe (DOE), through its CRADA, LDRD, ASCI, and Genomes-to-Life
programs and its "OASCR"_oascr and "OBER"_ober offices.
Specifically, work on the latest version was funded in part by the US
Department of Energy's Genomics:GTL program
("www.doegenomestolife.org"_gtl) under the "project"_ourgtl, "Carbon
Sequestration in Synechococcus Sp.: From Molecular Machines to
Hierarchical Modeling".
:link(doe,http://www.doe.gov)
:link(gtl,http://www.doegenomestolife.org)
:link(ourgtl,http://www.genomes2life.org)
:link(oascr,http://www.sc.doe.gov/ascr/home.html)
:link(ober,http://www.er.doe.gov/production/ober/ober_top.html)
The following papers describe the parallel algorithms used in LAMMPS.
S. J. Plimpton, [Fast Parallel Algorithms for Short-Range Molecular
Dynamics], J Comp Phys, 117, 1-19 (1995).
S. J. Plimpton, R. Pollock, M. Stevens, [Particle-Mesh Ewald and
rRESPA for Parallel Molecular Dynamics Simulations], in Proc of the
Eighth SIAM Conference on Parallel Processing for Scientific
Computing, Minneapolis, MN (March 1997).
If you use LAMMPS results in your published work, please cite the J
Comp Phys reference and include a pointer to the "LAMMPS WWW Site"_lws
(http://lammps.sandia.gov).
If you send is information about your publication, we'll be pleased to
add it to the Publications page of the "LAMMPS WWW Site"_lws. Ditto
for a picture or movie for the Pictures or Movies pages.
The core group of LAMMPS developers is at Sandia National Labs. They
include "Steve Plimpton"_sjp, Paul Crozier, and Aidan Thompson and can
be contacted via email: sjplimp, pscrozi, athomps at sandia.gov.
Here are various folks who have made significant contributions to
features in LAMMPS. The most recent contributions are at the top of
the list.
:link(sjp,http://www.sandia.gov/~sjplimp)
pppm GPU single and double : Mike Brown (ORNL)
pair_style lj/cut/expand : Inderaj Bains (NVIDIA)
temperature accelerated dynamics (TAD) : Aidan Thompson (Sandia)
pair reax/c and fix qeq/reax : Metin Aktulga (Purdue, now LBNL)
DREIDING force field, pair_style hbond/dreiding, etc : Tod Pascal (CalTech)
fix adapt and compute ti for thermodynamic integreation for free energies : Sai Jayaraman (Sandia)
pair born and pair gauss : Sai Jayaraman (Sandia)
stochastic rotation dynamics (SRD) via fix srd : Jemery Lechman (Sandia) and Pieter in 't Veld (BASF)
ipp Perl script tool : Reese Jones (Sandia)
eam_database and createatoms tools : Xiaowang Zhou (Sandia)
electron force field (eFF) : Andres Jaramillo-Botero and Julius Su (Caltech)
embedded ion method (EIM) potential : Xiaowang Zhou (Sandia)
COMB potential with charge equilibration : Tzu-Ray Shan (U Florida)
fix ave/correlate : Benoit Leblanc, Dave Rigby, Paul Saxe (Materials Design) and Reese Jones (Sandia)
pair_style peri/lps : Mike Parks (Sandia)
fix msst : Lawrence Fried (LLNL), Evan Reed (LLNL, Stanford)
thermo_style custom tpcpu & spcpu keywords : Axel Kohlmeyer (Temple U)
fix rigid/nve, fix rigid/nvt : Tony Sheh and Trung Dac Nguyen (U Michigan)
public SVN & Git repositories for LAMMPS : Axel Kohlmeyer (Temple U) and Bill Goldman (Sandia)
fix nvt, fix nph, fix npt, Parinello/Rahman dynamics, fix box/relax : Aidan Thompson (Sandia)
compute heat/flux : German Samolyuk (ORNL) and Mario Pinto (Computational Research Lab, Pune, India)
pair yukawa/colloid : Randy Schunk (Sandia)
fix wall/colloid : Jeremy Lechman (Sandia)
pair_style dsmc for Direct Simulation Monte Carlo (DSMC) modeling : Paul Crozier (Sandia)
fix imd for real-time viz and interactive MD : Axel Kohlmeyer (Temple Univ)
concentration-dependent EAM potential : Alexander Stukowski (Technical University of Darmstadt)
parallel replica dymamics (PRD) : Mike Brown (Sandia)
min_style hftn : Todd Plantenga (Sandia)
fix atc : Reese Jones, Jon Zimmerman, Jeremy Templeton (Sandia)
dump cfg : Liang Wan (Chinese Academy of Sciences)
fix nvt with Nose/Hoover chains : Andy Ballard (U Maryland)
pair_style lj/cut/gpu, pair_style gayberne/gpu : Mike Brown (Sandia)
pair_style lj96/cut, bond_style table, angle_style table : Chuanfu Luo
fix langevin tally : Carolyn Phillips (U Michigan)
compute heat/flux for Green-Kubo : Reese Jones (Sandia), Philip Howell (Siemens), Vikas Varsney (AFRL)
region cone : Pim Schravendijk
fix reax/bonds : Aidan Thompson (Sandia)
pair born/coul/long : Ahmed Ismail (Sandia)
fix ttm : Paul Crozier (Sandia) and Carolyn Phillips (U Michigan)
fix box/relax : Aidan Thompson and David Olmsted (Sandia)
ReaxFF potential : Aidan Thompson (Sandia) and Hansohl Cho (MIT)
compute cna/atom : Wan Liang (Chinese Academy of Sciences)
Tersoff/ZBL potential : Dave Farrell (Northwestern U)
peridynamics : Mike Parks (Sandia)
fix smd for steered MD : Axel Kohlmeyer (U Penn)
GROMACS pair potentials : Mark Stevens (Sandia)
lmp2vmd tool : Axel Kohlmeyer (U Penn)
compute group/group : Naveen Michaud-Agrawal (Johns Hopkins U)
CG-CMM user package for coarse-graining : Axel Kohlmeyer (U Penn)
cosine/delta angle potential : Axel Kohlmeyer (U Penn)
VIM editor add-ons for LAMMPS input scripts : Gerolf Ziegenhain
pair lubricate : Randy Schunk (Sandia)
compute ackland/atom : Gerolf Zeigenhain
kspace_style ewald/n, pair_style lj/coul, pair_style buck/coul : \
Pieter in 't Veld (Sandia)
AIREBO bond-order potential : Ase Henry (MIT)
making LAMMPS a true "object" that can be instantiated multiple times, \
e.g. as a library : Ben FrantzDale (RPI)
pymol_asphere viz tool : Mike Brown (Sandia)
NEMD SLLOD integration : Pieter in 't Veld (Sandia)
tensile and shear deformations : Pieter in 't Veld (Sandia)
GayBerne potential : Mike Brown (Sandia)
ellipsoidal particles : Mike Brown (Sandia)
colloid potentials : Pieter in 't Veld (Sandia)
fix heat : Paul Crozier and Ed Webb (Sandia)
neighbor multi and communicate multi : Pieter in 't Veld (Sandia)
MATLAB post-processing scripts : Arun Subramaniyan (Purdue)
triclinic (non-orthogonal) simulation domains : Pieter in 't Veld (Sandia)
thermo_extract tool: Vikas Varshney (Wright Patterson AFB)
fix ave/time and fix ave/spatial : Pieter in 't Veld (Sandia)
MEAM potential : Greg Wagner (Sandia)
optimized pair potentials for lj/cut, charmm/long, eam, morse : \
James Fischer (High Performance Technologies), \
David Richie and Vincent Natoli (Stone Ridge Technologies)
fix wall/lj126 : Mark Stevens (Sandia)
Stillinger-Weber and Tersoff potentials : Aidan Thompson and Xiaowang Zhou (Sandia)
region prism : Pieter in 't Veld (Sandia)
LJ tail corrections for energy/pressure : Paul Crozier (Sandia)
fix momentum and recenter : Naveen Michaud-Agrawal (Johns Hopkins U)
multi-letter variable names : Naveen Michaud-Agrawal (Johns Hopkins U)
OPLS dihedral potential: Mark Stevens (Sandia)
POEMS coupled rigid body integrator: Rudranarayan Mukherjee (RPI)
faster pair hybrid potential: James Fischer \
(High Performance Technologies, Inc), Vincent Natoli and \
David Richie (Stone Ridge Technology)
breakable bond quartic potential: Chris Lorenz and Mark Stevens (Sandia)
DCD and XTC dump styles: Naveen Michaud-Agrawal (Johns Hopkins U)
grain boundary orientation fix : Koenraad Janssens and David Olmsted (Sandia)
lj/smooth pair potential : Craig Maloney (UCSB)
radius-of-gyration spring fix : Naveen Michaud-Agrawal (Johns Hopkins U) and \
Paul Crozier (Sandia)
self spring fix : Naveen Michaud-Agrawal (Johns Hopkins U)
EAM CoAl and AlCu potentials : Kwang-Reoul Lee (KIST, Korea)
cosine/squared angle potential : Naveen Michaud-Agrawal (Johns Hopkins U)
helix dihedral potential : Naveen Michaud-Agrawal (Johns Hopkins U) and \
Mark Stevens (Sandia)
Finnis/Sinclair EAM: Tim Lau (MIT)
dissipative particle dynamics (DPD) potentials: Kurt Smith (U Pitt) and \
Frank van Swol (Sandia)
TIP4P potential (4-site water): Ahmed Ismail and Amalie Frischknecht (Sandia)
uniaxial strain fix: Carsten Svaneborg (Max Planck Institute)
thermodynamics enhanced by fix quantities: Aidan Thompson (Sandia)
compressed dump files: Erik Luijten (U Illinois)
cylindrical indenter fix: Ravi Agrawal (Northwestern U)
electric field fix: Christina Payne (Vanderbilt U)
AMBER <-> LAMMPS tool: Keir Novik (Univ College London) and \
Vikas Varshney (U Akron)
CHARMM <-> LAMMPS tool: Pieter in 't Veld and Paul Crozier (Sandia)
Morse bond potential: Jeff Greathouse (Sandia)
radial distribution functions: Paul Crozier & Jeff Greathouse (Sandia)
force tables for long-range Coulombics: Paul Crozier (Sandia)
targeted molecular dynamics (TMD): Paul Crozier (Sandia) and \
Christian Burisch (Bochum University, Germany)
FFT support for SGI SCSL (Altix): Jim Shepherd (Ga Tech)
lmp2cfg and lmp2traj tools: Ara Kooser, Jeff Greathouse, \
Andrey Kalinichev (Sandia)
parallel tempering: Mark Sears (Sandia)
embedded atom method (EAM) potential: Stephen Foiles (Sandia)
multi-harmonic dihedral potential: Mathias Puetz (Sandia)
granular force fields and BC: Leo Silbert & Gary Grest (Sandia)
2d Ewald/PPPM: Paul Crozier (Sandia)
CHARMM force fields: Paul Crozier (Sandia)
msi2lmp tool: Steve Lustig (Dupont), Mike Peachey & John Carpenter (Cray)
HTFN energy minimizer: Todd Plantenga (Sandia)
class 2 force fields: Eric Simon (Cray)
NVT/NPT integrators: Mark Stevens (Sandia)
rRESPA: Mark Stevens & Paul Crozier (Sandia)
Ewald and PPPM solvers: Roy Pollock (LLNL) : :tb(s=:)
Other CRADA partners involved in the design and testing of LAMMPS were
John Carpenter (Mayo Clinic, formerly at Cray Research)
Terry Stouch (Lexicon Pharmaceuticals, formerly at Bristol Myers Squibb)
Steve Lustig (Dupont)
Jim Belak (LLNL) :ul
diff --git a/doc/Section_modify.html b/doc/Section_modify.html
index 2c975df18..765f7440b 100644
--- a/doc/Section_modify.html
+++ b/doc/Section_modify.html
@@ -1,626 +1,626 @@
<HTML>
<CENTER><A HREF = "Section_tools.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> -
<A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_python.html">Next
Section</A>
</CENTER>
<HR>
-<H3>8. Modifying & extending LAMMPS
+<H3>10. Modifying & extending LAMMPS
</H3>
<P>LAMMPS is designed in a modular fashion so as to be easy to modify and
extend with new functionality. In fact, about 75% of its source code
is files added in this fashion.
</P>
<P>In this section, changes and additions users can make are listed along
with minimal instructions. If you add a new feature to LAMMPS and
think it will be of interest to general users, we encourage you to
submit it to the developers for inclusion in the released version of
LAMMPS. Information about how to do this is provided
<A HREF = "#package">below</A>.
</P>
<P>The best way to add a new feature is to find a similar feature in
LAMMPS and look at the corresponding source and header files to figure
out what it does. You will need some knowledge of C++ to be able to
understand the hi-level structure of LAMMPS and its class
organization, but functions (class methods) that do actual
computations are written in vanilla C-style code and operate on simple
C-style data structures (vectors and arrays).
</P>
<P>Most of the new features described in this section require you to
write a new C++ derived class (except for exceptions described below,
where you can make small edits to existing files). Creating a new
class requires 2 files, a source code file (*.cpp) and a header file
(*.h). The derived class must provide certain methods to work as a
new option. Depending on how different your new feature is compared
to existing features, you can either derive from the base class
itself, or from a derived class that already exists. Enabling LAMMPS
to invoke the new class is as simple as putting the two source
files in the src dir and re-building LAMMPS.
</P>
<P>The advantage of C++ and its object-orientation is that all the code
and variables needed to define the new feature are in the 2 files you
write, and thus shouldn't make the rest of LAMMPS more complex or
cause side-effect bugs.
</P>
<P>Here is a concrete example. Suppose you write 2 files pair_foo.cpp
and pair_foo.h that define a new class PairFoo that computes pairwise
potentials described in the classic 1997 <A HREF = "#Foo">paper</A> by Foo, et al.
If you wish to invoke those potentials in a LAMMPS input script with a
command like
</P>
<PRE>pair_style foo 0.1 3.5
</PRE>
<P>then your pair_foo.h file should be structured as follows:
</P>
<PRE>#ifdef PAIR_CLASS
PairStyle(foo,PairFoo)
#else
...
(class definition for PairFoo)
...
#endif
</PRE>
<P>where "foo" is the style keyword in the pair_style command, and
PairFoo is the class name defined in your pair_foo.cpp and pair_foo.h
files.
</P>
<P>When you re-build LAMMPS, your new pairwise potential becomes part of
the executable and can be invoked with a pair_style command like the
example above. Arguments like 0.1 and 3.5 can be defined and
processed by your new class.
</P>
-<P>Here is a list of the new features that can be added in this way,
-along with information about how to submit your features for inclusion
-in the LAMMPS distribution.
-</P>
-<UL><LI><A HREF = "#atom">Atom styles</A>
-<LI><A HREF = "#bond">Bond, angle, dihedral, improper potentials</A>
-<LI><A HREF = "#compute">Compute styles</A>
-<LI><A HREF = "#dump">Dump styles</A>
-<LI><A HREF = "#dump">Dump custom output options</A>
-<LI><A HREF = "#fix">Fix styles</A> which include integrators, temperature and pressure control, force constraints, boundary conditions, diagnostic output, etc
-<LI><A HREF = "#command">Input script commands</A>
-<LI><A HREF = "#kspace">Kspace computations</A>
-<LI><A HREF = "#min">Minimization solvers</A>
-<LI><A HREF = "#pair">Pairwise potentials</A>
-<LI><A HREF = "#region">Region styles</A>
-<LI><A HREF = "#thermo">Thermodynamic output options</A>
-<LI><A HREF = "#variable">Variable options</A>
-</UL>
-<UL><LI><A HREF = "#package">Submitting new features to the developers to include in LAMMPS</A>
-</UL>
-<P>As illustrated by the pairwise example, these options are referred to
-in the LAMMPS documentation as the "style" of a particular command.
+<P>As illustrated by this pairwise example, many kinds of options are
+referred to in the LAMMPS documentation as the "style" of a particular
+command.
</P>
<P>The instructions below give the header file for the base class that
these styles are derived from. Public variables in that file are ones
used and set by the derived classes which are also used by the base
class. Sometimes they are also used by the rest of LAMMPS. Virtual
functions in the base class header file which are set = 0 are ones you
must define in your new derived class to give it the functionality
LAMMPS expects. Virtual functions that are not set to 0 are functions
you can optionally define.
</P>
<P>Additionally, new output options can be added directly to the
-thermo.cpp, dump_custom.cpp, and variable.cpp files as explained in
-these sections:
+thermo.cpp, dump_custom.cpp, and variable.cpp files as explained
+below.
</P>
-<UL><LI><A HREF = "#dump_custom">Dump custom output options</A>
-<LI><A HREF = "#thermo">Thermodynamic output options</A>
-<LI><A HREF = "#variable">Variable options</A>
-</UL>
<HR>
<P>Here are additional guidelines for modifying LAMMPS and adding new
functionality:
</P>
<UL><LI>Think about whether what you want to do would be better as a pre- or
post-processing step. Many computations are more easily and more
quickly done that way.
<LI>Don't do anything within the timestepping of a run that isn't
parallel. E.g. don't accumulate a bunch of data on a single processor
and analyze it. You run the risk of seriously degrading the parallel
efficiency.
<LI>If your new feature reads arguments or writes output, make sure you
follow the unit conventions discussed by the <A HREF = "units.html">units</A>
command.
<LI>If you add something you think is truly useful and doesn't impact
LAMMPS performance when it isn't used, send an email to the
<A HREF = "http://lammps.sandia.gov/authors.html">developers</A>. We might be
-interested in adding it to the LAMMPS distribution.
+interested in adding it to the LAMMPS distribution. See further
+details on this at the bottom of this page.
</UL>
<HR>
+<P>Here are the subsequent topics discussed below, most of which are new
+features that can be added in the manner just described:
+</P>
+10.1 <A HREF = "#mod_1">Atom styles</A><BR>
+10.2 <A HREF = "#mod_2">Bond, angle, dihedral, improper potentials</A><BR>
+10.3 <A HREF = "#mod_3">Compute styles</A><BR>
+10.4 <A HREF = "#mod_4">Dump styles</A><BR>
+10.5 <A HREF = "#mod_5">Dump custom output options</A><BR>
+10.6 <A HREF = "#mod_6">Fix styles</A> which include integrators, temperature and pressure control, force constraints, boundary conditions, diagnostic output, etc<BR>
+10.7 <A HREF = "mod_7">Input script commands</A><BR>
+10.8 <A HREF = "#mod_8">Kspace computations</A><BR>
+10.9 <A HREF = "#mod_9">Minimization styles</A><BR>
+10.10 <A HREF = "#mod_10">Pairwise potentials</A><BR>
+10.11 <A HREF = "#mod_11">Region styles</A><BR>
+10.12 <A HREF = "#mod_12">Thermodynamic output options</A><BR>
+10.13 <A HREF = "#mod_13">Variable options</A><BR>
+10.14 <A HREF = "#mod_14">Submitting new features for inclusion in LAMMPS</A> <BR>
+
+<HR>
+
<HR>
-<A NAME = "atom"></A><H4>Atom styles
+<A NAME = "mod_1"></A><H4>10.1 Atom styles
</H4>
<P>Classes that define an atom style are derived from the Atom class.
The atom style determines what quantities are associated with an atom.
A new atom style can be created if one of the existing atom styles
does not define all the arrays you need to store and communicate with
atoms.
</P>
<P>Atom_vec_atomic.cpp is a simple example of an atom style.
</P>
<P>Here is a brief description of methods you define in your new derived
class. See atom.h for details.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >grow</TD><TD > re-allocate atom arrays to longer lengths</TD></TR>
<TR><TD >copy</TD><TD > copy info for one atom to another atom's array locations</TD></TR>
<TR><TD >pack_comm</TD><TD > store an atom's info in a buffer communicated every timestep</TD></TR>
<TR><TD >pack_comm_vel</TD><TD > add velocity info to buffer</TD></TR>
<TR><TD >pack_comm_one</TD><TD > store extra info unique to this atom style</TD></TR>
<TR><TD >unpack_comm</TD><TD > retrieve an atom's info from the buffer</TD></TR>
<TR><TD >unpack_comm_vel</TD><TD > also retrieve velocity info</TD></TR>
<TR><TD >unpack_comm_one</TD><TD > retreive extra info unique to this atom style</TD></TR>
<TR><TD >pack_reverse</TD><TD > store an atom's info in a buffer communicating partial forces</TD></TR>
<TR><TD >pack_reverse_one</TD><TD > store extra info unique to this atom style</TD></TR>
<TR><TD >unpack_reverse</TD><TD > retrieve an atom's info from the buffer</TD></TR>
<TR><TD >unpack_reverse_one</TD><TD > retreive extra info unique to this atom style</TD></TR>
<TR><TD >pack_border</TD><TD > store an atom's info in a buffer communicated on neighbor re-builds</TD></TR>
<TR><TD >pack_border_vel</TD><TD > add velocity info to buffer</TD></TR>
<TR><TD >pack_border_one</TD><TD > store extra info unique to this atom style</TD></TR>
<TR><TD >unpack_border</TD><TD > retrieve an atom's info from the buffer</TD></TR>
<TR><TD >unpack_border_vel</TD><TD > also retrieve velocity info</TD></TR>
<TR><TD >unpack_border_one</TD><TD > retreive extra info unique to this atom style</TD></TR>
<TR><TD >pack_exchange</TD><TD > store all an atom's info to migrate to another processor</TD></TR>
<TR><TD >unpack_exchange</TD><TD > retrieve an atom's info from the buffer</TD></TR>
<TR><TD >size_restart</TD><TD > number of restart quantities associated with proc's atoms</TD></TR>
<TR><TD >pack_restart</TD><TD > pack atom quantities into a buffer</TD></TR>
<TR><TD >unpack_restart</TD><TD > unpack atom quantities from a buffer</TD></TR>
<TR><TD >create_atom</TD><TD > create an individual atom of this style</TD></TR>
<TR><TD >data_atom</TD><TD > parse an atom line from the data file</TD></TR>
<TR><TD >memory_usage</TD><TD > tally memory allocated by atom arrays
</TD></TR></TABLE></DIV>
<P>The constructor of the derived class sets values for several variables
that you must set when defining a new atom style, which are documented
in atom_vec.h. New atom arrays are defined in atom.cpp. Search for
the word "customize" and you will find locations you will need to
modify.
</P>
<HR>
-<A NAME = "bond"></A><H4>Bond, angle, dihedral, improper potentials
+<A NAME = "mod_2"></A><H4>10.2 Bond, angle, dihedral, improper potentials
</H4>
<P>Classes that compute molecular interactions are derived from the Bond,
Angle, Dihedral, and Improper classes. New styles can be created to
add new potentials to LAMMPS.
</P>
<P>Bond_harmonic.cpp is the simplest example of a bond style. Ditto for
the harmonic forms of the angle, dihedral, and improper style
commands.
</P>
<P>Here is a brief description of methods you define in your new derived
bond class. See bond.h, angle.h, dihedral.h, and improper.h for
details.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >compute</TD><TD > compute the molecular interactions</TD></TR>
<TR><TD >coeff</TD><TD > set coefficients for one bond type</TD></TR>
<TR><TD >equilibrium_distance</TD><TD > length of bond, used by SHAKE</TD></TR>
<TR><TD >write & read_restart</TD><TD > writes/reads coeffs to restart files</TD></TR>
<TR><TD >single</TD><TD > force and energy of a single bond
</TD></TR></TABLE></DIV>
<HR>
-<A NAME = "compute"></A><H4>Compute styles
+<A NAME = "mod_3"></A><H4>10.3 Compute styles
</H4>
<P>Classes that compute scalar and vector quantities like temperature
and the pressure tensor, as well as classes that compute per-atom
quantities like kinetic energy and the centro-symmetry parameter
are derived from the Compute class. New styles can be created
to add new calculations to LAMMPS.
</P>
<P>Compute_temp.cpp is a simple example of computing a scalar
temperature. Compute_ke_atom.cpp is a simple example of computing
per-atom kinetic energy.
</P>
<P>Here is a brief description of methods you define in your new derived
class. See compute.h for details.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >compute_scalar</TD><TD > compute a scalar quantity</TD></TR>
<TR><TD >compute_vector</TD><TD > compute a vector of quantities</TD></TR>
<TR><TD >compute_peratom</TD><TD > compute one or more quantities per atom</TD></TR>
<TR><TD >pack_comm</TD><TD > pack a buffer with items to communicate</TD></TR>
<TR><TD >unpack_comm</TD><TD > unpack the buffer</TD></TR>
<TR><TD >pack_reverse</TD><TD > pack a buffer with items to reverse communicate</TD></TR>
<TR><TD >unpack_reverse</TD><TD > unpack the buffer</TD></TR>
<TR><TD >memory_usage</TD><TD > tally memory usage
</TD></TR></TABLE></DIV>
<HR>
-<A NAME = "dump"></A><H4>Dump styles
+<A NAME = "mod_4"></A><H4>10.4 Dump styles
</H4>
-<A NAME = "dump_custom"></A><H4>Dump custom output options
+<A NAME = "mod_5"></A><H4>10.5 Dump custom output options
</H4>
<P>Classes that dump per-atom info to files are derived from the Dump
class. To dump new quantities or in a new format, a new derived dump
class can be added, but it is typically simpler to modify the
DumpCustom class contained in the dump_custom.cpp file.
</P>
<P>Dump_atom.cpp is a simple example of a derived dump class.
</P>
<P>Here is a brief description of methods you define in your new derived
class. See dump.h for details.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >write_header</TD><TD > write the header section of a snapshot of atoms</TD></TR>
<TR><TD >count</TD><TD > count the number of lines a processor will output</TD></TR>
<TR><TD >pack</TD><TD > pack a proc's output data into a buffer</TD></TR>
<TR><TD >write_data</TD><TD > write a proc's data to a file
</TD></TR></TABLE></DIV>
<P>See the <A HREF = "dump.html">dump</A> command and its <I>custom</I> style for a list of
keywords for atom information that can already be dumped by
DumpCustom. It includes options to dump per-atom info from Compute
classes, so adding a new derived Compute class is one way to calculate
new quantities to dump.
</P>
<P>Alternatively, you can add new keywords to the dump custom command.
Search for the word "customize" in dump_custom.cpp to see the
half-dozen or so locations where code will need to be added.
</P>
<HR>
-<A NAME = "fix"></A><H4>Fix styles
+<A NAME = "mod_6"></A><H4>10.6 Fix styles
</H4>
<P>In LAMMPS, a "fix" is any operation that is computed during
timestepping that alters some property of the system. Essentially
everything that happens during a simulation besides force computation,
neighbor list construction, and output, is a "fix". This includes
time integration (update of coordinates and velocities), force
constraints or boundary conditions (SHAKE or walls), and diagnostics
(compute a diffusion coefficient). New styles can be created to add
new options to LAMMPS.
</P>
<P>Fix_setforce.cpp is a simple example of setting forces on atoms to
prescribed values. There are dozens of fix options already in LAMMPS;
choose one as a template that is similar to what you want to
implement.
</P>
<P>Here is a brief description of methods you can define in your new
derived class. See fix.h for details.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >setmask</TD><TD > determines when the fix is called during the timestep</TD></TR>
<TR><TD >init</TD><TD > initialization before a run</TD></TR>
<TR><TD >setup</TD><TD > called immediately before the 1st timestep</TD></TR>
<TR><TD >initial_integrate</TD><TD > called at very beginning of each timestep</TD></TR>
<TR><TD >pre_exchange</TD><TD > called before atom exchange on re-neighboring steps</TD></TR>
<TR><TD >pre_neighbor</TD><TD > called before neighbor list build</TD></TR>
<TR><TD >post_force</TD><TD > called after pair & molecular forces are computed</TD></TR>
<TR><TD >final_integrate</TD><TD > called at end of each timestep</TD></TR>
<TR><TD >end_of_step</TD><TD > called at very end of timestep</TD></TR>
<TR><TD >write_restart</TD><TD > dumps fix info to restart file</TD></TR>
<TR><TD >restart</TD><TD > uses info from restart file to re-initialize the fix</TD></TR>
<TR><TD >grow_arrays</TD><TD > allocate memory for atom-based arrays used by fix</TD></TR>
<TR><TD >copy_arrays</TD><TD > copy atom info when an atom migrates to a new processor</TD></TR>
<TR><TD >memory_usage</TD><TD > report memory used by fix</TD></TR>
<TR><TD >pack_exchange</TD><TD > store atom's data in a buffer</TD></TR>
<TR><TD >unpack_exchange</TD><TD > retrieve atom's data from a buffer</TD></TR>
<TR><TD >pack_restart</TD><TD > store atom's data for writing to restart file</TD></TR>
<TR><TD >unpack_restart</TD><TD > retrieve atom's data from a restart file buffer</TD></TR>
<TR><TD >size_restart</TD><TD > size of atom's data</TD></TR>
<TR><TD >maxsize_restart</TD><TD > max size of atom's data</TD></TR>
<TR><TD >initial_integrate_respa</TD><TD > same as initial_integrate, but for rRESPA</TD></TR>
<TR><TD >post_force_respa</TD><TD > same as post_force, but for rRESPA</TD></TR>
<TR><TD >final_integrate_respa</TD><TD > same as final_integrate, but for rRESPA</TD></TR>
<TR><TD >pack_comm</TD><TD > pack a buffer to communicate a per-atom quantity</TD></TR>
<TR><TD >unpack_comm</TD><TD > unpack a buffer to communicate a per-atom quantity</TD></TR>
<TR><TD >pack_reverse_comm</TD><TD > pack a buffer to reverse communicate a per-atom quantity</TD></TR>
<TR><TD >unpack_reverse_comm</TD><TD > unpack a buffer to reverse communicate a per-atom quantity</TD></TR>
<TR><TD >thermo</TD><TD > compute quantities for thermodynamic output
</TD></TR></TABLE></DIV>
<P>Typically, only a small fraction of these methods are defined for a
particular fix. Setmask is mandatory, as it determines when the fix
will be invoked during the timestep. Fixes that perform time
integration (<I>nve</I>, <I>nvt</I>, <I>npt</I>) implement initial_integrate() and
final_integrate() to perform velocity Verlet updates. Fixes that
constrain forces implement post_force().
</P>
<P>Fixes that perform diagnostics typically implement end_of_step(). For
an end_of_step fix, one of your fix arguments must be the variable
"nevery" which is used to determine when to call the fix and you must
set this variable in the constructor of your fix. By convention, this
is the first argument the fix defines (after the ID, group-ID, style).
</P>
<P>If the fix needs to store information for each atom that persists from
timestep to timestep, it can manage that memory and migrate the info
with the atoms as they move from processors to processor by
implementing the grow_arrays, copy_arrays, pack_exchange, and
unpack_exchange methods. Similarly, the pack_restart and
unpack_restart methods can be implemented to store information about
the fix in restart files. If you wish an integrator or force
constraint fix to work with rRESPA (see the <A HREF = "run_style.html">run_style</A>
command), the initial_integrate, post_force_integrate, and
final_integrate_respa methods can be implemented. The thermo method
enables a fix to contribute values to thermodynamic output, as printed
quantities and/or to be summed to the potential energy of the system.
</P>
<HR>
-<A NAME = "command"></A><H4>Input script commands
+<A NAME = "mod_7"></A><H4>10.7 Input script commands
</H4>
<P>New commands can be added to LAMMPS input scripts by adding new
classes that have a "command" method. For example, the create_atoms,
read_data, velocity, and run commands are all implemented in this
fashion. When such a command is encountered in the LAMMPS input
script, LAMMPS simply creates a class with the corresponding name,
invokes the "command" method of the class, and passes it the arguments
from the input script. The command method can perform whatever
operations it wishes on LAMMPS data structures.
</P>
<P>The single method your new class must define is as follows:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >command</TD><TD > operations performed by the new command
</TD></TR></TABLE></DIV>
<P>Of course, the new class can define other methods and variables as
needed.
</P>
<HR>
-<A NAME = "kspace"></A><H4>Kspace computations
+<A NAME = "mod_8"></A><H4>10.8 Kspace computations
</H4>
<P>Classes that compute long-range Coulombic interactions via K-space
representations (Ewald, PPPM) are derived from the KSpace class. New
styles can be created to add new K-space options to LAMMPS.
</P>
<P>Ewald.cpp is an example of computing K-space interactions.
</P>
<P>Here is a brief description of methods you define in your new derived
class. See kspace.h for details.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >init</TD><TD > initialize the calculation before a run</TD></TR>
<TR><TD >setup</TD><TD > computation before the 1st timestep of a run</TD></TR>
<TR><TD >compute</TD><TD > every-timestep computation</TD></TR>
<TR><TD >memory_usage</TD><TD > tally of memory usage
</TD></TR></TABLE></DIV>
<HR>
-<A NAME = "min"></A><H4>Minimization solvers
+<A NAME = "mod_9"></A><H4>10.9 Minimization styles
</H4>
<P>Classes that perform energy minimization derived from the Min class.
New styles can be created to add new minimization algorithms to
LAMMPS.
</P>
<P>Min_cg.cpp is an example of conjugate gradient minimization.
</P>
<P>Here is a brief description of methods you define in your new derived
class. See min.h for details.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >init</TD><TD > initialize the minimization before a run</TD></TR>
<TR><TD >run</TD><TD > perform the minimization</TD></TR>
<TR><TD >memory_usage</TD><TD > tally of memory usage
</TD></TR></TABLE></DIV>
<HR>
-<A NAME = "pair"></A><H4>Pairwise potentials
+<A NAME = "mod_10"></A><H4>10.10 Pairwise potentials
</H4>
<P>Classes that compute pairwise interactions are derived from the Pair
class. In LAMMPS, pairwise calculation include manybody potentials
such as EAM or Tersoff where particles interact without a static bond
topology. New styles can be created to add new pair potentials to
LAMMPS.
</P>
<P>Pair_lj_cut.cpp is a simple example of a Pair class, though it
includes some optional methods to enable its use with rRESPA.
</P>
<P>Here is a brief description of the class methods in pair.h:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >compute</TD><TD > workhorse routine that computes pairwise interactions</TD></TR>
<TR><TD >settings</TD><TD > reads the input script line with arguments you define</TD></TR>
<TR><TD >coeff</TD><TD > set coefficients for one i,j type pair</TD></TR>
<TR><TD >init_one</TD><TD > perform initialization for one i,j type pair</TD></TR>
<TR><TD >init_style</TD><TD > initialization specific to this pair style</TD></TR>
<TR><TD >write & read_restart</TD><TD > write/read i,j pair coeffs to restart files</TD></TR>
<TR><TD >write & read_restart_settings</TD><TD > write/read global settings to restart files</TD></TR>
<TR><TD >single</TD><TD > force and energy of a single pairwise interaction between 2 atoms</TD></TR>
<TR><TD >compute_inner/middle/outer</TD><TD > versions of compute used by rRESPA
</TD></TR></TABLE></DIV>
<P>The inner/middle/outer routines are optional.
</P>
<HR>
-<A NAME = "region"></A><H4>Region styles
+<A NAME = "mod_11"></A><H4>10.11 Region styles
</H4>
<P>Classes that define geometric regions are derived from the Region
class. Regions are used elsewhere in LAMMPS to group atoms, delete
atoms to create a void, insert atoms in a specified region, etc. New
styles can be created to add new region shapes to LAMMPS.
</P>
<P>Region_sphere.cpp is an example of a spherical region.
</P>
<P>Here is a brief description of methods you define in your new derived
class. See region.h for details.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >match</TD><TD > determine whether a point is in the region
</TD></TR></TABLE></DIV>
<HR>
-<A NAME = "thermo"></A><H4>Thermodynamic output options
+<A NAME = "mod_12"></A><H4>10.12 Thermodynamic output options
</H4>
<P>There is one class that computes and prints thermodynamic information
to the screen and log file; see the file thermo.cpp.
</P>
<P>There are two styles defined in thermo.cpp: "one" and "multi". There
is also a flexible "custom" style which allows the user to explicitly
list keywords for quantities to print when thermodynamic info is
output. See the <A HREF = "thermo_style.html">thermo_style</A> command for a list
of defined quantities.
</P>
<P>The thermo styles (one, multi, etc) are simply lists of keywords.
Adding a new style thus only requires defining a new list of keywords.
Search for the word "customize" with references to "thermo style" in
thermo.cpp to see the two locations where code will need to be added.
</P>
<P>New keywords can also be added to thermo.cpp to compute new quantities
for output. Search for the word "customize" with references to
"keyword" in thermo.cpp to see the several locations where code will
need to be added.
</P>
<P>Note that the <A HREF = "thermo.html">thermo_style custom</A> command already allows
for thermo output of quantities calculated by <A HREF = "fix.html">fixes</A>,
<A HREF = "compute.html">computes</A>, and <A HREF = "variable.html">variables</A>. Thus, it may
be simpler to compute what you wish via one of those constructs, than
by adding a new keyword to the thermo command.
</P>
<HR>
-<A NAME = "variable"></A><H4>Variable options
+<A NAME = "mod_13"></A><H4>10.13 Variable options
</H4>
<P>There is one class that computes and stores <A HREF = "variable.html">variable</A>
information in LAMMPS; see the file variable.cpp. The value
associated with a variable can be periodically printed to the screen
via the <A HREF = "print.html">print</A>, <A HREF = "fix_print.html">fix print</A>, or
<A HREF = "thermo_style.html">thermo_style custom</A> commands. Variables of style
"equal" can compute complex equations that involve the following types
of arguments:
</P>
<P>thermo keywords = ke, vol, atoms, ...
other variables = v_a, v_myvar, ...
math functions = div(x,y), mult(x,y), add(x,y), ...
group functions = mass(group), xcm(group,x), ...
atom values = x<B>123</B>, y<B>3</B>, vx<B>34</B>, ...
compute values = c_mytemp<B>0</B>, c_thermo_press<B>3</B>, ...
</P>
<P>Adding keywords for the <A HREF = "thermo_style.html">thermo_style custom</A> command
(which can then be accessed by variables) was discussed
<A HREF = "Section_modify.html#thermo">here</A> on this page.
</P>
<P>Adding a new math function of one or two arguments can be done by
editing one section of the Variable::evaulate() method. Search for
the word "customize" to find the appropriate location.
</P>
<P>Adding a new group function can be done by editing one section of the
Variable::evaulate() method. Search for the word "customize" to find
the appropriate location. You may need to add a new method to the
Group class as well (see the group.cpp file).
</P>
<P>Accessing a new atom-based vector can be done by editing one section
of the Variable::evaulate() method. Search for the word "customize"
to find the appropriate location.
</P>
<P>Adding new <A HREF = "compute.html">compute styles</A> (whose calculated values can
then be accessed by variables) was discussed
<A HREF = "Section_modify.html#compute">here</A> on this page.
</P>
<HR>
-<A NAME = "package"></A><H4>Submitting new features to the developers to include in LAMMPS
+<HR>
+
+<A NAME = "mod_14"></A><H4>10.14 Submitting new features for inclusion in LAMMPS
</H4>
<P>We encourage users to submit new features that they add to LAMMPS to
<A HREF = "http://lammps.sandia.gov/authors.html">the developers</A>, especially if
you think the features will be of interest to other users. If they
are broadly useful we may add them as core files to LAMMPS or as part
-of a <A HREF = "Section_start.html#2_3">standard package</A>. Else we will add them
-as a user-contributed package or file. Examples of user packages are
-in src sub-directories that start with USER. The USER-MISC package is
-simply a collection of (mostly) unrelated single files, which is the
-simplest way to have your contribution quickly added to the LAMMPS
-distribution. You can see a list of the both standard and user
-packages by typing "make package" in the LAMMPS src directory.
+of a <A HREF = "Section_start.html#start_3">standard package</A>. Else we will add
+them as a user-contributed package or file. Examples of user packages
+are in src sub-directories that start with USER. The USER-MISC
+package is simply a collection of (mostly) unrelated single files,
+which is the simplest way to have your contribution quickly added to
+the LAMMPS distribution. You can see a list of the both standard and
+user packages by typing "make package" in the LAMMPS src directory.
</P>
<P>With user packages and files, all we are really providing (aside from
the fame and fortune that accompanies having your name in the source
code and on the <A HREF = "http://lammps.sandia.gov/authors.html">Authors page</A>
of the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW site</A>), is a means for you to distribute your
work to the LAMMPS user community and a mechanism for others to easily
try out your new feature. This may help you find bugs or make contact
with new collaborators. Note that you're also implicitly agreeing to
support your code which means answer questions, fix bugs, and maintain
it if LAMMPS changes.
</P>
<P>The previous sections of this doc page describe how to add new
features of various kinds to LAMMPS. Packages are simply collections
of one or more new class files which are invoked as a new "style"
within a LAMMPS input script. If designed correctly, these additions
do not require changes to the main core of LAMMPS; they are simply
add-on files. If you think your new feature requires non-trivial
changes in core LAMMPS files, you'll need to <A HREF = "http://lammps.sandia.gov/authors.html">communicate with the
developers</A>, since we may or may
not want to make those changes. An example of a trivial change is
making a parent-class method "virtual" when you derive a new child
class from it.
</P>
<P>Here is what you need to do to submit a user package or single file
for our consideration. Following these steps will save time for both
you and us. See existing package files for examples.
</P>
<UL><LI>All source files you provide must compile with the most current
version of LAMMPS.
<LI>If your contribution is a single file (actually a *.cpp and *.h file)
it can most rapidly be added to the USER-MISC directory. Send us the
one-line entry to add to the USER-MISC/README file in that dir, along
with the 2 source files. You can do this multiple times if you wish
to contribute several individual features.
<LI>If your contribution is several related featues, it is probably best
to make it a user package directory with a name like USER-FOO. In
addition to your new files, the directory should contain a README, and
Install.csh file. The README text file should contain your name and
contact information and a brief description of what your new package
does. The Install.csh file enables LAMMPS to include and exclude your
package. See other README and Install.sh files in other USER
directories as examples. Send us a tarball of this USER-FOO
directory.
<LI>Your new source files need to have the LAMMPS copyright, GPL notice,
and your name at the top, like other LAMMPS source files. They need
to create a class that is inside the LAMMPS namespace. Other than
that, your files can do whatever is necessary to implement the new
features. They don't have to be written in the same stylistic format
and syntax as other LAMMPS files, though that would be nice.
<LI>Finally, you must also send a documentation file for each new command
or style you are adding to LAMMPS. This will be one file for a
single-file feature. For a package, it might be several files. These
are simple text files which we will convert to HTML. They must be in
the same format as other *.txt files in the lammps/doc directory for
similar commands and styles. The "Restrictions" section of the doc
page should indicate that your command is only available if LAMMPS is
built with the appropriate USER-MISC or USER-FOO package. See other
user package doc files for an example of how to do this. The txt2html
tool we use to do the conversion can be downloaded from <A HREF = "http://www.sandia.gov/~sjplimp/download.html">this
site</A>, so you can perform
the HTML conversion yourself to proofread your doc page.
</UL>
<P>Note that the more clear and self-explanatory you make your doc and
README files, the more likely it is that users will try out your new
feature.
</P>
<HR>
<HR>
<A NAME = "Foo"></A>
<P><B>(Foo)</B> Foo, Morefoo, and Maxfoo, J of Classic Potentials, 75, 345 (1997).
</P>
</HTML>
diff --git a/doc/Section_modify.txt b/doc/Section_modify.txt
index fc72b625e..933520a04 100644
--- a/doc/Section_modify.txt
+++ b/doc/Section_modify.txt
@@ -1,599 +1,598 @@
"Previous Section"_Section_tools.html - "LAMMPS WWW Site"_lws -
"LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next
Section"_Section_python.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
-8. Modifying & extending LAMMPS :h3
+10. Modifying & extending LAMMPS :h3
LAMMPS is designed in a modular fashion so as to be easy to modify and
extend with new functionality. In fact, about 75% of its source code
is files added in this fashion.
In this section, changes and additions users can make are listed along
with minimal instructions. If you add a new feature to LAMMPS and
think it will be of interest to general users, we encourage you to
submit it to the developers for inclusion in the released version of
LAMMPS. Information about how to do this is provided
"below"_#package.
The best way to add a new feature is to find a similar feature in
LAMMPS and look at the corresponding source and header files to figure
out what it does. You will need some knowledge of C++ to be able to
understand the hi-level structure of LAMMPS and its class
organization, but functions (class methods) that do actual
computations are written in vanilla C-style code and operate on simple
C-style data structures (vectors and arrays).
Most of the new features described in this section require you to
write a new C++ derived class (except for exceptions described below,
where you can make small edits to existing files). Creating a new
class requires 2 files, a source code file (*.cpp) and a header file
(*.h). The derived class must provide certain methods to work as a
new option. Depending on how different your new feature is compared
to existing features, you can either derive from the base class
itself, or from a derived class that already exists. Enabling LAMMPS
to invoke the new class is as simple as putting the two source
files in the src dir and re-building LAMMPS.
The advantage of C++ and its object-orientation is that all the code
and variables needed to define the new feature are in the 2 files you
write, and thus shouldn't make the rest of LAMMPS more complex or
cause side-effect bugs.
Here is a concrete example. Suppose you write 2 files pair_foo.cpp
and pair_foo.h that define a new class PairFoo that computes pairwise
potentials described in the classic 1997 "paper"_#Foo by Foo, et al.
If you wish to invoke those potentials in a LAMMPS input script with a
command like
pair_style foo 0.1 3.5 :pre
then your pair_foo.h file should be structured as follows:
#ifdef PAIR_CLASS
PairStyle(foo,PairFoo)
#else
...
(class definition for PairFoo)
...
#endif :pre
where "foo" is the style keyword in the pair_style command, and
PairFoo is the class name defined in your pair_foo.cpp and pair_foo.h
files.
When you re-build LAMMPS, your new pairwise potential becomes part of
the executable and can be invoked with a pair_style command like the
example above. Arguments like 0.1 and 3.5 can be defined and
processed by your new class.
-Here is a list of the new features that can be added in this way,
-along with information about how to submit your features for inclusion
-in the LAMMPS distribution.
-
-"Atom styles"_#atom
-"Bond, angle, dihedral, improper potentials"_#bond
-"Compute styles"_#compute
-"Dump styles"_#dump
-"Dump custom output options"_#dump
-"Fix styles"_#fix which include integrators, \
- temperature and pressure control, force constraints, \
- boundary conditions, diagnostic output, etc
-"Input script commands"_#command
-"Kspace computations"_#kspace
-"Minimization solvers"_#min
-"Pairwise potentials"_#pair
-"Region styles"_#region
-"Thermodynamic output options"_#thermo
-"Variable options"_#variable :ul
-
-"Submitting new features to the developers to include in LAMMPS"_#package :ul
-
-As illustrated by the pairwise example, these options are referred to
-in the LAMMPS documentation as the "style" of a particular command.
+As illustrated by this pairwise example, many kinds of options are
+referred to in the LAMMPS documentation as the "style" of a particular
+command.
The instructions below give the header file for the base class that
these styles are derived from. Public variables in that file are ones
used and set by the derived classes which are also used by the base
class. Sometimes they are also used by the rest of LAMMPS. Virtual
functions in the base class header file which are set = 0 are ones you
must define in your new derived class to give it the functionality
LAMMPS expects. Virtual functions that are not set to 0 are functions
you can optionally define.
Additionally, new output options can be added directly to the
-thermo.cpp, dump_custom.cpp, and variable.cpp files as explained in
-these sections:
-
-"Dump custom output options"_#dump_custom
-"Thermodynamic output options"_#thermo
-"Variable options"_#variable :ul
+thermo.cpp, dump_custom.cpp, and variable.cpp files as explained
+below.
:line
Here are additional guidelines for modifying LAMMPS and adding new
functionality:
Think about whether what you want to do would be better as a pre- or
post-processing step. Many computations are more easily and more
quickly done that way. :ulb,l
Don't do anything within the timestepping of a run that isn't
parallel. E.g. don't accumulate a bunch of data on a single processor
and analyze it. You run the risk of seriously degrading the parallel
efficiency. :l
If your new feature reads arguments or writes output, make sure you
follow the unit conventions discussed by the "units"_units.html
command. :l
If you add something you think is truly useful and doesn't impact
LAMMPS performance when it isn't used, send an email to the
"developers"_http://lammps.sandia.gov/authors.html. We might be
-interested in adding it to the LAMMPS distribution. :l,ule
+interested in adding it to the LAMMPS distribution. See further
+details on this at the bottom of this page. :l,ule
+
+:line
+
+Here are the subsequent topics discussed below, most of which are new
+features that can be added in the manner just described:
+
+10.1 "Atom styles"_#mod_1
+10.2 "Bond, angle, dihedral, improper potentials"_#mod_2
+10.3 "Compute styles"_#mod_3
+10.4 "Dump styles"_#mod_4
+10.5 "Dump custom output options"_#mod_5
+10.6 "Fix styles"_#mod_6 which include integrators, \
+ temperature and pressure control, force constraints, \
+ boundary conditions, diagnostic output, etc
+10.7 "Input script commands"_mod_7
+10.8 "Kspace computations"_#mod_8
+10.9 "Minimization styles"_#mod_9
+10.10 "Pairwise potentials"_#mod_10
+10.11 "Region styles"_#mod_11
+10.12 "Thermodynamic output options"_#mod_12
+10.13 "Variable options"_#mod_13
+10.14 "Submitting new features for inclusion in LAMMPS"_#mod_14 :all(b)
:line
:line
-Atom styles :link(atom),h4
+10.1 Atom styles :link(mod_1),h4
Classes that define an atom style are derived from the Atom class.
The atom style determines what quantities are associated with an atom.
A new atom style can be created if one of the existing atom styles
does not define all the arrays you need to store and communicate with
atoms.
Atom_vec_atomic.cpp is a simple example of an atom style.
Here is a brief description of methods you define in your new derived
class. See atom.h for details.
grow: re-allocate atom arrays to longer lengths
copy: copy info for one atom to another atom's array locations
pack_comm: store an atom's info in a buffer communicated every timestep
pack_comm_vel: add velocity info to buffer
pack_comm_one: store extra info unique to this atom style
unpack_comm: retrieve an atom's info from the buffer
unpack_comm_vel: also retrieve velocity info
unpack_comm_one: retreive extra info unique to this atom style
pack_reverse: store an atom's info in a buffer communicating partial forces
pack_reverse_one: store extra info unique to this atom style
unpack_reverse: retrieve an atom's info from the buffer
unpack_reverse_one: retreive extra info unique to this atom style
pack_border: store an atom's info in a buffer communicated on neighbor re-builds
pack_border_vel: add velocity info to buffer
pack_border_one: store extra info unique to this atom style
unpack_border: retrieve an atom's info from the buffer
unpack_border_vel: also retrieve velocity info
unpack_border_one: retreive extra info unique to this atom style
pack_exchange: store all an atom's info to migrate to another processor
unpack_exchange: retrieve an atom's info from the buffer
size_restart: number of restart quantities associated with proc's atoms
pack_restart: pack atom quantities into a buffer
unpack_restart: unpack atom quantities from a buffer
create_atom: create an individual atom of this style
data_atom: parse an atom line from the data file
memory_usage: tally memory allocated by atom arrays :tb(s=:)
The constructor of the derived class sets values for several variables
that you must set when defining a new atom style, which are documented
in atom_vec.h. New atom arrays are defined in atom.cpp. Search for
the word "customize" and you will find locations you will need to
modify.
:line
-Bond, angle, dihedral, improper potentials :link(bond),h4
+10.2 Bond, angle, dihedral, improper potentials :link(mod_2),h4
Classes that compute molecular interactions are derived from the Bond,
Angle, Dihedral, and Improper classes. New styles can be created to
add new potentials to LAMMPS.
Bond_harmonic.cpp is the simplest example of a bond style. Ditto for
the harmonic forms of the angle, dihedral, and improper style
commands.
Here is a brief description of methods you define in your new derived
bond class. See bond.h, angle.h, dihedral.h, and improper.h for
details.
compute: compute the molecular interactions
coeff: set coefficients for one bond type
equilibrium_distance: length of bond, used by SHAKE
write & read_restart: writes/reads coeffs to restart files
single: force and energy of a single bond :tb(s=:)
:line
-Compute styles :link(compute),h4
+10.3 Compute styles :link(mod_3),h4
Classes that compute scalar and vector quantities like temperature
and the pressure tensor, as well as classes that compute per-atom
quantities like kinetic energy and the centro-symmetry parameter
are derived from the Compute class. New styles can be created
to add new calculations to LAMMPS.
Compute_temp.cpp is a simple example of computing a scalar
temperature. Compute_ke_atom.cpp is a simple example of computing
per-atom kinetic energy.
Here is a brief description of methods you define in your new derived
class. See compute.h for details.
compute_scalar: compute a scalar quantity
compute_vector: compute a vector of quantities
compute_peratom: compute one or more quantities per atom
pack_comm: pack a buffer with items to communicate
unpack_comm: unpack the buffer
pack_reverse: pack a buffer with items to reverse communicate
unpack_reverse: unpack the buffer
memory_usage: tally memory usage :tb(s=:)
:line
-Dump styles :link(dump),h4
-Dump custom output options :link(dump_custom),h4
+10.4 Dump styles :link(mod_4),h4
+10.5 Dump custom output options :link(mod_5),h4
Classes that dump per-atom info to files are derived from the Dump
class. To dump new quantities or in a new format, a new derived dump
class can be added, but it is typically simpler to modify the
DumpCustom class contained in the dump_custom.cpp file.
Dump_atom.cpp is a simple example of a derived dump class.
Here is a brief description of methods you define in your new derived
class. See dump.h for details.
write_header: write the header section of a snapshot of atoms
count: count the number of lines a processor will output
pack: pack a proc's output data into a buffer
write_data: write a proc's data to a file :tb(s=:)
See the "dump"_dump.html command and its {custom} style for a list of
keywords for atom information that can already be dumped by
DumpCustom. It includes options to dump per-atom info from Compute
classes, so adding a new derived Compute class is one way to calculate
new quantities to dump.
Alternatively, you can add new keywords to the dump custom command.
Search for the word "customize" in dump_custom.cpp to see the
half-dozen or so locations where code will need to be added.
:line
-Fix styles :link(fix),h4
+10.6 Fix styles :link(mod_6),h4
In LAMMPS, a "fix" is any operation that is computed during
timestepping that alters some property of the system. Essentially
everything that happens during a simulation besides force computation,
neighbor list construction, and output, is a "fix". This includes
time integration (update of coordinates and velocities), force
constraints or boundary conditions (SHAKE or walls), and diagnostics
(compute a diffusion coefficient). New styles can be created to add
new options to LAMMPS.
Fix_setforce.cpp is a simple example of setting forces on atoms to
prescribed values. There are dozens of fix options already in LAMMPS;
choose one as a template that is similar to what you want to
implement.
Here is a brief description of methods you can define in your new
derived class. See fix.h for details.
setmask: determines when the fix is called during the timestep
init: initialization before a run
setup: called immediately before the 1st timestep
initial_integrate: called at very beginning of each timestep
pre_exchange: called before atom exchange on re-neighboring steps
pre_neighbor: called before neighbor list build
post_force: called after pair & molecular forces are computed
final_integrate: called at end of each timestep
end_of_step: called at very end of timestep
write_restart: dumps fix info to restart file
restart: uses info from restart file to re-initialize the fix
grow_arrays: allocate memory for atom-based arrays used by fix
copy_arrays: copy atom info when an atom migrates to a new processor
memory_usage: report memory used by fix
pack_exchange: store atom's data in a buffer
unpack_exchange: retrieve atom's data from a buffer
pack_restart: store atom's data for writing to restart file
unpack_restart: retrieve atom's data from a restart file buffer
size_restart: size of atom's data
maxsize_restart: max size of atom's data
initial_integrate_respa: same as initial_integrate, but for rRESPA
post_force_respa: same as post_force, but for rRESPA
final_integrate_respa: same as final_integrate, but for rRESPA
pack_comm: pack a buffer to communicate a per-atom quantity
unpack_comm: unpack a buffer to communicate a per-atom quantity
pack_reverse_comm: pack a buffer to reverse communicate a per-atom quantity
unpack_reverse_comm: unpack a buffer to reverse communicate a per-atom quantity
thermo: compute quantities for thermodynamic output :tb(s=:)
Typically, only a small fraction of these methods are defined for a
particular fix. Setmask is mandatory, as it determines when the fix
will be invoked during the timestep. Fixes that perform time
integration ({nve}, {nvt}, {npt}) implement initial_integrate() and
final_integrate() to perform velocity Verlet updates. Fixes that
constrain forces implement post_force().
Fixes that perform diagnostics typically implement end_of_step(). For
an end_of_step fix, one of your fix arguments must be the variable
"nevery" which is used to determine when to call the fix and you must
set this variable in the constructor of your fix. By convention, this
is the first argument the fix defines (after the ID, group-ID, style).
If the fix needs to store information for each atom that persists from
timestep to timestep, it can manage that memory and migrate the info
with the atoms as they move from processors to processor by
implementing the grow_arrays, copy_arrays, pack_exchange, and
unpack_exchange methods. Similarly, the pack_restart and
unpack_restart methods can be implemented to store information about
the fix in restart files. If you wish an integrator or force
constraint fix to work with rRESPA (see the "run_style"_run_style.html
command), the initial_integrate, post_force_integrate, and
final_integrate_respa methods can be implemented. The thermo method
enables a fix to contribute values to thermodynamic output, as printed
quantities and/or to be summed to the potential energy of the system.
:line
-Input script commands :link(command),h4
+10.7 Input script commands :link(mod_7),h4
New commands can be added to LAMMPS input scripts by adding new
classes that have a "command" method. For example, the create_atoms,
read_data, velocity, and run commands are all implemented in this
fashion. When such a command is encountered in the LAMMPS input
script, LAMMPS simply creates a class with the corresponding name,
invokes the "command" method of the class, and passes it the arguments
from the input script. The command method can perform whatever
operations it wishes on LAMMPS data structures.
The single method your new class must define is as follows:
command: operations performed by the new command :tb(s=:)
Of course, the new class can define other methods and variables as
needed.
:line
-Kspace computations :link(kspace),h4
+10.8 Kspace computations :link(mod_8),h4
Classes that compute long-range Coulombic interactions via K-space
representations (Ewald, PPPM) are derived from the KSpace class. New
styles can be created to add new K-space options to LAMMPS.
Ewald.cpp is an example of computing K-space interactions.
Here is a brief description of methods you define in your new derived
class. See kspace.h for details.
init: initialize the calculation before a run
setup: computation before the 1st timestep of a run
compute: every-timestep computation
memory_usage: tally of memory usage :tb(s=:)
:line
-Minimization solvers :link(min),h4
+10.9 Minimization styles :link(mod_9),h4
Classes that perform energy minimization derived from the Min class.
New styles can be created to add new minimization algorithms to
LAMMPS.
Min_cg.cpp is an example of conjugate gradient minimization.
Here is a brief description of methods you define in your new derived
class. See min.h for details.
init: initialize the minimization before a run
run: perform the minimization
memory_usage: tally of memory usage :tb(s=:)
:line
-Pairwise potentials :link(pair),h4
+10.10 Pairwise potentials :link(mod_10),h4
Classes that compute pairwise interactions are derived from the Pair
class. In LAMMPS, pairwise calculation include manybody potentials
such as EAM or Tersoff where particles interact without a static bond
topology. New styles can be created to add new pair potentials to
LAMMPS.
Pair_lj_cut.cpp is a simple example of a Pair class, though it
includes some optional methods to enable its use with rRESPA.
Here is a brief description of the class methods in pair.h:
compute: workhorse routine that computes pairwise interactions
settings: reads the input script line with arguments you define
coeff: set coefficients for one i,j type pair
init_one: perform initialization for one i,j type pair
init_style: initialization specific to this pair style
write & read_restart: write/read i,j pair coeffs to restart files
write & read_restart_settings: write/read global settings to restart files
single: force and energy of a single pairwise interaction between 2 atoms
compute_inner/middle/outer: versions of compute used by rRESPA :tb(s=:)
The inner/middle/outer routines are optional.
:line
-Region styles :link(region),h4
+10.11 Region styles :link(mod_11),h4
Classes that define geometric regions are derived from the Region
class. Regions are used elsewhere in LAMMPS to group atoms, delete
atoms to create a void, insert atoms in a specified region, etc. New
styles can be created to add new region shapes to LAMMPS.
Region_sphere.cpp is an example of a spherical region.
Here is a brief description of methods you define in your new derived
class. See region.h for details.
match: determine whether a point is in the region :tb(s=:)
:line
-Thermodynamic output options :link(thermo),h4
+10.12 Thermodynamic output options :link(mod_12),h4
There is one class that computes and prints thermodynamic information
to the screen and log file; see the file thermo.cpp.
There are two styles defined in thermo.cpp: "one" and "multi". There
is also a flexible "custom" style which allows the user to explicitly
list keywords for quantities to print when thermodynamic info is
output. See the "thermo_style"_thermo_style.html command for a list
of defined quantities.
The thermo styles (one, multi, etc) are simply lists of keywords.
Adding a new style thus only requires defining a new list of keywords.
Search for the word "customize" with references to "thermo style" in
thermo.cpp to see the two locations where code will need to be added.
New keywords can also be added to thermo.cpp to compute new quantities
for output. Search for the word "customize" with references to
"keyword" in thermo.cpp to see the several locations where code will
need to be added.
Note that the "thermo_style custom"_thermo.html command already allows
for thermo output of quantities calculated by "fixes"_fix.html,
"computes"_compute.html, and "variables"_variable.html. Thus, it may
be simpler to compute what you wish via one of those constructs, than
by adding a new keyword to the thermo command.
:line
-Variable options :link(variable),h4
+10.13 Variable options :link(mod_13),h4
There is one class that computes and stores "variable"_variable.html
information in LAMMPS; see the file variable.cpp. The value
associated with a variable can be periodically printed to the screen
via the "print"_print.html, "fix print"_fix_print.html, or
"thermo_style custom"_thermo_style.html commands. Variables of style
"equal" can compute complex equations that involve the following types
of arguments:
thermo keywords = ke, vol, atoms, ...
other variables = v_a, v_myvar, ...
math functions = div(x,y), mult(x,y), add(x,y), ...
group functions = mass(group), xcm(group,x), ...
atom values = x[123], y[3], vx[34], ...
compute values = c_mytemp[0], c_thermo_press[3], ...
Adding keywords for the "thermo_style custom"_thermo_style.html command
(which can then be accessed by variables) was discussed
"here"_Section_modify.html#thermo on this page.
Adding a new math function of one or two arguments can be done by
editing one section of the Variable::evaulate() method. Search for
the word "customize" to find the appropriate location.
Adding a new group function can be done by editing one section of the
Variable::evaulate() method. Search for the word "customize" to find
the appropriate location. You may need to add a new method to the
Group class as well (see the group.cpp file).
Accessing a new atom-based vector can be done by editing one section
of the Variable::evaulate() method. Search for the word "customize"
to find the appropriate location.
Adding new "compute styles"_compute.html (whose calculated values can
then be accessed by variables) was discussed
"here"_Section_modify.html#compute on this page.
+:line
:line
-Submitting new features to the developers to include in LAMMPS :link(package),h4
+10.14 Submitting new features for inclusion in LAMMPS :link(mod_14),h4
We encourage users to submit new features that they add to LAMMPS to
"the developers"_http://lammps.sandia.gov/authors.html, especially if
you think the features will be of interest to other users. If they
are broadly useful we may add them as core files to LAMMPS or as part
-of a "standard package"_Section_start.html#2_3. Else we will add them
-as a user-contributed package or file. Examples of user packages are
-in src sub-directories that start with USER. The USER-MISC package is
-simply a collection of (mostly) unrelated single files, which is the
-simplest way to have your contribution quickly added to the LAMMPS
-distribution. You can see a list of the both standard and user
-packages by typing "make package" in the LAMMPS src directory.
+of a "standard package"_Section_start.html#start_3. Else we will add
+them as a user-contributed package or file. Examples of user packages
+are in src sub-directories that start with USER. The USER-MISC
+package is simply a collection of (mostly) unrelated single files,
+which is the simplest way to have your contribution quickly added to
+the LAMMPS distribution. You can see a list of the both standard and
+user packages by typing "make package" in the LAMMPS src directory.
With user packages and files, all we are really providing (aside from
the fame and fortune that accompanies having your name in the source
code and on the "Authors page"_http://lammps.sandia.gov/authors.html
of the "LAMMPS WWW site"_lws), is a means for you to distribute your
work to the LAMMPS user community and a mechanism for others to easily
try out your new feature. This may help you find bugs or make contact
with new collaborators. Note that you're also implicitly agreeing to
support your code which means answer questions, fix bugs, and maintain
it if LAMMPS changes.
The previous sections of this doc page describe how to add new
features of various kinds to LAMMPS. Packages are simply collections
of one or more new class files which are invoked as a new "style"
within a LAMMPS input script. If designed correctly, these additions
do not require changes to the main core of LAMMPS; they are simply
add-on files. If you think your new feature requires non-trivial
changes in core LAMMPS files, you'll need to "communicate with the
developers"_http://lammps.sandia.gov/authors.html, since we may or may
not want to make those changes. An example of a trivial change is
making a parent-class method "virtual" when you derive a new child
class from it.
Here is what you need to do to submit a user package or single file
for our consideration. Following these steps will save time for both
you and us. See existing package files for examples.
All source files you provide must compile with the most current
version of LAMMPS. :ulb,l
If your contribution is a single file (actually a *.cpp and *.h file)
it can most rapidly be added to the USER-MISC directory. Send us the
one-line entry to add to the USER-MISC/README file in that dir, along
with the 2 source files. You can do this multiple times if you wish
to contribute several individual features. :l
If your contribution is several related featues, it is probably best
to make it a user package directory with a name like USER-FOO. In
addition to your new files, the directory should contain a README, and
Install.csh file. The README text file should contain your name and
contact information and a brief description of what your new package
does. The Install.csh file enables LAMMPS to include and exclude your
package. See other README and Install.sh files in other USER
directories as examples. Send us a tarball of this USER-FOO
directory. :l
Your new source files need to have the LAMMPS copyright, GPL notice,
and your name at the top, like other LAMMPS source files. They need
to create a class that is inside the LAMMPS namespace. Other than
that, your files can do whatever is necessary to implement the new
features. They don't have to be written in the same stylistic format
and syntax as other LAMMPS files, though that would be nice. :l
Finally, you must also send a documentation file for each new command
or style you are adding to LAMMPS. This will be one file for a
single-file feature. For a package, it might be several files. These
are simple text files which we will convert to HTML. They must be in
the same format as other *.txt files in the lammps/doc directory for
similar commands and styles. The "Restrictions" section of the doc
page should indicate that your command is only available if LAMMPS is
built with the appropriate USER-MISC or USER-FOO package. See other
user package doc files for an example of how to do this. The txt2html
tool we use to do the conversion can be downloaded from "this
site"_http://www.sandia.gov/~sjplimp/download.html, so you can perform
the HTML conversion yourself to proofread your doc page. :l,ule
Note that the more clear and self-explanatory you make your doc and
README files, the more likely it is that users will try out your new
feature.
:line
:line
:link(Foo)
[(Foo)] Foo, Morefoo, and Maxfoo, J of Classic Potentials, 75, 345 (1997).
diff --git a/doc/Section_perf.html b/doc/Section_perf.html
index bf95445aa..330d99407 100644
--- a/doc/Section_perf.html
+++ b/doc/Section_perf.html
@@ -1,84 +1,84 @@
<HTML>
<CENTER><A HREF = "Section_example.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_tools.html">Next Section</A>
</CENTER>
<HR>
-<H3>6. Performance & scalability
+<H3>8. Performance & scalability
</H3>
<P>LAMMPS performance on several prototypical benchmarks and machines is
discussed on the Benchmarks page of the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> where
CPU timings and parallel efficiencies are listed. Here, the
benchmarks are described briefly and some useful rules of thumb about
their performance are highlighted.
</P>
<P>These are the 5 benchmark problems:
</P>
<OL><LI>LJ = atomic fluid, Lennard-Jones potential with 2.5 sigma cutoff (55
neighbors per atom), NVE integration
<LI>Chain = bead-spring polymer melt of 100-mer chains, FENE bonds and LJ
pairwise interactions with a 2^(1/6) sigma cutoff (5 neighbors per
atom), NVE integration
<LI>EAM = metallic solid, Cu EAM potential with 4.95 Angstrom cutoff (45
neighbors per atom), NVE integration
<LI>Chute = granular chute flow, frictional history potential with 1.1
sigma cutoff (7 neighbors per atom), NVE integration
<LI>Rhodo = rhodopsin protein in solvated lipid bilayer, CHARMM force
field with a 10 Angstrom LJ cutoff (440 neighbors per atom),
particle-particle particle-mesh (PPPM) for long-range Coulombics, NPT
integration
</OL>
<P>The input files for running the benchmarks are included in the LAMMPS
distribution, as are sample output files. Each of the 5 problems has
32,000 atoms and runs for 100 timesteps. Each can be run as a serial
benchmarks (on one processor) or in parallel. In parallel, each
benchmark can be run as a fixed-size or scaled-size problem. For
fixed-size benchmarking, the same 32K atom problem is run on various
numbers of processors. For scaled-size benchmarking, the model size
is increased with the number of processors. E.g. on 8 processors, a
256K-atom problem is run; on 1024 processors, a 32-million atom
problem is run, etc.
</P>
<P>A useful metric from the benchmarks is the CPU cost per atom per
timestep. Since LAMMPS performance scales roughly linearly with
problem size and timesteps, the run time of any problem using the same
model (atom style, force field, cutoff, etc) can then be estimated.
For example, on a 1.7 GHz Pentium desktop machine (Intel icc compiler
under Red Hat Linux), the CPU run-time in seconds/atom/timestep for
the 5 problems is
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ALIGN ="right">Problem:</TD><TD > LJ</TD><TD > Chain</TD><TD > EAM</TD><TD > Chute</TD><TD > Rhodopsin</TD></TR>
<TR ALIGN="center"><TD ALIGN ="right">CPU/atom/step:</TD><TD > 4.55E-6</TD><TD > 2.18E-6</TD><TD > 9.38E-6</TD><TD > 2.18E-6</TD><TD > 1.11E-4</TD></TR>
<TR ALIGN="center"><TD ALIGN ="right">Ratio to LJ:</TD><TD > 1.0</TD><TD > 0.48</TD><TD > 2.06</TD><TD > 0.48</TD><TD > 24.5
</TD></TR></TABLE></DIV>
<P>The ratios mean that if the atomic LJ system has a normalized cost of
1.0, the bead-spring chains and granular systems run 2x faster, while
the EAM metal and solvated protein models run 2x and 25x slower
respectively. The bulk of these cost differences is due to the
expense of computing a particular pairwise force field for a given
number of neighbors per atom.
</P>
<P>Performance on a parallel machine can also be predicted from the
one-processor timings if the parallel efficiency can be estimated.
The communication bandwidth and latency of a particular parallel
machine affects the efficiency. On most machines LAMMPS will give
fixed-size parallel efficiencies on these benchmarks above 50% so long
as the atoms/processor count is a few 100 or greater - i.e. on 64 to
128 processors. Likewise, scaled-size parallel efficiencies will
typically be 80% or greater up to very large processor counts. The
benchmark data on the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> gives specific examples on
some different machines, including a run of 3/4 of a billion LJ atoms
on 1500 processors that ran at 85% parallel efficiency.
</P>
</HTML>
diff --git a/doc/Section_perf.txt b/doc/Section_perf.txt
index 8a20a8209..896d522ca 100644
--- a/doc/Section_perf.txt
+++ b/doc/Section_perf.txt
@@ -1,77 +1,77 @@
"Previous Section"_Section_example.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_tools.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
-6. Performance & scalability :h3
+8. Performance & scalability :h3
LAMMPS performance on several prototypical benchmarks and machines is
discussed on the Benchmarks page of the "LAMMPS WWW Site"_lws where
CPU timings and parallel efficiencies are listed. Here, the
benchmarks are described briefly and some useful rules of thumb about
their performance are highlighted.
These are the 5 benchmark problems:
LJ = atomic fluid, Lennard-Jones potential with 2.5 sigma cutoff (55
neighbors per atom), NVE integration :olb,l
Chain = bead-spring polymer melt of 100-mer chains, FENE bonds and LJ
pairwise interactions with a 2^(1/6) sigma cutoff (5 neighbors per
atom), NVE integration :l
EAM = metallic solid, Cu EAM potential with 4.95 Angstrom cutoff (45
neighbors per atom), NVE integration :l
Chute = granular chute flow, frictional history potential with 1.1
sigma cutoff (7 neighbors per atom), NVE integration :l
Rhodo = rhodopsin protein in solvated lipid bilayer, CHARMM force
field with a 10 Angstrom LJ cutoff (440 neighbors per atom),
particle-particle particle-mesh (PPPM) for long-range Coulombics, NPT
integration :ole,l
The input files for running the benchmarks are included in the LAMMPS
distribution, as are sample output files. Each of the 5 problems has
32,000 atoms and runs for 100 timesteps. Each can be run as a serial
benchmarks (on one processor) or in parallel. In parallel, each
benchmark can be run as a fixed-size or scaled-size problem. For
fixed-size benchmarking, the same 32K atom problem is run on various
numbers of processors. For scaled-size benchmarking, the model size
is increased with the number of processors. E.g. on 8 processors, a
256K-atom problem is run; on 1024 processors, a 32-million atom
problem is run, etc.
A useful metric from the benchmarks is the CPU cost per atom per
timestep. Since LAMMPS performance scales roughly linearly with
problem size and timesteps, the run time of any problem using the same
model (atom style, force field, cutoff, etc) can then be estimated.
For example, on a 1.7 GHz Pentium desktop machine (Intel icc compiler
under Red Hat Linux), the CPU run-time in seconds/atom/timestep for
the 5 problems is
Problem:, LJ, Chain, EAM, Chute, Rhodopsin
CPU/atom/step:, 4.55E-6, 2.18E-6, 9.38E-6, 2.18E-6, 1.11E-4
Ratio to LJ:, 1.0, 0.48, 2.06, 0.48, 24.5 :tb(ea=c,ca1=r)
The ratios mean that if the atomic LJ system has a normalized cost of
1.0, the bead-spring chains and granular systems run 2x faster, while
the EAM metal and solvated protein models run 2x and 25x slower
respectively. The bulk of these cost differences is due to the
expense of computing a particular pairwise force field for a given
number of neighbors per atom.
Performance on a parallel machine can also be predicted from the
one-processor timings if the parallel efficiency can be estimated.
The communication bandwidth and latency of a particular parallel
machine affects the efficiency. On most machines LAMMPS will give
fixed-size parallel efficiencies on these benchmarks above 50% so long
as the atoms/processor count is a few 100 or greater - i.e. on 64 to
128 processors. Likewise, scaled-size parallel efficiencies will
typically be 80% or greater up to very large processor counts. The
benchmark data on the "LAMMPS WWW Site"_lws gives specific examples on
some different machines, including a run of 3/4 of a billion LJ atoms
on 1500 processors that ran at 85% parallel efficiency.
diff --git a/doc/Section_python.html b/doc/Section_python.html
index ca2e40ee9..92de682b0 100644
--- a/doc/Section_python.html
+++ b/doc/Section_python.html
@@ -1,675 +1,676 @@
<HTML>
-<CENTER><A HREF = "Section_modify.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_accelerate.html">Next Section</A>
+<CENTER><A HREF = "Section_modify.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_errors.html">Next Section</A>
</CENTER>
<HR>
-<H3>9. Python interface to LAMMPS
+<H3>11. Python interface to LAMMPS
</H3>
<P>The LAMMPS distribution includes some Python code in its python
directory which wraps the library interface to LAMMPS. This makes it
is possible to run LAMMPS, invoke LAMMPS commands or give it an input
script, extract LAMMPS results, an modify internal LAMMPS variables,
either from a Python script or interactively from a Python prompt.
</P>
<P><A HREF = "http://www.python.org">Python</A> is a powerful scripting and programming
language which can be used to wrap software like LAMMPS and other
packages. It can be used to glue multiple pieces of software
-together, e.g. to run a coupled or multiscale model. See <A HREF = "Section_howto.html#4_10">this
+together, e.g. to run a coupled or multiscale model. See <A HREF = "Section_howto.html#howto_10">this
section</A> of the manual and the couple
directory of the distribution for more ideas about coupling LAMMPS to
-other codes. See <A HREF = "Section_start.html#2_4">this section</A> about how to
-build LAMMPS as a library, and <A HREF = "Section_howto.html#4_19">this section</A>
-for a description of the library interface provided in src/library.cpp
-and src/library.h and how to extend it for your needs. As described
-below, that interface is what is exposed to Python. It is designed to
-be easy to add functions to. This has the effect of extending the
-Python inteface as well. See details below.
+other codes. See <A HREF = "Section_start.html#start_4">this section</A> about how
+to build LAMMPS as a library, and <A HREF = "Section_howto.html#howto_19">this
+section</A> for a description of the library
+interface provided in src/library.cpp and src/library.h and how to
+extend it for your needs. As described below, that interface is what
+is exposed to Python. It is designed to be easy to add functions to.
+This has the effect of extending the Python inteface as well. See
+details below.
</P>
<P>By using the Python interface LAMMPS can also be coupled with a GUI or
visualization tools that display graphs or animations in real time as
LAMMPS runs. Examples of such scripts are inlcluded in the python
directory.
</P>
<P>Two advantages of using Python are how concise the language is and
that it can be run interactively, enabling rapid development and
debugging of programs. If you use it to mostly invoke costly
operations within LAMMPS, such as running a simulation for a
reasonable number of timesteps, then the overhead cost of invoking
LAMMPS thru Python will be negligible.
</P>
<P>Before using LAMMPS from a Python script, the Python on your machine
must be "extended" to include an interface to the LAMMPS library. If
your Python script will invoke MPI operations, you will also need to
extend your Python with an interface to MPI itself.
</P>
<P>Thus you should first decide how you intend to use LAMMPS from Python.
There are 3 options:
</P>
<P>(1) Use LAMMPS on a single processor running Python.
</P>
<P>(2) Use LAMMPS in parallel, where each processor runs Python, but your
Python program does not use MPI.
</P>
<P>(3) Use LAMMPS in parallel, where each processor runs Python, and your
Python script also makes MPI calls through a Python/MPI interface.
</P>
<P>Note that for (2) and (3) you will not be able to use Python
interactively by typing commands and getting a response. This is
because you will have multiple instances of Python running (e.g. on a
parallel machine) and they cannot all read what you type.
</P>
<P>Working in mode (1) does not require your machine to have MPI
installed. You should extend your Python with a serial version of
LAMMPS and the dummy MPI library provided with LAMMPS. See
instructions below on how to do this.
</P>
<P>Working in mode (2) requires your machine to have an MPI library
installed, but your Python does not need to be extended with MPI
itself. The MPI library must be a shared library (e.g. a *.so file on
Linux) which is not typically created when MPI is built/installed.
See instruction below on how to do this. You should extend your
Python with the a parallel versionn of LAMMPS which will use the
shared MPI system library. See instructions below on how to do this.
</P>
<P>Working in mode (3) requires your machine to have MPI installed (as a
shared library as in (2)). You must also extend your Python with a
parallel version of LAMMPS (same as in (2)) and with MPI itself, via
one of several available Python/MPI packages. See instructions below
on how to do the latter task.
</P>
<P>Several of the following sub-sections cover the rest of the Python
setup discussion. The next to last sub-section describes the Python
syntax used to invoke LAMMPS. The last sub-section describes example
Python scripts included in the python directory.
</P>
-<UL><LI><A HREF = "#9_1">Extending Python with a serial version of LAMMPS</A>
-<LI><A HREF = "#9_2">Creating a shared MPI library</A>
-<LI><A HREF = "#9_3">Extending Python with a parallel version of LAMMPS</A>
-<LI><A HREF = "#9_4">Extending Python with MPI</A>
-<LI><A HREF = "#9_5">Testing the Python-LAMMPS interface</A>
-<LI><A HREF = "#9_6">Using LAMMPS from Python</A>
-<LI><A HREF = "#9_7">Example Python scripts that use LAMMPS</A>
+<UL><LI>11.1 <A HREF = "#py_1">Extending Python with a serial version of LAMMPS</A>
+<LI>11.2 <A HREF = "#py_2">Creating a shared MPI library</A>
+<LI>11.3 <A HREF = "#py_3">Extending Python with a parallel version of LAMMPS</A>
+<LI>11.4 <A HREF = "#py_4">Extending Python with MPI</A>
+<LI>11.5 <A HREF = "#py_5">Testing the Python-LAMMPS interface</A>
+<LI>11.6 <A HREF = "#py_6">Using LAMMPS from Python</A>
+<LI>11.7 <A HREF = "#py_7">Example Python scripts that use LAMMPS</A>
</UL>
<P>Before proceeding, there are 2 items to note.
</P>
<P>(1) The provided Python wrapper for LAMMPS uses the amazing and
magical (to me) "ctypes" package in Python, which auto-generates the
interface code needed between Python and a set of C interface routines
for a library. Ctypes is part of standard Python for versions 2.5 and
later. You can check which version of Python you have installed, by
simply typing "python" at a shell prompt.
</P>
<P>(2) Any library wrapped by Python, including LAMMPS, must be built as
a shared library (e.g. a *.so file on Linux and not a *.a file). The
python/setup_serial.py and setup.py scripts do this build for LAMMPS
itself (described below). But if you have LAMMPS configured to use
additional packages that have their own libraries, then those
libraries must also be shared libraries. E.g. MPI, FFTW, or any of
the libraries in lammps/lib. When you build LAMMPS as a stand-alone
code, you are not building shared versions of these libraries.
</P>
<P>The discussion below describes how to create a shared MPI library. I
suggest you start by configuing LAMMPS without packages installed that
-require any libraries besides MPI. See <A HREF = "Section_start.html#2_3">this
+require any libraries besides MPI. See <A HREF = "Section_start.html#start_3">this
section</A> of the manual for a discussion of
LAMMPS pacakges. E.g. do not use the KSPACE, GPU, MEAM, POEMS, or
REAX packages.
</P>
<P>If you are successfully follow the steps belwo to build the Python
wrappers and use this version of LAMMPS through Python, you can then
take the next step of adding LAMMPS packages that use additional
libraries. This will require you to build a shared library for that
package's library, similar to what is described below for MPI. It
will also require you to edit the python/setup_serial.py or setup.py
scripts to enable Python to access those libraries when it builds the
LAMMPS wrapper.
</P>
<HR>
<HR>
-<A NAME = "9_1"></A><H4>Extending Python with a serial version of LAMMPS
+<A NAME = "py_1"></A><H4>11.1 Extending Python with a serial version of LAMMPS
</H4>
<P>From the python directory in the LAMMPS distribution, type
</P>
<PRE>python setup_serial.py build
</PRE>
<P>and then one of these commands:
</P>
<PRE>sudo python setup_serial.py install
python setup_serial.py install --home=~/foo
</PRE>
<P>The "build" command should compile all the needed LAMMPS files,
including its dummy MPI library. The first "install" command will put
the needed files in your Python's site-packages sub-directory, so that
Python can load them. For example, if you installed Python yourself
on a Linux machine, it would typically be somewhere like
/usr/local/lib/python2.5/site-packages. Installing Python packages
this way often requires you to be able to write to the Python
directories, which may require root priveleges, hence the "sudo"
prefix. If this is not the case, you can drop the "sudo".
</P>
<P>Alternatively, you can install the LAMMPS files (or any other Python
packages) in your own user space. The second "install" command does
this, where you should replace "foo" with your directory of choice.
</P>
<P>If these commands are successful, a <I>lammps.py</I> and
<I>_lammps_serial.so</I> file will be put in the appropriate directory.
</P>
<HR>
-<A NAME = "9_2"></A><H4>Creating a shared MPI library
+<A NAME = "py_2"></A><H4>11.2 Creating a shared MPI library
</H4>
<P>A shared library is one that is dynamically loadable, which is what
Python requires. On Linux this is a library file that ends in ".so",
not ".a". Such a shared library is normally not built if you
installed MPI yourself, but it is easy to do. Here is how to do it
for <A HREF = "http://www-unix.mcs.anl.gov/mpi">MPICH</A>, a popular open-source version of MPI, distributed
by Argonne National Labs. From within the mpich directory, type
</P>
<PRE>./configure --enable-sharedlib=gcc
make
make install
</PRE>
<P>You may need to use "sudo make install" in place of the last line.
The end result should be the file libmpich.so in /usr/local/lib.
</P>
<P>IMPORTANT NOTE: If the file libmpich.a already exists in your
installation directory (e.g. /usr/local/lib), you will now have both a
static and shared MPI library. This will be fine for running LAMMPS
from Python since it only uses the shared library. But if you now try
to build LAMMPS by itself as a stand-alone program (cd lammps/src;
make foo) or build other codes that expect to link against libmpich.a,
then those builds will typically fail if the linker uses libmpich.so
instead. This means you will need to remove the file
/usr/local/lib/libmich.so before building LAMMPS again as a
stand-alone code.
</P>
<HR>
-<A NAME = "9_3"></A><H4>Extending Python with a parallel version of LAMMPS
+<A NAME = "py_3"></A><H4>11.3 Extending Python with a parallel version of LAMMPS
</H4>
<P>From the python directory, type
</P>
<PRE>python setup.py build
</PRE>
<P>and then one of these commands:
</P>
<PRE>sudo python setup.py install
python setup.py install --home=~/foo
</PRE>
<P>The "build" command should compile all the needed LAMMPS C++ files,
which will require MPI to be installed on your system. This means it
must find both the header file mpi.h and a shared library file,
e.g. libmpich.so if the MPICH version of MPI is installed. See the
preceding section for how to create a shared library version of MPI if
it does not exist. You may need to adjust the "include_dirs" and
"library_dirs" and "libraries" fields in python/setup.py to
insure the Python build finds all the files it needs.
</P>
<P>The first "install" command will put the needed files in your Python's
site-packages sub-directory, so that Python can load them. For
example, if you installed Python yourself on a Linux machine, it would
typically be somewhere like /usr/local/lib/python2.5/site-packages.
Installing Python packages this way often requires you to be able to
write to the Python directories, which may require root priveleges,
hence the "sudo" prefix. If this is not the case, you can drop the
"sudo".
</P>
<P>Alternatively, you can install the LAMMPS files (or any other Python
packages) in your own user space. The second "install" command does
this, where you should replace "foo" with your directory of choice.
</P>
<P>If these commands are successful, a <I>lammps.py</I> and <I>_lammps.so</I> file
will be put in the appropriate directory.
</P>
<HR>
-<A NAME = "9_4"></A><H4>Extending Python with MPI
+<A NAME = "py_4"></A><H4>11.4 Extending Python with MPI
</H4>
<P>There are several Python packages available that purport to wrap MPI
as a library and allow MPI functions to be called from Python.
</P>
<P>These include
</P>
<UL><LI><A HREF = "http://pympi.sourceforge.net/">pyMPI</A>
<LI><A HREF = "http://code.google.com/p/maroonmpi/">maroonmpi</A>
<LI><A HREF = "http://code.google.com/p/mpi4py/">mpi4py</A>
<LI><A HREF = "http://nbcr.sdsc.edu/forum/viewtopic.php?t=89&sid=c997fefc3933bd66204875b436940f16">myMPI</A>
<LI><A HREF = "http://datamining.anu.edu.au/~ole/pypar">Pypar</A>
</UL>
<P>All of these except pyMPI work by wrapping the MPI library (which must
be available on your system as a shared library, as discussed above),
and exposing (some portion of) its interface to your Python script.
This means they cannot be used interactively in parallel, since they
do not address the issue of interactive input to multiple instances of
Python running on different processors. The one exception is pyMPI,
which alters the Python interpreter to address this issue, and (I
believe) creates a new alternate executable (in place of python
itself) as a result.
</P>
<P>In principle any of these Python/MPI packages should work to invoke
both calls to LAMMPS and MPI itself from a Python script running in
parallel. However, when I downloaded and looked at a few of them,
their docuemtation was incomplete and I had trouble with their
installation. It's not clear if some of the packages are still being
actively developed and supported.
</P>
<P>The one I recommend, since I have successfully used it with LAMMPS, is
Pypar. Pypar requires the ubiquitous <A HREF = "http://numpy.scipy.org">Numpy
package</A> be installed in your Python. After
launching python, type
</P>
<PRE>>>> import numpy
</PRE>
<P>to see if it is installed. If not, here is how to install it (version
1.3.0b1 as of April 2009). Unpack the numpy tarball and from its
top-level directory, type
</P>
<PRE>python setup.py build
sudo python setup.py install
</PRE>
<P>The "sudo" is only needed if required to copy Numpy files into your
Python distribution's site-packages directory.
</P>
<P>To install Pypar (version pypar-2.1.0_66 as of April 2009), unpack it
and from its "source" directory, type
</P>
<PRE>python setup.py build
sudo python setup.py install
</PRE>
<P>Again, the "sudo" is only needed if required to copy PyPar files into
your Python distribution's site-packages directory.
</P>
<P>If you have successully installed Pypar, you should be able to run
python serially and type
</P>
<PRE>>>> import pypar
</PRE>
<P>without error. You should also be able to run python in parallel
on a simple test script
</P>
<PRE>% mpirun -np 4 python test.script
</PRE>
<P>where test.script contains the lines
</P>
<PRE>import pypar
print "Proc %d out of %d procs" % (pypar.rank(),pypar.size())
</PRE>
<P>and see one line of output for each processor you ran on.
</P>
<HR>
-<A NAME = "9_5"></A><H4>Testing the Python-LAMMPS interface
+<A NAME = "py_5"></A><H4>11.5 Testing the Python-LAMMPS interface
</H4>
<P>Before using LAMMPS in a Python program, one more step is needed. The
interface to LAMMPS is via the Python ctypes package, which loads the
shared LAMMPS library via a CDLL() call, which in turn is a wrapper on
the C-library dlopen(). This command is different than a normal
Python "import" and needs to be able to find the LAMMPS shared
library, which is either in the Python site-packages directory or in a
local directory you specified in the "python setup.py install"
command, as described above.
</P>
<P>The simplest way to do this is add a line like this to your
.cshrc or other shell start-up file.
</P>
<PRE>setenv LD_LIBRARY_PATH
${LD_LIBRARY_PATH}:/usr/local/lib/python2.5/site-packages
</PRE>
<P>and then execute the shell file to insure the path has been updated.
This will extend the path that dlopen() uses to look for shared
libraries.
</P>
<P>To test if the serial LAMMPS library has been successfully installed
(mode 1 above), launch Python and type
</P>
<PRE>>>> from lammps import lammps
>>> lmp = lammps()
</PRE>
<P>If you get no errors, you're ready to use serial LAMMPS from Python.
</P>
<P>If you built LAMMPS for parallel use (mode 2 or 3 above), launch
Python in parallel:
</P>
<PRE>% mpirun -np 4 python test.script
</PRE>
<P>where test.script contains the lines
</P>
<PRE>import pypar
from lammps import lammps
lmp = lammps()
print "Proc %d out of %d procs has" % (pypar.rank(),pypar.size()), lmp
pypar.finalize()
</PRE>
<P>Again, if you get no errors, you're good to go.
</P>
<P>Note that if you left out the "import pypar" line from this script,
you would instantiate and run LAMMPS independently on each of the P
processors specified in the mpirun command. You can test if Pypar is
enabling true parallel Python and LAMMPS by adding a line to the above
sequence of commands like lmp.file("in.lj") to run an input script and
see if the LAMMPS run says it ran on P processors or if you get output
from P duplicated 1-processor runs written to the screen. In the
latter case, Pypar is not working correctly.
</P>
<P>Note that this line:
</P>
<PRE>from lammps import lammps
</PRE>
<P>will import either the serial or parallel version of the LAMMPS
library, as wrapped by lammps.py. But if you installed both via
setup_serial.py and setup.py, it will always import the parallel
version, since it attempts that first.
</P>
<P>Note that if your Python script imports the Pypar package (as above),
so that it can use MPI calls directly, then Pypar initializes MPI for
you. Thus the last line of your Python script should be
pypar.finalize(), to insure MPI is shut down correctly.
</P>
<P>Also note that a Python script can be invoked in one of several ways:
</P>
<P>% python foo.script
% python -i foo.script
% foo.script
</P>
<P>The last command requires that the first line of the script be
something like this:
</P>
<P>#!/usr/local/bin/python
#!/usr/local/bin/python -i
</P>
<P>where the path points to where you have Python installed, and that you
have made the script file executable:
</P>
<P>% chmod +x foo.script
</P>
<P>Without the "-i" flag, Python will exit when the script finishes.
With the "-i" flag, you will be left in the Python interpreter when
the script finishes, so you can type subsequent commands. As
mentioned above, you can only run Python interactively when running
Python on a single processor, not in parallel.
</P>
<HR>
<HR>
-<A NAME = "9_6"></A><H4>Using LAMMPS from Python
+<A NAME = "py_6"></A><H4>11.6 Using LAMMPS from Python
</H4>
<P>The Python interface to LAMMPS consists of a Python "lammps" module,
the source code for which is in python/lammps.py, which creates a
"lammps" object, with a set of methods that can be invoked on that
object. The sample Python code below assumes you have first imported
the "lammps" module in your Python script and its settings as
follows:
</P>
<PRE>from lammps import lammps
from lammps import LMPINT as INT
from lammps import LMPDOUBLE as DOUBLE
from lammps import LMPIPTR as IPTR
from lammps import LMPDPTR as DPTR
from lammps import LMPDPTRPTR as DPTRPTR
</PRE>
<P>These are the methods defined by the lammps module. If you look
at the file src/library.cpp you will see that they correspond
one-to-one with calls you can make to the LAMMPS library from a C++ or
C or Fortran program.
</P>
<PRE>lmp = lammps() # create a LAMMPS object
lmp = lammps(list) # ditto, with command-line args, list = ["-echo","screen"]
</PRE>
<PRE>lmp.close() # destroy a LAMMPS object
</PRE>
<PRE>lmp.file(file) # run an entire input script, file = "in.lj"
lmp.command(cmd) # invoke a single LAMMPS command, cmd = "run 100"
</PRE>
<PRE>xlo = lmp.extract_global(name,type) # extract a global quantity
# name = "boxxlo", "nlocal", etc
# type = INT or DOUBLE
</PRE>
<PRE>coords = lmp.extract_atom(name,type) # extract a per-atom quantity
# name = "x", "type", etc
# type = IPTR or DPTR or DPTRPTR
</PRE>
<PRE>eng = lmp.extract_compute(id,style,type) # extract value(s) from a compute
v3 = lmp.extract_fix(id,style,type,i,j) # extract value(s) from a fix
# id = ID of compute or fix
# style = 0 = global data
# 1 = per-atom data
# 2 = local data
# type = 0 = scalar
# 1 = vector
# 2 = array
# i,j = indices of value in global vector or array
</PRE>
<PRE>var = lmp.extract_variable(name,group,flag) # extract value(s) from a variable
# name = name of variable
# group = group ID (ignored for equal-style variables)
# flag = 0 = equal-style variable
# 1 = atom-style variable
</PRE>
<PRE>natoms = lmp.get_natoms() # total # of atoms as int
x = lmp.get_coords() # return coords of all atoms in x
lmp.put_coords(x) # set all atom coords via x
</PRE>
<HR>
<P>The creation of a LAMMPS object does not take an MPI communicator as
an argument. There should be a way to do this, so that the LAMMPS
instance runs on a subset of processors, if desired, but I don't yet
know how from Pypar. So for now, it runs on MPI_COMM_WORLD, which is
all the processors.
</P>
<P>The file() and command() methods allow an input script or single
commands to be invoked.
</P>
<P>The extract_global(), extract_atom(), extract_compute(),
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 **)
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#4_15">this section</A> of the manual for a
+See <A HREF = "Section_howto.html#howto_15">this section</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. Note that extract_global("natoms") returns the
same value, but as a double, which is the way LAMMPS stores it to
allow for systems with more atoms than can be stored in an int (> 2
billion).
</P>
<P>The get_coords() method returns an ctypes vector of doubles of length
3*natoms, for the coordinates of all the atoms in the simulation,
ordered by x,y,z and then by atom ID (see code for put_coords()
below). The array 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 get_coords() returns is different from
the data structure returned by extract_atom("x") in four ways. (1)
Get_coords() returns a vector which you index as x[i];
extract_atom() returns an array which you index as x[i][j]. (2)
Get_coords() orders the atoms by atom ID while extract_atom() does
not. (3) Get_coords() returns a list of all atoms in the simulation;
extract_atoms() returns just the atoms local to each processor. (4)
Finally, the get_coords() data structure is a copy of the atom coords
stored internally in LAMMPS, whereas extract_atom returns an array
that 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 get_atoms() vector, you
need to change values in the vector, then invoke the put_coords()
method.
</P>
<P>The put_coords() method takes a vector of coordinates for all atoms in
the simulation, assumed to be ordered by x,y,z and then by atom ID,
and uses the values to overwrite the corresponding coordinates 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 put_coords() must be a ctypes
vector of doubles, allocated and initialized something like this:
</P>
<PRE>from ctypes import *
natoms = lmp.get_atoms()
n3 = 3*natoms
x = (c_double*n3)()
x<B>0</B> = x coord of atom with ID 1
x<B>1</B> = y coord of atom with ID 1
x<B>2</B> = z coord of atom with ID 1
x<B>3</B> = x coord of atom with ID 2
...
x<B>n3-1</B> = z coord of atom with ID natoms
lmp.put_coords(x)
</PRE>
<P>Alternatively, you can just change values in the vector returned by
get_coords(), 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>Verify the new function is syntactically correct by building LAMMPS as
-a library - see <A HREF = "Section_start.html#2_4">this section</A> of the
+a library - see <A HREF = "Section_start.html#start_4">this section</A> of the
manual.
<LI>Add a wrapper method in the Python LAMMPS module to python/lammps.py
for this interface function.
<LI>Rebuild the Python wrapper via python/setup_serial.py or
python/setup.py.
<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 = "9_7"></A><H4>Example Python scripts that use LAMMPS
+<A NAME = "py_7"></A><H4>11.7 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:
</P>
<PRE>http://mt.seas.upenn.edu/Archive/Graphics/A
http://mt.seas.upenn.edu/Archive/Graphics/A3/A3.html
</PRE>
<P>The latter link is to AtomEye 3 which has the scriping
capability needed by these Python scripts.
</P>
<P>Note that for PyMol, you need to have built and installed the
open-source version of PyMol in your Python, so that you can import it
from a Python script. See the PyMol WWW pages <A HREF = "http://www.pymol.org">here</A> or
<A HREF = "http://sourceforge.net/scm/?type=svn&group_id=4546">here</A> for more details:
</P>
<PRE>http://www.pymol.org
http://sourceforge.net/scm/?type=svn&group_id=4546
</PRE>
<P>The latter link is to the open-source version.
</P>
<P>Note that for VMD, you need a fairly current version (1.8.7 works for
me) and there are some lines in the pizza/vmd.py script for 4 PIZZA
variables that have to match the VMD installation on your system.
</P>
<HR>
<P>See the python/README file for instructions on how to run them and the
source code for individual scripts for comments about what they do.
</P>
<P>Here are screenshots of the vizplotgui_tool.py script in action for
different visualization package options. Click to see larger images:
</P>
<A HREF = "JPG/screenshot_gl.jpg"><IMG SRC = "JPG/screenshot_gl_small.jpg"></A>
<A HREF = "JPG/screenshot_atomeye.jpg"><IMG SRC = "JPG/screenshot_atomeye_small.jpg"></A>
<A HREF = "JPG/screenshot_pymol.jpg"><IMG SRC = "JPG/screenshot_pymol_small.jpg"></A>
<A HREF = "JPG/screenshot_vmd.jpg"><IMG SRC = "JPG/screenshot_vmd_small.jpg"></A>
</HTML>
diff --git a/doc/Section_python.txt b/doc/Section_python.txt
index f914f9b45..dbf470081 100644
--- a/doc/Section_python.txt
+++ b/doc/Section_python.txt
@@ -1,660 +1,661 @@
-"Previous Section"_Section_modify.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_accelerate.html :c
+"Previous Section"_Section_modify.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_errors.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
-9. Python interface to LAMMPS :h3
+11. Python interface to LAMMPS :h3
The LAMMPS distribution includes some Python code in its python
directory which wraps the library interface to LAMMPS. This makes it
is possible to run LAMMPS, invoke LAMMPS commands or give it an input
script, extract LAMMPS results, an modify internal LAMMPS variables,
either from a Python script or interactively from a Python prompt.
"Python"_http://www.python.org is a powerful scripting and programming
language which can be used to wrap software like LAMMPS and other
packages. It can be used to glue multiple pieces of software
together, e.g. to run a coupled or multiscale model. See "this
-section"_Section_howto.html#4_10 of the manual and the couple
+section"_Section_howto.html#howto_10 of the manual and the couple
directory of the distribution for more ideas about coupling LAMMPS to
-other codes. See "this section"_Section_start.html#2_4 about how to
-build LAMMPS as a library, and "this section"_Section_howto.html#4_19
-for a description of the library interface provided in src/library.cpp
-and src/library.h and how to extend it for your needs. As described
-below, that interface is what is exposed to Python. It is designed to
-be easy to add functions to. This has the effect of extending the
-Python inteface as well. See details below.
+other codes. See "this section"_Section_start.html#start_4 about how
+to build LAMMPS as a library, and "this
+section"_Section_howto.html#howto_19 for a description of the library
+interface provided in src/library.cpp and src/library.h and how to
+extend it for your needs. As described below, that interface is what
+is exposed to Python. It is designed to be easy to add functions to.
+This has the effect of extending the Python inteface as well. See
+details below.
By using the Python interface LAMMPS can also be coupled with a GUI or
visualization tools that display graphs or animations in real time as
LAMMPS runs. Examples of such scripts are inlcluded in the python
directory.
Two advantages of using Python are how concise the language is and
that it can be run interactively, enabling rapid development and
debugging of programs. If you use it to mostly invoke costly
operations within LAMMPS, such as running a simulation for a
reasonable number of timesteps, then the overhead cost of invoking
LAMMPS thru Python will be negligible.
Before using LAMMPS from a Python script, the Python on your machine
must be "extended" to include an interface to the LAMMPS library. If
your Python script will invoke MPI operations, you will also need to
extend your Python with an interface to MPI itself.
Thus you should first decide how you intend to use LAMMPS from Python.
There are 3 options:
(1) Use LAMMPS on a single processor running Python.
(2) Use LAMMPS in parallel, where each processor runs Python, but your
Python program does not use MPI.
(3) Use LAMMPS in parallel, where each processor runs Python, and your
Python script also makes MPI calls through a Python/MPI interface.
Note that for (2) and (3) you will not be able to use Python
interactively by typing commands and getting a response. This is
because you will have multiple instances of Python running (e.g. on a
parallel machine) and they cannot all read what you type.
Working in mode (1) does not require your machine to have MPI
installed. You should extend your Python with a serial version of
LAMMPS and the dummy MPI library provided with LAMMPS. See
instructions below on how to do this.
Working in mode (2) requires your machine to have an MPI library
installed, but your Python does not need to be extended with MPI
itself. The MPI library must be a shared library (e.g. a *.so file on
Linux) which is not typically created when MPI is built/installed.
See instruction below on how to do this. You should extend your
Python with the a parallel versionn of LAMMPS which will use the
shared MPI system library. See instructions below on how to do this.
Working in mode (3) requires your machine to have MPI installed (as a
shared library as in (2)). You must also extend your Python with a
parallel version of LAMMPS (same as in (2)) and with MPI itself, via
one of several available Python/MPI packages. See instructions below
on how to do the latter task.
Several of the following sub-sections cover the rest of the Python
setup discussion. The next to last sub-section describes the Python
syntax used to invoke LAMMPS. The last sub-section describes example
Python scripts included in the python directory.
-"Extending Python with a serial version of LAMMPS"_#9_1
-"Creating a shared MPI library"_#9_2
-"Extending Python with a parallel version of LAMMPS"_#9_3
-"Extending Python with MPI"_#9_4
-"Testing the Python-LAMMPS interface"_#9_5
-"Using LAMMPS from Python"_#9_6
-"Example Python scripts that use LAMMPS"_#9_7 :ul
+11.1 "Extending Python with a serial version of LAMMPS"_#py_1
+11.2 "Creating a shared MPI library"_#py_2
+11.3 "Extending Python with a parallel version of LAMMPS"_#py_3
+11.4 "Extending Python with MPI"_#py_4
+11.5 "Testing the Python-LAMMPS interface"_#py_5
+11.6 "Using LAMMPS from Python"_#py_6
+11.7 "Example Python scripts that use LAMMPS"_#py_7 :ul
Before proceeding, there are 2 items to note.
(1) The provided Python wrapper for LAMMPS uses the amazing and
magical (to me) "ctypes" package in Python, which auto-generates the
interface code needed between Python and a set of C interface routines
for a library. Ctypes is part of standard Python for versions 2.5 and
later. You can check which version of Python you have installed, by
simply typing "python" at a shell prompt.
(2) Any library wrapped by Python, including LAMMPS, must be built as
a shared library (e.g. a *.so file on Linux and not a *.a file). The
python/setup_serial.py and setup.py scripts do this build for LAMMPS
itself (described below). But if you have LAMMPS configured to use
additional packages that have their own libraries, then those
libraries must also be shared libraries. E.g. MPI, FFTW, or any of
the libraries in lammps/lib. When you build LAMMPS as a stand-alone
code, you are not building shared versions of these libraries.
The discussion below describes how to create a shared MPI library. I
suggest you start by configuing LAMMPS without packages installed that
require any libraries besides MPI. See "this
-section"_Section_start.html#2_3 of the manual for a discussion of
+section"_Section_start.html#start_3 of the manual for a discussion of
LAMMPS pacakges. E.g. do not use the KSPACE, GPU, MEAM, POEMS, or
REAX packages.
If you are successfully follow the steps belwo to build the Python
wrappers and use this version of LAMMPS through Python, you can then
take the next step of adding LAMMPS packages that use additional
libraries. This will require you to build a shared library for that
package's library, similar to what is described below for MPI. It
will also require you to edit the python/setup_serial.py or setup.py
scripts to enable Python to access those libraries when it builds the
LAMMPS wrapper.
:line
:line
-Extending Python with a serial version of LAMMPS :link(9_1),h4
+11.1 Extending Python with a serial version of LAMMPS :link(py_1),h4
From the python directory in the LAMMPS distribution, type
python setup_serial.py build :pre
and then one of these commands:
sudo python setup_serial.py install
python setup_serial.py install --home=~/foo :pre
The "build" command should compile all the needed LAMMPS files,
including its dummy MPI library. The first "install" command will put
the needed files in your Python's site-packages sub-directory, so that
Python can load them. For example, if you installed Python yourself
on a Linux machine, it would typically be somewhere like
/usr/local/lib/python2.5/site-packages. Installing Python packages
this way often requires you to be able to write to the Python
directories, which may require root priveleges, hence the "sudo"
prefix. If this is not the case, you can drop the "sudo".
Alternatively, you can install the LAMMPS files (or any other Python
packages) in your own user space. The second "install" command does
this, where you should replace "foo" with your directory of choice.
If these commands are successful, a {lammps.py} and
{_lammps_serial.so} file will be put in the appropriate directory.
:line
-Creating a shared MPI library :link(9_2),h4
+11.2 Creating a shared MPI library :link(py_2),h4
A shared library is one that is dynamically loadable, which is what
Python requires. On Linux this is a library file that ends in ".so",
not ".a". Such a shared library is normally not built if you
installed MPI yourself, but it is easy to do. Here is how to do it
for "MPICH"_mpich, a popular open-source version of MPI, distributed
by Argonne National Labs. From within the mpich directory, type
:link(mpich,http://www-unix.mcs.anl.gov/mpi)
./configure --enable-sharedlib=gcc
make
make install :pre
You may need to use "sudo make install" in place of the last line.
The end result should be the file libmpich.so in /usr/local/lib.
IMPORTANT NOTE: If the file libmpich.a already exists in your
installation directory (e.g. /usr/local/lib), you will now have both a
static and shared MPI library. This will be fine for running LAMMPS
from Python since it only uses the shared library. But if you now try
to build LAMMPS by itself as a stand-alone program (cd lammps/src;
make foo) or build other codes that expect to link against libmpich.a,
then those builds will typically fail if the linker uses libmpich.so
instead. This means you will need to remove the file
/usr/local/lib/libmich.so before building LAMMPS again as a
stand-alone code.
:line
-Extending Python with a parallel version of LAMMPS :link(9_3),h4
+11.3 Extending Python with a parallel version of LAMMPS :link(py_3),h4
From the python directory, type
python setup.py build :pre
and then one of these commands:
sudo python setup.py install
python setup.py install --home=~/foo :pre
The "build" command should compile all the needed LAMMPS C++ files,
which will require MPI to be installed on your system. This means it
must find both the header file mpi.h and a shared library file,
e.g. libmpich.so if the MPICH version of MPI is installed. See the
preceding section for how to create a shared library version of MPI if
it does not exist. You may need to adjust the "include_dirs" and
"library_dirs" and "libraries" fields in python/setup.py to
insure the Python build finds all the files it needs.
The first "install" command will put the needed files in your Python's
site-packages sub-directory, so that Python can load them. For
example, if you installed Python yourself on a Linux machine, it would
typically be somewhere like /usr/local/lib/python2.5/site-packages.
Installing Python packages this way often requires you to be able to
write to the Python directories, which may require root priveleges,
hence the "sudo" prefix. If this is not the case, you can drop the
"sudo".
Alternatively, you can install the LAMMPS files (or any other Python
packages) in your own user space. The second "install" command does
this, where you should replace "foo" with your directory of choice.
If these commands are successful, a {lammps.py} and {_lammps.so} file
will be put in the appropriate directory.
:line
-Extending Python with MPI :link(9_4),h4
+11.4 Extending Python with MPI :link(py_4),h4
There are several Python packages available that purport to wrap MPI
as a library and allow MPI functions to be called from Python.
These include
"pyMPI"_http://pympi.sourceforge.net/
"maroonmpi"_http://code.google.com/p/maroonmpi/
"mpi4py"_http://code.google.com/p/mpi4py/
"myMPI"_http://nbcr.sdsc.edu/forum/viewtopic.php?t=89&sid=c997fefc3933bd66204875b436940f16
"Pypar"_http://datamining.anu.edu.au/~ole/pypar :ul
All of these except pyMPI work by wrapping the MPI library (which must
be available on your system as a shared library, as discussed above),
and exposing (some portion of) its interface to your Python script.
This means they cannot be used interactively in parallel, since they
do not address the issue of interactive input to multiple instances of
Python running on different processors. The one exception is pyMPI,
which alters the Python interpreter to address this issue, and (I
believe) creates a new alternate executable (in place of python
itself) as a result.
In principle any of these Python/MPI packages should work to invoke
both calls to LAMMPS and MPI itself from a Python script running in
parallel. However, when I downloaded and looked at a few of them,
their docuemtation was incomplete and I had trouble with their
installation. It's not clear if some of the packages are still being
actively developed and supported.
The one I recommend, since I have successfully used it with LAMMPS, is
Pypar. Pypar requires the ubiquitous "Numpy
package"_http://numpy.scipy.org be installed in your Python. After
launching python, type
>>> import numpy :pre
to see if it is installed. If not, here is how to install it (version
1.3.0b1 as of April 2009). Unpack the numpy tarball and from its
top-level directory, type
python setup.py build
sudo python setup.py install :pre
The "sudo" is only needed if required to copy Numpy files into your
Python distribution's site-packages directory.
To install Pypar (version pypar-2.1.0_66 as of April 2009), unpack it
and from its "source" directory, type
python setup.py build
sudo python setup.py install :pre
Again, the "sudo" is only needed if required to copy PyPar files into
your Python distribution's site-packages directory.
If you have successully installed Pypar, you should be able to run
python serially and type
>>> import pypar :pre
without error. You should also be able to run python in parallel
on a simple test script
% mpirun -np 4 python test.script :pre
where test.script contains the lines
import pypar
print "Proc %d out of %d procs" % (pypar.rank(),pypar.size()) :pre
and see one line of output for each processor you ran on.
:line
-Testing the Python-LAMMPS interface :link(9_5),h4
+11.5 Testing the Python-LAMMPS interface :link(py_5),h4
Before using LAMMPS in a Python program, one more step is needed. The
interface to LAMMPS is via the Python ctypes package, which loads the
shared LAMMPS library via a CDLL() call, which in turn is a wrapper on
the C-library dlopen(). This command is different than a normal
Python "import" and needs to be able to find the LAMMPS shared
library, which is either in the Python site-packages directory or in a
local directory you specified in the "python setup.py install"
command, as described above.
The simplest way to do this is add a line like this to your
.cshrc or other shell start-up file.
setenv LD_LIBRARY_PATH
$\{LD_LIBRARY_PATH\}:/usr/local/lib/python2.5/site-packages :pre
and then execute the shell file to insure the path has been updated.
This will extend the path that dlopen() uses to look for shared
libraries.
To test if the serial LAMMPS library has been successfully installed
(mode 1 above), launch Python and type
>>> from lammps import lammps
>>> lmp = lammps() :pre
If you get no errors, you're ready to use serial LAMMPS from Python.
If you built LAMMPS for parallel use (mode 2 or 3 above), launch
Python in parallel:
% mpirun -np 4 python test.script :pre
where test.script contains the lines
import pypar
from lammps import lammps
lmp = lammps()
print "Proc %d out of %d procs has" % (pypar.rank(),pypar.size()), lmp
pypar.finalize() :pre
Again, if you get no errors, you're good to go.
Note that if you left out the "import pypar" line from this script,
you would instantiate and run LAMMPS independently on each of the P
processors specified in the mpirun command. You can test if Pypar is
enabling true parallel Python and LAMMPS by adding a line to the above
sequence of commands like lmp.file("in.lj") to run an input script and
see if the LAMMPS run says it ran on P processors or if you get output
from P duplicated 1-processor runs written to the screen. In the
latter case, Pypar is not working correctly.
Note that this line:
from lammps import lammps :pre
will import either the serial or parallel version of the LAMMPS
library, as wrapped by lammps.py. But if you installed both via
setup_serial.py and setup.py, it will always import the parallel
version, since it attempts that first.
Note that if your Python script imports the Pypar package (as above),
so that it can use MPI calls directly, then Pypar initializes MPI for
you. Thus the last line of your Python script should be
pypar.finalize(), to insure MPI is shut down correctly.
Also note that a Python script can be invoked in one of several ways:
% python foo.script
% python -i foo.script
% foo.script
The last command requires that the first line of the script be
something like this:
#!/usr/local/bin/python
#!/usr/local/bin/python -i
where the path points to where you have Python installed, and that you
have made the script file executable:
% chmod +x foo.script
Without the "-i" flag, Python will exit when the script finishes.
With the "-i" flag, you will be left in the Python interpreter when
the script finishes, so you can type subsequent commands. As
mentioned above, you can only run Python interactively when running
Python on a single processor, not in parallel.
:line
:line
-Using LAMMPS from Python :link(9_6),h4
+11.6 Using LAMMPS from Python :link(py_6),h4
The Python interface to LAMMPS consists of a Python "lammps" module,
the source code for which is in python/lammps.py, which creates a
"lammps" object, with a set of methods that can be invoked on that
object. The sample Python code below assumes you have first imported
the "lammps" module in your Python script and its settings as
follows:
from lammps import lammps
from lammps import LMPINT as INT
from lammps import LMPDOUBLE as DOUBLE
from lammps import LMPIPTR as IPTR
from lammps import LMPDPTR as DPTR
from lammps import LMPDPTRPTR as DPTRPTR :pre
These are the methods defined by the lammps module. If you look
at the file src/library.cpp you will see that they correspond
one-to-one with calls you can make to the LAMMPS library from a C++ or
C or Fortran program.
lmp = lammps() # create a LAMMPS object
lmp = lammps(list) # ditto, with command-line args, list = \["-echo","screen"\] :pre
lmp.close() # destroy a LAMMPS object :pre
lmp.file(file) # run an entire input script, file = "in.lj"
lmp.command(cmd) # invoke a single LAMMPS command, cmd = "run 100" :pre
xlo = lmp.extract_global(name,type) # extract a global quantity
# name = "boxxlo", "nlocal", etc
# type = INT or DOUBLE :pre
coords = lmp.extract_atom(name,type) # extract a per-atom quantity
# name = "x", "type", etc
# type = IPTR or DPTR or DPTRPTR :pre
eng = lmp.extract_compute(id,style,type) # extract value(s) from a compute
v3 = lmp.extract_fix(id,style,type,i,j) # extract value(s) from a fix
# id = ID of compute or fix
# style = 0 = global data
# 1 = per-atom data
# 2 = local data
# type = 0 = scalar
# 1 = vector
# 2 = array
# i,j = indices of value in global vector or array :pre
var = lmp.extract_variable(name,group,flag) # extract value(s) from a variable
# name = name of variable
# group = group ID (ignored for equal-style variables)
# flag = 0 = equal-style variable
# 1 = atom-style variable :pre
natoms = lmp.get_natoms() # total # of atoms as int
x = lmp.get_coords() # return coords of all atoms in x
lmp.put_coords(x) # set all atom coords via x :pre
:line
The creation of a LAMMPS object does not take an MPI communicator as
an argument. There should be a way to do this, so that the LAMMPS
instance runs on a subset of processors, if desired, but I don't yet
know how from Pypar. So for now, it runs on MPI_COMM_WORLD, which is
all the processors.
The file() and command() methods allow an input script or single
commands to be invoked.
The extract_global(), extract_atom(), extract_compute(),
extract_fix(), and extract_variable() methods return values or
pointers to data structures internal to LAMMPS.
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.
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 **)
is returned. You need to specify the appropriate data type via the
type argument.
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 "this section"_Section_howto.html#4_15 of the manual for a
+See "this section"_Section_howto.html#howto_15 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
"computes"_compute.html and "fixes"_fix.html for a description of what
they calculate and store.
For extract_variable(), an "equal-style or atom-style
variable"_variable.html is evaluated and its result returned.
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.
The get_natoms() method returns the total number of atoms in the
simulation, as an int. Note that extract_global("natoms") returns the
same value, but as a double, which is the way LAMMPS stores it to
allow for systems with more atoms than can be stored in an int (> 2
billion).
The get_coords() method returns an ctypes vector of doubles of length
3*natoms, for the coordinates of all the atoms in the simulation,
ordered by x,y,z and then by atom ID (see code for put_coords()
below). The array 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.
Note that the data structure get_coords() returns is different from
the data structure returned by extract_atom("x") in four ways. (1)
Get_coords() returns a vector which you index as x\[i\];
extract_atom() returns an array which you index as x\[i\]\[j\]. (2)
Get_coords() orders the atoms by atom ID while extract_atom() does
not. (3) Get_coords() returns a list of all atoms in the simulation;
extract_atoms() returns just the atoms local to each processor. (4)
Finally, the get_coords() data structure is a copy of the atom coords
stored internally in LAMMPS, whereas extract_atom returns an array
that 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 get_atoms() vector, you
need to change values in the vector, then invoke the put_coords()
method.
The put_coords() method takes a vector of coordinates for all atoms in
the simulation, assumed to be ordered by x,y,z and then by atom ID,
and uses the values to overwrite the corresponding coordinates for
each atom inside LAMMPS. This requires LAMMPS to have its "map"
option enabled; see the "atom_modify"_atom_modify.html command for
details. If it is not or if atom IDs are not consecutively ordered,
no coordinates are reset,
The array of coordinates passed to put_coords() must be a ctypes
vector of doubles, allocated and initialized something like this:
from ctypes import *
natoms = lmp.get_atoms()
n3 = 3*natoms
x = (c_double*n3)()
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.put_coords(x) :pre
Alternatively, you can just change values in the vector returned by
get_coords(), since it is a ctypes vector of doubles.
:line
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:
Add a new interface function to src/library.cpp and
src/library.h. :ulb,l
Verify the new function is syntactically correct by building LAMMPS as
-a library - see "this section"_Section_start.html#2_4 of the
+a library - see "this section"_Section_start.html#start_4 of the
manual. :l
Add a wrapper method in the Python LAMMPS module to python/lammps.py
for this interface function. :l
Rebuild the Python wrapper via python/setup_serial.py or
python/setup.py. :l
You should now be able to invoke the new interface function from a
Python script. Isn't ctypes amazing? :l,ule
:line
:line
-Example Python scripts that use LAMMPS :link(9_7),h4
+11.7 Example Python scripts that use LAMMPS :link(py_7),h4
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.
trivial.py, read/run a LAMMPS input script thru Python,
demo.py, invoke various LAMMPS library interface routines,
simple.py, mimic operation of couple/simple/simple.cpp in Python,
gui.py, GUI go/stop/temperature-slider to control LAMMPS,
plot.py, real-time temeperature plot with GnuPlot via Pizza.py,
viz_tool.py, real-time viz via some viz package,
vizplotgui_tool.py, combination of viz_tool.py and plot.py and gui.py :tb(c=2)
:line
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.
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 "Pizza.py doc
pages"_pizza for more info:
:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
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 "here"_atomeye or "here"_atomeye3 for more details:
http://mt.seas.upenn.edu/Archive/Graphics/A
http://mt.seas.upenn.edu/Archive/Graphics/A3/A3.html :pre
:link(atomeye,http://mt.seas.upenn.edu/Archive/Graphics/A)
:link(atomeye3,http://mt.seas.upenn.edu/Archive/Graphics/A3/A3.html)
The latter link is to AtomEye 3 which has the scriping
capability needed by these Python scripts.
Note that for PyMol, you need to have built and installed the
open-source version of PyMol in your Python, so that you can import it
from a Python script. See the PyMol WWW pages "here"_pymol or
"here"_pymolopen for more details:
http://www.pymol.org
http://sourceforge.net/scm/?type=svn&group_id=4546 :pre
:link(pymol,http://www.pymol.org)
:link(pymolopen,http://sourceforge.net/scm/?type=svn&group_id=4546)
The latter link is to the open-source version.
Note that for VMD, you need a fairly current version (1.8.7 works for
me) and there are some lines in the pizza/vmd.py script for 4 PIZZA
variables that have to match the VMD installation on your system.
:line
See the python/README file for instructions on how to run them and the
source code for individual scripts for comments about what they do.
Here are screenshots of the vizplotgui_tool.py script in action for
different visualization package options. Click to see larger images:
:image(JPG/screenshot_gl_small.jpg,JPG/screenshot_gl.jpg)
:image(JPG/screenshot_atomeye_small.jpg,JPG/screenshot_atomeye.jpg)
:image(JPG/screenshot_pymol_small.jpg,JPG/screenshot_pymol.jpg)
:image(JPG/screenshot_vmd_small.jpg,JPG/screenshot_vmd.jpg)
diff --git a/doc/Section_start.html b/doc/Section_start.html
index 1d76c5761..09c0fb8fa 100644
--- a/doc/Section_start.html
+++ b/doc/Section_start.html
@@ -1,1158 +1,1151 @@
<HTML>
<CENTER><A HREF = "Section_intro.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_commands.html">Next Section</A>
</CENTER>
<HR>
<H3>2. Getting Started
</H3>
<P>This section describes how to build and run LAMMPS, for both new and
experienced users.
</P>
-2.1 <A HREF = "#2_1">What's in the LAMMPS distribution</A><BR>
-2.2 <A HREF = "#2_2">Making LAMMPS</A><BR>
-2.3 <A HREF = "#2_3">Making LAMMPS with optional packages</A><BR>
-2.4 <A HREF = "#2_4">Building LAMMPS as a library</A><BR>
-2.5 <A HREF = "#2_5">Running LAMMPS</A><BR>
-2.6 <A HREF = "#2_6">Command-line options</A><BR>
-2.7 <A HREF = "#2_7">Screen output</A><BR>
-2.8 <A HREF = "#2_8">Tips for users of previous versions</A> <BR>
+2.1 <A HREF = "#start_1">What's in the LAMMPS distribution</A><BR>
+2.2 <A HREF = "#start_2">Making LAMMPS</A><BR>
+2.3 <A HREF = "#start_3">Making LAMMPS with optional packages</A><BR>
+2.4 <A HREF = "#start_4">Building LAMMPS as a library</A><BR>
+2.5 <A HREF = "#start_5">Running LAMMPS</A><BR>
+2.6 <A HREF = "#start_6">Command-line options</A><BR>
+2.7 <A HREF = "#start_7">Screen output</A><BR>
+2.8 <A HREF = "#start_8">Tips for users of previous versions</A> <BR>
<HR>
-<H4><A NAME = "2_1"></A>2.1 What's in the LAMMPS distribution
+<H4><A NAME = "start_1"></A>2.1 What's in the LAMMPS distribution
</H4>
<P>When you download LAMMPS you will need to unzip and untar the
downloaded file with the following commands, after placing the file in
an appropriate directory.
</P>
<PRE>gunzip lammps*.tar.gz
tar xvf lammps*.tar
</PRE>
<P>This will create a LAMMPS directory containing two files and several
sub-directories:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >README</TD><TD > text file</TD></TR>
<TR><TD >LICENSE</TD><TD > the GNU General Public License (GPL)</TD></TR>
<TR><TD >bench</TD><TD > benchmark problems</TD></TR>
<TR><TD >couple</TD><TD > code coupling examples, using LAMMPS as a library</TD></TR>
<TR><TD >doc</TD><TD > documentation</TD></TR>
<TR><TD >examples</TD><TD > simple test problems</TD></TR>
<TR><TD >potentials</TD><TD > embedded atom method (EAM) potential files</TD></TR>
<TR><TD >src</TD><TD > source files</TD></TR>
<TR><TD >tools</TD><TD > pre- and post-processing tools
</TD></TR></TABLE></DIV>
<P>If you download one of the Windows executables from the download page,
then you just get a single file:
</P>
<PRE>lmp_windows.exe
</PRE>
-<P>Skip to the <A HREF = "#2_5">Running LAMMPS</A> sections for info on how to launch
-these executables on a Windows box.
+<P>Skip to the <A HREF = "#start_5">Running LAMMPS</A> sections for info on how to
+launch these executables on a Windows box.
</P>
<P>The Windows executables for serial or parallel only include certain
packages and bug-fixes/upgrades listed on <A HREF = "http://lammps.sandia.gov/bug.html">this
page</A> up to a certain date, as
stated on the download page. If you want something with more packages
or that is more current, you'll have to download the source tarball
and build it yourself from source code using Microsoft Visual Studio,
as described in the next section.
</P>
<HR>
-<H4><A NAME = "2_2"></A>2.2 Making LAMMPS
+<H4><A NAME = "start_2"></A>2.2 Making LAMMPS
</H4>
<P>This section has the following sub-sections:
</P>
-<UL><LI><A HREF = "#2_2_1">Read this first</A>
-<LI><A HREF = "#2_2_2">Steps to build a LAMMPS executable</A>
-<LI><A HREF = "#2_2_3">Common errors that can occur when making LAMMPS</A>
-<LI><A HREF = "#2_2_4">Additional build tips</A>
-<LI><A HREF = "#2_2_5">Building for a Mac</A>
-<LI><A HREF = "#2_2_6">Building for Windows</A>
+<UL><LI><A HREF = "#start_2_1">Read this first</A>
+<LI><A HREF = "#start_2_2">Steps to build a LAMMPS executable</A>
+<LI><A HREF = "#start_2_3">Common errors that can occur when making LAMMPS</A>
+<LI><A HREF = "#start_2_4">Additional build tips</A>
+<LI><A HREF = "#start_2_5">Building for a Mac</A>
+<LI><A HREF = "#start_2_6">Building for Windows</A>
</UL>
<HR>
-<A NAME = "2_2_1"></A><B><I>Read this first:</I></B>
+<A NAME = "start_2_1"></A><B><I>Read this first:</I></B>
<P>Building LAMMPS can be non-trivial. You may need to edit a makefile,
there are compiler options to consider, additional libraries can be
used (MPI, FFT, JPEG), LAMMPS packages may be included or excluded,
some of these packages use auxiliary libraries which need to be
pre-built, etc.
</P>
<P>Please read this section carefully. If you are not comfortable with
makefiles, or building codes on a Unix platform, or running an MPI job
on your machine, please find a local expert to help you. Many
compiling, linking, and run problems that users have are not really
LAMMPS issues - they are peculiar to the user's system, compilers,
libraries, etc. Such questions are better answered by a local expert.
</P>
<P>If you have a build problem that you are convinced is a LAMMPS issue
(e.g. the compiler complains about a line of LAMMPS source code), then
please send an email to the
<A HREF = "http://lammps.sandia.gov/authors.html">developers</A>.
</P>
<P>If you succeed in building LAMMPS on a new kind of machine, for which
there isn't a similar Makefile for in the src/MAKE directory, send it
to the developers and we'll include it in future LAMMPS releases.
</P>
<HR>
-<A NAME = "2_2_2"></A><B><I>Steps to build a LAMMPS executable:</I></B>
+<A NAME = "start_2_2"></A><B><I>Steps to build a LAMMPS executable:</I></B>
<P><B>Step 0</B>
</P>
<P>The src directory contains the C++ source and header files for LAMMPS.
It also contains a top-level Makefile and a MAKE sub-directory with
low-level Makefile.* files for many machines. From within the src
directory, type "make" or "gmake". You should see a list of available
choices. If one of those is the machine and options you want, you can
type a command like:
</P>
<PRE>make linux
or
gmake mac
</PRE>
<P>Note that on a multi-processor or multi-core platform you can launch a
parallel make, by using the "-j" switch with the make command, which
will build LAMMPS more quickly.
</P>
<P>If you get no errors and an executable like lmp_linux or lmp_mac is
produced, you're done; it's your lucky day.
</P>
<P>Note that by default only a few of LAMMPS optional pacakges are
-installed. To build LAMMPS with optional packages, see <A HREF = "#2_3">this
+installed. To build LAMMPS with optional packages, see <A HREF = "#start_3">this
section</A> below.
</P>
<P><B>Step 1</B>
</P>
<P>If Step 0 did not work, you will need to create a low-level Makefile
for your machine, like Makefile.foo. You should make a copy of an
existing src/MAKE/Makefile.* as a starting point. The only portions
of the file you need to edit are the first line, the "compiler/linker
settings" section, and the "LAMMPS-specific settings" section.
</P>
<P><B>Step 2</B>
</P>
<P>Change the first line of src/MAKE/Makefile.foo to list the word "foo"
after the "#", and whatever other options it will set. This is the
line you will see if you just type "make".
</P>
<P><B>Step 3</B>
</P>
<P>The "compiler/linker settings" section lists compiler and linker
settings for your C++ compiler, including optimization flags. You can
use g++, the open-source GNU compiler, which is available on all Unix
systems. You can also use mpicc which will typically be available if
MPI is installed on your system, though you should check which actual
compiler it wraps. Vendor compilers often produce faster code. On
boxes with Intel CPUs, we suggest using the commercial Intel icc
compiler, which can be downloaded from <A HREF = "http://www.intel.com/software/products/noncom">Intel's compiler site</A>.
</P>
<P>If building a C++ code on your machine requires additional libraries,
then you should list them as part of the LIB variable.
</P>
<P>The DEPFLAGS setting is what triggers the C++ compiler to create a
dependency list for a source file. This speeds re-compilation when
source (*.cpp) or header (*.h) files are edited. Some compilers do
not support dependency file creation, or may use a different switch
than -D. GNU g++ works with -D. If your compiler can't create
dependency files, then you'll need to create a Makefile.foo patterned
after Makefile.storm, which uses different rules that do not involve
dependency files. Note that when you build LAMMPS for the first time
on a new platform, a long list of *.d files will be printed out
rapidly. This is not an error; it is the Makefile doing its normal
creation of dependencies.
</P>
<P><B>Step 4</B>
</P>
<P>The "system-specific settings" section has several parts. Note that
if you change any -D setting in this section, you should do a full
re-compile, after typing "make clean" (which will describe different
clean options).
</P>
<P>The LMP_INC variable is used to include options that turn on ifdefs
within the LAMMPS code. The options that are currently recogized are:
</P>
<UL><LI>-DLAMMPS_GZIP
<LI>-DLAMMPS_JPEG
<LI>-DLAMMPS_XDR
<LI>-DLAMMPS_SMALLBIG
<LI>-DLAMMPS_BIGBIG
<LI>-DLAMMPS_SMALLSMALL
<LI>-DLAMMPS_LONGLONG_TO_LONG
<LI>-DPACK_ARRAY
<LI>-DPACK_POINTER
<LI>-DPACK_MEMCPY
</UL>
<P>The read_data and dump commands will read/write gzipped files if you
compile with -DLAMMPS_GZIP. It requires that your Unix support the
"popen" command.
</P>
<P>If you use -DLAMMPS_JPEG, the <A HREF = "dump.html">dump image</A> command will be
able to write out JPEG image files. If not, it will only be able to
write out text-based PPM image files. For JPEG files, you must also
link LAMMPS with a JPEG library, as described below.
</P>
<P>If you use -DLAMMPS_XDR, the build will include XDR compatibility
files for doing particle dumps in XTC format. This is only necessary
if your platform does have its own XDR files available. See the
Restrictions section of the <A HREF = "dump.html">dump</A> command for details.
</P>
<P>Use at most one of the -DLAMMPS_SMALLBIG, -DLAMMPS_BIGBIG,
-D-DLAMMPS_SMALLSMALL settings. The default is -DLAMMPS_SMALLBIG.
These refer to use of 4-byte (small) vs 8-byte (big) integers within
LAMMPS, as described in src/lmptype.h. The only reason to use the
BIGBIG setting is to enable simulation of huge molecular systems with
more than 2 billion atoms. The only reason to use the SMALLSMALL
setting is if your machine does not support 64-bit integers.
</P>
<P>The -DLAMMPS_LONGLONG_TO_LONG setting may be needed if your system or
MPI version does not recognize "long long" data types. In this case a
"long" data type is likely already 64-bits, in which case this setting
will convert to that data type.
</P>
<P>Using one of the -DPACK_ARRAY, -DPACK_POINTER, and -DPACK_MEMCPY
options can make for faster parallel FFTs (in the PPPM solver) on some
platforms. The -DPACK_ARRAY setting is the default. See the
<A HREF = "kspace_style.html">kspace_style</A> command for info about PPPM. See
Step 6 below for info about building LAMMPS with an FFT library.
</P>
<P><B>Step 5</B>
</P>
<P>The 3 MPI variables are used to specify an MPI library to build LAMMPS
with.
</P>
<P>If you want LAMMPS to run in parallel, you must have an MPI library
installed on your platform. If you use an MPI-wrapped compiler, such
as "mpicc" to build LAMMPS, you should be able to leave these 3
variables blank; the MPI wrapper knows where to find the needed files.
If not, and MPI is installed on your system in the usual place (under
/usr/local), you also may not need to specify these 3 variables. On
some large parallel machines which use "modules" for their
compile/link environements, you may simply need to include the correct
module in your build environment. Or the parallel machine may have a
vendor-provided MPI which the compiler has no trouble finding.
</P>
<P>Failing this, with these 3 variables you can specify where the mpi.h
file (MPI_INC) and the MPI library file (MPI_PATH) are found and the
name of the library file (MPI_LIB).
</P>
<P>If you are installing MPI yourself, we recommend Argonne's MPICH 1.2
or 2.0 or OpenMPI. MPICH can be downloaded from the <A HREF = "http://www-unix.mcs.anl.gov/mpi">Argonne MPI
site</A>. OpenMPI can be downloaded the
<A HREF = "http://www.open-mpi.org">OpenMPI site</A>. LAM MPI should also work. If
you are running on a big parallel platform, your system people or the
vendor should have already installed a version of MPI, which will be
faster than MPICH or OpenMPI or LAM, so find out how to build and link
with it. If you use MPICH or OpenMPI or LAM, you will have to
configure and build it for your platform. The MPI configure script
should have compiler options to enable you to use the same compiler
you are using for the LAMMPS build, which can avoid problems that can
arise when linking LAMMPS to the MPI library.
</P>
<P>If you just want to run LAMMPS on a single processor, you can use the
dummy MPI library provided in src/STUBS, since you don't need a true
MPI library installed on your system. See the
src/MAKE/Makefile.serial file for how to specify the 3 MPI variables
in this case. You will also need to build the STUBS library for your
platform before making LAMMPS itself. From the src directory, type
"make stubs", or from the STUBS dir, type "make" and it should create
a libmpi.a suitable for linking to LAMMPS. If this build fails, you
will need to edit the STUBS/Makefile for your platform.
</P>
<P>The file STUBS/mpi.cpp provides a CPU timer function called
MPI_Wtime() that calls gettimeofday() . If your system doesn't
support gettimeofday() , you'll need to insert code to call another
timer. Note that the ANSI-standard function clock() rolls over after
an hour or so, and is therefore insufficient for timing long LAMMPS
simulations.
</P>
<P><B>Step 6</B>
</P>
<P>The 3 FFT variables allow you to specify an FFT library which LAMMPS
uses (for performing 1d FFTs) when running the particle-particle
particle-mesh (PPPM) option for long-range Coulombics via the
<A HREF = "kspace_style.html">kspace_style</A> command.
</P>
<P>LAMMPS supports various open-source or vendor-supplied FFT libraries
for this purpose. If you leave these 3 variables blank, LAMMPS will
use the open-source <A HREF = "http://kissfft.sf.net">KISS FFT library</A>, which is
included in the LAMMPS distribution. This library is portable to all
platforms and for typical LAMMPS simulations is almost as fast as FFTW
or vendor optimized libraries. If you are not including the KSPACE
package in your build, you can also leave the 3 variables blank.
</P>
<P>Otherwise, select which kinds of FFTs to use as part of the FFT_INC
setting by a switch of the form -DFFT_XXX. Recommended values for XXX
are: MKL, SCSL, FFTW2, and FFTW3. Legacy options are: INTEL, SGI,
ACML, and T3E. For backward compatability, using -DFFT_FFTW will use
the FFTW2 library. Using -DFFT_NONE will use the KISS library
described above.
</P>
<P>You may also need to set the FFT_INC, FFT_PATH, and FFT_LIB variables,
so the compiler and linker can find the needed FFT header and library
files. Note that on some large parallel machines which use "modules"
for their compile/link environements, you may simply need to include
the correct module in your build environment. Or the parallel machine
may have a vendor-provided FFT library which the compiler has no
trouble finding.
</P>
<P>FFTW is a fast, portable library that should also work on any
platform. You can download it from
<A HREF = "http://www.fftw.org">www.fftw.org</A>. Both the legacy version 2.1.X and
the newer 3.X versions are supported as -DFFT_FFTW2 or -DFFT_FFTW3.
Building FFTW for your box should be as simple as ./configure; make.
Note that on some platforms FFTW2 has been pre-installed, and uses
renamed files indicating the precision it was compiled with,
e.g. sfftw.h, or dfftw.h instead of fftw.h. In this case, you can
specify an additional define variable for FFT_INC called -DFFTW2_SIZE,
which will select the correct include file. In this case, for FFT_LIB
you must also manually specify the correct library, namely -lsfftw or
-ldfftw.
</P>
<P>The FFT_INC variable also allows for a -DFFT_SINGLE setting that will
use single-precision FFTs with PPPM, which can speed-up long-range
calulations, particularly in parallel or on GPUs. Fourier transform
and related PPPM operations are somewhat insensitive to floating point
truncation errors and thus do not always need to be performed in
double precision. Using the -DFFT_SINGLE setting trades off a little
accuracy for reduced memory use and parallel communication costs for
transposing 3d FFT data. Note that single precision FFTs have only
-been tested with the FFTW3, FFTW2, MKL, and KISS FFT packages.
+been tested with the FFTW3, FFTW2, MKL, and KISS FFT options.
</P>
<P><B>Step 7</B>
</P>
<P>The 3 JPG variables allow you to specify a JPEG library which LAMMPS
uses when writing out JPEG files via the <A HREF = "dump_image.html">dump image</A>
command. These can be left blank if you do not use the -DLAMMPS_JPEG
switch discussed above in Step 4, since in that case JPEG output will
be disabled.
</P>
<P>A standard JPEG library usually goes by the name libjpeg.a and has an
associated header file jpeglib.h. Whichever JPEG library you have on
your platform, you'll need to set the appropriate JPG_INC, JPG_PATH,
and JPG_LIB variables, so that the compiler and linker can find it.
</P>
<P>As before, if these header and library files are in the usual place on
your machine, you may not need to set these variables.
</P>
<P><B>Step 8</B>
</P>
<P>Note that by default only a few of LAMMPS optional pacakges are
-installed. To build LAMMPS with optional packages, see <A HREF = "#2_3">this
+installed. To build LAMMPS with optional packages, see <A HREF = "#start_3">this
section</A> below, before proceeding to Step 9.
</P>
<P><B>Step 9</B>
</P>
<P>That's it. Once you have a correct Makefile.foo, you have installed
the optional LAMMPS packages you want to include in your build, and
you have pre-built any other needed libraries (e.g. MPI, FFT, package
libraries), all you need to do from the src directory is type
something like this:
</P>
<PRE>make foo
or
gmake foo
</PRE>
<P>You should get the executable lmp_foo when the build is complete.
</P>
<HR>
-<A NAME = "2_2_3"></A><B><I>Errors that can occur when making LAMMPS:</I></B>
+<A NAME = "start_2_3"></A><B><I>Errors that can occur when making LAMMPS:</I></B>
<P>IMPORTANT NOTE: If an error occurs when building LAMMPS, the compiler
or linker will state very explicitly what the problem is. The error
message should give you a hint as to which of the steps above has
failed, and what you need to do in order to fix it. Building a code
with a Makefile is a very logical process. The compiler and linker
need to find the appropriate files and those files need to be
compatible with LAMMPS source files. When a make fails, there is
usually a very simple reason, which you or a local expert will need to
fix.
</P>
<P>Here are two non-obvious errors that can occur:
</P>
<P>(1) If the make command breaks immediately with errors that indicate
it can't find files with a "*" in their names, this can be because
your machine's native make doesn't support wildcard expansion in a
makefile. Try gmake instead of make. If that doesn't work, try using
a -f switch with your make command to use a pre-generated
Makefile.list which explicitly lists all the needed files, e.g.
</P>
<PRE>make makelist
make -f Makefile.list linux
gmake -f Makefile.list mac
</PRE>
<P>The first "make" command will create a current Makefile.list with all
the file names in your src dir. The 2nd "make" command (make or
gmake) will use it to build LAMMPS. Note that you should
include/exclude any desired optional packages before using the "make
makelist" command.
</P>
<P>(2) If you get an error that says something like 'identifier "atoll"
is undefined', then your machine does not support "long long"
integers. Try using the -DLAMMPS_LONGLONG_TO_LONG setting described
above in Step 4.
</P>
<HR>
-<A NAME = "2_2_4"></A><B><I>Additional build tips:</I></B>
+<A NAME = "start_2_4"></A><B><I>Additional build tips:</I></B>
<P>(1) Building LAMMPS for multiple platforms.
</P>
<P>You can make LAMMPS for multiple platforms from the same src
directory. Each target creates its own object sub-directory called
Obj_name where it stores the system-specific *.o files.
</P>
<P>(2) Cleaning up.
</P>
<P>Typing "make clean-all" or "make clean-foo" will delete *.o object
files created when LAMMPS is built, for either all builds or for a
particular machine.
</P>
<P>(3) Changing the size limits in src/lmptype.h
</P>
<P>If you are running a very large problem (billions of atoms or more)
and get a run-time error about the system being too big, either on a
per-processor basis or in total size, then you may need to change one
or more settings in src/lmptype.h and re-compile LAMMPS.
</P>
<P>As the documentation in that file explains, you have basically
two choices to make:
</P>
<UL><LI>set the data type size of integer atom IDs to 4 or 8 bytes
<LI>set the data type size of integers that store the total system size to 4 or 8 bytes
</UL>
<P>The default for atom IDs is 4-byte integers since there is a memory
and communication cost for 8-byte integers. Non-molecular problems do
not need atom IDs so this does not restrict their size. Molecular
problems (which use IDs to define molecular topology), are limited to
about 2 billion atoms (2^31) with 4-byte IDs. With 8-byte IDs they
are effectively unlimited in size (2^63).
</P>
<P>The default for total system size quantities (like the number of atoms
or timesteps) is 8-byte integers by default which is effectively
unlimited in size (2^63). If your system or MPI implementation does
not support 8-byte integers, an error will be generated, and you will
need to set "bigint" to 4-byte integers. This restricts your total
system size to about 2 billion atoms or timesteps (2^31).
</P>
<P>Note that in src/lmptype.h there are also settings for the MPI data
types associated with the integers that store atom IDs and total
system sizes, which need to be set consistent with the associated C
data types.
</P>
<P>In all cases, the size of problem that can be run on a per-processor
basis is limited by 4-byte integer storage to about 2 billion atoms
per processor (2^31), which should not normally be a restriction since
such a problem would have a huge per-processor memory footprint due to
neighbor lists and would run very slowly in terms of CPU
secs/timestep.
</P>
<HR>
-<A NAME = "2_2_5"></A><B><I>Building for a Mac:</I></B>
+<A NAME = "start_2_5"></A><B><I>Building for a Mac:</I></B>
<P>OS X is BSD Unix, so it should just work. See the Makefile.mac file.
</P>
<HR>
-<A NAME = "2_2_6"></A><B><I>Building for Windows:</I></B>
+<A NAME = "start_2_6"></A><B><I>Building for Windows:</I></B>
<P>The LAMMPS download page has an option to download both a serial and
-parallel pre-built Windows exeutable. See the <A HREF = "#2_5">Running LAMMPS</A>
-section for instructions for running these executables on a Windows
-box.
+parallel pre-built Windows exeutable. See the <A HREF = "#start_5">Running
+LAMMPS</A> section for instructions for running these
+executables on a Windows box.
</P>
<P>If the pre-built executable doesn't have the options you want, then
you can build LAMMPS from its source files on a Windows box. One way
to do this is install and use cygwin to build LAMMPS with a standard
Linus make, just as you would on any Linux box; see
src/MAKE/Makefile.cygwin.
</P>
<P>There is a also a src/WINDOWS directory that contains project files
for Microsoft Visual Studio 2005, which should also work with later
versions of VS. That directory contains a README.txt file which
provides instructions for building LAMMPS from source code using
Visual Studio that are hopefully easy to follow for Windows and VS
users.
</P>
<P>Four VS project options are provided. The first includes the default
packages (MANYBODY, MOLECULE, and KSPACE). The second includes all
standard packages (except GPU, MEAM, and REAX which are not yet
included because they require NVIDIA or Fortran compilation). The
third includes all standard packages (with the exceptions) and some
user packages. The included user packages are USER-EFF, USER-CG-CMM,
and USER-REAXC. The fourth project includes the USER-AWPMD package.
</P>
<HR>
-<H4><A NAME = "2_3"></A>2.3 Making LAMMPS with optional packages
+<H4><A NAME = "start_3"></A>2.3 Making LAMMPS with optional packages
</H4>
<P>This section has the following sub-sections:
</P>
-<UL><LI><A HREF = "#2_3_1">Package basics</A>
-<LI><A HREF = "#2_3_2">Including/excluding packages</A>
-<LI><A HREF = "#2_3_3">Packages that require extra LAMMPS libraries</A>
-<LI><A HREF = "#2_3_4">Additional Makefile settings for extra libraries</A>
+<UL><LI><A HREF = "#start_3_1">Package basics</A>
+<LI><A HREF = "#start_3_2">Including/excluding packages</A>
+<LI><A HREF = "#start_3_3">Packages that require extra libraries</A>
+<LI><A HREF = "#start_3_4">Additional Makefile settings for extra libraries</A>
</UL>
<HR>
-<A NAME = "2_3_1"></A><B><I>Package basics:</I></B>
+<A NAME = "start_3_1"></A><B><I>Package basics:</I></B>
<P>The source code for LAMMPS is structured as a set of core files which
are always included, plus optional packages. Packages are groups of
files that enable a specific set of features. For example, force
fields for molecular systems or granular systems are in packages. You
-can see the list of all packages by typing "make package".
+can see the list of all packages by typing "make package" from within
+the src directory of the LAMMPS distribution.
</P>
-<P>The current list of standard packages is as follows:
+<P>If you use a command in a LAMMPS input script that is specific to a
+particular package, you must have built LAMMPS with that package, else
+you will get an error that the style is invalid or the command is
+unknown. Every command's doc page specfies if it is part of a
+package. You can also type
</P>
-<DIV ALIGN=center><TABLE BORDER=1 >
-<TR><TD >asphere </TD><TD > aspherical particles and force fields</TD></TR>
-<TR><TD >class2 </TD><TD > class 2 force fields</TD></TR>
-<TR><TD >colloid </TD><TD > colloidal particle force fields</TD></TR>
-<TR><TD >dipole </TD><TD > point dipole particles and force fields</TD></TR>
-<TR><TD >dsmc </TD><TD > Direct Simulation Monte Carlo (DMSC) pair style</TD></TR>
-<TR><TD >gpu </TD><TD > GPU-enabled force field styles</TD></TR>
-<TR><TD >granular </TD><TD > force fields and boundary conditions for granular systems</TD></TR>
-<TR><TD >kspace </TD><TD > long-range Ewald and particle-mesh (PPPM) solvers</TD></TR>
-<TR><TD >manybody </TD><TD > metal, 3-body, bond-order potentials</TD></TR>
-<TR><TD >meam </TD><TD > modified embedded atom method (MEAM) potential</TD></TR>
-<TR><TD >molecule </TD><TD > force fields for molecular systems</TD></TR>
-<TR><TD >opt </TD><TD > optimized versions of a few pair potentials</TD></TR>
-<TR><TD >peri </TD><TD > Peridynamics model and potential</TD></TR>
-<TR><TD >poems </TD><TD > coupled rigid body motion</TD></TR>
-<TR><TD >reax </TD><TD > ReaxFF potential</TD></TR>
-<TR><TD >replica </TD><TD > multi-replica methods</TD></TR>
-<TR><TD >shock </TD><TD > methods for MD simulations of shock loading</TD></TR>
-<TR><TD >srd </TD><TD > stochastic rotation dynamics (SRD)</TD></TR>
-<TR><TD >xtc </TD><TD > dump atom snapshots in XTC format
-</TD></TR></TABLE></DIV>
-
-<P>There are also several user-contributed packages which may be as
-simple as a single additional file (see the src/USER-MISC directory)
-or many files grouped together which add a specific functionality to
-the code.
+<PRE>lmp_machine -h
+</PRE>
+<P>to run your executable with the optional <A HREF = "#start_6">-h command-line
+switch</A> for "help", which will list the styles and commands
+known to your executable.
</P>
-<P>The difference between a <I>standard</I> package versus a <I>user</I> package is
-as follows:
+<P>There are two kinds of packages in LAMMPS, standard and user packages.
+More information about the contents of standard and user packages is
+given in <A HREF = "Section_packages.html">this section</A> of the manual. The
+difference between standard and user packages is as follows:
</P>
<P>Standard packages are supported by the LAMMPS developers and are
written in a syntax and style consistent with the rest of LAMMPS.
This means we will answer questions about them, debug and fix them if
necessary, and keep them compatible with future changes to LAMMPS.
</P>
-<P>User packages don't necessarily meet these requirements. If you have
-problems using a feature provided in a user package, you will likely
-need to contact the contributor directly to get help. Information on
-how to submit additions you make to LAMMPS as a user-contributed
-package is given in <A HREF = "Section_modify.html#package">this section</A> of the
-documentation.
+<P>User packages have been contributed by users, and always begin with
+the user prefix. If they are a single command (single file), they are
+typically in the user-misc package. Otherwise, they are a a set of
+files grouped together which add a specific functionality to the code.
+</P>
+<P>User packages don't necessarily meet the requirements of the standard
+packages. If you have problems using a feature provided in a user
+package, you will likely need to contact the contributor directly to
+get help. Information on how to submit additions you make to LAMMPS
+as a user-contributed package is given in <A HREF = "Section_modify.html#mod_14">this
+section</A> of the documentation.
</P>
<HR>
-<A NAME = "2_3_2"></A><B><I>Including/excluding packages:</I></B>
+<A NAME = "start_3_2"></A><B><I>Including/excluding packages:</I></B>
<P>To use or not use a package you must include or exclude it before
building LAMMPS. From the src directory, this is typically as simple
as:
</P>
<PRE>make yes-colloid
make g++
</PRE>
<P>or
</P>
<PRE>make no-manybody
make g++
</PRE>
<P>Some packages have individual files that depend on other packages
being included. LAMMPS checks for this and does the right thing.
I.e. individual files are only included if their dependencies are
already included. Likewise, if a package is excluded, other files
dependent on that package are also excluded.
</P>
<P>The reason to exclude packages is if you will never run certain kinds
of simulations. For some packages, this will keep you from having to
build auxiliary libraries (see below), and will also produce a smaller
executable which may run a bit faster.
</P>
<P>By default, LAMMPS includes only the "kspace", "manybody", and
"molecule" packages.
</P>
<P>Packages are included or excluded by typing "make yes-name" or "make
no-name", where "name" is the name of the package. You can also type
"make yes-standard", "make no-standard", "make yes-user", "make
no-user", "make yes-all" or "make no-all" to include/exclude various
sets of packages. Type "make package" to see the all of the
package-related make options.
</P>
<P>IMPORTANT NOTE: Inclusion/exclusion of a package works by simply
moving files back and forth between the main src directory and
sub-directories with the package name (e.g. src/KSPACE, src/USER-ATC),
so that the files are seen or not seen when LAMMPS is built. After
you have included or excluded a package, you must re-build LAMMPS.
</P>
<P>Additional package-related make options exist to help manage LAMMPS
files that exist in both the src directory and in package
sub-directories. You do not normally need to use these commands
unless you are editing LAMMPS files or have downloaded a patch from
the LAMMPS WWW site.
</P>
<P>Typing "make package-update" will overwrite src files with files from
the package sub-directories if the package has been included. It
should be used after a patch is installed, since patches only update
the files in the package sub-directory, but not the src files. Typing
"make package-overwrite" will overwrite files in the package
sub-directories with src files.
</P>
<P>Typing "make package-status" will show which packages are currently
included. Of those that are included, it will list files that are
different in the src directory and package sub-directory. Typing
"make package-diff" lists all differences between these files. Again,
type "make package" to see all of the package-related make options.
</P>
<HR>
-<A NAME = "2_3_3"></A><B><I>Packages that require extra LAMMPS libraries:</I></B>
+<A NAME = "start_3_3"></A><B><I>Packages that require extra libraries:</I></B>
<P>A few of the standard and user packages require additional auxiliary
-libraries be compiled first. If you get a LAMMPS build error about a
-missing library, this is likely the reason. The source code for these
-libraries is included in the LAMMPS distribution under the "lib"
-directory. Look at the lib/README file for a list of these.
+libraries to be compiled first. If you get a LAMMPS build error about
+a missing library, this is likely the reason. The source code for
+these libraries is included in the LAMMPS distribution under the "lib"
+directory. Look at the lib/README file for a list of these or see
+<A HREF = "Section_packages.html">this section</A> of the doc pages.
</P>
-<P>Each lib directly has a README file (e.g. lib/reax/README) with
-instructions on how to build that library. Typically this is done by
-typing something like:
+<P>Each lib directory has a README file (e.g. lib/reax/README) with
+instructions on how to build that library. Typically this is done
+in this manner:
</P>
<PRE>make -f Makefile.g++
</PRE>
<P>in the appropriate directory, e.g. in lib/reax. Some of the libraries
do not build this way. Again, see the libary README file for details.
</P>
<P>In any event, you will need to use a Makefile that is a match for your
system. If one of the provided Makefiles is not appropriate for your
system you will need to edit or add one. For example, in the case of
Fortran-based libraries, your system must have a Fortran compiler, the
settings for which will need to be listed in the Makefile.
</P>
<P>When you have built one of these libraries, there are 2 things to
check:
</P>
<P>(1) The file libname.a should now exist in lib/name.
E.g. lib/reax/libreax.a. This is the library file LAMMPS will link
against. One exception is the lib/cuda library which produces the
file liblammpscuda.a, because there is already a system library
libcuda.a.
</P>
<P>(2) The file Makefile.lammps should exist in lib/name. E.g.
lib/cuda/Makefile.lammps. This file may be auto-generated by the
build of the library, or you may need to make a copy of the
appropriate provided file (e.g. lib/meam/Makefile.lammps.gfortran).
Either way you should insure that the settings in this file are
appropriate for your system.
</P>
<P>There are typically 3 settings in the Makefile.lammps file (unless
some are blank or not needed): a SYSINC, SYSPATH, and SYSLIB setting,
specific to this package. These are settings the LAMMPS build will
import when compiling the LAMMPS package files (not the library
files), and linking to the auxiliary library. They typically list any
other system libraries needed to support the package and where to find
them. An example is the BLAS and LAPACK libraries needed by the
USER-ATC package. Or the system libraries that support calling
Fortran from C++, as the MEAM and REAX packages do.
</P>
<P>Note that if these settings are not correct for your box, the LAMMPS
build will likely fail.
</P>
<HR>
-<H4><A NAME = "2_4"></A>2.4 Building LAMMPS as a library
+<H4><A NAME = "start_4"></A>2.4 Building LAMMPS as a library
</H4>
<P>LAMMPS itself can be built as a library, which can then be called from
-another application or a scripting language. See <A HREF = "Section_howto.html#4_10">this
-section</A> for more info on coupling LAMMPS to
-other codes. Building LAMMPS as a library is done by typing
+another application or a scripting language. See <A HREF = "Section_howto.html#howto_10">this
+section</A> for more info on coupling LAMMPS
+to other codes. Building LAMMPS as a library is done by typing
</P>
<PRE>make makelib
make -f Makefile.lib foo
</PRE>
<P>where foo is the machine name. Note that inclusion or exclusion of
any desired optional packages should be done before typing "make
makelib". The first "make" command will create a current Makefile.lib
with all the file names in your src dir. The 2nd "make" command will
use it to build LAMMPS as a library. This requires that Makefile.foo
have a library target (lib) and system-specific settings for ARCHIVE
and ARFLAGS. See Makefile.linux for an example. The build will
create the file liblmp_foo.a which another application can link to.
</P>
<P>When used from a C++ program, the library allows one or more LAMMPS
objects to be instantiated. All of LAMMPS is wrapped in a LAMMPS_NS
namespace; you can safely use any of its classes and methods from
within your application code, as needed.
</P>
<P>When used from a C or Fortran program or a scripting language, the
library has a simple function-style interface, provided in
src/library.cpp and src/library.h.
</P>
<P>See the sample codes couple/simple/simple.cpp and simple.c as examples
of C++ and C codes that invoke LAMMPS thru its library interface.
There are other examples as well in the couple directory which are
-discussed in <A HREF = "Section_howto.html#4_10">this section</A> of the manual.
+discussed in <A HREF = "Section_howto.html#howto_10">this section</A> of the manual.
See <A HREF = "Section_python.html">this section</A> of the manual for a description
of the Python wrapper provided with LAMMPS that operates through the
LAMMPS library interface.
</P>
<P>The files src/library.cpp and library.h contain the C-style interface
-to LAMMPS. See <A HREF = "Section_howto.html#4_19">this section</A> of the manual
-for a description of the interface and how to extend it for your
-needs.
+to LAMMPS. See <A HREF = "Section_howto.html#howto_19">this section</A> of the
+manual for a description of the interface and how to extend it for
+your needs.
</P>
<HR>
-<H4><A NAME = "2_5"></A>2.5 Running LAMMPS
+<H4><A NAME = "start_5"></A>2.5 Running LAMMPS
</H4>
<P>By default, LAMMPS runs by reading commands from stdin; e.g. lmp_linux
< in.file. This means you first create an input script (e.g. in.file)
containing the desired commands. <A HREF = "Section_commands.html">This section</A>
describes how input scripts are structured and what commands they
contain.
</P>
<P>You can test LAMMPS on any of the sample inputs provided in the
examples or bench directory. Input scripts are named in.* and sample
outputs are named log.*.name.P where name is a machine and P is the
number of processors it was run on.
</P>
<P>Here is how you might run a standard Lennard-Jones benchmark on a
Linux box, using mpirun to launch a parallel job:
</P>
<PRE>cd src
make linux
cp lmp_linux ../bench
cd ../bench
mpirun -np 4 lmp_linux < in.lj
</PRE>
<P>See <A HREF = "http://lammps.sandia.gov/bench.html">this page</A> for timings for this and the other benchmarks
on various platforms.
</P>
<HR>
<P>On a Windows box, you can skip making LAMMPS and simply download an
executable, as described above, though the pre-packaged executables
include only certain packages.
</P>
<P>To run a LAMMPS executable on a Windows machine, first decide whether
you want to download the non-MPI (serial) or the MPI (parallel)
version of the executable. Download and save the version you have
chosen.
</P>
<P>For the non-MPI version, follow these steps:
</P>
<UL><LI>Get a command prompt by going to Start->Run... ,
then typing "cmd".
<LI>Move to the directory where you have saved lmp_win_no-mpi.exe
(e.g. by typing: cd "Documents").
<LI>At the command prompt, type "lmp_win_no-mpi -in in.lj", replacing in.lj
with the name of your LAMMPS input script.
</UL>
<P>For the MPI version, which allows you to run LAMMPS under Windows on
multiple processors, follow these steps:
</P>
<UL><LI>Download and install
<A HREF = "http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads">MPICH2</A>
for Windows.
<LI>You'll need to use the mpiexec.exe and smpd.exe files from the MPICH2 package. Put them in
same directory (or path) as the LAMMPS Windows executable.
<LI>Get a command prompt by going to Start->Run... ,
then typing "cmd".
<LI>Move to the directory where you have saved lmp_win_mpi.exe
(e.g. by typing: cd "Documents").
<LI>Then type something like this: "mpiexec -np 4 -localonly lmp_win_mpi -in in.lj",
replacing in.lj with the name of your LAMMPS input script.
<LI>Note that you may need to provide smpd with a passphrase --- it doesn't matter what you
type.
<LI>In this mode, output may not immediately show up on the screen, so
if your input script takes a long time to execute, you may need to be
patient before the output shows up.
<LI>Alternatively, you can still use this executable to run on a single processor by
typing something like: "lmp_win_mpi -in in.lj".
</UL>
<HR>
<P>The screen output from LAMMPS is described in the next section. As it
runs, LAMMPS also writes a log.lammps file with the same information.
</P>
<P>Note that this sequence of commands copies the LAMMPS executable
(lmp_linux) to the directory with the input files. This may not be
necessary, but some versions of MPI reset the working directory to
where the executable is, rather than leave it as the directory where
you launch mpirun from (if you launch lmp_linux on its own and not
under mpirun). If that happens, LAMMPS will look for additional input
files and write its output files to the executable directory, rather
than your working directory, which is probably not what you want.
</P>
<P>If LAMMPS encounters errors in the input script or while running a
simulation it will print an ERROR message and stop or a WARNING
message and continue. See <A HREF = "Section_errors.html">this section</A> for a
discussion of the various kinds of errors LAMMPS can or can't detect,
a list of all ERROR and WARNING messages, and what to do about them.
</P>
<P>LAMMPS can run a problem on any number of processors, including a
single processor. In theory you should get identical answers on any
number of processors and on any machine. In practice, numerical
round-off can cause slight differences and eventual divergence of
molecular dynamics phase space trajectories.
</P>
<P>LAMMPS can run as large a problem as will fit in the physical memory
of one or more processors. If you run out of memory, you must run on
more processors or setup a smaller problem.
</P>
<HR>
-<H4><A NAME = "2_6"></A>2.6 Command-line options
+<H4><A NAME = "start_6"></A>2.6 Command-line options
</H4>
<P>At run time, LAMMPS recognizes several optional command-line switches
which may be used in any order. Either the full word or a one-or-two
letter abbreviation can be used:
</P>
<UL><LI>-c or -cuda
<LI>-e or -echo
<LI>-i or -in
<LI>-h or -help
<LI>-l or -log
<LI>-p or -partition
<LI>-pl or -plog
<LI>-ps or -pscreen
<LI>-sc or -screen
<LI>-sf or -suffix
<LI>-v or -var
</UL>
<P>For example, lmp_ibm might be launched as follows:
</P>
<PRE>mpirun -np 16 lmp_ibm -v f tmp.out -l my.log -sc none < in.alloy
mpirun -np 16 lmp_ibm -var f tmp.out -log my.log -screen none < in.alloy
</PRE>
<P>Here are the details on the options:
</P>
<PRE>-cuda on/off
</PRE>
<P>Explicitly enable or disable CUDA support, as provided by the
USER-CUDA package. If LAMMPS is built with this package, as described
-above in <A HREF = "#2_3">Section 2.3</A>, then by default LAMMPS will run in CUDA
-mode. If this switch is set to "off", then it will not, even if it
-was built with the USER-CUDA package, which means you can run standard
-LAMMPS or with the GPU package for testing or benchmarking purposes.
-The only reason to set the switch to "on", is to check if LAMMPS was
-built with the USER-CUDA package, since an error will be generated if
-it was not.
+above in <A HREF = "#start_3">Section 2.3</A>, then by default LAMMPS will run in
+CUDA mode. If this switch is set to "off", then it will not, even if
+it was built with the USER-CUDA package, which means you can run
+standard LAMMPS or with the GPU package for testing or benchmarking
+purposes. The only reason to set the switch to "on", is to check if
+LAMMPS was built with the USER-CUDA package, since an error will be
+generated if it was not.
</P>
<PRE>-echo style
</PRE>
<P>Set the style of command echoing. The style can be <I>none</I> or <I>screen</I>
or <I>log</I> or <I>both</I>. Depending on the style, each command read from
the input script will be echoed to the screen and/or logfile. This
can be useful to figure out which line of your script is causing an
input error. The default value is <I>log</I>. The echo style can also be
set by using the <A HREF = "echo.html">echo</A> command in the input script itself.
</P>
<PRE>-in file
</PRE>
<P>Specify a file to use as an input script. This is an optional switch
when running LAMMPS in one-partition mode. If it is not specified,
LAMMPS reads its input script from stdin - e.g. lmp_linux < in.run.
This is a required switch when running LAMMPS in multi-partition mode,
since multiple processors cannot all read from stdin.
</P>
<PRE>-help
</PRE>
<P>Print a list of options compiled into this executable for each LAMMPS
style (atom_style, fix, compute, pair_style, bond_style, etc). This
can help you know if the command you want to use was included via the
appropriate package. LAMMPS will print the info and immediately exit
if this switch is used.
</P>
<PRE>-log file
</PRE>
<P>Specify a log file for LAMMPS to write status information to. In
one-partition mode, if the switch is not used, LAMMPS writes to the
file log.lammps. If this switch is used, LAMMPS writes to the
specified file. In multi-partition mode, if the switch is not used, a
log.lammps file is created with hi-level status information. Each
partition also writes to a log.lammps.N file where N is the partition
ID. If the switch is specified in multi-partition mode, the hi-level
logfile is named "file" and each partition also logs information to a
file.N. For both one-partition and multi-partition mode, if the
specified file is "none", then no log files are created. Using a
<A HREF = "log.html">log</A> command in the input script will override this setting.
Option -plog will override the name of the partition log files file.N.
</P>
<PRE>-partition 8x2 4 5 ...
</PRE>
<P>Invoke LAMMPS in multi-partition mode. When LAMMPS is run on P
processors and this switch is not used, LAMMPS runs in one partition,
i.e. all P processors run a single simulation. If this switch is
used, the P processors are split into separate partitions and each
partition runs its own simulation. The arguments to the switch
specify the number of processors in each partition. Arguments of the
form MxN mean M partitions, each with N processors. Arguments of the
form N mean a single partition with N processors. The sum of
processors in all partitions must equal P. Thus the command
"-partition 8x2 4 5" has 10 partitions and runs on a total of 25
processors.
</P>
<P>Note that with MPI installed on a machine (e.g. your desktop), you can
run on more (virtual) processors than you have physical processors.
-This can be useful for running <A HREF = "Section_howto.html#4_5">multi-replica
+This can be useful for running <A HREF = "Section_howto.html#howto_5">multi-replica
simulations</A>, on one or a few processors.
</P>
<P>The input script specifies what simulation is run on which partition;
see the <A HREF = "variable.html">variable</A> and <A HREF = "next.html">next</A> commands. This
-<A HREF = "Section_howto.html#4_4">howto section</A> gives examples of how to use
-these commands in this way. Simulations running on different
+<A HREF = "Section_howto.html#howto_4">howto section</A> gives examples of how to
+use these commands in this way. Simulations running on different
partitions can also communicate with each other; see the
<A HREF = "temper.html">temper</A> command.
</P>
<PRE>-plog file
</PRE>
<P>Specify the base name for the partition log files,
so partition N writes log information to file.N. If file is
none, then no partition log files are created.
This overrides the
filename specified in the -log command-line option.
This option is useful when working with large numbers of partitions,
allowing the partition log files to be suppressed (-plog none) or
placed in a sub-directory (-plog replica_files/log.lammps)
If this option is not used
the log file for partition N is log.lammps.N or whatever is specified by
the -log command-line option.
</P>
<PRE>-pscreen file
</PRE>
<P>Specify the base name for the
partition screen file, so partition N writes
screen information to file.N. If file is
none, then no partition screen files are created.
This overrides the
filename specified in the -screen command-line option.
This option is useful when working with large numbers of partitions,
allowing the partition screen files to be suppressed (-pscreen none) or
placed in a sub-directory (-pscreen replica_files/screen)
If this option is not used
the screen file for partition N is screen.N or whatever is specified by
the -screen command-line option.
</P>
<PRE>-screen file
</PRE>
<P>Specify a file for LAMMPS to write its screen information to. In
one-partition mode, if the switch is not used, LAMMPS writes to the
screen. If this switch is used, LAMMPS writes to the specified file
instead and you will see no screen output. In multi-partition mode,
if the switch is not used, hi-level status information is written to
the screen. Each partition also writes to a screen.N file where N is
the partition ID. If the switch is specified in multi-partition mode,
the hi-level screen dump is named "file" and each partition also
writes screen information to a file.N. For both one-partition and
multi-partition mode, if the specified file is "none", then no screen
output is performed. Option -pscreen will override the name of the
partition screen files file.N.
</P>
<PRE>-suffix style
</PRE>
<P>Use variants of various styles if they exist. The specified style can
be <I>opt</I> or <I>gpu</I> or <I>cuda</I>. These refer to optional packages that
-LAMMPS can be built with, as described above in <A HREF = "#2_3">Section 2.3</A>.
-The "opt" style corrsponds to the OPT package, the "gpu" style to the
-GPU package, and the "cuda" style to the USER-CUDA package.
+LAMMPS can be built with, as described above in <A HREF = "#start_3">Section
+2.3</A>. The "opt" style corrsponds to the OPT package, the
+"gpu" style to the GPU package, and the "cuda" style to the USER-CUDA
+package.
</P>
<P>As an example, all of the packages provide a <A HREF = "pair_lj.html">pair_style
lj/cut</A> variant, with style names lj/cut/opt or
lj/cut/gpu or lj/cut/cuda. A variant styles can be specified
explicitly in your input script, e.g. pair_style lj/cut/gpu. If the
-suffix switch is used, you do not need to modify your input script.
The specified suffix (opt,gpu,cuda) is automatically appended whenever
your input script command creates a new <A HREF = "atom_style.html">atom</A>,
<A HREF = "pair_style.html">pair</A>, <A HREF = "fix.html">fix</A>, <A HREF = "compute.html">compute</A>, or
<A HREF = "run_style.html">run</A> style. atom, pair, fix, compute, or integrate
style. If the variant version does not exist, the standard version is
created.
</P>
<P>The <A HREF = "suffix.html">suffix</A> command can also set a suffix and it can also
turn off/on any suffix setting made via the command line.
</P>
<PRE>-var name value1 value2 ...
</PRE>
<P>Specify a variable that will be defined for substitution purposes when
the input script is read. "Name" is the variable name which can be a
single character (referenced as $x in the input script) or a full
string (referenced as ${abc}). An <A HREF = "variable.html">index-style
variable</A> will be created and populated with the
subsequent values, e.g. a set of filenames. Using this command-line
option is equivalent to putting the line "variable name index value1
value2 ..." at the beginning of the input script. Defining an index
variable as a command-line argument overrides any setting for the same
index variable in the input script, since index variables cannot be
re-defined. See the <A HREF = "variable.html">variable</A> command for more info on
-defining index and other kinds of variables and <A HREF = "Section_commands.html#3_2">this
-section</A> for more info on using variables in
-input scripts.
+defining index and other kinds of variables and <A HREF = "Section_commands.html#cmd_2">this
+section</A> for more info on using variables
+in input scripts.
</P>
<HR>
-<H4><A NAME = "2_7"></A>2.7 LAMMPS screen output
+<H4><A NAME = "start_7"></A>2.7 LAMMPS screen output
</H4>
<P>As LAMMPS reads an input script, it prints information to both the
screen and a log file about significant actions it takes to setup a
simulation. When the simulation is ready to begin, LAMMPS performs
various initializations and prints the amount of memory (in MBytes per
processor) that the simulation requires. It also prints details of
the initial thermodynamic state of the system. During the run itself,
thermodynamic information is printed periodically, every few
timesteps. When the run concludes, LAMMPS prints the final
thermodynamic state and a total run time for the simulation. It then
appends statistics about the CPU time and storage requirements for the
simulation. An example set of statistics is shown here:
</P>
<PRE>Loop time of 49.002 on 2 procs for 2004 atoms
</PRE>
<PRE>Pair time (%) = 35.0495 (71.5267)
Bond time (%) = 0.092046 (0.187841)
Kspce time (%) = 6.42073 (13.103)
Neigh time (%) = 2.73485 (5.5811)
Comm time (%) = 1.50291 (3.06703)
Outpt time (%) = 0.013799 (0.0281601)
Other time (%) = 2.13669 (4.36041)
</PRE>
<PRE>Nlocal: 1002 ave, 1015 max, 989 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Nghost: 8720 ave, 8724 max, 8716 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Neighs: 354141 ave, 361422 max, 346860 min
Histogram: 1 0 0 0 0 0 0 0 0 1
</PRE>
<PRE>Total # of neighbors = 708282
Ave neighs/atom = 353.434
Ave special neighs/atom = 2.34032
Number of reneighborings = 42
Dangerous reneighborings = 2
</PRE>
<P>The first section gives the breakdown of the CPU run time (in seconds)
into major categories. The second section lists the number of owned
atoms (Nlocal), ghost atoms (Nghost), and pair-wise neighbors stored
per processor. The max and min values give the spread of these values
across processors with a 10-bin histogram showing the distribution.
The total number of histogram counts is equal to the number of
processors.
</P>
<P>The last section gives aggregate statistics for pair-wise neighbors
and special neighbors that LAMMPS keeps track of (see the
<A HREF = "special_bonds.html">special_bonds</A> command). The number of times
neighbor lists were rebuilt during the run is given as well as the
number of potentially "dangerous" rebuilds. If atom movement
triggered neighbor list rebuilding (see the
<A HREF = "neigh_modify.html">neigh_modify</A> command), then dangerous
reneighborings are those that were triggered on the first timestep
atom movement was checked for. If this count is non-zero you may wish
to reduce the delay factor to insure no force interactions are missed
by atoms moving beyond the neighbor skin distance before a rebuild
takes place.
</P>
<P>If an energy minimization was performed via the
<A HREF = "minimize.html">minimize</A> command, additional information is printed,
e.g.
</P>
<PRE>Minimization stats:
E initial, next-to-last, final = -0.895962 -2.94193 -2.94342
Gradient 2-norm init/final= 1920.78 20.9992
Gradient inf-norm init/final= 304.283 9.61216
Iterations = 36
Force evaluations = 177
</PRE>
<P>The first line lists the initial and final energy, as well as the
energy on the next-to-last iteration. The next 2 lines give a measure
of the gradient of the energy (force on all atoms). The 2-norm is the
"length" of this force vector; the inf-norm is the largest component.
The last 2 lines are statistics on how many iterations and
force-evaluations the minimizer required. Multiple force evaluations
are typically done at each iteration to perform a 1d line minimization
in the search direction.
</P>
<P>If a <A HREF = "kspace_style.html">kspace_style</A> long-range Coulombics solve was
performed during the run (PPPM, Ewald), then additional information is
printed, e.g.
</P>
<PRE>FFT time (% of Kspce) = 0.200313 (8.34477)
FFT Gflps 3d 1d-only = 2.31074 9.19989
</PRE>
<P>The first line gives the time spent doing 3d FFTs (4 per timestep) and
the fraction it represents of the total KSpace time (listed above).
Each 3d FFT requires computation (3 sets of 1d FFTs) and communication
(transposes). The total flops performed is 5Nlog_2(N), where N is the
number of points in the 3d grid. The FFTs are timed with and without
the communication and a Gflop rate is computed. The 3d rate is with
communication; the 1d rate is without (just the 1d FFTs). Thus you
can estimate what fraction of your FFT time was spent in
communication, roughly 75% in the example above.
</P>
<HR>
-<H4><A NAME = "2_8"></A>2.8 Tips for users of previous LAMMPS versions
+<H4><A NAME = "start_8"></A>2.8 Tips for users of previous LAMMPS versions
</H4>
<P>The current C++ began with a complete rewrite of LAMMPS 2001, which
was written in F90. Features of earlier versions of LAMMPS are listed
in <A HREF = "Section_history.html">this section</A>. The F90 and F77 versions
(2001 and 99) are also freely distributed as open-source codes; check
the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> for distribution information if you prefer
those versions. The 99 and 2001 versions are no longer under active
development; they do not have all the features of C++ LAMMPS.
</P>
<P>If you are a previous user of LAMMPS 2001, these are the most
significant changes you will notice in C++ LAMMPS:
</P>
<P>(1) The names and arguments of many input script commands have
changed. All commands are now a single word (e.g. read_data instead
of read data).
</P>
<P>(2) All the functionality of LAMMPS 2001 is included in C++ LAMMPS,
but you may need to specify the relevant commands in different ways.
</P>
<P>(3) The format of the data file can be streamlined for some problems.
See the <A HREF = "read_data.html">read_data</A> command for details. The data file
section "Nonbond Coeff" has been renamed to "Pair Coeff" in C++ LAMMPS.
</P>
<P>(4) Binary restart files written by LAMMPS 2001 cannot be read by C++
LAMMPS with a <A HREF = "read_restart.html">read_restart</A> command. This is
because they were output by F90 which writes in a different binary
format than C or C++ writes or reads. Use the <I>restart2data</I> tool
provided with LAMMPS 2001 to convert the 2001 restart file to a text
data file. Then edit the data file as necessary before using the C++
LAMMPS <A HREF = "read_data.html">read_data</A> command to read it in.
</P>
<P>(5) There are numerous small numerical changes in C++ LAMMPS that mean
you will not get identical answers when comparing to a 2001 run.
However, your initial thermodynamic energy and MD trajectory should be
close if you have setup the problem for both codes the same.
</P>
</HTML>
diff --git a/doc/Section_start.txt b/doc/Section_start.txt
index 4a75228e7..7435bd204 100644
--- a/doc/Section_start.txt
+++ b/doc/Section_start.txt
@@ -1,1146 +1,1141 @@
"Previous Section"_Section_intro.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_commands.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
2. Getting Started :h3
This section describes how to build and run LAMMPS, for both new and
experienced users.
-2.1 "What's in the LAMMPS distribution"_#2_1
-2.2 "Making LAMMPS"_#2_2
-2.3 "Making LAMMPS with optional packages"_#2_3
-2.4 "Building LAMMPS as a library"_#2_4
-2.5 "Running LAMMPS"_#2_5
-2.6 "Command-line options"_#2_6
-2.7 "Screen output"_#2_7
-2.8 "Tips for users of previous versions"_#2_8 :all(b)
+2.1 "What's in the LAMMPS distribution"_#start_1
+2.2 "Making LAMMPS"_#start_2
+2.3 "Making LAMMPS with optional packages"_#start_3
+2.4 "Building LAMMPS as a library"_#start_4
+2.5 "Running LAMMPS"_#start_5
+2.6 "Command-line options"_#start_6
+2.7 "Screen output"_#start_7
+2.8 "Tips for users of previous versions"_#start_8 :all(b)
:line
-2.1 What's in the LAMMPS distribution :h4,link(2_1)
+2.1 What's in the LAMMPS distribution :h4,link(start_1)
When you download LAMMPS you will need to unzip and untar the
downloaded file with the following commands, after placing the file in
an appropriate directory.
gunzip lammps*.tar.gz
tar xvf lammps*.tar :pre
This will create a LAMMPS directory containing two files and several
sub-directories:
README: text file
LICENSE: the GNU General Public License (GPL)
bench: benchmark problems
couple: code coupling examples, using LAMMPS as a library
doc: documentation
examples: simple test problems
potentials: embedded atom method (EAM) potential files
src: source files
tools: pre- and post-processing tools :tb(s=:)
If you download one of the Windows executables from the download page,
then you just get a single file:
lmp_windows.exe :pre
-Skip to the "Running LAMMPS"_#2_5 sections for info on how to launch
-these executables on a Windows box.
+Skip to the "Running LAMMPS"_#start_5 sections for info on how to
+launch these executables on a Windows box.
The Windows executables for serial or parallel only include certain
packages and bug-fixes/upgrades listed on "this
page"_http://lammps.sandia.gov/bug.html up to a certain date, as
stated on the download page. If you want something with more packages
or that is more current, you'll have to download the source tarball
and build it yourself from source code using Microsoft Visual Studio,
as described in the next section.
:line
-2.2 Making LAMMPS :h4,link(2_2)
+2.2 Making LAMMPS :h4,link(start_2)
This section has the following sub-sections:
-"Read this first"_#2_2_1
-"Steps to build a LAMMPS executable"_#2_2_2
-"Common errors that can occur when making LAMMPS"_#2_2_3
-"Additional build tips"_#2_2_4
-"Building for a Mac"_#2_2_5
-"Building for Windows"_#2_2_6 :ul
+"Read this first"_#start_2_1
+"Steps to build a LAMMPS executable"_#start_2_2
+"Common errors that can occur when making LAMMPS"_#start_2_3
+"Additional build tips"_#start_2_4
+"Building for a Mac"_#start_2_5
+"Building for Windows"_#start_2_6 :ul
:line
-[{Read this first:}] :link(2_2_1)
+[{Read this first:}] :link(start_2_1)
Building LAMMPS can be non-trivial. You may need to edit a makefile,
there are compiler options to consider, additional libraries can be
used (MPI, FFT, JPEG), LAMMPS packages may be included or excluded,
some of these packages use auxiliary libraries which need to be
pre-built, etc.
Please read this section carefully. If you are not comfortable with
makefiles, or building codes on a Unix platform, or running an MPI job
on your machine, please find a local expert to help you. Many
compiling, linking, and run problems that users have are not really
LAMMPS issues - they are peculiar to the user's system, compilers,
libraries, etc. Such questions are better answered by a local expert.
If you have a build problem that you are convinced is a LAMMPS issue
(e.g. the compiler complains about a line of LAMMPS source code), then
please send an email to the
"developers"_http://lammps.sandia.gov/authors.html.
If you succeed in building LAMMPS on a new kind of machine, for which
there isn't a similar Makefile for in the src/MAKE directory, send it
to the developers and we'll include it in future LAMMPS releases.
:line
-[{Steps to build a LAMMPS executable:}] :link(2_2_2)
+[{Steps to build a LAMMPS executable:}] :link(start_2_2)
[Step 0]
The src directory contains the C++ source and header files for LAMMPS.
It also contains a top-level Makefile and a MAKE sub-directory with
low-level Makefile.* files for many machines. From within the src
directory, type "make" or "gmake". You should see a list of available
choices. If one of those is the machine and options you want, you can
type a command like:
make linux
or
gmake mac :pre
Note that on a multi-processor or multi-core platform you can launch a
parallel make, by using the "-j" switch with the make command, which
will build LAMMPS more quickly.
If you get no errors and an executable like lmp_linux or lmp_mac is
produced, you're done; it's your lucky day.
Note that by default only a few of LAMMPS optional pacakges are
installed. To build LAMMPS with optional packages, see "this
-section"_#2_3 below.
+section"_#start_3 below.
[Step 1]
If Step 0 did not work, you will need to create a low-level Makefile
for your machine, like Makefile.foo. You should make a copy of an
existing src/MAKE/Makefile.* as a starting point. The only portions
of the file you need to edit are the first line, the "compiler/linker
settings" section, and the "LAMMPS-specific settings" section.
[Step 2]
Change the first line of src/MAKE/Makefile.foo to list the word "foo"
after the "#", and whatever other options it will set. This is the
line you will see if you just type "make".
[Step 3]
The "compiler/linker settings" section lists compiler and linker
settings for your C++ compiler, including optimization flags. You can
use g++, the open-source GNU compiler, which is available on all Unix
systems. You can also use mpicc which will typically be available if
MPI is installed on your system, though you should check which actual
compiler it wraps. Vendor compilers often produce faster code. On
boxes with Intel CPUs, we suggest using the commercial Intel icc
compiler, which can be downloaded from "Intel's compiler site"_intel.
:link(intel,http://www.intel.com/software/products/noncom)
If building a C++ code on your machine requires additional libraries,
then you should list them as part of the LIB variable.
The DEPFLAGS setting is what triggers the C++ compiler to create a
dependency list for a source file. This speeds re-compilation when
source (*.cpp) or header (*.h) files are edited. Some compilers do
not support dependency file creation, or may use a different switch
than -D. GNU g++ works with -D. If your compiler can't create
dependency files, then you'll need to create a Makefile.foo patterned
after Makefile.storm, which uses different rules that do not involve
dependency files. Note that when you build LAMMPS for the first time
on a new platform, a long list of *.d files will be printed out
rapidly. This is not an error; it is the Makefile doing its normal
creation of dependencies.
[Step 4]
The "system-specific settings" section has several parts. Note that
if you change any -D setting in this section, you should do a full
re-compile, after typing "make clean" (which will describe different
clean options).
The LMP_INC variable is used to include options that turn on ifdefs
within the LAMMPS code. The options that are currently recogized are:
-DLAMMPS_GZIP
-DLAMMPS_JPEG
-DLAMMPS_XDR
-DLAMMPS_SMALLBIG
-DLAMMPS_BIGBIG
-DLAMMPS_SMALLSMALL
-DLAMMPS_LONGLONG_TO_LONG
-DPACK_ARRAY
-DPACK_POINTER
-DPACK_MEMCPY :ul
The read_data and dump commands will read/write gzipped files if you
compile with -DLAMMPS_GZIP. It requires that your Unix support the
"popen" command.
If you use -DLAMMPS_JPEG, the "dump image"_dump.html command will be
able to write out JPEG image files. If not, it will only be able to
write out text-based PPM image files. For JPEG files, you must also
link LAMMPS with a JPEG library, as described below.
If you use -DLAMMPS_XDR, the build will include XDR compatibility
files for doing particle dumps in XTC format. This is only necessary
if your platform does have its own XDR files available. See the
Restrictions section of the "dump"_dump.html command for details.
Use at most one of the -DLAMMPS_SMALLBIG, -DLAMMPS_BIGBIG,
-D-DLAMMPS_SMALLSMALL settings. The default is -DLAMMPS_SMALLBIG.
These refer to use of 4-byte (small) vs 8-byte (big) integers within
LAMMPS, as described in src/lmptype.h. The only reason to use the
BIGBIG setting is to enable simulation of huge molecular systems with
more than 2 billion atoms. The only reason to use the SMALLSMALL
setting is if your machine does not support 64-bit integers.
The -DLAMMPS_LONGLONG_TO_LONG setting may be needed if your system or
MPI version does not recognize "long long" data types. In this case a
"long" data type is likely already 64-bits, in which case this setting
will convert to that data type.
Using one of the -DPACK_ARRAY, -DPACK_POINTER, and -DPACK_MEMCPY
options can make for faster parallel FFTs (in the PPPM solver) on some
platforms. The -DPACK_ARRAY setting is the default. See the
"kspace_style"_kspace_style.html command for info about PPPM. See
Step 6 below for info about building LAMMPS with an FFT library.
[Step 5]
The 3 MPI variables are used to specify an MPI library to build LAMMPS
with.
If you want LAMMPS to run in parallel, you must have an MPI library
installed on your platform. If you use an MPI-wrapped compiler, such
as "mpicc" to build LAMMPS, you should be able to leave these 3
variables blank; the MPI wrapper knows where to find the needed files.
If not, and MPI is installed on your system in the usual place (under
/usr/local), you also may not need to specify these 3 variables. On
some large parallel machines which use "modules" for their
compile/link environements, you may simply need to include the correct
module in your build environment. Or the parallel machine may have a
vendor-provided MPI which the compiler has no trouble finding.
Failing this, with these 3 variables you can specify where the mpi.h
file (MPI_INC) and the MPI library file (MPI_PATH) are found and the
name of the library file (MPI_LIB).
If you are installing MPI yourself, we recommend Argonne's MPICH 1.2
or 2.0 or OpenMPI. MPICH can be downloaded from the "Argonne MPI
site"_http://www-unix.mcs.anl.gov/mpi. OpenMPI can be downloaded the
"OpenMPI site"_http://www.open-mpi.org. LAM MPI should also work. If
you are running on a big parallel platform, your system people or the
vendor should have already installed a version of MPI, which will be
faster than MPICH or OpenMPI or LAM, so find out how to build and link
with it. If you use MPICH or OpenMPI or LAM, you will have to
configure and build it for your platform. The MPI configure script
should have compiler options to enable you to use the same compiler
you are using for the LAMMPS build, which can avoid problems that can
arise when linking LAMMPS to the MPI library.
If you just want to run LAMMPS on a single processor, you can use the
dummy MPI library provided in src/STUBS, since you don't need a true
MPI library installed on your system. See the
src/MAKE/Makefile.serial file for how to specify the 3 MPI variables
in this case. You will also need to build the STUBS library for your
platform before making LAMMPS itself. From the src directory, type
"make stubs", or from the STUBS dir, type "make" and it should create
a libmpi.a suitable for linking to LAMMPS. If this build fails, you
will need to edit the STUBS/Makefile for your platform.
The file STUBS/mpi.cpp provides a CPU timer function called
MPI_Wtime() that calls gettimeofday() . If your system doesn't
support gettimeofday() , you'll need to insert code to call another
timer. Note that the ANSI-standard function clock() rolls over after
an hour or so, and is therefore insufficient for timing long LAMMPS
simulations.
[Step 6]
The 3 FFT variables allow you to specify an FFT library which LAMMPS
uses (for performing 1d FFTs) when running the particle-particle
particle-mesh (PPPM) option for long-range Coulombics via the
"kspace_style"_kspace_style.html command.
LAMMPS supports various open-source or vendor-supplied FFT libraries
for this purpose. If you leave these 3 variables blank, LAMMPS will
use the open-source "KISS FFT library"_http://kissfft.sf.net, which is
included in the LAMMPS distribution. This library is portable to all
platforms and for typical LAMMPS simulations is almost as fast as FFTW
or vendor optimized libraries. If you are not including the KSPACE
package in your build, you can also leave the 3 variables blank.
Otherwise, select which kinds of FFTs to use as part of the FFT_INC
setting by a switch of the form -DFFT_XXX. Recommended values for XXX
are: MKL, SCSL, FFTW2, and FFTW3. Legacy options are: INTEL, SGI,
ACML, and T3E. For backward compatability, using -DFFT_FFTW will use
the FFTW2 library. Using -DFFT_NONE will use the KISS library
described above.
You may also need to set the FFT_INC, FFT_PATH, and FFT_LIB variables,
so the compiler and linker can find the needed FFT header and library
files. Note that on some large parallel machines which use "modules"
for their compile/link environements, you may simply need to include
the correct module in your build environment. Or the parallel machine
may have a vendor-provided FFT library which the compiler has no
trouble finding.
FFTW is a fast, portable library that should also work on any
platform. You can download it from
"www.fftw.org"_http://www.fftw.org. Both the legacy version 2.1.X and
the newer 3.X versions are supported as -DFFT_FFTW2 or -DFFT_FFTW3.
Building FFTW for your box should be as simple as ./configure; make.
Note that on some platforms FFTW2 has been pre-installed, and uses
renamed files indicating the precision it was compiled with,
e.g. sfftw.h, or dfftw.h instead of fftw.h. In this case, you can
specify an additional define variable for FFT_INC called -DFFTW2_SIZE,
which will select the correct include file. In this case, for FFT_LIB
you must also manually specify the correct library, namely -lsfftw or
-ldfftw.
The FFT_INC variable also allows for a -DFFT_SINGLE setting that will
use single-precision FFTs with PPPM, which can speed-up long-range
calulations, particularly in parallel or on GPUs. Fourier transform
and related PPPM operations are somewhat insensitive to floating point
truncation errors and thus do not always need to be performed in
double precision. Using the -DFFT_SINGLE setting trades off a little
accuracy for reduced memory use and parallel communication costs for
transposing 3d FFT data. Note that single precision FFTs have only
-been tested with the FFTW3, FFTW2, MKL, and KISS FFT packages.
+been tested with the FFTW3, FFTW2, MKL, and KISS FFT options.
[Step 7]
The 3 JPG variables allow you to specify a JPEG library which LAMMPS
uses when writing out JPEG files via the "dump image"_dump_image.html
command. These can be left blank if you do not use the -DLAMMPS_JPEG
switch discussed above in Step 4, since in that case JPEG output will
be disabled.
A standard JPEG library usually goes by the name libjpeg.a and has an
associated header file jpeglib.h. Whichever JPEG library you have on
your platform, you'll need to set the appropriate JPG_INC, JPG_PATH,
and JPG_LIB variables, so that the compiler and linker can find it.
As before, if these header and library files are in the usual place on
your machine, you may not need to set these variables.
[Step 8]
Note that by default only a few of LAMMPS optional pacakges are
installed. To build LAMMPS with optional packages, see "this
-section"_#2_3 below, before proceeding to Step 9.
+section"_#start_3 below, before proceeding to Step 9.
[Step 9]
That's it. Once you have a correct Makefile.foo, you have installed
the optional LAMMPS packages you want to include in your build, and
you have pre-built any other needed libraries (e.g. MPI, FFT, package
libraries), all you need to do from the src directory is type
something like this:
make foo
or
gmake foo :pre
You should get the executable lmp_foo when the build is complete.
:line
-[{Errors that can occur when making LAMMPS:}] :link(2_2_3)
+[{Errors that can occur when making LAMMPS:}] :link(start_2_3)
IMPORTANT NOTE: If an error occurs when building LAMMPS, the compiler
or linker will state very explicitly what the problem is. The error
message should give you a hint as to which of the steps above has
failed, and what you need to do in order to fix it. Building a code
with a Makefile is a very logical process. The compiler and linker
need to find the appropriate files and those files need to be
compatible with LAMMPS source files. When a make fails, there is
usually a very simple reason, which you or a local expert will need to
fix.
Here are two non-obvious errors that can occur:
(1) If the make command breaks immediately with errors that indicate
it can't find files with a "*" in their names, this can be because
your machine's native make doesn't support wildcard expansion in a
makefile. Try gmake instead of make. If that doesn't work, try using
a -f switch with your make command to use a pre-generated
Makefile.list which explicitly lists all the needed files, e.g.
make makelist
make -f Makefile.list linux
gmake -f Makefile.list mac :pre
The first "make" command will create a current Makefile.list with all
the file names in your src dir. The 2nd "make" command (make or
gmake) will use it to build LAMMPS. Note that you should
include/exclude any desired optional packages before using the "make
makelist" command.
(2) If you get an error that says something like 'identifier "atoll"
is undefined', then your machine does not support "long long"
integers. Try using the -DLAMMPS_LONGLONG_TO_LONG setting described
above in Step 4.
:line
-[{Additional build tips:}] :link(2_2_4)
+[{Additional build tips:}] :link(start_2_4)
(1) Building LAMMPS for multiple platforms.
You can make LAMMPS for multiple platforms from the same src
directory. Each target creates its own object sub-directory called
Obj_name where it stores the system-specific *.o files.
(2) Cleaning up.
Typing "make clean-all" or "make clean-foo" will delete *.o object
files created when LAMMPS is built, for either all builds or for a
particular machine.
(3) Changing the size limits in src/lmptype.h
If you are running a very large problem (billions of atoms or more)
and get a run-time error about the system being too big, either on a
per-processor basis or in total size, then you may need to change one
or more settings in src/lmptype.h and re-compile LAMMPS.
As the documentation in that file explains, you have basically
two choices to make:
set the data type size of integer atom IDs to 4 or 8 bytes
set the data type size of integers that store the total system size to 4 or 8 bytes :ul
The default for atom IDs is 4-byte integers since there is a memory
and communication cost for 8-byte integers. Non-molecular problems do
not need atom IDs so this does not restrict their size. Molecular
problems (which use IDs to define molecular topology), are limited to
about 2 billion atoms (2^31) with 4-byte IDs. With 8-byte IDs they
are effectively unlimited in size (2^63).
The default for total system size quantities (like the number of atoms
or timesteps) is 8-byte integers by default which is effectively
unlimited in size (2^63). If your system or MPI implementation does
not support 8-byte integers, an error will be generated, and you will
need to set "bigint" to 4-byte integers. This restricts your total
system size to about 2 billion atoms or timesteps (2^31).
Note that in src/lmptype.h there are also settings for the MPI data
types associated with the integers that store atom IDs and total
system sizes, which need to be set consistent with the associated C
data types.
In all cases, the size of problem that can be run on a per-processor
basis is limited by 4-byte integer storage to about 2 billion atoms
per processor (2^31), which should not normally be a restriction since
such a problem would have a huge per-processor memory footprint due to
neighbor lists and would run very slowly in terms of CPU
secs/timestep.
:line
-[{Building for a Mac:}] :link(2_2_5)
+[{Building for a Mac:}] :link(start_2_5)
OS X is BSD Unix, so it should just work. See the Makefile.mac file.
:line
-[{Building for Windows:}] :link(2_2_6)
+[{Building for Windows:}] :link(start_2_6)
The LAMMPS download page has an option to download both a serial and
-parallel pre-built Windows exeutable. See the "Running LAMMPS"_#2_5
-section for instructions for running these executables on a Windows
-box.
+parallel pre-built Windows exeutable. See the "Running
+LAMMPS"_#start_5 section for instructions for running these
+executables on a Windows box.
If the pre-built executable doesn't have the options you want, then
you can build LAMMPS from its source files on a Windows box. One way
to do this is install and use cygwin to build LAMMPS with a standard
Linus make, just as you would on any Linux box; see
src/MAKE/Makefile.cygwin.
There is a also a src/WINDOWS directory that contains project files
for Microsoft Visual Studio 2005, which should also work with later
versions of VS. That directory contains a README.txt file which
provides instructions for building LAMMPS from source code using
Visual Studio that are hopefully easy to follow for Windows and VS
users.
Four VS project options are provided. The first includes the default
packages (MANYBODY, MOLECULE, and KSPACE). The second includes all
standard packages (except GPU, MEAM, and REAX which are not yet
included because they require NVIDIA or Fortran compilation). The
third includes all standard packages (with the exceptions) and some
user packages. The included user packages are USER-EFF, USER-CG-CMM,
and USER-REAXC. The fourth project includes the USER-AWPMD package.
:line
-2.3 Making LAMMPS with optional packages :h4,link(2_3)
+2.3 Making LAMMPS with optional packages :h4,link(start_3)
This section has the following sub-sections:
-"Package basics"_#2_3_1
-"Including/excluding packages"_#2_3_2
-"Packages that require extra LAMMPS libraries"_#2_3_3
-"Additional Makefile settings for extra libraries"_#2_3_4 :ul
+"Package basics"_#start_3_1
+"Including/excluding packages"_#start_3_2
+"Packages that require extra libraries"_#start_3_3
+"Additional Makefile settings for extra libraries"_#start_3_4 :ul
:line
-[{Package basics:}] :link(2_3_1)
+[{Package basics:}] :link(start_3_1)
The source code for LAMMPS is structured as a set of core files which
are always included, plus optional packages. Packages are groups of
files that enable a specific set of features. For example, force
fields for molecular systems or granular systems are in packages. You
-can see the list of all packages by typing "make package".
-
-The current list of standard packages is as follows:
-
-asphere : aspherical particles and force fields
-class2 : class 2 force fields
-colloid : colloidal particle force fields
-dipole : point dipole particles and force fields
-dsmc : Direct Simulation Monte Carlo (DMSC) pair style
-gpu : GPU-enabled force field styles
-granular : force fields and boundary conditions for granular systems
-kspace : long-range Ewald and particle-mesh (PPPM) solvers
-manybody : metal, 3-body, bond-order potentials
-meam : modified embedded atom method (MEAM) potential
-molecule : force fields for molecular systems
-opt : optimized versions of a few pair potentials
-peri : Peridynamics model and potential
-poems : coupled rigid body motion
-reax : ReaxFF potential
-replica : multi-replica methods
-shock : methods for MD simulations of shock loading
-srd : stochastic rotation dynamics (SRD)
-xtc : dump atom snapshots in XTC format :tb(s=:)
-
-There are also several user-contributed packages which may be as
-simple as a single additional file (see the src/USER-MISC directory)
-or many files grouped together which add a specific functionality to
-the code.
-
-The difference between a {standard} package versus a {user} package is
-as follows:
+can see the list of all packages by typing "make package" from within
+the src directory of the LAMMPS distribution.
+
+If you use a command in a LAMMPS input script that is specific to a
+particular package, you must have built LAMMPS with that package, else
+you will get an error that the style is invalid or the command is
+unknown. Every command's doc page specfies if it is part of a
+package. You can also type
+
+lmp_machine -h :pre
+
+to run your executable with the optional "-h command-line
+switch"_#start_6 for "help", which will list the styles and commands
+known to your executable.
+
+There are two kinds of packages in LAMMPS, standard and user packages.
+More information about the contents of standard and user packages is
+given in "this section"_Section_packages.html of the manual. The
+difference between standard and user packages is as follows:
Standard packages are supported by the LAMMPS developers and are
written in a syntax and style consistent with the rest of LAMMPS.
This means we will answer questions about them, debug and fix them if
necessary, and keep them compatible with future changes to LAMMPS.
-User packages don't necessarily meet these requirements. If you have
-problems using a feature provided in a user package, you will likely
-need to contact the contributor directly to get help. Information on
-how to submit additions you make to LAMMPS as a user-contributed
-package is given in "this section"_Section_modify.html#package of the
-documentation.
+User packages have been contributed by users, and always begin with
+the user prefix. If they are a single command (single file), they are
+typically in the user-misc package. Otherwise, they are a a set of
+files grouped together which add a specific functionality to the code.
+
+User packages don't necessarily meet the requirements of the standard
+packages. If you have problems using a feature provided in a user
+package, you will likely need to contact the contributor directly to
+get help. Information on how to submit additions you make to LAMMPS
+as a user-contributed package is given in "this
+section"_Section_modify.html#mod_14 of the documentation.
:line
-[{Including/excluding packages:}] :link(2_3_2)
+[{Including/excluding packages:}] :link(start_3_2)
To use or not use a package you must include or exclude it before
building LAMMPS. From the src directory, this is typically as simple
as:
make yes-colloid
make g++ :pre
or
make no-manybody
make g++ :pre
Some packages have individual files that depend on other packages
being included. LAMMPS checks for this and does the right thing.
I.e. individual files are only included if their dependencies are
already included. Likewise, if a package is excluded, other files
dependent on that package are also excluded.
The reason to exclude packages is if you will never run certain kinds
of simulations. For some packages, this will keep you from having to
build auxiliary libraries (see below), and will also produce a smaller
executable which may run a bit faster.
By default, LAMMPS includes only the "kspace", "manybody", and
"molecule" packages.
Packages are included or excluded by typing "make yes-name" or "make
no-name", where "name" is the name of the package. You can also type
"make yes-standard", "make no-standard", "make yes-user", "make
no-user", "make yes-all" or "make no-all" to include/exclude various
sets of packages. Type "make package" to see the all of the
package-related make options.
IMPORTANT NOTE: Inclusion/exclusion of a package works by simply
moving files back and forth between the main src directory and
sub-directories with the package name (e.g. src/KSPACE, src/USER-ATC),
so that the files are seen or not seen when LAMMPS is built. After
you have included or excluded a package, you must re-build LAMMPS.
Additional package-related make options exist to help manage LAMMPS
files that exist in both the src directory and in package
sub-directories. You do not normally need to use these commands
unless you are editing LAMMPS files or have downloaded a patch from
the LAMMPS WWW site.
Typing "make package-update" will overwrite src files with files from
the package sub-directories if the package has been included. It
should be used after a patch is installed, since patches only update
the files in the package sub-directory, but not the src files. Typing
"make package-overwrite" will overwrite files in the package
sub-directories with src files.
Typing "make package-status" will show which packages are currently
included. Of those that are included, it will list files that are
different in the src directory and package sub-directory. Typing
"make package-diff" lists all differences between these files. Again,
type "make package" to see all of the package-related make options.
:line
-[{Packages that require extra LAMMPS libraries:}] :link(2_3_3)
+[{Packages that require extra libraries:}] :link(start_3_3)
A few of the standard and user packages require additional auxiliary
-libraries be compiled first. If you get a LAMMPS build error about a
-missing library, this is likely the reason. The source code for these
-libraries is included in the LAMMPS distribution under the "lib"
-directory. Look at the lib/README file for a list of these.
+libraries to be compiled first. If you get a LAMMPS build error about
+a missing library, this is likely the reason. The source code for
+these libraries is included in the LAMMPS distribution under the "lib"
+directory. Look at the lib/README file for a list of these or see
+"this section"_Section_packages.html of the doc pages.
-Each lib directly has a README file (e.g. lib/reax/README) with
-instructions on how to build that library. Typically this is done by
-typing something like:
+Each lib directory has a README file (e.g. lib/reax/README) with
+instructions on how to build that library. Typically this is done
+in this manner:
make -f Makefile.g++ :pre
in the appropriate directory, e.g. in lib/reax. Some of the libraries
do not build this way. Again, see the libary README file for details.
In any event, you will need to use a Makefile that is a match for your
system. If one of the provided Makefiles is not appropriate for your
system you will need to edit or add one. For example, in the case of
Fortran-based libraries, your system must have a Fortran compiler, the
settings for which will need to be listed in the Makefile.
When you have built one of these libraries, there are 2 things to
check:
(1) The file libname.a should now exist in lib/name.
E.g. lib/reax/libreax.a. This is the library file LAMMPS will link
against. One exception is the lib/cuda library which produces the
file liblammpscuda.a, because there is already a system library
libcuda.a.
(2) The file Makefile.lammps should exist in lib/name. E.g.
lib/cuda/Makefile.lammps. This file may be auto-generated by the
build of the library, or you may need to make a copy of the
appropriate provided file (e.g. lib/meam/Makefile.lammps.gfortran).
Either way you should insure that the settings in this file are
appropriate for your system.
There are typically 3 settings in the Makefile.lammps file (unless
some are blank or not needed): a SYSINC, SYSPATH, and SYSLIB setting,
specific to this package. These are settings the LAMMPS build will
import when compiling the LAMMPS package files (not the library
files), and linking to the auxiliary library. They typically list any
other system libraries needed to support the package and where to find
them. An example is the BLAS and LAPACK libraries needed by the
USER-ATC package. Or the system libraries that support calling
Fortran from C++, as the MEAM and REAX packages do.
Note that if these settings are not correct for your box, the LAMMPS
build will likely fail.
:line
-2.4 Building LAMMPS as a library :h4,link(2_4)
+2.4 Building LAMMPS as a library :h4,link(start_4)
LAMMPS itself can be built as a library, which can then be called from
another application or a scripting language. See "this
-section"_Section_howto.html#4_10 for more info on coupling LAMMPS to
-other codes. Building LAMMPS as a library is done by typing
+section"_Section_howto.html#howto_10 for more info on coupling LAMMPS
+to other codes. Building LAMMPS as a library is done by typing
make makelib
make -f Makefile.lib foo :pre
where foo is the machine name. Note that inclusion or exclusion of
any desired optional packages should be done before typing "make
makelib". The first "make" command will create a current Makefile.lib
with all the file names in your src dir. The 2nd "make" command will
use it to build LAMMPS as a library. This requires that Makefile.foo
have a library target (lib) and system-specific settings for ARCHIVE
and ARFLAGS. See Makefile.linux for an example. The build will
create the file liblmp_foo.a which another application can link to.
When used from a C++ program, the library allows one or more LAMMPS
objects to be instantiated. All of LAMMPS is wrapped in a LAMMPS_NS
namespace; you can safely use any of its classes and methods from
within your application code, as needed.
When used from a C or Fortran program or a scripting language, the
library has a simple function-style interface, provided in
src/library.cpp and src/library.h.
See the sample codes couple/simple/simple.cpp and simple.c as examples
of C++ and C codes that invoke LAMMPS thru its library interface.
There are other examples as well in the couple directory which are
-discussed in "this section"_Section_howto.html#4_10 of the manual.
+discussed in "this section"_Section_howto.html#howto_10 of the manual.
See "this section"_Section_python.html of the manual for a description
of the Python wrapper provided with LAMMPS that operates through the
LAMMPS library interface.
The files src/library.cpp and library.h contain the C-style interface
-to LAMMPS. See "this section"_Section_howto.html#4_19 of the manual
-for a description of the interface and how to extend it for your
-needs.
+to LAMMPS. See "this section"_Section_howto.html#howto_19 of the
+manual for a description of the interface and how to extend it for
+your needs.
:line
-2.5 Running LAMMPS :h4,link(2_5)
+2.5 Running LAMMPS :h4,link(start_5)
By default, LAMMPS runs by reading commands from stdin; e.g. lmp_linux
< in.file. This means you first create an input script (e.g. in.file)
containing the desired commands. "This section"_Section_commands.html
describes how input scripts are structured and what commands they
contain.
You can test LAMMPS on any of the sample inputs provided in the
examples or bench directory. Input scripts are named in.* and sample
outputs are named log.*.name.P where name is a machine and P is the
number of processors it was run on.
Here is how you might run a standard Lennard-Jones benchmark on a
Linux box, using mpirun to launch a parallel job:
cd src
make linux
cp lmp_linux ../bench
cd ../bench
mpirun -np 4 lmp_linux < in.lj :pre
See "this page"_bench for timings for this and the other benchmarks
on various platforms.
:link(bench,http://lammps.sandia.gov/bench.html)
:line
On a Windows box, you can skip making LAMMPS and simply download an
executable, as described above, though the pre-packaged executables
include only certain packages.
To run a LAMMPS executable on a Windows machine, first decide whether
you want to download the non-MPI (serial) or the MPI (parallel)
version of the executable. Download and save the version you have
chosen.
For the non-MPI version, follow these steps:
Get a command prompt by going to Start->Run... ,
then typing "cmd". :ulb,l
Move to the directory where you have saved lmp_win_no-mpi.exe
(e.g. by typing: cd "Documents"). :l
At the command prompt, type "lmp_win_no-mpi -in in.lj", replacing in.lj
with the name of your LAMMPS input script. :l,ule
For the MPI version, which allows you to run LAMMPS under Windows on
multiple processors, follow these steps:
Download and install
"MPICH2"_http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads
for Windows. :ulb,l
You'll need to use the mpiexec.exe and smpd.exe files from the MPICH2 package. Put them in
same directory (or path) as the LAMMPS Windows executable. :l
Get a command prompt by going to Start->Run... ,
then typing "cmd". :l
Move to the directory where you have saved lmp_win_mpi.exe
(e.g. by typing: cd "Documents"). :l
Then type something like this: "mpiexec -np 4 -localonly lmp_win_mpi -in in.lj",
replacing in.lj with the name of your LAMMPS input script. :l
Note that you may need to provide smpd with a passphrase --- it doesn't matter what you
type. :l
In this mode, output may not immediately show up on the screen, so
if your input script takes a long time to execute, you may need to be
patient before the output shows up. :l
Alternatively, you can still use this executable to run on a single processor by
typing something like: "lmp_win_mpi -in in.lj". :l,ule
:line
The screen output from LAMMPS is described in the next section. As it
runs, LAMMPS also writes a log.lammps file with the same information.
Note that this sequence of commands copies the LAMMPS executable
(lmp_linux) to the directory with the input files. This may not be
necessary, but some versions of MPI reset the working directory to
where the executable is, rather than leave it as the directory where
you launch mpirun from (if you launch lmp_linux on its own and not
under mpirun). If that happens, LAMMPS will look for additional input
files and write its output files to the executable directory, rather
than your working directory, which is probably not what you want.
If LAMMPS encounters errors in the input script or while running a
simulation it will print an ERROR message and stop or a WARNING
message and continue. See "this section"_Section_errors.html for a
discussion of the various kinds of errors LAMMPS can or can't detect,
a list of all ERROR and WARNING messages, and what to do about them.
LAMMPS can run a problem on any number of processors, including a
single processor. In theory you should get identical answers on any
number of processors and on any machine. In practice, numerical
round-off can cause slight differences and eventual divergence of
molecular dynamics phase space trajectories.
LAMMPS can run as large a problem as will fit in the physical memory
of one or more processors. If you run out of memory, you must run on
more processors or setup a smaller problem.
:line
-2.6 Command-line options :h4,link(2_6)
+2.6 Command-line options :h4,link(start_6)
At run time, LAMMPS recognizes several optional command-line switches
which may be used in any order. Either the full word or a one-or-two
letter abbreviation can be used:
-c or -cuda
-e or -echo
-i or -in
-h or -help
-l or -log
-p or -partition
-pl or -plog
-ps or -pscreen
-sc or -screen
-sf or -suffix
-v or -var :ul
For example, lmp_ibm might be launched as follows:
mpirun -np 16 lmp_ibm -v f tmp.out -l my.log -sc none < in.alloy
mpirun -np 16 lmp_ibm -var f tmp.out -log my.log -screen none < in.alloy :pre
Here are the details on the options:
-cuda on/off :pre
Explicitly enable or disable CUDA support, as provided by the
USER-CUDA package. If LAMMPS is built with this package, as described
-above in "Section 2.3"_#2_3, then by default LAMMPS will run in CUDA
-mode. If this switch is set to "off", then it will not, even if it
-was built with the USER-CUDA package, which means you can run standard
-LAMMPS or with the GPU package for testing or benchmarking purposes.
-The only reason to set the switch to "on", is to check if LAMMPS was
-built with the USER-CUDA package, since an error will be generated if
-it was not.
+above in "Section 2.3"_#start_3, then by default LAMMPS will run in
+CUDA mode. If this switch is set to "off", then it will not, even if
+it was built with the USER-CUDA package, which means you can run
+standard LAMMPS or with the GPU package for testing or benchmarking
+purposes. The only reason to set the switch to "on", is to check if
+LAMMPS was built with the USER-CUDA package, since an error will be
+generated if it was not.
-echo style :pre
Set the style of command echoing. The style can be {none} or {screen}
or {log} or {both}. Depending on the style, each command read from
the input script will be echoed to the screen and/or logfile. This
can be useful to figure out which line of your script is causing an
input error. The default value is {log}. The echo style can also be
set by using the "echo"_echo.html command in the input script itself.
-in file :pre
Specify a file to use as an input script. This is an optional switch
when running LAMMPS in one-partition mode. If it is not specified,
LAMMPS reads its input script from stdin - e.g. lmp_linux < in.run.
This is a required switch when running LAMMPS in multi-partition mode,
since multiple processors cannot all read from stdin.
-help :pre
Print a list of options compiled into this executable for each LAMMPS
style (atom_style, fix, compute, pair_style, bond_style, etc). This
can help you know if the command you want to use was included via the
appropriate package. LAMMPS will print the info and immediately exit
if this switch is used.
-log file :pre
Specify a log file for LAMMPS to write status information to. In
one-partition mode, if the switch is not used, LAMMPS writes to the
file log.lammps. If this switch is used, LAMMPS writes to the
specified file. In multi-partition mode, if the switch is not used, a
log.lammps file is created with hi-level status information. Each
partition also writes to a log.lammps.N file where N is the partition
ID. If the switch is specified in multi-partition mode, the hi-level
logfile is named "file" and each partition also logs information to a
file.N. For both one-partition and multi-partition mode, if the
specified file is "none", then no log files are created. Using a
"log"_log.html command in the input script will override this setting.
Option -plog will override the name of the partition log files file.N.
-partition 8x2 4 5 ... :pre
Invoke LAMMPS in multi-partition mode. When LAMMPS is run on P
processors and this switch is not used, LAMMPS runs in one partition,
i.e. all P processors run a single simulation. If this switch is
used, the P processors are split into separate partitions and each
partition runs its own simulation. The arguments to the switch
specify the number of processors in each partition. Arguments of the
form MxN mean M partitions, each with N processors. Arguments of the
form N mean a single partition with N processors. The sum of
processors in all partitions must equal P. Thus the command
"-partition 8x2 4 5" has 10 partitions and runs on a total of 25
processors.
Note that with MPI installed on a machine (e.g. your desktop), you can
run on more (virtual) processors than you have physical processors.
This can be useful for running "multi-replica
-simulations"_Section_howto.html#4_5, on one or a few processors.
+simulations"_Section_howto.html#howto_5, on one or a few processors.
The input script specifies what simulation is run on which partition;
see the "variable"_variable.html and "next"_next.html commands. This
-"howto section"_Section_howto.html#4_4 gives examples of how to use
-these commands in this way. Simulations running on different
+"howto section"_Section_howto.html#howto_4 gives examples of how to
+use these commands in this way. Simulations running on different
partitions can also communicate with each other; see the
"temper"_temper.html command.
-plog file :pre
Specify the base name for the partition log files,
so partition N writes log information to file.N. If file is
none, then no partition log files are created.
This overrides the
filename specified in the -log command-line option.
This option is useful when working with large numbers of partitions,
allowing the partition log files to be suppressed (-plog none) or
placed in a sub-directory (-plog replica_files/log.lammps)
If this option is not used
the log file for partition N is log.lammps.N or whatever is specified by
the -log command-line option.
-pscreen file :pre
Specify the base name for the
partition screen file, so partition N writes
screen information to file.N. If file is
none, then no partition screen files are created.
This overrides the
filename specified in the -screen command-line option.
This option is useful when working with large numbers of partitions,
allowing the partition screen files to be suppressed (-pscreen none) or
placed in a sub-directory (-pscreen replica_files/screen)
If this option is not used
the screen file for partition N is screen.N or whatever is specified by
the -screen command-line option.
-screen file :pre
Specify a file for LAMMPS to write its screen information to. In
one-partition mode, if the switch is not used, LAMMPS writes to the
screen. If this switch is used, LAMMPS writes to the specified file
instead and you will see no screen output. In multi-partition mode,
if the switch is not used, hi-level status information is written to
the screen. Each partition also writes to a screen.N file where N is
the partition ID. If the switch is specified in multi-partition mode,
the hi-level screen dump is named "file" and each partition also
writes screen information to a file.N. For both one-partition and
multi-partition mode, if the specified file is "none", then no screen
output is performed. Option -pscreen will override the name of the
partition screen files file.N.
-suffix style :pre
Use variants of various styles if they exist. The specified style can
be {opt} or {gpu} or {cuda}. These refer to optional packages that
-LAMMPS can be built with, as described above in "Section 2.3"_#2_3.
-The "opt" style corrsponds to the OPT package, the "gpu" style to the
-GPU package, and the "cuda" style to the USER-CUDA package.
+LAMMPS can be built with, as described above in "Section
+2.3"_#start_3. The "opt" style corrsponds to the OPT package, the
+"gpu" style to the GPU package, and the "cuda" style to the USER-CUDA
+package.
As an example, all of the packages provide a "pair_style
lj/cut"_pair_lj.html variant, with style names lj/cut/opt or
lj/cut/gpu or lj/cut/cuda. A variant styles can be specified
explicitly in your input script, e.g. pair_style lj/cut/gpu. If the
-suffix switch is used, you do not need to modify your input script.
The specified suffix (opt,gpu,cuda) is automatically appended whenever
your input script command creates a new "atom"_atom_style.html,
"pair"_pair_style.html, "fix"_fix.html, "compute"_compute.html, or
"run"_run_style.html style. atom, pair, fix, compute, or integrate
style. If the variant version does not exist, the standard version is
created.
The "suffix"_suffix.html command can also set a suffix and it can also
turn off/on any suffix setting made via the command line.
-var name value1 value2 ... :pre
Specify a variable that will be defined for substitution purposes when
the input script is read. "Name" is the variable name which can be a
single character (referenced as $x in the input script) or a full
string (referenced as $\{abc\}). An "index-style
variable"_variable.html will be created and populated with the
subsequent values, e.g. a set of filenames. Using this command-line
option is equivalent to putting the line "variable name index value1
value2 ..." at the beginning of the input script. Defining an index
variable as a command-line argument overrides any setting for the same
index variable in the input script, since index variables cannot be
re-defined. See the "variable"_variable.html command for more info on
defining index and other kinds of variables and "this
-section"_Section_commands.html#3_2 for more info on using variables in
-input scripts.
+section"_Section_commands.html#cmd_2 for more info on using variables
+in input scripts.
:line
-2.7 LAMMPS screen output :h4,link(2_7)
+2.7 LAMMPS screen output :h4,link(start_7)
As LAMMPS reads an input script, it prints information to both the
screen and a log file about significant actions it takes to setup a
simulation. When the simulation is ready to begin, LAMMPS performs
various initializations and prints the amount of memory (in MBytes per
processor) that the simulation requires. It also prints details of
the initial thermodynamic state of the system. During the run itself,
thermodynamic information is printed periodically, every few
timesteps. When the run concludes, LAMMPS prints the final
thermodynamic state and a total run time for the simulation. It then
appends statistics about the CPU time and storage requirements for the
simulation. An example set of statistics is shown here:
Loop time of 49.002 on 2 procs for 2004 atoms :pre
Pair time (%) = 35.0495 (71.5267)
Bond time (%) = 0.092046 (0.187841)
Kspce time (%) = 6.42073 (13.103)
Neigh time (%) = 2.73485 (5.5811)
Comm time (%) = 1.50291 (3.06703)
Outpt time (%) = 0.013799 (0.0281601)
Other time (%) = 2.13669 (4.36041) :pre
Nlocal: 1002 ave, 1015 max, 989 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Nghost: 8720 ave, 8724 max, 8716 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Neighs: 354141 ave, 361422 max, 346860 min
Histogram: 1 0 0 0 0 0 0 0 0 1 :pre
Total # of neighbors = 708282
Ave neighs/atom = 353.434
Ave special neighs/atom = 2.34032
Number of reneighborings = 42
Dangerous reneighborings = 2 :pre
The first section gives the breakdown of the CPU run time (in seconds)
into major categories. The second section lists the number of owned
atoms (Nlocal), ghost atoms (Nghost), and pair-wise neighbors stored
per processor. The max and min values give the spread of these values
across processors with a 10-bin histogram showing the distribution.
The total number of histogram counts is equal to the number of
processors.
The last section gives aggregate statistics for pair-wise neighbors
and special neighbors that LAMMPS keeps track of (see the
"special_bonds"_special_bonds.html command). The number of times
neighbor lists were rebuilt during the run is given as well as the
number of potentially "dangerous" rebuilds. If atom movement
triggered neighbor list rebuilding (see the
"neigh_modify"_neigh_modify.html command), then dangerous
reneighborings are those that were triggered on the first timestep
atom movement was checked for. If this count is non-zero you may wish
to reduce the delay factor to insure no force interactions are missed
by atoms moving beyond the neighbor skin distance before a rebuild
takes place.
If an energy minimization was performed via the
"minimize"_minimize.html command, additional information is printed,
e.g.
Minimization stats:
E initial, next-to-last, final = -0.895962 -2.94193 -2.94342
Gradient 2-norm init/final= 1920.78 20.9992
Gradient inf-norm init/final= 304.283 9.61216
Iterations = 36
Force evaluations = 177 :pre
The first line lists the initial and final energy, as well as the
energy on the next-to-last iteration. The next 2 lines give a measure
of the gradient of the energy (force on all atoms). The 2-norm is the
"length" of this force vector; the inf-norm is the largest component.
The last 2 lines are statistics on how many iterations and
force-evaluations the minimizer required. Multiple force evaluations
are typically done at each iteration to perform a 1d line minimization
in the search direction.
If a "kspace_style"_kspace_style.html long-range Coulombics solve was
performed during the run (PPPM, Ewald), then additional information is
printed, e.g.
FFT time (% of Kspce) = 0.200313 (8.34477)
FFT Gflps 3d 1d-only = 2.31074 9.19989 :pre
The first line gives the time spent doing 3d FFTs (4 per timestep) and
the fraction it represents of the total KSpace time (listed above).
Each 3d FFT requires computation (3 sets of 1d FFTs) and communication
(transposes). The total flops performed is 5Nlog_2(N), where N is the
number of points in the 3d grid. The FFTs are timed with and without
the communication and a Gflop rate is computed. The 3d rate is with
communication; the 1d rate is without (just the 1d FFTs). Thus you
can estimate what fraction of your FFT time was spent in
communication, roughly 75% in the example above.
:line
-2.8 Tips for users of previous LAMMPS versions :h4,link(2_8)
+2.8 Tips for users of previous LAMMPS versions :h4,link(start_8)
The current C++ began with a complete rewrite of LAMMPS 2001, which
was written in F90. Features of earlier versions of LAMMPS are listed
in "this section"_Section_history.html. The F90 and F77 versions
(2001 and 99) are also freely distributed as open-source codes; check
the "LAMMPS WWW Site"_lws for distribution information if you prefer
those versions. The 99 and 2001 versions are no longer under active
development; they do not have all the features of C++ LAMMPS.
If you are a previous user of LAMMPS 2001, these are the most
significant changes you will notice in C++ LAMMPS:
(1) The names and arguments of many input script commands have
changed. All commands are now a single word (e.g. read_data instead
of read data).
(2) All the functionality of LAMMPS 2001 is included in C++ LAMMPS,
but you may need to specify the relevant commands in different ways.
(3) The format of the data file can be streamlined for some problems.
See the "read_data"_read_data.html command for details. The data file
section "Nonbond Coeff" has been renamed to "Pair Coeff" in C++ LAMMPS.
(4) Binary restart files written by LAMMPS 2001 cannot be read by C++
LAMMPS with a "read_restart"_read_restart.html command. This is
because they were output by F90 which writes in a different binary
format than C or C++ writes or reads. Use the {restart2data} tool
provided with LAMMPS 2001 to convert the 2001 restart file to a text
data file. Then edit the data file as necessary before using the C++
LAMMPS "read_data"_read_data.html command to read it in.
(5) There are numerous small numerical changes in C++ LAMMPS that mean
you will not get identical answers when comparing to a 2001 run.
However, your initial thermodynamic energy and MD trajectory should be
close if you have setup the problem for both codes the same.
diff --git a/doc/Section_tools.html b/doc/Section_tools.html
index 4e1228a21..3f9efb0c7 100644
--- a/doc/Section_tools.html
+++ b/doc/Section_tools.html
@@ -1,441 +1,441 @@
<HTML>
<CENTER><A HREF = "Section_perf.html">Previous Section</A> - <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS
Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> - <A HREF = "Section_modify.html">Next
Section</A>
</CENTER>
<HR>
-<H3>7. Additional tools
+<H3>9. Additional tools
</H3>
<P>LAMMPS is designed to be a computational kernel for performing
molecular dynamics computations. Additional pre- and post-processing
steps are often necessary to setup and analyze a simulation. A few
additional tools are provided with the LAMMPS distribution and are
described in this section.
</P>
<P>Our group has also written and released a separate toolkit called
<A HREF = "http://www.sandia.gov/~sjplimp/pizza.html">Pizza.py</A> which 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>Note that many users write their own setup or analysis tools or use
other existing codes and convert their output to a LAMMPS input format
or vice versa. The tools listed here are included in the LAMMPS
distribution as examples of auxiliary tools. Some of them are not
actively supported by Sandia, as they were contributed by LAMMPS
users. If you have problems using them, we can direct you to the
authors.
</P>
<P>The source code for each of these codes is in the tools sub-directory
of the LAMMPS distribution. There is a Makefile (which you may need
to edit for your platform) which will build several of the tools which
reside in that directory. Some of them are larger packages in their
own sub-directories with their own Makefiles.
</P>
<UL><LI><A HREF = "#amber">amber2lmp</A>
<LI><A HREF = "#binary">binary2txt</A>
<LI><A HREF = "#charmm">ch2lmp</A>
<LI><A HREF = "#chain">chain</A>
<LI><A HREF = "#create">createatoms</A>
<LI><A HREF = "#data">data2xmovie</A>
<LI><A HREF = "#eamdb">eam database</A>
<LI><A HREF = "#eamgn">eam generate</A>
<LI><A HREF = "#eff">eff</A>
<LI><A HREF = "#emacs">emacs</A>
<LI><A HREF = "#ipp">ipp</A>
<LI><A HREF = "#arc">lmp2arc</A>
<LI><A HREF = "#cfg">lmp2cfg</A>
<LI><A HREF = "#vmd">lmp2vmd</A>
<LI><A HREF = "#matlab">matlab</A>
<LI><A HREF = "#micelle">micelle2d</A>
<LI><A HREF = "#msi">msi2lmp</A>
<LI><A HREF = "#pymol">pymol_asphere</A>
<LI><A HREF = "#pythontools">python</A>
<LI><A HREF = "#reax">reax</A>
<LI><A HREF = "#restart">restart2data</A>
<LI><A HREF = "#thermo_extract">thermo_extract</A>
<LI><A HREF = "#vim">vim</A>
<LI><A HREF = "#xmovie">xmovie</A>
</UL>
<HR>
<H4><A NAME = "amber"></A>amber2lmp tool
</H4>
<P>The amber2lmp sub-directory contains two Python scripts for converting
files back-and-forth between the AMBER MD code and LAMMPS. See the
README file in amber2lmp for more information.
</P>
<P>These tools were written by Keir Novik while he was at Queen Mary
University of London. Keir is no longer there and cannot support
these tools which are out-of-date with respect to the current LAMMPS
version (and maybe with respect to AMBER as well). Since we don't use
these tools at Sandia, you'll need to experiment with them and make
necessary modifications yourself.
</P>
<HR>
<H4><A NAME = "binary"></A>binary2txt tool
</H4>
<P>The file binary2txt.cpp converts one or more binary LAMMPS dump file
into ASCII text files. The syntax for running the tool is
</P>
<PRE>binary2txt file1 file2 ...
</PRE>
<P>which creates file1.txt, file2.txt, etc. This tool must be compiled
on a platform that can read the binary file created by a LAMMPS run,
since binary files are not compatible across all platforms.
</P>
<HR>
<H4><A NAME = "charmm"></A>ch2lmp tool
</H4>
<P>The ch2lmp sub-directory contains tools for converting files
back-and-forth between the CHARMM MD code and LAMMPS.
</P>
<P>They are intended to make it easy to use CHARMM as a builder and as a
post-processor for LAMMPS. Using charmm2lammps.pl, you can convert an
ensemble built in CHARMM into its LAMMPS equivalent. Using
lammps2pdb.pl you can convert LAMMPS atom dumps into pdb files.
</P>
<P>See the README file in the ch2lmp sub-directory for more information.
</P>
<P>These tools were created by Pieter in't Veld (pjintve at sandia.gov)
and Paul Crozier (pscrozi at sandia.gov) at Sandia.
</P>
<HR>
<H4><A NAME = "chain"></A>chain tool
</H4>
<P>The file chain.f creates a LAMMPS data file containing bead-spring
polymer chains and/or monomer solvent atoms. It uses a text file
containing chain definition parameters as an input. The created
chains and solvent atoms can strongly overlap, so LAMMPS needs to run
the system initially with a "soft" pair potential to un-overlap it.
The syntax for running the tool is
</P>
<PRE>chain < def.chain > data.file
</PRE>
<P>See the def.chain or def.chain.ab files in the tools directory for
examples of definition files. This tool was used to create the
system for the <A HREF = "Section_perf.html">chain benchmark</A>.
</P>
<HR>
<H4><A NAME = "create"></A>createatoms tool
</H4>
<P>The tools/createatoms directory contains a Fortran program called
createAtoms.f which can generate a variety of interesting crystal
structures and geometries and output the resulting list of atom
coordinates in LAMMPS or other formats.
</P>
<P>See the included Manual.pdf for details.
</P>
<P>The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov.
</P>
<HR>
<H4><A NAME = "data"></A>data2xmovie tool
</H4>
<P>The file data2xmovie.c converts a LAMMPS data file into a snapshot
suitable for visualizing with the <A HREF = "#xmovie">xmovie</A> tool, as if it had
been output with a dump command from LAMMPS itself. The syntax for
running the tool is
</P>
<PRE>data2xmovie <B>options</B> < infile > outfile
</PRE>
<P>See the top of the data2xmovie.c file for a discussion of the options.
</P>
<HR>
<H4><A NAME = "eamdb"></A>eam database tool
</H4>
<P>The tools/eam_database directory contains a Fortran program that will
generate EAM alloy setfl potential files for any combination of 16
elements: Cu, Ag, Au, Ni, Pd, Pt, Al, Pb, Fe, Mo, Ta, W, Mg, Co, Ti,
Zr. The files can then be used with the <A HREF = "pair_eam.html">pair_style
eam/alloy</A> command.
</P>
<P>The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov,
and is based on his paper:
</P>
<P>X. W. Zhou, R. A. Johnson, and H. N. G. Wadley, Phys. Rev. B, 69,
144113 (2004).
</P>
<HR>
<H4><A NAME = "eamgn"></A>eam generate tool
</H4>
<P>The tools/eam_generate directory contains several one-file C programs
that convert an analytic formula into a tabulated <A HREF = "pair_eam.html">embedded atom
method (EAM)</A> setfl potential file. The potentials they
produce are in the potentials directory, and can be used with the
<A HREF = "pair_eam.html">pair_style eam/alloy</A> command.
</P>
<P>The source files and potentials were provided by Gerolf Ziegenhain
(gerolf at ziegenhain.com).
</P>
<HR>
<H4><A NAME = "eff"></A>eff tool
</H4>
<P>The tools/eff directory contains various scripts for generating
structures and post-processing output for simulations using the
electron force field (eFF).
</P>
<P>These tools were provided by Andres Jaramillo-Botero at CalTech
(ajaramil at wag.caltech.edu).
</P>
<HR>
<H4><A NAME = "emacs"></A>emacs tool
</H4>
<P>The tools/emacs directory contains a Lips add-on file for Emacs that
enables a lammps-mode for editing of input scripts when using Emacs,
with various highlighting options setup.
</P>
<P>These tools were provided by Aidan Thompson at Sandia
(athomps at sandia.gov).
</P>
<HR>
<H4><A NAME = "ipp"></A>ipp tool
</H4>
<P>The tools/ipp directory contains a Perl script ipp which can be used
to facilitate the creation of a complicated file (say, a lammps input
script or tools/createatoms input file) using a template file.
</P>
<P>ipp was created and is maintained by Reese Jones (Sandia), rjones at
sandia.gov.
</P>
<P>See two examples in the tools/ipp directory. One of them is for the
tools/createatoms tool's input file.
</P>
<HR>
<H4><A NAME = "arc"></A>lmp2arc tool
</H4>
<P>The lmp2arc sub-directory contains a tool for converting LAMMPS output
files to the format for Accelrys' Insight MD code (formerly
MSI/Biosym and its Discover MD code). See the README file for more
information.
</P>
<P>This tool was written by John Carpenter (Cray), Michael Peachey
(Cray), and Steve Lustig (Dupont). John is now at the Mayo Clinic
(jec at mayo.edu), but still fields questions about the tool.
</P>
<P>This tool was updated for the current LAMMPS C++ version by Jeff
Greathouse at Sandia (jagreat at sandia.gov).
</P>
<HR>
<H4><A NAME = "cfg"></A>lmp2cfg tool
</H4>
<P>The lmp2cfg sub-directory contains a tool for converting LAMMPS output
files into a series of *.cfg files which can be read into the
<A HREF = "http://mt.seas.upenn.edu/Archive/Graphics/A">AtomEye</A> visualizer. See
the README file for more information.
</P>
<P>This tool was written by Ara Kooser at Sandia (askoose at sandia.gov).
</P>
<HR>
<H4><A NAME = "vmd"></A>lmp2vmd tool
</H4>
<P>The lmp2vmd sub-directory contains a README.txt file that describes
details of scripts and plugin support within the <A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD
package</A> for visualizing LAMMPS
dump files.
</P>
<P>The VMD plugins and other supporting scripts were written by Axel
Kohlmeyer (akohlmey at cmm.chem.upenn.edu) at U Penn.
</P>
<HR>
<H4><A NAME = "matlab"></A>matlab tool
</H4>
<P>The matlab sub-directory contains several <A HREF = "http://www.mathworks.com">MATLAB</A> scripts for
post-processing LAMMPS output. The scripts include readers for log
and dump files, a reader for EAM potential files, and a converter that
reads LAMMPS dump files and produces CFG files that can be visualized
with the <A HREF = "http://mt.seas.upenn.edu/Archive/Graphics/A">AtomEye</A>
visualizer.
</P>
<P>See the README.pdf file for more information.
</P>
<P>These scripts were written by Arun Subramaniyan at Purdue Univ
(asubrama at purdue.edu).
</P>
<HR>
<H4><A NAME = "micelle"></A>micelle2d tool
</H4>
<P>The file micelle2d.f creates a LAMMPS data file containing short lipid
chains in a monomer solution. It uses a text file containing lipid
definition parameters as an input. The created molecules and solvent
atoms can strongly overlap, so LAMMPS needs to run the system
initially with a "soft" pair potential to un-overlap it. The syntax
for running the tool is
</P>
<PRE>micelle2d < def.micelle2d > data.file
</PRE>
<P>See the def.micelle2d file in the tools directory for an example of a
definition file. This tool was used to create the system for the
<A HREF = "Section_example.html">micelle example</A>.
</P>
<HR>
<H4><A NAME = "msi"></A>msi2lmp tool
</H4>
<P>The msi2lmp sub-directory contains a tool for creating LAMMPS input
data files from Accelrys' Insight MD code (formerly MSI/Biosym and
its Discover MD code). See the README file for more information.
</P>
<P>This tool was written by John Carpenter (Cray), Michael Peachey
(Cray), and Steve Lustig (Dupont). John is now at the Mayo Clinic
(jec at mayo.edu), but still fields questions about the tool.
</P>
<P>This tool may be out-of-date with respect to the current LAMMPS and
Insight versions. Since we don't use it at Sandia, you'll need to
experiment with it yourself.
</P>
<HR>
<H4><A NAME = "pymol"></A>pymol_asphere tool
</H4>
<P>The pymol_asphere sub-directory contains a tool for converting a
LAMMPS dump file that contains orientation info for ellipsoidal
particles into an input file for the <A HREF = "http://pymol.sourceforge.net">PyMol visualization
package</A>.
</P>
<P>Specifically, the tool triangulates the ellipsoids so they can be
viewed as true ellipsoidal particles within PyMol. See the README and
examples directory within pymol_asphere for more information.
</P>
<P>This tool was written by Mike Brown at Sandia.
</P>
<HR>
<H4><A NAME = "pythontools"></A>python tool
</H4>
<P>The python sub-directory contains several Python scripts
that perform common LAMMPS post-processing tasks, such as:
</P>
<UL><LI>extract thermodynamic info from a log file as columns of numbers
<LI>plot two columns of thermodynamic info from a log file using GnuPlot
<LI>sort the snapshots in a dump file by atom ID
<LI>convert multiple <A HREF = "neb.html">NEB</A> dump files into one dump file for viz
<LI>convert dump files into XYZ, CFG, or PDB format for viz by other packages
</UL>
<P>These are simple scripts built on <A HREF = "http://www.sandia.gov/~sjplimp/pizza.html">Pizza.py</A> modules. See the
README for more info on Pizza.py and how to use these scripts.
</P>
<HR>
<H4><A NAME = "reax"></A>reax tool
</H4>
<P>The reax sub-directory contains stand-alond codes that can
post-process the output of the <A HREF = "fix_reax_bonds.html">fix reax/bonds</A>
command from a LAMMPS simulation using <A HREF = "pair_reax.html">ReaxFF</A>. See
the README.txt file for more info.
</P>
<P>These tools were written by Aidan Thompson at Sandia.
</P>
<HR>
<H4><A NAME = "restart"></A>restart2data tool
</H4>
<P>The file restart2data.cpp converts a binary LAMMPS restart file into
an ASCII data file. The syntax for running the tool is
</P>
<PRE>restart2data restart-file data-file (input-file)
</PRE>
<P>Input-file is optional and if specified will contain LAMMPS input
commands for the masses and force field parameters, instead of putting
those in the data-file. Only a few force field styles currently
support this option.
</P>
<P>This tool must be compiled on a platform that can read the binary file
created by a LAMMPS run, since binary files are not compatible across
all platforms.
</P>
<P>Note that a text data file has less precision than a binary restart
file. Hence, continuing a run from a converted data file will
typically not conform as closely to a previous run as will restarting
from a binary restart file.
</P>
<P>If a "%" appears in the specified restart-file, the tool expects a set
of multiple files to exist. See the <A HREF = "restart.html">restart</A> and
<A HREF = "write_restart.html">write_restart</A> commands for info on how such sets
of files are written by LAMMPS, and how the files are named.
</P>
<HR>
<H4><A NAME = "thermo_extract"></A>thermo_extract tool
</H4>
<P>The thermo_extract tool reads one of more LAMMPS log files and
extracts a thermodynamic value (e.g. Temp, Press). It spits out the
time,value as 2 columns of numbers so the tool can be used as a quick
way to plot some quantity of interest. See the header of the
thermo_extract.c file for the syntax of how to run it and other
details.
</P>
<P>This tool was written by Vikas Varshney at Wright Patterson AFB
(vikas.varshney at gmail.com).
</P>
<HR>
<H4><A NAME = "vim"></A>vim tool
</H4>
<P>The files in the tools/vim directory are add-ons to the VIM editor
that allow easier editing of LAMMPS input scripts. See the README.txt
file for details.
</P>
<P>These files were provided by Gerolf Ziegenhain (gerolf at
ziegenhain.com)
</P>
<HR>
<H4><A NAME = "xmovie"></A>xmovie tool
</H4>
<P>The xmovie tool is an X-based visualization package that can read
LAMMPS dump files and animate them. It is in its own sub-directory
with the tools directory. You may need to modify its Makefile so that
it can find the appropriate X libraries to link against.
</P>
<P>The syntax for running xmovie is
</P>
<PRE>xmovie <B>options</B> dump.file1 dump.file2 ...
</PRE>
<P>If you just type "xmovie" you will see a list of options. Note that
by default, LAMMPS dump files are in scaled coordinates, so you
typically need to use the -scale option with xmovie. When xmovie runs
it opens a visualization window and a control window. The control
options are straightforward to use.
</P>
<P>Xmovie was mostly written by Mike Uttormark (U Wisconsin) while he
spent a summer at Sandia. It displays 2d projections of a 3d domain.
While simple in design, it is an amazingly fast program that can
render large numbers of atoms very quickly. It's a useful tool for
debugging LAMMPS input and output and making sure your simulation is
doing what you think it should. The animations on the Examples page
of the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW site</A> were created with xmovie.
</P>
<P>I've lost contact with Mike, so I hope he's comfortable with us
distributing his great tool!
</P>
</HTML>
diff --git a/doc/Section_tools.txt b/doc/Section_tools.txt
index 5c3f7bf6a..05a4fe65c 100644
--- a/doc/Section_tools.txt
+++ b/doc/Section_tools.txt
@@ -1,435 +1,435 @@
"Previous Section"_Section_perf.html - "LAMMPS WWW Site"_lws - "LAMMPS
Documentation"_ld - "LAMMPS Commands"_lc - "Next
Section"_Section_modify.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
-7. Additional tools :h3
+9. Additional tools :h3
LAMMPS is designed to be a computational kernel for performing
molecular dynamics computations. Additional pre- and post-processing
steps are often necessary to setup and analyze a simulation. A few
additional tools are provided with the LAMMPS distribution and are
described in this section.
Our group has also written and released a separate toolkit called
"Pizza.py"_pizza which provides tools for doing setup, analysis,
plotting, and visualization for LAMMPS simulations. Pizza.py is
written in "Python"_python and is available for download from "the
Pizza.py WWW site"_pizza.
:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
:link(python,http://www.python.org)
Note that many users write their own setup or analysis tools or use
other existing codes and convert their output to a LAMMPS input format
or vice versa. The tools listed here are included in the LAMMPS
distribution as examples of auxiliary tools. Some of them are not
actively supported by Sandia, as they were contributed by LAMMPS
users. If you have problems using them, we can direct you to the
authors.
The source code for each of these codes is in the tools sub-directory
of the LAMMPS distribution. There is a Makefile (which you may need
to edit for your platform) which will build several of the tools which
reside in that directory. Some of them are larger packages in their
own sub-directories with their own Makefiles.
"amber2lmp"_#amber
"binary2txt"_#binary
"ch2lmp"_#charmm
"chain"_#chain
"createatoms"_#create
"data2xmovie"_#data
"eam database"_#eamdb
"eam generate"_#eamgn
"eff"_#eff
"emacs"_#emacs
"ipp"_#ipp
"lmp2arc"_#arc
"lmp2cfg"_#cfg
"lmp2vmd"_#vmd
"matlab"_#matlab
"micelle2d"_#micelle
"msi2lmp"_#msi
"pymol_asphere"_#pymol
"python"_#pythontools
"reax"_#reax
"restart2data"_#restart
"thermo_extract"_#thermo_extract
"vim"_#vim
"xmovie"_#xmovie :ul
:line
amber2lmp tool :h4,link(amber)
The amber2lmp sub-directory contains two Python scripts for converting
files back-and-forth between the AMBER MD code and LAMMPS. See the
README file in amber2lmp for more information.
These tools were written by Keir Novik while he was at Queen Mary
University of London. Keir is no longer there and cannot support
these tools which are out-of-date with respect to the current LAMMPS
version (and maybe with respect to AMBER as well). Since we don't use
these tools at Sandia, you'll need to experiment with them and make
necessary modifications yourself.
:line
binary2txt tool :h4,link(binary)
The file binary2txt.cpp converts one or more binary LAMMPS dump file
into ASCII text files. The syntax for running the tool is
binary2txt file1 file2 ... :pre
which creates file1.txt, file2.txt, etc. This tool must be compiled
on a platform that can read the binary file created by a LAMMPS run,
since binary files are not compatible across all platforms.
:line
ch2lmp tool :h4,link(charmm)
The ch2lmp sub-directory contains tools for converting files
back-and-forth between the CHARMM MD code and LAMMPS.
They are intended to make it easy to use CHARMM as a builder and as a
post-processor for LAMMPS. Using charmm2lammps.pl, you can convert an
ensemble built in CHARMM into its LAMMPS equivalent. Using
lammps2pdb.pl you can convert LAMMPS atom dumps into pdb files.
See the README file in the ch2lmp sub-directory for more information.
These tools were created by Pieter in't Veld (pjintve at sandia.gov)
and Paul Crozier (pscrozi at sandia.gov) at Sandia.
:line
chain tool :h4,link(chain)
The file chain.f creates a LAMMPS data file containing bead-spring
polymer chains and/or monomer solvent atoms. It uses a text file
containing chain definition parameters as an input. The created
chains and solvent atoms can strongly overlap, so LAMMPS needs to run
the system initially with a "soft" pair potential to un-overlap it.
The syntax for running the tool is
chain < def.chain > data.file :pre
See the def.chain or def.chain.ab files in the tools directory for
examples of definition files. This tool was used to create the
system for the "chain benchmark"_Section_perf.html.
:line
createatoms tool :h4,link(create)
The tools/createatoms directory contains a Fortran program called
createAtoms.f which can generate a variety of interesting crystal
structures and geometries and output the resulting list of atom
coordinates in LAMMPS or other formats.
See the included Manual.pdf for details.
The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov.
:line
data2xmovie tool :h4,link(data)
The file data2xmovie.c converts a LAMMPS data file into a snapshot
suitable for visualizing with the "xmovie"_#xmovie tool, as if it had
been output with a dump command from LAMMPS itself. The syntax for
running the tool is
data2xmovie [options] < infile > outfile :pre
See the top of the data2xmovie.c file for a discussion of the options.
:line
eam database tool :h4,link(eamdb)
The tools/eam_database directory contains a Fortran program that will
generate EAM alloy setfl potential files for any combination of 16
elements: Cu, Ag, Au, Ni, Pd, Pt, Al, Pb, Fe, Mo, Ta, W, Mg, Co, Ti,
Zr. The files can then be used with the "pair_style
eam/alloy"_pair_eam.html command.
The tool is authored by Xiaowang Zhou (Sandia), xzhou at sandia.gov,
and is based on his paper:
X. W. Zhou, R. A. Johnson, and H. N. G. Wadley, Phys. Rev. B, 69,
144113 (2004).
:line
eam generate tool :h4,link(eamgn)
The tools/eam_generate directory contains several one-file C programs
that convert an analytic formula into a tabulated "embedded atom
method (EAM)"_pair_eam.html setfl potential file. The potentials they
produce are in the potentials directory, and can be used with the
"pair_style eam/alloy"_pair_eam.html command.
The source files and potentials were provided by Gerolf Ziegenhain
(gerolf at ziegenhain.com).
:line
eff tool :h4,link(eff)
The tools/eff directory contains various scripts for generating
structures and post-processing output for simulations using the
electron force field (eFF).
These tools were provided by Andres Jaramillo-Botero at CalTech
(ajaramil at wag.caltech.edu).
:line
emacs tool :h4,link(emacs)
The tools/emacs directory contains a Lips add-on file for Emacs that
enables a lammps-mode for editing of input scripts when using Emacs,
with various highlighting options setup.
These tools were provided by Aidan Thompson at Sandia
(athomps at sandia.gov).
:line
ipp tool :h4,link(ipp)
The tools/ipp directory contains a Perl script ipp which can be used
to facilitate the creation of a complicated file (say, a lammps input
script or tools/createatoms input file) using a template file.
ipp was created and is maintained by Reese Jones (Sandia), rjones at
sandia.gov.
See two examples in the tools/ipp directory. One of them is for the
tools/createatoms tool's input file.
:line
lmp2arc tool :h4,link(arc)
The lmp2arc sub-directory contains a tool for converting LAMMPS output
files to the format for Accelrys' Insight MD code (formerly
MSI/Biosym and its Discover MD code). See the README file for more
information.
This tool was written by John Carpenter (Cray), Michael Peachey
(Cray), and Steve Lustig (Dupont). John is now at the Mayo Clinic
(jec at mayo.edu), but still fields questions about the tool.
This tool was updated for the current LAMMPS C++ version by Jeff
Greathouse at Sandia (jagreat at sandia.gov).
:line
lmp2cfg tool :h4,link(cfg)
The lmp2cfg sub-directory contains a tool for converting LAMMPS output
files into a series of *.cfg files which can be read into the
"AtomEye"_http://mt.seas.upenn.edu/Archive/Graphics/A visualizer. See
the README file for more information.
This tool was written by Ara Kooser at Sandia (askoose at sandia.gov).
:line
lmp2vmd tool :h4,link(vmd)
The lmp2vmd sub-directory contains a README.txt file that describes
details of scripts and plugin support within the "VMD
package"_http://www.ks.uiuc.edu/Research/vmd for visualizing LAMMPS
dump files.
The VMD plugins and other supporting scripts were written by Axel
Kohlmeyer (akohlmey at cmm.chem.upenn.edu) at U Penn.
:line
matlab tool :h4,link(matlab)
The matlab sub-directory contains several "MATLAB"_matlab scripts for
post-processing LAMMPS output. The scripts include readers for log
and dump files, a reader for EAM potential files, and a converter that
reads LAMMPS dump files and produces CFG files that can be visualized
with the "AtomEye"_http://mt.seas.upenn.edu/Archive/Graphics/A
visualizer.
See the README.pdf file for more information.
These scripts were written by Arun Subramaniyan at Purdue Univ
(asubrama at purdue.edu).
:link(matlab,http://www.mathworks.com)
:line
micelle2d tool :h4,link(micelle)
The file micelle2d.f creates a LAMMPS data file containing short lipid
chains in a monomer solution. It uses a text file containing lipid
definition parameters as an input. The created molecules and solvent
atoms can strongly overlap, so LAMMPS needs to run the system
initially with a "soft" pair potential to un-overlap it. The syntax
for running the tool is
micelle2d < def.micelle2d > data.file :pre
See the def.micelle2d file in the tools directory for an example of a
definition file. This tool was used to create the system for the
"micelle example"_Section_example.html.
:line
msi2lmp tool :h4,link(msi)
The msi2lmp sub-directory contains a tool for creating LAMMPS input
data files from Accelrys' Insight MD code (formerly MSI/Biosym and
its Discover MD code). See the README file for more information.
This tool was written by John Carpenter (Cray), Michael Peachey
(Cray), and Steve Lustig (Dupont). John is now at the Mayo Clinic
(jec at mayo.edu), but still fields questions about the tool.
This tool may be out-of-date with respect to the current LAMMPS and
Insight versions. Since we don't use it at Sandia, you'll need to
experiment with it yourself.
:line
pymol_asphere tool :h4,link(pymol)
The pymol_asphere sub-directory contains a tool for converting a
LAMMPS dump file that contains orientation info for ellipsoidal
particles into an input file for the "PyMol visualization
package"_pymol.
:link(pymol,http://pymol.sourceforge.net)
Specifically, the tool triangulates the ellipsoids so they can be
viewed as true ellipsoidal particles within PyMol. See the README and
examples directory within pymol_asphere for more information.
This tool was written by Mike Brown at Sandia.
:line
python tool :h4,link(pythontools)
The python sub-directory contains several Python scripts
that perform common LAMMPS post-processing tasks, such as:
extract thermodynamic info from a log file as columns of numbers
plot two columns of thermodynamic info from a log file using GnuPlot
sort the snapshots in a dump file by atom ID
convert multiple "NEB"_neb.html dump files into one dump file for viz
convert dump files into XYZ, CFG, or PDB format for viz by other packages :ul
These are simple scripts built on "Pizza.py"_pizza modules. See the
README for more info on Pizza.py and how to use these scripts.
:line
reax tool :h4,link(reax)
The reax sub-directory contains stand-alond codes that can
post-process the output of the "fix reax/bonds"_fix_reax_bonds.html
command from a LAMMPS simulation using "ReaxFF"_pair_reax.html. See
the README.txt file for more info.
These tools were written by Aidan Thompson at Sandia.
:line
restart2data tool :h4,link(restart)
The file restart2data.cpp converts a binary LAMMPS restart file into
an ASCII data file. The syntax for running the tool is
restart2data restart-file data-file (input-file) :pre
Input-file is optional and if specified will contain LAMMPS input
commands for the masses and force field parameters, instead of putting
those in the data-file. Only a few force field styles currently
support this option.
This tool must be compiled on a platform that can read the binary file
created by a LAMMPS run, since binary files are not compatible across
all platforms.
Note that a text data file has less precision than a binary restart
file. Hence, continuing a run from a converted data file will
typically not conform as closely to a previous run as will restarting
from a binary restart file.
If a "%" appears in the specified restart-file, the tool expects a set
of multiple files to exist. See the "restart"_restart.html and
"write_restart"_write_restart.html commands for info on how such sets
of files are written by LAMMPS, and how the files are named.
:line
thermo_extract tool :h4,link(thermo_extract)
The thermo_extract tool reads one of more LAMMPS log files and
extracts a thermodynamic value (e.g. Temp, Press). It spits out the
time,value as 2 columns of numbers so the tool can be used as a quick
way to plot some quantity of interest. See the header of the
thermo_extract.c file for the syntax of how to run it and other
details.
This tool was written by Vikas Varshney at Wright Patterson AFB
(vikas.varshney at gmail.com).
:line
vim tool :h4,link(vim)
The files in the tools/vim directory are add-ons to the VIM editor
that allow easier editing of LAMMPS input scripts. See the README.txt
file for details.
These files were provided by Gerolf Ziegenhain (gerolf at
ziegenhain.com)
:line
xmovie tool :h4,link(xmovie)
The xmovie tool is an X-based visualization package that can read
LAMMPS dump files and animate them. It is in its own sub-directory
with the tools directory. You may need to modify its Makefile so that
it can find the appropriate X libraries to link against.
The syntax for running xmovie is
xmovie [options] dump.file1 dump.file2 ... :pre
If you just type "xmovie" you will see a list of options. Note that
by default, LAMMPS dump files are in scaled coordinates, so you
typically need to use the -scale option with xmovie. When xmovie runs
it opens a visualization window and a control window. The control
options are straightforward to use.
Xmovie was mostly written by Mike Uttormark (U Wisconsin) while he
spent a summer at Sandia. It displays 2d projections of a 3d domain.
While simple in design, it is an amazingly fast program that can
render large numbers of atoms very quickly. It's a useful tool for
debugging LAMMPS input and output and making sure your simulation is
doing what you think it should. The animations on the Examples page
of the "LAMMPS WWW site"_lws were created with xmovie.
I've lost contact with Mike, so I hope he's comfortable with us
distributing his great tool!
diff --git a/doc/angle_charmm.html b/doc/angle_charmm.html
index 116098fa5..2b3dddbfe 100644
--- a/doc/angle_charmm.html
+++ b/doc/angle_charmm.html
@@ -1,68 +1,68 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style charmm command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style charmm
</PRE>
<P><B>Examples:</B>
</P>
<PRE>angle_style charmm
angle_coeff 1 300.0 107.0 50.0 3.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>charmm</I> angle style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/angle_charmm.jpg">
</CENTER>
<P>with an additional Urey_Bradley term based on the distance <I>r</I> between
the 1st and 3rd atoms in the angle. K, theta0, Kub, and Rub are
coefficients defined for each angle type.
</P>
<P>See <A HREF = "#MacKerell">(MacKerell)</A> for a description of the CHARMM force
field.
</P>
<P>The following coefficients must be defined for each angle type via the
<A HREF = "angle_coeff.html">angle_coeff</A> command as in the example 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:
</P>
<UL><LI>K (energy/radian^2)
<LI>theta0 (degrees)
<LI>K_ub (energy/distance^2)
<LI>r_ub (distance)
</UL>
<P>Theta0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of K are in energy/radian^2.
</P>
<P><B>Restrictions:</B>
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "MacKerell"></A>
<P><B>(MacKerell)</B> MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
</P>
</HTML>
diff --git a/doc/angle_charmm.txt b/doc/angle_charmm.txt
index e1356cb06..a3e06ffd6 100644
--- a/doc/angle_charmm.txt
+++ b/doc/angle_charmm.txt
@@ -1,62 +1,62 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style charmm command :h3
[Syntax:]
angle_style charmm :pre
[Examples:]
angle_style charmm
angle_coeff 1 300.0 107.0 50.0 3.0 :pre
[Description:]
The {charmm} angle style uses the potential
:c,image(Eqs/angle_charmm.jpg)
with an additional Urey_Bradley term based on the distance {r} between
the 1st and 3rd atoms in the angle. K, theta0, Kub, and Rub are
coefficients defined for each angle type.
See "(MacKerell)"_#MacKerell for a description of the CHARMM force
field.
The following coefficients must be defined for each angle type via the
"angle_coeff"_angle_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K (energy/radian^2)
theta0 (degrees)
K_ub (energy/distance^2)
r_ub (distance) :ul
Theta0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of K are in energy/radian^2.
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"angle_coeff"_angle_coeff.html
[Default:] none
:line
:link(MacKerell)
[(MacKerell)] MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
diff --git a/doc/angle_class2.html b/doc/angle_class2.html
index b96f490e6..65e552342 100644
--- a/doc/angle_class2.html
+++ b/doc/angle_class2.html
@@ -1,99 +1,99 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style class2 command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style class2
</PRE>
<P><B>Examples:</B>
</P>
<PRE>angle_style class2
angle_coeff * 75.0
angle_coeff 1 bb 10.5872 1.0119 1.5228
angle_coeff * ba 3.6551 24.895 1.0119 1.5228
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>class2</I> angle style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/angle_class2.jpg">
</CENTER>
<P>where Ea is the angle term, Ebb is a bond-bond term, and Eba is a
bond-angle term. Theta0 is the equilibrium angle and r1 and r2 are
the equilibrium bond lengths.
</P>
<P>See <A HREF = "#Sun">(Sun)</A> for a description of the COMPASS class2 force field.
</P>
<P>Coefficients for the Ea, Ebb, and Eba formulas must be defined for
each angle type via the <A HREF = "bond_coeff.html">bond_coeff</A> command as in the
example 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.
</P>
<P>These are the 4 coefficients for the Ea formula:
</P>
<UL><LI>theta0 (degrees)
<LI>K2 (energy/radian^2)
<LI>K3 (energy/radian^3)
<LI>K4 (energy/radian^4)
</UL>
<P>Theta0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of the various K are in per-radian.
</P>
<P>For the Ebb formula, each line in a <A HREF = "bond_coeff.html">bond_coeff</A>
command in the input script lists 4 coefficients, the first of which
is "bb" to indicate they are BondBond coefficients. In a data file,
these coefficients should be listed under a "BondBond Coeffs" heading
and you must leave out the "bb", i.e. only list 3 coefficients after
the angle type.
</P>
<UL><LI>bb
<LI>M (energy/distance^2)
<LI>r1 (distance)
<LI>r2 (distance)
</UL>
<P>For the Eba formula, each line in a <A HREF = "bond_coeff.html">bond_coeff</A>
command in the input script lists 5 coefficients, the first of which
is "ba" to indicate they are BondAngle coefficients. In a data file,
these coefficients should be listed under a "BondAngle Coeffs" heading
and you must leave out the "ba", i.e. only list 4 coefficients after
the angle type.
</P>
<UL><LI>ba
<LI>N1 (energy/distance^2)
<LI>N2 (energy/distance^2)
<LI>r1 (distance)
<LI>r2 (distance)
</UL>
<P>The theta0 value in the Eba formula is not specified, since it is the
same value from the Ea formula.
</P>
<P><B>Restrictions:</B>
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"class2" package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+"class2" package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A>
section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Sun"></A>
<P><B>(Sun)</B> Sun, J Phys Chem B 102, 7338-7364 (1998).
</P>
</HTML>
diff --git a/doc/angle_class2.txt b/doc/angle_class2.txt
index 25719ceff..b63ea798b 100644
--- a/doc/angle_class2.txt
+++ b/doc/angle_class2.txt
@@ -1,93 +1,93 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style class2 command :h3
[Syntax:]
angle_style class2 :pre
[Examples:]
angle_style class2
angle_coeff * 75.0
angle_coeff 1 bb 10.5872 1.0119 1.5228
angle_coeff * ba 3.6551 24.895 1.0119 1.5228 :pre
[Description:]
The {class2} angle style uses the potential
:c,image(Eqs/angle_class2.jpg)
where Ea is the angle term, Ebb is a bond-bond term, and Eba is a
bond-angle term. Theta0 is the equilibrium angle and r1 and r2 are
the equilibrium bond lengths.
See "(Sun)"_#Sun for a description of the COMPASS class2 force field.
Coefficients for the Ea, Ebb, and Eba formulas must be defined for
each angle type via the "bond_coeff"_bond_coeff.html command as in the
example above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands.
These are the 4 coefficients for the Ea formula:
theta0 (degrees)
K2 (energy/radian^2)
K3 (energy/radian^3)
K4 (energy/radian^4) :ul
Theta0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of the various K are in per-radian.
For the Ebb formula, each line in a "bond_coeff"_bond_coeff.html
command in the input script lists 4 coefficients, the first of which
is "bb" to indicate they are BondBond coefficients. In a data file,
these coefficients should be listed under a "BondBond Coeffs" heading
and you must leave out the "bb", i.e. only list 3 coefficients after
the angle type.
bb
M (energy/distance^2)
r1 (distance)
r2 (distance) :ul
For the Eba formula, each line in a "bond_coeff"_bond_coeff.html
command in the input script lists 5 coefficients, the first of which
is "ba" to indicate they are BondAngle coefficients. In a data file,
these coefficients should be listed under a "BondAngle Coeffs" heading
and you must leave out the "ba", i.e. only list 4 coefficients after
the angle type.
ba
N1 (energy/distance^2)
N2 (energy/distance^2)
r1 (distance)
r2 (distance) :ul
The theta0 value in the Eba formula is not specified, since it is the
same value from the Ea formula.
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
-"class2" package. See the "Making LAMMPS"_Section_start.html#2_3
+"class2" package. See the "Making LAMMPS"_Section_start.html#start_3
section for more info on packages.
[Related commands:]
"angle_coeff"_angle_coeff.html
[Default:] none
:line
:link(Sun)
[(Sun)] Sun, J Phys Chem B 102, 7338-7364 (1998).
diff --git a/doc/angle_cmm.html b/doc/angle_cmm.html
index d994d98a6..cdb93122f 100644
--- a/doc/angle_cmm.html
+++ b/doc/angle_cmm.html
@@ -1,65 +1,65 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style cg/cmm command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style cg/cmm
</PRE>
<P><B>Examples:</B>
</P>
<PRE>angle_style cg/cmm
angle_coeff 1 300.0 107.0 lj9_6 0.4491 3.7130
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>cg/cmm</I> angle style is a combination of the harmonic angle potential,
</P>
<CENTER><IMG SRC = "Eqs/angle_harmonic.jpg">
</CENTER>
<P>where theta0 is the equilibrium value of the angle and K a prefactor,
with the <I>repulsive</I> part of the non-bonded <I>cg/cmm</I> pair style
between the atoms 1 and 3. This angle potential is intended for
coarse grained MD simulations with the CMM parametrization using the
<A HREF = "pair_cmm.html">pair_style cg/cmm</A>. Relative to the pair_style
<I>cg/cmm</I>, however, the energy is shifted by <I>epsilon</I>, to avoid sudden
jumps. Note that the usual 1/2 factor is included in K.
</P>
<P>The following coefficients must be defined for each angle type via the
<A HREF = "angle_coeff.html">angle_coeff</A> command as in the example above. As
with other CMM coarse grained parameters, they cannot be set in the
data file, but can be restored from restarts via the
<A HREF = "read_restart.html">read_restart</A> command:
</P>
<UL><LI>K (energy/radian^2)
<LI>theta0 (degrees)
<LI>cg_type (string, one of lj9_6, lj12_4, lj12_6)
<LI>epsilon (energy units)
<LI>sigma (distance units)
</UL>
<P>Theta0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of K are in energy/radian^2.
</P>
<P><B>Restrictions:</B>
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"user-cg-cmm" package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section
-for more info on packages.
+"user-cg-cmm" package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>, <A HREF = "angle_harmonic.html">angle_style
harmonic</A>, <A HREF = "pair_cmm.html">pair_style cg/cmm</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/angle_cmm.txt b/doc/angle_cmm.txt
index 69eaa1dbe..bbedf8b0e 100644
--- a/doc/angle_cmm.txt
+++ b/doc/angle_cmm.txt
@@ -1,60 +1,60 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style cg/cmm command :h3
[Syntax:]
angle_style cg/cmm :pre
[Examples:]
angle_style cg/cmm
angle_coeff 1 300.0 107.0 lj9_6 0.4491 3.7130 :pre
[Description:]
The {cg/cmm} angle style is a combination of the harmonic angle potential,
:c,image(Eqs/angle_harmonic.jpg)
where theta0 is the equilibrium value of the angle and K a prefactor,
with the {repulsive} part of the non-bonded {cg/cmm} pair style
between the atoms 1 and 3. This angle potential is intended for
coarse grained MD simulations with the CMM parametrization using the
"pair_style cg/cmm"_pair_cmm.html. Relative to the pair_style
{cg/cmm}, however, the energy is shifted by {epsilon}, to avoid sudden
jumps. Note that the usual 1/2 factor is included in K.
The following coefficients must be defined for each angle type via the
"angle_coeff"_angle_coeff.html command as in the example above. As
with other CMM coarse grained parameters, they cannot be set in the
data file, but can be restored from restarts via the
"read_restart"_read_restart.html command:
K (energy/radian^2)
theta0 (degrees)
cg_type (string, one of lj9_6, lj12_4, lj12_6)
epsilon (energy units)
sigma (distance units) :ul
Theta0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of K are in energy/radian^2.
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
-"user-cg-cmm" package. See the "Making LAMMPS"_Section_start.html#2_3 section
-for more info on packages.
+"user-cg-cmm" package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"angle_coeff"_angle_coeff.html, "angle_style
harmonic"_angle_harmonic.html, "pair_style cg/cmm"_pair_cmm.html
[Default:] none
diff --git a/doc/angle_coeff.html b/doc/angle_coeff.html
index 942ba500a..a49967155 100644
--- a/doc/angle_coeff.html
+++ b/doc/angle_coeff.html
@@ -1,104 +1,104 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_coeff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_coeff N args
</PRE>
<UL><LI>N = angle type (see asterisk form below)
<LI>args = coefficients for one or more angle types
</UL>
<P><B>Examples:</B>
</P>
<PRE>angle_coeff 1 300.0 107.0
angle_coeff * 5.0
angle_coeff 2*10 5.0
</PRE>
<P><B>Description:</B>
</P>
<P>Specify the angle force field coefficients for one or more angle types.
The number and meaning of the coefficients depends on the angle style.
Angle coefficients can also be set in the data file read by the
<A HREF = "read_data.html">read_data</A> command or in a restart file.
</P>
<P>N can be specified in one of two ways. An explicit numeric value can
be used, as in the 1st example above. Or a wild-card asterisk can be
used to set the coefficients for multiple angle types. This takes the
form "*" or "*n" or "n*" or "m*n". If N = the number of angle 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>Note that using an angle_coeff command can override a previous setting
for the same angle type. For example, these commands set the coeffs
for all angle types, then overwrite the coeffs for just angle type 2:
</P>
<PRE>angle_coeff * 200.0 107.0 1.2
angle_coeff 2 50.0 107.0
</PRE>
<P>A line in a data file that specifies angle coefficients uses the exact
same format as the arguments of the angle_coeff command in an input
script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example,
under the "Angle Coeffs" section of a data file, the line that
corresponds to the 1st example above would be listed as
</P>
<PRE>1 300.0 107.0
</PRE>
<P>The <A HREF = "angle_class2.html">angle_style class2</A> is an exception to this
rule, in that an additional argument is used in the input script to
allow specification of the cross-term coefficients. See its
doc page for details.
</P>
<HR>
<P>Here is an alphabetic list of angle styles defined in LAMMPS. Click on
the style to display the formula it computes and coefficients
specified by the associated <A HREF = "angle_coeff.html">angle_coeff</A> command:
</P>
<UL><LI><A HREF = "angle_none.html">angle_style none</A> - turn off angle interactions
<LI><A HREF = "angle_hybrid.html">angle_style hybrid</A> - define multiple styles of angle interactions
</UL>
<UL><LI><A HREF = "angle_charmm.html">angle_style charmm</A> - CHARMM angle
<LI><A HREF = "angle_class2.html">angle_style class2</A> - COMPASS (class 2) angle
<LI><A HREF = "angle_cosine.html">angle_style cosine</A> - cosine angle potential
<LI><A HREF = "angle_cosine_delta.html">angle_style cosine/delta</A> - difference of cosines angle potential
<LI><A HREF = "angle_cosine_periodic.html">angle_style cosine/periodic</A> - DREIDING angle
<LI><A HREF = "angle_cosine_squared.html">angle_style cosine/squared</A> - cosine squared angle potential
<LI><A HREF = "angle_harmonic.html">angle_style harmonic</A> - harmonic angle
<LI><A HREF = "angle_table.html">angle_style table</A> - tabulated by angle
</UL>
<P>There are also additional angle 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 angle section of <A HREF = "Section_commands.html#3_5">this
+the individual styles are given in the angle section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command must come after the simulation box is defined by 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>An angle style must be defined before any angle coefficients are
set, either in the input script or in a data file.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_style.html">angle_style</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/angle_coeff.txt b/doc/angle_coeff.txt
index 08ed66db2..091ebb4e4 100644
--- a/doc/angle_coeff.txt
+++ b/doc/angle_coeff.txt
@@ -1,99 +1,99 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_coeff command :h3
[Syntax:]
angle_coeff N args :pre
N = angle type (see asterisk form below)
args = coefficients for one or more angle types :ul
[Examples:]
angle_coeff 1 300.0 107.0
angle_coeff * 5.0
angle_coeff 2*10 5.0 :pre
[Description:]
Specify the angle force field coefficients for one or more angle types.
The number and meaning of the coefficients depends on the angle style.
Angle coefficients can also be set in the data file read by the
"read_data"_read_data.html command or in a restart file.
N can be specified in one of two ways. An explicit numeric value can
be used, as in the 1st example above. Or a wild-card asterisk can be
used to set the coefficients for multiple angle types. This takes the
form "*" or "*n" or "n*" or "m*n". If N = the number of angle 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).
Note that using an angle_coeff command can override a previous setting
for the same angle type. For example, these commands set the coeffs
for all angle types, then overwrite the coeffs for just angle type 2:
angle_coeff * 200.0 107.0 1.2
angle_coeff 2 50.0 107.0 :pre
A line in a data file that specifies angle coefficients uses the exact
same format as the arguments of the angle_coeff command in an input
script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example,
under the "Angle Coeffs" section of a data file, the line that
corresponds to the 1st example above would be listed as
1 300.0 107.0 :pre
The "angle_style class2"_angle_class2.html is an exception to this
rule, in that an additional argument is used in the input script to
allow specification of the cross-term coefficients. See its
doc page for details.
:line
Here is an alphabetic list of angle styles defined in LAMMPS. Click on
the style to display the formula it computes and coefficients
specified by the associated "angle_coeff"_angle_coeff.html command:
"angle_style none"_angle_none.html - turn off angle interactions
"angle_style hybrid"_angle_hybrid.html - define multiple styles of angle interactions :ul
"angle_style charmm"_angle_charmm.html - CHARMM angle
"angle_style class2"_angle_class2.html - COMPASS (class 2) angle
"angle_style cosine"_angle_cosine.html - cosine angle potential
"angle_style cosine/delta"_angle_cosine_delta.html - difference of cosines angle potential
"angle_style cosine/periodic"_angle_cosine_periodic.html - DREIDING angle
"angle_style cosine/squared"_angle_cosine_squared.html - cosine squared angle potential
"angle_style harmonic"_angle_harmonic.html - harmonic angle
"angle_style table"_angle_table.html - tabulated by angle :ul
There are also additional angle 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 angle section of "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
:line
[Restrictions:]
This command must come after the simulation box is defined by a
"read_data"_read_data.html, "read_restart"_read_restart.html, or
"create_box"_create_box.html command.
An angle style must be defined before any angle coefficients are
set, either in the input script or in a data file.
[Related commands:]
"angle_style"_angle_style.html
[Default:] none
diff --git a/doc/angle_cosine.html b/doc/angle_cosine.html
index ebd6df223..c4075bd91 100644
--- a/doc/angle_cosine.html
+++ b/doc/angle_cosine.html
@@ -1,50 +1,50 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style cosine command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style cosine
</PRE>
<P><B>Examples:</B>
</P>
<PRE>angle_style cosine
angle_coeff * 75.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>cosine</I> angle style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/angle_cosine.jpg">
</CENTER>
<P>where K is defined for each angle type.
</P>
<P>The following coefficients must be defined for each angle type via the
<A HREF = "angle_coeff.html">angle_coeff</A> command as in the example 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:
</P>
<UL><LI>K (energy)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/angle_cosine.txt b/doc/angle_cosine.txt
index 4c6cef912..19d4fedd8 100644
--- a/doc/angle_cosine.txt
+++ b/doc/angle_cosine.txt
@@ -1,45 +1,45 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style cosine command :h3
[Syntax:]
angle_style cosine :pre
[Examples:]
angle_style cosine
angle_coeff * 75.0 :pre
[Description:]
The {cosine} angle style uses the potential
:c,image(Eqs/angle_cosine.jpg)
where K is defined for each angle type.
The following coefficients must be defined for each angle type via the
"angle_coeff"_angle_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K (energy) :ul
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"angle_coeff"_angle_coeff.html
[Default:] none
diff --git a/doc/angle_cosine_delta.html b/doc/angle_cosine_delta.html
index 354c684fc..22927d7a9 100644
--- a/doc/angle_cosine_delta.html
+++ b/doc/angle_cosine_delta.html
@@ -1,56 +1,56 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style cosine/delta command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style cosine/delta
</PRE>
<P><B>Examples:</B>
</P>
<PRE>angle_style cosine/delta
angle_coeff 2*4 75.0 100.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>cosine/delta</I> angle style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/angle_cosine_delta.jpg">
</CENTER>
<P>where theta0 is the equilibrium value of the angle, and K is a
prefactor. Note that the usual 1/2 factor is included in K.
</P>
<P>The following coefficients must be defined for each angle type via the
<A HREF = "angle_coeff.html">angle_coeff</A> command as in the example 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:
</P>
<UL><LI>K (energy)
<LI>theta0 (degrees)
</UL>
<P>Theta0 is specified in degrees, but LAMMPS converts it to radians
internally.
</P>
<P><B>Restrictions:</B>
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>, <A HREF = "angle_cosine_squared.html">angle_style
cosine/squared</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/angle_cosine_delta.txt b/doc/angle_cosine_delta.txt
index afa431690..95c7da3a8 100644
--- a/doc/angle_cosine_delta.txt
+++ b/doc/angle_cosine_delta.txt
@@ -1,51 +1,51 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style cosine/delta command :h3
[Syntax:]
angle_style cosine/delta :pre
[Examples:]
angle_style cosine/delta
angle_coeff 2*4 75.0 100.0 :pre
[Description:]
The {cosine/delta} angle style uses the potential
:c,image(Eqs/angle_cosine_delta.jpg)
where theta0 is the equilibrium value of the angle, and K is a
prefactor. Note that the usual 1/2 factor is included in K.
The following coefficients must be defined for each angle type via the
"angle_coeff"_angle_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K (energy)
theta0 (degrees) :ul
Theta0 is specified in degrees, but LAMMPS converts it to radians
internally.
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"angle_coeff"_angle_coeff.html, "angle_style
cosine/squared"_angle_cosine_squared.html
[Default:] none
diff --git a/doc/angle_cosine_periodic.html b/doc/angle_cosine_periodic.html
index e8b3d464b..b5d316fc2 100644
--- a/doc/angle_cosine_periodic.html
+++ b/doc/angle_cosine_periodic.html
@@ -1,70 +1,70 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style cosine/periodic command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style cosine/periodic
</PRE>
<P><B>Examples:</B>
</P>
<PRE>angle_style cosine/periodic
angle_coeff * 75.0 1 6
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>cosine/periodic</I> angle style uses the following potential, which
-is commonly used in the <A HREF = "Section_howto.html#4_4">DREIDING</A> force field,
-particularly for organometallic systems where <I>n</I> = 4 might be used
-for an octahedral complex and <I>n</I> = 3 might be used for a trigonal
-center:
+is commonly used in the <A HREF = "Section_howto.html#howto_4">DREIDING</A> force
+field, particularly for organometallic systems where <I>n</I> = 4 might be
+used for an octahedral complex and <I>n</I> = 3 might be used for a
+trigonal center:
</P>
<CENTER><IMG SRC = "Eqs/angle_cosine_periodic.jpg">
</CENTER>
<P>where C, B and n are coefficients defined for each angle type.
</P>
<P>See <A HREF = "#Mayo">(Mayo)</A> for a description of the DREIDING force field
</P>
<P>The following coefficients must be defined for each angle type via the
<A HREF = "angle_coeff.html">angle_coeff</A> command as in the example 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:
</P>
<UL><LI>C (energy)
<LI>B = 1 or -1
<LI>n = 1, 2, 3, 4, 5 or 6 for periodicity
</UL>
<P>Note that the prefactor C is specified and not the overall force
constant K = C / n^2. When B = 1, it leads to a minimum for the
linear geometry. When B = -1, it leads to a maximum for the linear
geometry.
</P>
<P><B>Restrictions:</B>
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Mayo"></A>
<P><B>(Mayo)</B> Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990).
</P>
</HTML>
diff --git a/doc/angle_cosine_periodic.txt b/doc/angle_cosine_periodic.txt
index 63a8fc52c..024c914ad 100644
--- a/doc/angle_cosine_periodic.txt
+++ b/doc/angle_cosine_periodic.txt
@@ -1,64 +1,64 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style cosine/periodic command :h3
[Syntax:]
angle_style cosine/periodic :pre
[Examples:]
angle_style cosine/periodic
angle_coeff * 75.0 1 6 :pre
[Description:]
The {cosine/periodic} angle style uses the following potential, which
-is commonly used in the "DREIDING"_Section_howto.html#4_4 force field,
-particularly for organometallic systems where {n} = 4 might be used
-for an octahedral complex and {n} = 3 might be used for a trigonal
-center:
+is commonly used in the "DREIDING"_Section_howto.html#howto_4 force
+field, particularly for organometallic systems where {n} = 4 might be
+used for an octahedral complex and {n} = 3 might be used for a
+trigonal center:
:c,image(Eqs/angle_cosine_periodic.jpg)
where C, B and n are coefficients defined for each angle type.
See "(Mayo)"_#Mayo for a description of the DREIDING force field
The following coefficients must be defined for each angle type via the
"angle_coeff"_angle_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
C (energy)
B = 1 or -1
n = 1, 2, 3, 4, 5 or 6 for periodicity :ul
Note that the prefactor C is specified and not the overall force
constant K = C / n^2. When B = 1, it leads to a minimum for the
linear geometry. When B = -1, it leads to a maximum for the linear
geometry.
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"angle_coeff"_angle_coeff.html
[Default:] none
:line
:link(Mayo)
[(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990).
diff --git a/doc/angle_cosine_shift.html b/doc/angle_cosine_shift.html
index e65438735..7ddfdd924 100644
--- a/doc/angle_cosine_shift.html
+++ b/doc/angle_cosine_shift.html
@@ -1,54 +1,54 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style cosine/shift command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style cosine/shift
</PRE>
<P><B>Examples:</B>
</P>
<PRE>angle_style cosine/shift
angle_coeff * 10.0 45.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>cosine/shift</I> angle style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/angle_cosine_shift.jpg">
</CENTER>
<P>where theta0 is the equilibrium angle. The potential is bounded
between -Umin and zero. In the neighborhood of the minimum E=- Umin +
Umin/4(theta-theta0)^2 hence the spring constant is umin/2.
</P>
<P>The following coefficients must be defined for each angle type via the
<A HREF = "angle_coeff.html">angle_coeff</A> command as in the example 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:
</P>
<UL><LI>umin (energy)
<LI>theta (angle)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"user-misc" package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
-section for more info on packages.
+"user-misc" package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>,
<A HREF = "angle_cosineshiftexp.html">angle_cosineshiftexp</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/angle_cosine_shift.txt b/doc/angle_cosine_shift.txt
index e3e9c0c9d..e17813bc2 100644
--- a/doc/angle_cosine_shift.txt
+++ b/doc/angle_cosine_shift.txt
@@ -1,49 +1,49 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style cosine/shift command :h3
[Syntax:]
angle_style cosine/shift :pre
[Examples:]
angle_style cosine/shift
angle_coeff * 10.0 45.0 :pre
[Description:]
The {cosine/shift} angle style uses the potential
:c,image(Eqs/angle_cosine_shift.jpg)
where theta0 is the equilibrium angle. The potential is bounded
between -Umin and zero. In the neighborhood of the minimum E=- Umin +
Umin/4(theta-theta0)^2 hence the spring constant is umin/2.
The following coefficients must be defined for each angle type via the
"angle_coeff"_angle_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
umin (energy)
theta (angle) :ul
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
-"user-misc" package. See the "Making LAMMPS"_Section_start.html#2_3
-section for more info on packages.
+"user-misc" package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"angle_coeff"_angle_coeff.html,
"angle_cosineshiftexp"_angle_cosineshiftexp.html
[Default:] none
diff --git a/doc/angle_cosine_shift_exp.html b/doc/angle_cosine_shift_exp.html
index fd3e084d7..cd4dea4ce 100644
--- a/doc/angle_cosine_shift_exp.html
+++ b/doc/angle_cosine_shift_exp.html
@@ -1,67 +1,67 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style cosine/shift/exp command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style cosine/shift/exp
</PRE>
<P><B>Examples:</B>
</P>
<PRE>angle_style cosine/shift/exp
angle_coeff * 10.0 45.0 2.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>cosine/shift/exp</I> angle style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/angle_cosine_shift_exp.jpg">
</CENTER>
<P>where Umin, theta, and a are defined for each angle type.
</P>
<P>The potential is bounded between [-Umin:0] and the minimum is
located at the angle theta0. The a parameter can be both positive or
negative and is used to control the spring constant at the
equilibrium.
</P>
<P>The spring constant is given by k = A exp(A) Umin / [2 (Exp(a)-1)].
For a > 3, k/Umin = a/2 to better than 5% relative error. For negative
values of the a parameter, the spring constant is essentially zero,
and anharmonic terms takes over. The potential is furthermore well
behaved in the limit a -> 0, where it has been implemented to linear
order in a for a < 0.001. In this limit the potential reduces to the
cosineshifted potential.
</P>
<P>The following coefficients must be defined for each angle type via the
<A HREF = "angle_coeff.html">angle_coeff</A> command as in the example 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:
</P>
<UL><LI>umin (energy)
<LI>theta (angle)
<LI>A (real number)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"user-misc" package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
-section for more info on packages.
+"user-misc" package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>,
<A HREF = "angle_cosineshift.html">angle_cosineshift</A>,
<A HREF = "dihedral_cosineshift.html">dihedral_cosineshift</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/angle_cosine_shift_exp.txt b/doc/angle_cosine_shift_exp.txt
index 10b868457..9e52466d6 100644
--- a/doc/angle_cosine_shift_exp.txt
+++ b/doc/angle_cosine_shift_exp.txt
@@ -1,62 +1,62 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style cosine/shift/exp command :h3
[Syntax:]
angle_style cosine/shift/exp :pre
[Examples:]
angle_style cosine/shift/exp
angle_coeff * 10.0 45.0 2.0 :pre
[Description:]
The {cosine/shift/exp} angle style uses the potential
:c,image(Eqs/angle_cosine_shift_exp.jpg)
where Umin, theta, and a are defined for each angle type.
The potential is bounded between \[-Umin:0\] and the minimum is
located at the angle theta0. The a parameter can be both positive or
negative and is used to control the spring constant at the
equilibrium.
The spring constant is given by k = A exp(A) Umin / \[2 (Exp(a)-1)\].
For a > 3, k/Umin = a/2 to better than 5% relative error. For negative
values of the a parameter, the spring constant is essentially zero,
and anharmonic terms takes over. The potential is furthermore well
behaved in the limit a -> 0, where it has been implemented to linear
order in a for a < 0.001. In this limit the potential reduces to the
cosineshifted potential.
The following coefficients must be defined for each angle type via the
"angle_coeff"_angle_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
umin (energy)
theta (angle)
A (real number) :ul
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
-"user-misc" package. See the "Making LAMMPS"_Section_start.html#2_3
-section for more info on packages.
+"user-misc" package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"angle_coeff"_angle_coeff.html,
"angle_cosineshift"_angle_cosineshift.html,
"dihedral_cosineshift"_dihedral_cosineshift.html
[Default:] none
diff --git a/doc/angle_cosine_squared.html b/doc/angle_cosine_squared.html
index 333b6469c..01b669567 100644
--- a/doc/angle_cosine_squared.html
+++ b/doc/angle_cosine_squared.html
@@ -1,55 +1,55 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style cosine/squared command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style cosine/squared
</PRE>
<P><B>Examples:</B>
</P>
<PRE>angle_style cosine/squared
angle_coeff 2*4 75.0 100.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>cosine/squared</I> angle style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/angle_cosine_squared.jpg">
</CENTER>
<P>where theta0 is the equilibrium value of the angle, and K is a
prefactor. Note that the usual 1/2 factor is included in K.
</P>
<P>The following coefficients must be defined for each angle type via the
<A HREF = "angle_coeff.html">angle_coeff</A> command as in the example 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:
</P>
<UL><LI>K (energy)
<LI>theta0 (degrees)
</UL>
<P>Theta0 is specified in degrees, but LAMMPS converts it to radians
internally.
</P>
<P><B>Restrictions:</B>
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/angle_cosine_squared.txt b/doc/angle_cosine_squared.txt
index d39623ed3..edfbfb87c 100644
--- a/doc/angle_cosine_squared.txt
+++ b/doc/angle_cosine_squared.txt
@@ -1,50 +1,50 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style cosine/squared command :h3
[Syntax:]
angle_style cosine/squared :pre
[Examples:]
angle_style cosine/squared
angle_coeff 2*4 75.0 100.0 :pre
[Description:]
The {cosine/squared} angle style uses the potential
:c,image(Eqs/angle_cosine_squared.jpg)
where theta0 is the equilibrium value of the angle, and K is a
prefactor. Note that the usual 1/2 factor is included in K.
The following coefficients must be defined for each angle type via the
"angle_coeff"_angle_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K (energy)
theta0 (degrees) :ul
Theta0 is specified in degrees, but LAMMPS converts it to radians
internally.
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"angle_coeff"_angle_coeff.html
[Default:] none
diff --git a/doc/angle_harmonic.html b/doc/angle_harmonic.html
index d8691f63d..c346de08e 100644
--- a/doc/angle_harmonic.html
+++ b/doc/angle_harmonic.html
@@ -1,55 +1,55 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style harmonic command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style harmonic
</PRE>
<P><B>Examples:</B>
</P>
<PRE>angle_style harmonic
angle_coeff 1 300.0 107.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>harmonic</I> angle style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/angle_harmonic.jpg">
</CENTER>
<P>where theta0 is the equilibrium value of the angle, and K is a
prefactor. Note that the usual 1/2 factor is included in K.
</P>
<P>The following coefficients must be defined for each angle type via the
<A HREF = "angle_coeff.html">angle_coeff</A> command as in the example 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:
</P>
<UL><LI>K (energy/radian^2)
<LI>theta0 (degrees)
</UL>
<P>Theta0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of K are in energy/radian^2.
</P>
<P><B>Restrictions:</B> none
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/angle_harmonic.txt b/doc/angle_harmonic.txt
index dc98882ee..99c3065c4 100644
--- a/doc/angle_harmonic.txt
+++ b/doc/angle_harmonic.txt
@@ -1,50 +1,50 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style harmonic command :h3
[Syntax:]
angle_style harmonic :pre
[Examples:]
angle_style harmonic
angle_coeff 1 300.0 107.0 :pre
[Description:]
The {harmonic} angle style uses the potential
:c,image(Eqs/angle_harmonic.jpg)
where theta0 is the equilibrium value of the angle, and K is a
prefactor. Note that the usual 1/2 factor is included in K.
The following coefficients must be defined for each angle type via the
"angle_coeff"_angle_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K (energy/radian^2)
theta0 (degrees) :ul
Theta0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of K are in energy/radian^2.
[Restrictions:] none
This angle style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"angle_coeff"_angle_coeff.html
[Default:] none
diff --git a/doc/angle_hybrid.html b/doc/angle_hybrid.html
index ac174da11..5e0bd97c1 100644
--- a/doc/angle_hybrid.html
+++ b/doc/angle_hybrid.html
@@ -1,94 +1,94 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style hybrid command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style hybrid style1 style2 ...
</PRE>
<UL><LI>style1,style2 = list of one or more angle styles
</UL>
<P><B>Examples:</B>
</P>
<PRE>angle_style hybrid harmonic cosine
angle_coeff 1 harmonic 80.0 30.0
angle_coeff 2* cosine 50.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>hybrid</I> style enables the use of multiple angle styles in one
simulation. An angle style is assigned to each angle type. For
example, angles in a polymer flow (of angle type 1) could be computed
with a <I>harmonic</I> potential and angles in the wall boundary (of angle
type 2) could be computed with a <I>cosine</I> potential. The assignment
of angle type to style is made via the <A HREF = "angle_coeff.html">angle_coeff</A>
command or in the data file.
</P>
<P>In the angle_coeff commands, the name of an angle style must be added
after the angle type, with the remaining coefficients being those
appropriate to that style. In the example above, the 2 angle_coeff
commands set angles of angle type 1 to be computed with a <I>harmonic</I>
potential with coefficients 80.0, 30.0 for K, theta0. All other angle
types (2-N) are computed with a <I>cosine</I> potential with coefficient
50.0 for K.
</P>
<P>If angle coefficients are specified in the data file read via the
<A HREF = "read_data.html">read_data</A> command, then the same rule applies.
E.g. "harmonic" or "cosine", must be added after the angle type, for each
line in the "Angle Coeffs" section, e.g.
</P>
<PRE>Angle Coeffs
</PRE>
<PRE>1 harmonic 80.0 30.0
2 cosine 50.0
...
</PRE>
<P>If <I>class2</I> is one of the angle hybrid styles, the same rule holds for
specifying additional BondBond (and BondAngle) coefficients either via
the input script or in the data file. I.e. <I>class2</I> must be added to
each line after the angle type. For lines in the BondBond (or
BondAngle) section of the data file for angle types that are not
<I>class2</I>, you must use an angle style of <I>skip</I> as a placeholder, e.g.
</P>
<PRE>BondBond Coeffs
</PRE>
<PRE>1 skip
2 class2 3.6512 1.0119 1.0119
...
</PRE>
<P>Note that it is not necessary to use the angle style <I>skip</I> in the
input script, since BondBond (or BondAngle) coefficients need not be
specified at all for angle types that are not <I>class2</I>.
</P>
<P>An angle style of <I>none</I> with no additional coefficients can be used
in place of an angle style, either in a input script angle_coeff
command or in the data file, if you desire to turn off interactions
for specific angle types.
</P>
<P><B>Restrictions:</B>
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P>Unlike other angle styles, the hybrid angle style does not store angle
coefficient info for individual sub-styles in a <A HREF = "restart.html">binary restart
files</A>. Thus when retarting a simulation from a restart
file, you need to re-specify angle_coeff commands.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/angle_hybrid.txt b/doc/angle_hybrid.txt
index be07715e8..79c776ba6 100644
--- a/doc/angle_hybrid.txt
+++ b/doc/angle_hybrid.txt
@@ -1,89 +1,89 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style hybrid command :h3
[Syntax:]
angle_style hybrid style1 style2 ... :pre
style1,style2 = list of one or more angle styles :ul
[Examples:]
angle_style hybrid harmonic cosine
angle_coeff 1 harmonic 80.0 30.0
angle_coeff 2* cosine 50.0 :pre
[Description:]
The {hybrid} style enables the use of multiple angle styles in one
simulation. An angle style is assigned to each angle type. For
example, angles in a polymer flow (of angle type 1) could be computed
with a {harmonic} potential and angles in the wall boundary (of angle
type 2) could be computed with a {cosine} potential. The assignment
of angle type to style is made via the "angle_coeff"_angle_coeff.html
command or in the data file.
In the angle_coeff commands, the name of an angle style must be added
after the angle type, with the remaining coefficients being those
appropriate to that style. In the example above, the 2 angle_coeff
commands set angles of angle type 1 to be computed with a {harmonic}
potential with coefficients 80.0, 30.0 for K, theta0. All other angle
types (2-N) are computed with a {cosine} potential with coefficient
50.0 for K.
If angle coefficients are specified in the data file read via the
"read_data"_read_data.html command, then the same rule applies.
E.g. "harmonic" or "cosine", must be added after the angle type, for each
line in the "Angle Coeffs" section, e.g.
Angle Coeffs :pre
1 harmonic 80.0 30.0
2 cosine 50.0
... :pre
If {class2} is one of the angle hybrid styles, the same rule holds for
specifying additional BondBond (and BondAngle) coefficients either via
the input script or in the data file. I.e. {class2} must be added to
each line after the angle type. For lines in the BondBond (or
BondAngle) section of the data file for angle types that are not
{class2}, you must use an angle style of {skip} as a placeholder, e.g.
BondBond Coeffs :pre
1 skip
2 class2 3.6512 1.0119 1.0119
... :pre
Note that it is not necessary to use the angle style {skip} in the
input script, since BondBond (or BondAngle) coefficients need not be
specified at all for angle types that are not {class2}.
An angle style of {none} with no additional coefficients can be used
in place of an angle style, either in a input script angle_coeff
command or in the data file, if you desire to turn off interactions
for specific angle types.
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
Unlike other angle styles, the hybrid angle style does not store angle
coefficient info for individual sub-styles in a "binary restart
files"_restart.html. Thus when retarting a simulation from a restart
file, you need to re-specify angle_coeff commands.
[Related commands:]
"angle_coeff"_angle_coeff.html
[Default:] none
diff --git a/doc/angle_style.html b/doc/angle_style.html
index 7ec349b11..3edbe63e2 100644
--- a/doc/angle_style.html
+++ b/doc/angle_style.html
@@ -1,100 +1,100 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style style
</PRE>
<UL><LI>style = <I>none</I> or <I>hybrid</I> or <I>charmm</I> or <I>class2</I> or <I>cosine</I> or <I>cosine/squared</I> or <I>harmonic</I>
</UL>
<P><B>Examples:</B>
</P>
<PRE>angle_style harmonic
angle_style charmm
angle_style hybrid harmonic cosine
</PRE>
<P><B>Description:</B>
</P>
<P>Set the formula(s) LAMMPS uses to compute angle interactions between
triplets of atoms, which remain in force for the duration of the
simulation. The list of angle triplets 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 angles are computed using different angle
potentials can be setup using the <I>hybrid</I> angle style.
</P>
<P>The coefficients associated with a angle style can be specified in a
data or restart file or via the <A HREF = "angle_coeff.html">angle_coeff</A> command.
</P>
<P>All angle potentials store their coefficient data in binary restart
files which means angle_style and <A HREF = "angle_coeff.html">angle_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
angle_style <I>hybrid</I> only stores the list of sub-styles in the restart
file; angle coefficients need to be re-specified.
</P>
<P>IMPORTANT NOTE: When both an angle 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 3 bonded atoms.
</P>
<P>In the formulas listed for each angle style, <I>theta</I> is the angle
between the 3 atoms in the angle.
</P>
<HR>
<P>Here is an alphabetic list of angle styles defined in LAMMPS. Click on
the style to display the formula it computes and coefficients
specified by the associated <A HREF = "angle_coeff.html">angle_coeff</A> command:
</P>
<UL><LI><A HREF = "angle_none.html">angle_style none</A> - turn off angle interactions
<LI><A HREF = "angle_hybrid.html">angle_style hybrid</A> - define multiple styles of angle interactions
</UL>
<UL><LI><A HREF = "angle_charmm.html">angle_style charmm</A> - CHARMM angle
<LI><A HREF = "angle_class2.html">angle_style class2</A> - COMPASS (class 2) angle
<LI><A HREF = "angle_cosine.html">angle_style cosine</A> - cosine angle potential
<LI><A HREF = "angle_cosine_delta.html">angle_style cosine/delta</A> - difference of cosines angle potential
<LI><A HREF = "angle_cosine_periodic.html">angle_style cosine/periodic</A> - DREIDING angle
<LI><A HREF = "angle_cosine_squared.html">angle_style cosine/squared</A> - cosine squared angle potential
<LI><A HREF = "angle_harmonic.html">angle_style harmonic</A> - harmonic angle
<LI><A HREF = "angle_table.html">angle_style table</A> - tabulated by angle
</UL>
<P>There are also additional angle 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 angle section of <A HREF = "Section_commands.html#3_5">this
+the individual styles are given in the angle section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>Angle styles can only be set for atom_styles that allow angles to be
defined.
</P>
<P>Most angle styles are part of the "molecular" package. They are only
-enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
-LAMMPS</A> section for more info on packages. The
-doc pages for individual bond potentials tell if it is part of a
+enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info on packages.
+The doc pages for individual bond potentials tell if it is part of a
package.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>
</P>
<P><B>Default:</B>
</P>
<PRE>angle_style none
</PRE>
</HTML>
diff --git a/doc/angle_style.txt b/doc/angle_style.txt
index aca79433e..e5faffa66 100644
--- a/doc/angle_style.txt
+++ b/doc/angle_style.txt
@@ -1,96 +1,96 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style command :h3
[Syntax:]
angle_style style :pre
style = {none} or {hybrid} or {charmm} or {class2} or {cosine} or \
{cosine/squared} or {harmonic} :ul
[Examples:]
angle_style harmonic
angle_style charmm
angle_style hybrid harmonic cosine :pre
[Description:]
Set the formula(s) LAMMPS uses to compute angle interactions between
triplets of atoms, which remain in force for the duration of the
simulation. The list of angle triplets is read in by a
"read_data"_read_data.html or "read_restart"_read_restart.html command
from a data or restart file.
Hybrid models where angles are computed using different angle
potentials can be setup using the {hybrid} angle style.
The coefficients associated with a angle style can be specified in a
data or restart file or via the "angle_coeff"_angle_coeff.html command.
All angle potentials store their coefficient data in binary restart
files which means angle_style and "angle_coeff"_angle_coeff.html
commands do not need to be re-specified in an input script that
restarts a simulation. See the "read_restart"_read_restart.html
command for details on how to do this. The one exception is that
angle_style {hybrid} only stores the list of sub-styles in the restart
file; angle coefficients need to be re-specified.
IMPORTANT NOTE: When both an angle and pair style is defined, the
"special_bonds"_special_bonds.html command often needs to be used to
turn off (or weight) the pairwise interaction that would otherwise
exist between 3 bonded atoms.
In the formulas listed for each angle style, {theta} is the angle
between the 3 atoms in the angle.
:line
Here is an alphabetic list of angle styles defined in LAMMPS. Click on
the style to display the formula it computes and coefficients
specified by the associated "angle_coeff"_angle_coeff.html command:
"angle_style none"_angle_none.html - turn off angle interactions
"angle_style hybrid"_angle_hybrid.html - define multiple styles of angle interactions :ul
"angle_style charmm"_angle_charmm.html - CHARMM angle
"angle_style class2"_angle_class2.html - COMPASS (class 2) angle
"angle_style cosine"_angle_cosine.html - cosine angle potential
"angle_style cosine/delta"_angle_cosine_delta.html - difference of cosines angle potential
"angle_style cosine/periodic"_angle_cosine_periodic.html - DREIDING angle
"angle_style cosine/squared"_angle_cosine_squared.html - cosine squared angle potential
"angle_style harmonic"_angle_harmonic.html - harmonic angle
"angle_style table"_angle_table.html - tabulated by angle :ul
There are also additional angle 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 angle section of "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
:line
[Restrictions:]
Angle styles can only be set for atom_styles that allow angles to be
defined.
Most angle styles are part of the "molecular" package. They are only
enabled if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages. The
-doc pages for individual bond potentials tell if it is part of a
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
+The doc pages for individual bond potentials tell if it is part of a
package.
[Related commands:]
"angle_coeff"_angle_coeff.html
[Default:]
angle_style none :pre
diff --git a/doc/angle_table.html b/doc/angle_table.html
index 724868350..5592e6cad 100644
--- a/doc/angle_table.html
+++ b/doc/angle_table.html
@@ -1,136 +1,136 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>angle_style table command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>angle_style table style N
</PRE>
<UL><LI>style = <I>linear</I> or <I>spline</I> = method of interpolation
<LI>N = use N values in table
</UL>
<P><B>Examples:</B>
</P>
<PRE>angle_style table linear 1000
angle_coeff 3 file.table ENTRY1
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>table</I> creates interpolation tables of length <I>N</I> from angle
potential and derivative values listed in a file(s) as a function of
angle The files are read by the <A HREF = "angle_coeff.html">angle_coeff</A>
command.
</P>
<P>The interpolation tables are created by fitting cubic splines to the
file values and interpolating energy and derivative values at each of
<I>N</I> angles. During a simulation, these tables are used to interpolate
energy and force values on individual atoms as needed. The
interpolation is done in one of 2 styles: <I>linear</I> or <I>spline</I>.
</P>
<P>For the <I>linear</I> style, the angle is used to find 2 surrounding table
values from which an energy or its derivative is computed by linear
interpolation.
</P>
<P>For the <I>spline</I> style, a cubic spline coefficients are computed and
stored at each of the <I>N</I> values in the table. The angle is used to
find the appropriate set of coefficients which are used to evaluate a
cubic polynomial which computes the energy or derivative.
</P>
<P>The following coefficients must be defined for each angle type via the
<A HREF = "angle_coeff.html">angle_coeff</A> command as in the example above.
</P>
<UL><LI>filename
<LI>keyword
</UL>
<P>The filename specifies a file containing tabulated energy and
derivative values. The keyword specifies a section of the file. The
format of this file is described below.
</P>
<HR>
<P>The format of a tabulated file is as follows (without the
parenthesized comments):
</P>
<PRE># Angle potential for harmonic (one or more comment or blank lines)
</PRE>
<PRE>HAM (keyword is the first text on line)
N 181 FP 0 0 EQ 90.0 (N, FP, EQ parameters)
(blank line)
N 181 FP 0 0 (N, FP parameters)
1 0.0 200.5 2.5 (index, angle, energy, derivative)
2 1.0 198.0 2.5
...
181 180.0 0.0 0.0
</PRE>
<P>A section begins with a non-blank line whose 1st character is not a
"#"; blank lines or lines starting with "#" can be used as comments
between sections. The first line begins with a keyword which
identifies the section. The line can contain additional text, but the
initial text must match the argument specified in the
<A HREF = "angle_coeff.html">angle_coeff</A> command. The next line lists (in any
order) one or more parameters for the table. Each parameter is a
keyword followed by one or more numeric values.
</P>
<P>The parameter "N" is required and its value is the number of table
entries that follow. Note that this may be different than the <I>N</I>
specified in the <A HREF = "angle_style.html">angle_style table</A> command. Let
Ntable = <I>N</I> in the angle_style command, and Nfile = "N" in the
tabulated file. What LAMMPS does is a preliminary interpolation by
creating splines using the Nfile tabulated values as nodal points. It
uses these to interpolate as needed to generate energy and derivative
values at Ntable different points. The resulting tables of length
Ntable are then used as described above, when computing energy and
force for individual angles and their atoms. This means that if you
want the interpolation tables of length Ntable to match exactly what
is in the tabulated file (with effectively no preliminary
interpolation), you should set Ntable = Nfile.
</P>
<P>The "FP" parameter is optional. If used, it is followed by two values
fplo and fphi, which are the 2nd derivatives at the innermost and
outermost angle settings. These values are needed by the spline
construction routines. If not specified by the "FP" parameter, they
are estimated (less accurately) by the first two and last two
derivative values in the table.
</P>
<P>The "EQ" parameter is also optional. If used, it is followed by a the
equilibrium angle value, which is used, for example, by the <A HREF = "fix_shake.html">fix
shake</A> command. If not used, the equilibrium angle is
set to 180.0.
</P>
<P>Following a blank line, the next N lines list the tabulated values.
On each line, the 1st value is the index from 1 to N, the 2nd value is
the angle value (in degrees), the 3rd value is the energy (in energy
units), and the 4th is -dE/d(theta) (also in energy units). The 3rd
term is the energy of the 3-atom configuration for the specified
angle. The last term is the derivative of the energy with respect to
the angle (in degrees, not radians). Thus the units of the last term
are still energy, not force. The angle values must increase from one
line to the next. The angle values must also begin with 0.0 and end
with 180.0, i.e. span the full range of possible angles.
</P>
<P>Note that one file can contain many sections, each with a tabulated
potential. LAMMPS reads the file section by section until it finds
one that matches the specified keyword.
</P>
<P><B>Restrictions:</B>
</P>
<P>This angle style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "angle_coeff.html">angle_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/angle_table.txt b/doc/angle_table.txt
index 3a0494dbb..2c7c2d747 100644
--- a/doc/angle_table.txt
+++ b/doc/angle_table.txt
@@ -1,131 +1,131 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
angle_style table command :h3
[Syntax:]
angle_style table style N :pre
style = {linear} or {spline} = method of interpolation
N = use N values in table :ul
[Examples:]
angle_style table linear 1000
angle_coeff 3 file.table ENTRY1 :pre
[Description:]
Style {table} creates interpolation tables of length {N} from angle
potential and derivative values listed in a file(s) as a function of
angle The files are read by the "angle_coeff"_angle_coeff.html
command.
The interpolation tables are created by fitting cubic splines to the
file values and interpolating energy and derivative values at each of
{N} angles. During a simulation, these tables are used to interpolate
energy and force values on individual atoms as needed. The
interpolation is done in one of 2 styles: {linear} or {spline}.
For the {linear} style, the angle is used to find 2 surrounding table
values from which an energy or its derivative is computed by linear
interpolation.
For the {spline} style, a cubic spline coefficients are computed and
stored at each of the {N} values in the table. The angle is used to
find the appropriate set of coefficients which are used to evaluate a
cubic polynomial which computes the energy or derivative.
The following coefficients must be defined for each angle type via the
"angle_coeff"_angle_coeff.html command as in the example above.
filename
keyword :ul
The filename specifies a file containing tabulated energy and
derivative values. The keyword specifies a section of the file. The
format of this file is described below.
:line
The format of a tabulated file is as follows (without the
parenthesized comments):
# Angle potential for harmonic (one or more comment or blank lines) :pre
HAM (keyword is the first text on line)
N 181 FP 0 0 EQ 90.0 (N, FP, EQ parameters)
(blank line)
N 181 FP 0 0 (N, FP parameters)
1 0.0 200.5 2.5 (index, angle, energy, derivative)
2 1.0 198.0 2.5
...
181 180.0 0.0 0.0 :pre
A section begins with a non-blank line whose 1st character is not a
"#"; blank lines or lines starting with "#" can be used as comments
between sections. The first line begins with a keyword which
identifies the section. The line can contain additional text, but the
initial text must match the argument specified in the
"angle_coeff"_angle_coeff.html command. The next line lists (in any
order) one or more parameters for the table. Each parameter is a
keyword followed by one or more numeric values.
The parameter "N" is required and its value is the number of table
entries that follow. Note that this may be different than the {N}
specified in the "angle_style table"_angle_style.html command. Let
Ntable = {N} in the angle_style command, and Nfile = "N" in the
tabulated file. What LAMMPS does is a preliminary interpolation by
creating splines using the Nfile tabulated values as nodal points. It
uses these to interpolate as needed to generate energy and derivative
values at Ntable different points. The resulting tables of length
Ntable are then used as described above, when computing energy and
force for individual angles and their atoms. This means that if you
want the interpolation tables of length Ntable to match exactly what
is in the tabulated file (with effectively no preliminary
interpolation), you should set Ntable = Nfile.
The "FP" parameter is optional. If used, it is followed by two values
fplo and fphi, which are the 2nd derivatives at the innermost and
outermost angle settings. These values are needed by the spline
construction routines. If not specified by the "FP" parameter, they
are estimated (less accurately) by the first two and last two
derivative values in the table.
The "EQ" parameter is also optional. If used, it is followed by a the
equilibrium angle value, which is used, for example, by the "fix
shake"_fix_shake.html command. If not used, the equilibrium angle is
set to 180.0.
Following a blank line, the next N lines list the tabulated values.
On each line, the 1st value is the index from 1 to N, the 2nd value is
the angle value (in degrees), the 3rd value is the energy (in energy
units), and the 4th is -dE/d(theta) (also in energy units). The 3rd
term is the energy of the 3-atom configuration for the specified
angle. The last term is the derivative of the energy with respect to
the angle (in degrees, not radians). Thus the units of the last term
are still energy, not force. The angle values must increase from one
line to the next. The angle values must also begin with 0.0 and end
with 180.0, i.e. span the full range of possible angles.
Note that one file can contain many sections, each with a tabulated
potential. LAMMPS reads the file section by section until it finds
one that matches the specified keyword.
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"angle_coeff"_angle_coeff.html
[Default:] none
diff --git a/doc/atom_style.html b/doc/atom_style.html
index 616a0f323..f32112188 100644
--- a/doc/atom_style.html
+++ b/doc/atom_style.html
@@ -1,145 +1,145 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>atom_style command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>atom_style style args
</PRE>
<UL><LI>style = <I>angle</I> or <I>atomic</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>molecular</I> or <I>peri</I> or <I>sphere</I> or <I>hybrid</I>
</UL>
<PRE> args = none for any style except <I>hybrid</I>
<I>hybrid</I> args = list of one or more sub-styles
</PRE>
<P><B>Examples:</B>
</P>
<PRE>atom_style atomic
atom_style bond
atom_style full
atom_style hybrid charge bond
</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>
<TR><TD ><I>bond</I> </TD><TD > bonds </TD><TD > bead-spring polymers </TD></TR>
<TR><TD ><I>charge</I> </TD><TD > charge </TD><TD > atomic system with charges </TD></TR>
<TR><TD ><I>dipole</I> </TD><TD > charge and dipole moment </TD><TD > system with dipolar particles </TD></TR>
<TR><TD ><I>electron</I> </TD><TD > charge and spin and eradius </TD><TD > electronic force field </TD></TR>
<TR><TD ><I>ellipsoid</I> </TD><TD > shape, quaternion for particle orientation, angular momentum </TD><TD > extended aspherical particles </TD></TR>
<TR><TD ><I>full</I> </TD><TD > molecular + charge </TD><TD > bio-molecules </TD></TR>
<TR><TD ><I>molecular</I> </TD><TD > bonds, angles, dihedrals, impropers </TD><TD > uncharged molecules </TD></TR>
<TR><TD ><I>peri</I> </TD><TD > mass, volume </TD><TD > mesocopic Peridynamic models </TD></TR>
<TR><TD ><I>sphere</I> </TD><TD > diameter, mass, angular velocity </TD><TD > granular models </TD></TR>
<TR><TD ><I>wavepacket</I> </TD><TD > charge, spin, eradius, etag, cs_re, cs_im </TD><TD > AWPMD
</TD></TR></TABLE></DIV>
<P>All of the styles assign mass to particles on a per-type basis, using
the <A HREF = "mass.html">mass</A> command, except for the finite-size particle
styles discussed below. They assign mass on a per-atom basis.
</P>
<P>All of the styles define point particles, except the <I>sphere</I>,
<I>ellipsoid</I>, <I>electron</I>, <I>peri</I>, and <I>wavepacket</I> styles, which define
finite-size particles.
</P>
<P>For the <I>sphere</I> style, the particles are spheres and each stores a
per-particle diameter and mass. If the diameter > 0.0, the particle
is a finite-size sphere. If the diameter = 0.0, it is a point
particle.
</P>
<P>For the <I>ellipsoid</I> style, the particles are ellipsoids and each
stores a flag which indicates whether it is a finite-size ellipsoid or
a point particle. If it is an ellipsoid, it also stores a shape
vector with the 3 diamters of the ellipsoid and a quaternion 4-vector
with its orientation.
</P>
<P>For the <I>electron</I> style, the particles representing electrons are 3d
Gaussians with a specified position and bandwidth or uncertainty in
position, which is represented by the eradius = electron size.
</P>
<P>For the <I>peri</I> style, the particles are spherical and each stores a
per-particle mass and volume.
</P>
<P>The <I>wavepacket</I> style is similar to <I>electron</I>, but the electrons may
consist of several Gaussian wave packets, summed up with coefficients
cs= (cs_re,cs_im). Each of the wave packets is treated as a separate
particle in LAMMPS, wave packets belonging to the same electron must
have identical <I>etag</I> values.
</P>
<HR>
<P>Typically, simulations require only a single (non-hybrid) atom style.
If some atoms in the simulation do not have all the properties defined
by a particular style, use the simplest style that defines all the
needed properties by any atom. For example, if some atoms in a
simulation are charged, but others are not, use the <I>charge</I> style.
If some atoms have bonds, but others do not, use the <I>bond</I> style.
</P>
<P>The only scenario where the <I>hybrid</I> style is needed is if there is no
single style which defines all needed properties of all atoms. For
example, if you want dipolar particles which will be torqued and
rotate, you would need to use "atom_style hybrid sphere dipole". When
a hybrid style is used, atoms store and communicate the union of all
quantities implied by the individual styles.
</P>
<P>LAMMPS can be extended with new atom styles; see <A HREF = "Section_modify.html">this
section</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This command cannot be used after the simulation box is defined by a
<A HREF = "read_data.html">read_data</A> or <A HREF = "create_box.html">create_box</A> command.
</P>
<P>The <I>angle</I>, <I>bond</I>, <I>full</I>, and <I>molecular</I> styles are part of the
"molecular" package. The <I>dipole</I> style is part of the "dipole"
package. The <I>ellipsoid</I> style is part of the "asphere" package. The
<I>peri</I> style is part of the "peri" package for Peridynamics. The
<I>electron</I> style is part of the "user-eff" package for <A HREF = "pair_eff.html">electronic
force fields</A>. The <I>wavepacket</I> style is part of the
"user-awpmd" package for the <A HREF = "pair_awpmd.html">antisymmetrized wave packet MD
method</A>. They are only enabled if LAMMPS was built
-with that package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+with that package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A>
section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "read_data.html">read_data</A>, <A HREF = "pair_style.html">pair_style</A>
</P>
<P><B>Default:</B>
</P>
<P>atom_style atomic
</P>
</HTML>
diff --git a/doc/atom_style.txt b/doc/atom_style.txt
index 40ffb0722..0dcf1e8e5 100644
--- a/doc/atom_style.txt
+++ b/doc/atom_style.txt
@@ -1,139 +1,139 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
atom_style command :h3
[Syntax:]
atom_style style args :pre
style = {angle} or {atomic} or {bond} or {charge} or {dipole} or \
{electron} or {ellipsoid} or {full} or {molecular} or \
{peri} or {sphere} or {hybrid} :ul
args = none for any style except {hybrid}
{hybrid} args = list of one or more sub-styles :pre
[Examples:]
atom_style atomic
atom_style bond
atom_style full
atom_style hybrid charge bond :pre
[Description:]
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 "read_data"_read_data.html,
"read_restart"_read_restart.html, or "create_box"_create_box.html
command.
Once a style is assigned, it cannot be changed, so use a style general
enough to encompass all attributes. E.g. with style {bond}, 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.
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 "read_data"_read_data.html command.
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
"read_data"_read_data.html, "create_atoms"_create_atoms.html, and
"set"_set.html commands for info on how to set these various
quantities.
{angle} | bonds and angles | bead-spring polymers with stiffness |
{atomic} | only the default values | coarse-grain liquids, solids, metals |
{bond} | bonds | bead-spring polymers |
{charge} | charge | atomic system with charges |
{dipole} | charge and dipole moment | system with dipolar particles |
{electron} | charge and spin and eradius | electronic force field |
{ellipsoid} | shape, quaternion for particle orientation, angular momentum | extended aspherical particles |
{full} | molecular + charge | bio-molecules |
{molecular} | bonds, angles, dihedrals, impropers | uncharged molecules |
{peri} | mass, volume | mesocopic Peridynamic models |
{sphere} | diameter, mass, angular velocity | granular models |
{wavepacket} | charge, spin, eradius, etag, cs_re, cs_im | AWPMD :tb(c=3,s=|)
All of the styles assign mass to particles on a per-type basis, using
the "mass"_mass.html command, except for the finite-size particle
styles discussed below. They assign mass on a per-atom basis.
All of the styles define point particles, except the {sphere},
{ellipsoid}, {electron}, {peri}, and {wavepacket} styles, which define
finite-size particles.
For the {sphere} style, the particles are spheres and each stores a
per-particle diameter and mass. If the diameter > 0.0, the particle
is a finite-size sphere. If the diameter = 0.0, it is a point
particle.
For the {ellipsoid} style, the particles are ellipsoids and each
stores a flag which indicates whether it is a finite-size ellipsoid or
a point particle. If it is an ellipsoid, it also stores a shape
vector with the 3 diamters of the ellipsoid and a quaternion 4-vector
with its orientation.
For the {electron} style, the particles representing electrons are 3d
Gaussians with a specified position and bandwidth or uncertainty in
position, which is represented by the eradius = electron size.
For the {peri} style, the particles are spherical and each stores a
per-particle mass and volume.
The {wavepacket} style is similar to {electron}, but the electrons may
consist of several Gaussian wave packets, summed up with coefficients
cs= (cs_re,cs_im). Each of the wave packets is treated as a separate
particle in LAMMPS, wave packets belonging to the same electron must
have identical {etag} values.
:line
Typically, simulations require only a single (non-hybrid) atom style.
If some atoms in the simulation do not have all the properties defined
by a particular style, use the simplest style that defines all the
needed properties by any atom. For example, if some atoms in a
simulation are charged, but others are not, use the {charge} style.
If some atoms have bonds, but others do not, use the {bond} style.
The only scenario where the {hybrid} style is needed is if there is no
single style which defines all needed properties of all atoms. For
example, if you want dipolar particles which will be torqued and
rotate, you would need to use "atom_style hybrid sphere dipole". When
a hybrid style is used, atoms store and communicate the union of all
quantities implied by the individual styles.
LAMMPS can be extended with new atom styles; see "this
section"_Section_modify.html.
[Restrictions:]
This command cannot be used after the simulation box is defined by a
"read_data"_read_data.html or "create_box"_create_box.html command.
The {angle}, {bond}, {full}, and {molecular} styles are part of the
"molecular" package. The {dipole} style is part of the "dipole"
package. The {ellipsoid} style is part of the "asphere" package. The
{peri} style is part of the "peri" package for Peridynamics. The
{electron} style is part of the "user-eff" package for "electronic
force fields"_pair_eff.html. The {wavepacket} style is part of the
"user-awpmd" package for the "antisymmetrized wave packet MD
method"_pair_awpmd.html. They are only enabled if LAMMPS was built
-with that package. See the "Making LAMMPS"_Section_start.html#2_3
+with that package. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
[Related commands:]
"read_data"_read_data.html, "pair_style"_pair_style.html
[Default:]
atom_style atomic
diff --git a/doc/bond_class2.html b/doc/bond_class2.html
index cb3ff9f5a..2de46dc2f 100644
--- a/doc/bond_class2.html
+++ b/doc/bond_class2.html
@@ -1,61 +1,61 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style class2 command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style class2
</PRE>
<P><B>Examples:</B>
</P>
<PRE>bond_style class2
bond_coeff 1 1.0 100.0 80.0 80.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>class2</I> bond style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/bond_class2.jpg">
</CENTER>
<P>where r0 is the equilibrium bond distance.
</P>
<P>See <A HREF = "#Sun">(Sun)</A> for a description of the COMPASS class2 force field.
</P>
<P>The following coefficients must be defined for each bond type via the
<A HREF = "bond_coeff.html">bond_coeff</A> command as in the example 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:
</P>
<UL><LI>R0 (distance)
<LI>K2 (energy/distance^2)
<LI>K3 (energy/distance^3)
<LI>K4 (energy/distance^4)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This bond style can only be used if LAMMPS was built with the "class2"
-package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info on packages.
+package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Sun"></A>
<P><B>(Sun)</B> Sun, J Phys Chem B 102, 7338-7364 (1998).
</P>
</HTML>
diff --git a/doc/bond_class2.txt b/doc/bond_class2.txt
index fa7049481..2e596a083 100644
--- a/doc/bond_class2.txt
+++ b/doc/bond_class2.txt
@@ -1,55 +1,55 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style class2 command :h3
[Syntax:]
bond_style class2 :pre
[Examples:]
bond_style class2
bond_coeff 1 1.0 100.0 80.0 80.0 :pre
[Description:]
The {class2} bond style uses the potential
:c,image(Eqs/bond_class2.jpg)
where r0 is the equilibrium bond distance.
See "(Sun)"_#Sun for a description of the COMPASS class2 force field.
The following coefficients must be defined for each bond type via the
"bond_coeff"_bond_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
R0 (distance)
K2 (energy/distance^2)
K3 (energy/distance^3)
K4 (energy/distance^4) :ul
[Restrictions:]
This bond style can only be used if LAMMPS was built with the "class2"
-package. See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info on packages.
+package. See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html
[Default:] none
:line
:link(Sun)
[(Sun)] Sun, J Phys Chem B 102, 7338-7364 (1998).
diff --git a/doc/bond_coeff.html b/doc/bond_coeff.html
index 434f0fb3d..58ce6406a 100644
--- a/doc/bond_coeff.html
+++ b/doc/bond_coeff.html
@@ -1,100 +1,100 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_coeff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_coeff N args
</PRE>
<UL><LI>N = bond type (see asterisk form below)
<LI>args = coefficients for one or more bond types
</UL>
<P><B>Examples:</B>
</P>
<PRE>bond_coeff 5 80.0 1.2
bond_coeff * 30.0 1.5 1.0 1.0
bond_coeff 1*4 30.0 1.5 1.0 1.0
bond_coeff 1 harmonic 200.0 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>Specify the bond force field coefficients for one or more bond types.
The number and meaning of the coefficients depends on the bond style.
Bond coefficients can also be set in the data file read by the
<A HREF = "read_data.html">read_data</A> command or in a restart file.
</P>
<P>N can be specified in one of two ways. An explicit numeric value can
be used, as in the 1st example above. Or a wild-card asterisk can be
used to set the coefficients for multiple 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>Note that using a bond_coeff command can override a previous setting
for the same bond type. For example, these commands set the coeffs
for all bond types, then overwrite the coeffs for just bond type 2:
</P>
<PRE>bond_coeff * 100.0 1.2
bond_coeff 2 200.0 1.2
</PRE>
<P>A line in a data file that specifies bond coefficients uses the exact
same format as the arguments of the bond_coeff command in an input
script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example,
under the "Bond Coeffs" section of a data file, the line that
corresponds to the 1st example above would be listed as
</P>
<PRE>5 80.0 1.2
</PRE>
<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>
<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
<LI><A HREF = "bond_fene.html">bond_style fene</A> - FENE (finite-extensible non-linear elastic) bond
<LI><A HREF = "bond_fene_expand.html">bond_style fene/expand</A> - FENE bonds with variable size particles
<LI><A HREF = "bond_harmonic.html">bond_style harmonic</A> - harmonic bond
<LI><A HREF = "bond_morse.html">bond_style morse</A> - Morse bond
<LI><A HREF = "bond_nonlinear.html">bond_style nonlinear</A> - nonlinear bond
<LI><A HREF = "bond_quartic.html">bond_style quartic</A> - breakable quartic bond
<LI><A HREF = "bond_table.html">bond_style table</A> - tabulated by bond length
</UL>
<P>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#3_5">this
+the individual styles are given in the bond section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command must come after the simulation box is defined by 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>A bond style must be defined before any bond coefficients are set,
either in the input script or in a data file.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_style.html">bond_style</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/bond_coeff.txt b/doc/bond_coeff.txt
index 737d5e2ab..25110e916 100644
--- a/doc/bond_coeff.txt
+++ b/doc/bond_coeff.txt
@@ -1,95 +1,95 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_coeff command :h3
[Syntax:]
bond_coeff N args :pre
N = bond type (see asterisk form below)
args = coefficients for one or more bond types :ul
[Examples:]
bond_coeff 5 80.0 1.2
bond_coeff * 30.0 1.5 1.0 1.0
bond_coeff 1*4 30.0 1.5 1.0 1.0
bond_coeff 1 harmonic 200.0 1.0 :pre
[Description:]
Specify the bond force field coefficients for one or more bond types.
The number and meaning of the coefficients depends on the bond style.
Bond coefficients can also be set in the data file read by the
"read_data"_read_data.html command or in a restart file.
N can be specified in one of two ways. An explicit numeric value can
be used, as in the 1st example above. Or a wild-card asterisk can be
used to set the coefficients for multiple 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).
Note that using a bond_coeff command can override a previous setting
for the same bond type. For example, these commands set the coeffs
for all bond types, then overwrite the coeffs for just bond type 2:
bond_coeff * 100.0 1.2
bond_coeff 2 200.0 1.2 :pre
A line in a data file that specifies bond coefficients uses the exact
same format as the arguments of the bond_coeff command in an input
script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example,
under the "Bond Coeffs" section of a data file, the line that
corresponds to the 1st example above would be listed as
5 80.0 1.2 :pre
:line
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 "bond_coeff"_bond_coeff.html command:
"bond_style none"_bond_none.html - turn off bonded interactions
"bond_style hybrid"_bond_hybrid.html - define multiple styles of bond interactions :ul
"bond_style class2"_bond_class2.html - COMPASS (class 2) bond
"bond_style fene"_bond_fene.html - FENE (finite-extensible non-linear elastic) bond
"bond_style fene/expand"_bond_fene_expand.html - FENE bonds with variable size particles
"bond_style harmonic"_bond_harmonic.html - harmonic bond
"bond_style morse"_bond_morse.html - Morse bond
"bond_style nonlinear"_bond_nonlinear.html - nonlinear bond
"bond_style quartic"_bond_quartic.html - breakable quartic bond
"bond_style table"_bond_table.html - tabulated by bond length :ul
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 "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
:line
[Restrictions:]
This command must come after the simulation box is defined by a
"read_data"_read_data.html, "read_restart"_read_restart.html, or
"create_box"_create_box.html command.
A bond style must be defined before any bond coefficients are set,
either in the input script or in a data file.
[Related commands:]
"bond_style"_bond_style.html
[Default:] none
diff --git a/doc/bond_fene.html b/doc/bond_fene.html
index 4dcc2447f..fce83ddff 100644
--- a/doc/bond_fene.html
+++ b/doc/bond_fene.html
@@ -1,67 +1,67 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style fene command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style fene
</PRE>
<P><B>Examples:</B>
</P>
<PRE>bond_style fene
bond_coeff 1 30.0 1.5 1.0 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>fene</I> bond style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/bond_fene.jpg">
</CENTER>
<P>to define a finite extensible nonlinear elastic (FENE) potential
<A HREF = "#Kremer">(Kremer)</A>, used for bead-spring polymer models. The first
term is attractive, the 2nd Lennard-Jones term is repulsive. The
first term extends to R0, the maximum extent of the bond. The 2nd
term is cutoff at 2^(1/6) sigma, the minimum of the LJ potential.
</P>
<P>The following coefficients must be defined for each bond type via the
<A HREF = "bond_coeff.html">bond_coeff</A> command as in the example 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:
</P>
<UL><LI>K (energy/distance^2)
<LI>R0 (distance)
<LI>epsilon (energy)
<LI>sigma (distance)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This bond style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P>You typically should specify <A HREF = "special_bonds.html"">special_bonds fene</A>
or <A HREF = "special_bonds.html">special_bonds lj/coul 0 1 1</A> to use this bond
style. LAMMPS will issue a warning it that's not the case.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Kremer"></A>
<P><B>(Kremer)</B> Kremer, Grest, J Chem Phys, 92, 5057 (1990).
</P>
</HTML>
diff --git a/doc/bond_fene.txt b/doc/bond_fene.txt
index 8d0ab6c25..1c15f24ae 100644
--- a/doc/bond_fene.txt
+++ b/doc/bond_fene.txt
@@ -1,61 +1,61 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style fene command :h3
[Syntax:]
bond_style fene :pre
[Examples:]
bond_style fene
bond_coeff 1 30.0 1.5 1.0 1.0 :pre
[Description:]
The {fene} bond style uses the potential
:c,image(Eqs/bond_fene.jpg)
to define a finite extensible nonlinear elastic (FENE) potential
"(Kremer)"_#Kremer, used for bead-spring polymer models. The first
term is attractive, the 2nd Lennard-Jones term is repulsive. The
first term extends to R0, the maximum extent of the bond. The 2nd
term is cutoff at 2^(1/6) sigma, the minimum of the LJ potential.
The following coefficients must be defined for each bond type via the
"bond_coeff"_bond_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K (energy/distance^2)
R0 (distance)
epsilon (energy)
sigma (distance) :ul
[Restrictions:]
This bond style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
You typically should specify "special_bonds fene"_special_bonds.html"
or "special_bonds lj/coul 0 1 1"_special_bonds.html to use this bond
style. LAMMPS will issue a warning it that's not the case.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html
[Default:] none
:line
:link(Kremer)
[(Kremer)] Kremer, Grest, J Chem Phys, 92, 5057 (1990).
diff --git a/doc/bond_fene_expand.html b/doc/bond_fene_expand.html
index 190e14ca3..e8f6f2522 100644
--- a/doc/bond_fene_expand.html
+++ b/doc/bond_fene_expand.html
@@ -1,72 +1,72 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style fene/expand command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style fene/expand
</PRE>
<P><B>Examples:</B>
</P>
<PRE>bond_style fene/expand
bond_coeff 1 30.0 1.5 1.0 1.0 0.5
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>fene/expand</I> bond style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/bond_fene_expand.jpg">
</CENTER>
<P>to define a finite extensible nonlinear elastic (FENE) potential
<A HREF = "#Kremer">(Kremer)</A>, used for bead-spring polymer models. The first
term is attractive, the 2nd Lennard-Jones term is repulsive.
</P>
<P>The <I>fene/expand</I> bond style is similar to <I>fene</I> except that an extra
shift factor of delta (positive or negative) is added to <I>r</I> to
effectively change the bead size of the bonded atoms. The first term
now extends to R0 + delta and the 2nd term is cutoff at 2^(1/6) sigma
+ delta.
</P>
<P>The following coefficients must be defined for each bond type via the
<A HREF = "bond_coeff.html">bond_coeff</A> command as in the example 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:
</P>
<UL><LI>K (energy/distance^2)
<LI>R0 (distance)
<LI>epsilon (energy)
<LI>sigma (distance)
<LI>delta (distance)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This bond style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P>You typically should specify <A HREF = "special_bonds.html"">special_bonds fene</A>
or <A HREF = "special_bonds.html">special_bonds lj/coul 0 1 1</A> to use this bond
style. LAMMPS will issue a warning it that's not the case.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Kremer"></A>
<P><B>(Kremer)</B> Kremer, Grest, J Chem Phys, 92, 5057 (1990).
</P>
</HTML>
diff --git a/doc/bond_fene_expand.txt b/doc/bond_fene_expand.txt
index b12bb6de0..c4a535dc8 100644
--- a/doc/bond_fene_expand.txt
+++ b/doc/bond_fene_expand.txt
@@ -1,66 +1,66 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style fene/expand command :h3
[Syntax:]
bond_style fene/expand :pre
[Examples:]
bond_style fene/expand
bond_coeff 1 30.0 1.5 1.0 1.0 0.5 :pre
[Description:]
The {fene/expand} bond style uses the potential
:c,image(Eqs/bond_fene_expand.jpg)
to define a finite extensible nonlinear elastic (FENE) potential
"(Kremer)"_#Kremer, used for bead-spring polymer models. The first
term is attractive, the 2nd Lennard-Jones term is repulsive.
The {fene/expand} bond style is similar to {fene} except that an extra
shift factor of delta (positive or negative) is added to {r} to
effectively change the bead size of the bonded atoms. The first term
now extends to R0 + delta and the 2nd term is cutoff at 2^(1/6) sigma
+ delta.
The following coefficients must be defined for each bond type via the
"bond_coeff"_bond_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K (energy/distance^2)
R0 (distance)
epsilon (energy)
sigma (distance)
delta (distance) :ul
[Restrictions:]
This bond style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
You typically should specify "special_bonds fene"_special_bonds.html"
or "special_bonds lj/coul 0 1 1"_special_bonds.html to use this bond
style. LAMMPS will issue a warning it that's not the case.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html
[Default:] none
:line
:link(Kremer)
[(Kremer)] Kremer, Grest, J Chem Phys, 92, 5057 (1990).
diff --git a/doc/bond_harmonic.html b/doc/bond_harmonic.html
index 37fd7f8cd..bc1176af6 100644
--- a/doc/bond_harmonic.html
+++ b/doc/bond_harmonic.html
@@ -1,52 +1,52 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style harmonic command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style harmonic
</PRE>
<P><B>Examples:</B>
</P>
<PRE>bond_style harmonic
bond_coeff 5 80.0 1.2
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>harmonic</I> bond style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/bond_harmonic.jpg">
</CENTER>
<P>where r0 is the equilibrium bond distance. Note that the usual 1/2
factor is included in K.
</P>
<P>The following coefficients must be defined for each bond type via the
<A HREF = "bond_coeff.html">bond_coeff</A> command as in the example 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:
</P>
<UL><LI>K (energy/distance^2)
<LI>r0 (distance)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This bond style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/bond_harmonic.txt b/doc/bond_harmonic.txt
index 1ccbbd4f4..5dc87e5d2 100644
--- a/doc/bond_harmonic.txt
+++ b/doc/bond_harmonic.txt
@@ -1,47 +1,47 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style harmonic command :h3
[Syntax:]
bond_style harmonic :pre
[Examples:]
bond_style harmonic
bond_coeff 5 80.0 1.2 :pre
[Description:]
The {harmonic} bond style uses the potential
:c,image(Eqs/bond_harmonic.jpg)
where r0 is the equilibrium bond distance. Note that the usual 1/2
factor is included in K.
The following coefficients must be defined for each bond type via the
"bond_coeff"_bond_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K (energy/distance^2)
r0 (distance) :ul
[Restrictions:]
This bond style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html
[Default:] none
diff --git a/doc/bond_harmonic_shift.html b/doc/bond_harmonic_shift.html
index f49b1042b..08e7a2d53 100644
--- a/doc/bond_harmonic_shift.html
+++ b/doc/bond_harmonic_shift.html
@@ -1,58 +1,58 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style harmonic/shift command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style harmonic/shift
</PRE>
<P><B>Examples:</B>
</P>
<PRE>bond_style harmonic/shift
bond_coeff 5 10.0 0.5 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>harmonic/shift</I> bond style is a shifted harmonic bond that uses
the potential
</P>
<CENTER><IMG SRC = "Eqs/bond_harmonic_shift.jpg">
</CENTER>
<P>where r0 is the equilibrium bond distance, and rc the critical distance.
The potential is -Umin at r0 and zero at rc. The spring constant is
k = Umin / [ 2 (r0-rc)^2].
</P>
<P>The following coefficients must be defined for each bond type via the
<A HREF = "bond_coeff.html">bond_coeff</A> command as in the example 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:
</P>
<UL><LI>Umin (energy)
</UL>
<UL><LI>r0 (distance)
</UL>
<UL><LI>rc (distance)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This bond style can only be used if LAMMPS was built with the
-"user-misc" package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
-section for more info on packages.
+"user-misc" package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>,
<A HREF = "bond_harmonic.html">bond_harmonic</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/bond_harmonic_shift.txt b/doc/bond_harmonic_shift.txt
index c26195b6c..ca0d33ba3 100644
--- a/doc/bond_harmonic_shift.txt
+++ b/doc/bond_harmonic_shift.txt
@@ -1,51 +1,51 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style harmonic/shift command :h3
[Syntax:]
bond_style harmonic/shift :pre
[Examples:]
bond_style harmonic/shift
bond_coeff 5 10.0 0.5 1.0 :pre
[Description:]
The {harmonic/shift} bond style is a shifted harmonic bond that uses
the potential
:c,image(Eqs/bond_harmonic_shift.jpg)
where r0 is the equilibrium bond distance, and rc the critical distance.
The potential is -Umin at r0 and zero at rc. The spring constant is
k = Umin / \[ 2 (r0-rc)^2\].
The following coefficients must be defined for each bond type via the
"bond_coeff"_bond_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
Umin (energy) :ul
r0 (distance) :ul
rc (distance) :ul
[Restrictions:]
This bond style can only be used if LAMMPS was built with the
-"user-misc" package. See the "Making LAMMPS"_Section_start.html#2_3
-section for more info on packages.
+"user-misc" package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html,
"bond_harmonic"_bond_harmonic.html
[Default:] none
diff --git a/doc/bond_harmonic_shift_cut.html b/doc/bond_harmonic_shift_cut.html
index 04086f970..83d6ff154 100644
--- a/doc/bond_harmonic_shift_cut.html
+++ b/doc/bond_harmonic_shift_cut.html
@@ -1,57 +1,57 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style harmonic/shift/cut command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style harmonic/shift/cut
</PRE>
<P><B>Examples:</B>
</P>
<PRE>bond_style harmonic/shift/cut
bond_coeff 5 10.0 0.5 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>harmonic/shift/cut</I> bond style is a shifted harmonic bond that
uses the potential
</P>
<CENTER><IMG SRC = "Eqs/bond_harmonic_shift_cut.jpg">
</CENTER>
<P>where r0 is the equilibrium bond distance, and rc the critical distance.
The bond potential is zero for distances r > rc. The potential is -Umin
at r0 and zero at rc. The spring constant is k = Umin / [ 2 (r0-rc)^2].
</P>
<P>The following coefficients must be defined for each bond type via the
<A HREF = "bond_coeff.html">bond_coeff</A> command as in the example 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:
</P>
<UL><LI>Umin (energy)
<LI>r0 (distance)
<LI>rc (distance)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This bond style can only be used if LAMMPS was built with the
-"user-misc" package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
-section for more info on packages.
+"user-misc" package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>,
<A HREF = "bond_harmonic.html">bond_harmonic</A>,
<A HREF = "bond_harmonicshift.html">bond_harmonicshift</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/bond_harmonic_shift_cut.txt b/doc/bond_harmonic_shift_cut.txt
index e6ff76510..f5a8d3488 100644
--- a/doc/bond_harmonic_shift_cut.txt
+++ b/doc/bond_harmonic_shift_cut.txt
@@ -1,52 +1,52 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style harmonic/shift/cut command :h3
[Syntax:]
bond_style harmonic/shift/cut :pre
[Examples:]
bond_style harmonic/shift/cut
bond_coeff 5 10.0 0.5 1.0 :pre
[Description:]
The {harmonic/shift/cut} bond style is a shifted harmonic bond that
uses the potential
:c,image(Eqs/bond_harmonic_shift_cut.jpg)
where r0 is the equilibrium bond distance, and rc the critical distance.
The bond potential is zero for distances r > rc. The potential is -Umin
at r0 and zero at rc. The spring constant is k = Umin / \[ 2 (r0-rc)^2\].
The following coefficients must be defined for each bond type via the
"bond_coeff"_bond_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
Umin (energy)
r0 (distance)
rc (distance) :ul
[Restrictions:]
This bond style can only be used if LAMMPS was built with the
-"user-misc" package. See the "Making LAMMPS"_Section_start.html#2_3
-section for more info on packages.
+"user-misc" package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html,
"bond_harmonic"_bond_harmonic.html,
"bond_harmonicshift"_bond_harmonicshift.html
[Default:] none
diff --git a/doc/bond_hybrid.html b/doc/bond_hybrid.html
index 642c4d4a0..4dd3b380f 100644
--- a/doc/bond_hybrid.html
+++ b/doc/bond_hybrid.html
@@ -1,77 +1,77 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style hybrid command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style hybrid style1 style2 ...
</PRE>
<UL><LI>style1,style2 = list of one or more bond styles
</UL>
<P><B>Examples:</B>
</P>
<PRE>bond_style hybrid harmonic fene
bond_coeff 1 harmonic 80.0 1.2
bond_coeff 2* fene 30.0 1.5 1.0 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>hybrid</I> style enables the use of multiple bond styles in one
simulation. A bond style is assigned to each bond type. For example,
bonds in a polymer flow (of bond type 1) could be computed with a
<I>fene</I> potential and bonds in the wall boundary (of bond type 2) could
be computed with a <I>harmonic</I> potential. The assignment of bond type
to style is made via the <A HREF = "bond_coeff.html">bond_coeff</A> command or in
the data file.
</P>
<P>In the bond_coeff commands, the name of a bond style must be added
after the bond type, with the remaining coefficients being those
appropriate to that style. In the example above, the 2 bond_coeff
commands set bonds of bond type 1 to be computed with a <I>harmonic</I>
potential with coefficients 80.0, 1.2 for K, r0. All other bond types
(2-N) are computed with a <I>fene</I> potential with coefficients 30.0,
1.5, 1.0, 1.0 for K, R0, epsilon, sigma.
</P>
<P>If bond coefficients are specified in the data file read via the
<A HREF = "read_data.html">read_data</A> command, then the same rule applies.
E.g. "harmonic" or "fene" must be added after the bond type, for each
line in the "Bond Coeffs" section, e.g.
</P>
<PRE>Bond Coeffs
</PRE>
<PRE>1 harmonic 80.0 1.2
2 fene 30.0 1.5 1.0 1.0
...
</PRE>
<P>A bond style of <I>none</I> with no additional coefficients can be used in
place of a bond style, either in a input script bond_coeff command or
in the data file, if you desire to turn off interactions for specific
bond types.
</P>
<P><B>Restrictions:</B>
</P>
<P>This bond style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P>Unlike other bond styles, the hybrid bond style does not store bond
coefficient info for individual sub-styles in a <A HREF = "restart.html">binary restart
files</A>. Thus when retarting a simulation from a restart
file, you need to re-specify bond_coeff commands.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/bond_hybrid.txt b/doc/bond_hybrid.txt
index 3b63daf17..11d77f494 100644
--- a/doc/bond_hybrid.txt
+++ b/doc/bond_hybrid.txt
@@ -1,72 +1,72 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style hybrid command :h3
[Syntax:]
bond_style hybrid style1 style2 ... :pre
style1,style2 = list of one or more bond styles :ul
[Examples:]
bond_style hybrid harmonic fene
bond_coeff 1 harmonic 80.0 1.2
bond_coeff 2* fene 30.0 1.5 1.0 1.0 :pre
[Description:]
The {hybrid} style enables the use of multiple bond styles in one
simulation. A bond style is assigned to each bond type. For example,
bonds in a polymer flow (of bond type 1) could be computed with a
{fene} potential and bonds in the wall boundary (of bond type 2) could
be computed with a {harmonic} potential. The assignment of bond type
to style is made via the "bond_coeff"_bond_coeff.html command or in
the data file.
In the bond_coeff commands, the name of a bond style must be added
after the bond type, with the remaining coefficients being those
appropriate to that style. In the example above, the 2 bond_coeff
commands set bonds of bond type 1 to be computed with a {harmonic}
potential with coefficients 80.0, 1.2 for K, r0. All other bond types
(2-N) are computed with a {fene} potential with coefficients 30.0,
1.5, 1.0, 1.0 for K, R0, epsilon, sigma.
If bond coefficients are specified in the data file read via the
"read_data"_read_data.html command, then the same rule applies.
E.g. "harmonic" or "fene" must be added after the bond type, for each
line in the "Bond Coeffs" section, e.g.
Bond Coeffs :pre
1 harmonic 80.0 1.2
2 fene 30.0 1.5 1.0 1.0
... :pre
A bond style of {none} with no additional coefficients can be used in
place of a bond style, either in a input script bond_coeff command or
in the data file, if you desire to turn off interactions for specific
bond types.
[Restrictions:]
This bond style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
Unlike other bond styles, the hybrid bond style does not store bond
coefficient info for individual sub-styles in a "binary restart
files"_restart.html. Thus when retarting a simulation from a restart
file, you need to re-specify bond_coeff commands.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html
[Default:] none
diff --git a/doc/bond_morse.html b/doc/bond_morse.html
index 0d69aedc5..6cd8d70bc 100644
--- a/doc/bond_morse.html
+++ b/doc/bond_morse.html
@@ -1,53 +1,53 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style morse command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style morse
</PRE>
<P><B>Examples:</B>
</P>
<PRE>bond_style morse
bond_coeff 5 1.0 2.0 1.2
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>morse</I> bond style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/bond_morse.jpg">
</CENTER>
<P>where r0 is the equilibrium bond distance, alpha is a stiffness
parameter, and D determines the depth of the potential well.
</P>
<P>The following coefficients must be defined for each bond type via the
<A HREF = "bond_coeff.html">bond_coeff</A> command as in the example 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:
</P>
<UL><LI>D (energy)
<LI>alpha (inverse distance)
<LI>r0 (distance)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This bond style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/bond_morse.txt b/doc/bond_morse.txt
index fd67478ef..22a075c7f 100644
--- a/doc/bond_morse.txt
+++ b/doc/bond_morse.txt
@@ -1,48 +1,48 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style morse command :h3
[Syntax:]
bond_style morse :pre
[Examples:]
bond_style morse
bond_coeff 5 1.0 2.0 1.2 :pre
[Description:]
The {morse} bond style uses the potential
:c,image(Eqs/bond_morse.jpg)
where r0 is the equilibrium bond distance, alpha is a stiffness
parameter, and D determines the depth of the potential well.
The following coefficients must be defined for each bond type via the
"bond_coeff"_bond_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
D (energy)
alpha (inverse distance)
r0 (distance) :ul
[Restrictions:]
This bond style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html
[Default:] none
diff --git a/doc/bond_nonlinear.html b/doc/bond_nonlinear.html
index 6bbc5aedf..be0cdc097 100644
--- a/doc/bond_nonlinear.html
+++ b/doc/bond_nonlinear.html
@@ -1,59 +1,59 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style nonlinear command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style nonlinear
</PRE>
<P><B>Examples:</B>
</P>
<PRE>bond_style nonlinear
bond_coeff 2 100.0 1.1 1.4
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>nonlinear</I> bond style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/bond_nonlinear.jpg">
</CENTER>
<P>to define an anharmonic spring <A HREF = "#Rector">(Rector)</A> of equilibrium
length r0 and maximum extension lamda.
</P>
<P>The following coefficients must be defined for each bond type via the
<A HREF = "bond_coeff.html">bond_coeff</A> command as in the example 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:
</P>
<UL><LI>epsilon (energy)
<LI>r0 (distance)
<LI>lamda (distance)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This bond style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Rector"></A>
<P><B>(Rector)</B> Rector, Van Swol, Henderson, Molecular Physics, 82, 1009 (1994).
</P>
</HTML>
diff --git a/doc/bond_nonlinear.txt b/doc/bond_nonlinear.txt
index 480109ff4..8f4437303 100644
--- a/doc/bond_nonlinear.txt
+++ b/doc/bond_nonlinear.txt
@@ -1,53 +1,53 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style nonlinear command :h3
[Syntax:]
bond_style nonlinear :pre
[Examples:]
bond_style nonlinear
bond_coeff 2 100.0 1.1 1.4 :pre
[Description:]
The {nonlinear} bond style uses the potential
:c,image(Eqs/bond_nonlinear.jpg)
to define an anharmonic spring "(Rector)"_#Rector of equilibrium
length r0 and maximum extension lamda.
The following coefficients must be defined for each bond type via the
"bond_coeff"_bond_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
epsilon (energy)
r0 (distance)
lamda (distance) :ul
[Restrictions:]
This bond style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html
[Default:] none
:line
:link(Rector)
[(Rector)] Rector, Van Swol, Henderson, Molecular Physics, 82, 1009 (1994).
diff --git a/doc/bond_quartic.html b/doc/bond_quartic.html
index 10313c002..5bbffc032 100644
--- a/doc/bond_quartic.html
+++ b/doc/bond_quartic.html
@@ -1,92 +1,92 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style quartic command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style quartic
</PRE>
<P><B>Examples:</B>
</P>
<PRE>bond_style quartic
bond_coeff 2 1200 -0.55 0.25 1.3 34.6878
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>quartic</I> bond style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/bond_quartic.jpg">
</CENTER>
<P>to define a bond that can be broken as the simulation proceeds (e.g.
due to a polymer being stretched). The sigma and epsilon used in the
LJ portion of the formula are both set equal to 1.0 by LAMMPS.
</P>
<P>The following coefficients must be defined for each bond type via the
<A HREF = "bond_coeff.html">bond_coeff</A> command as in the example 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:
</P>
<UL><LI>K (energy/distance^2)
<LI>B1 (distance)
<LI>B2 (distance)
<LI>Rc (distance)
<LI>U0 (energy)
</UL>
<P>This potential was constructed to mimic the FENE bond potential for
coarse-grained polymer chains. When monomers with sigma = epsilon =
1.0 are used, the following choice of parameters gives a quartic
potential that looks nearly like the FENE potential: K = 1200, B1 =
-0.55, B2 = 0.25, Rc = 1.3, and U0 = 34.6878. Different parameters
can be specified using the <A HREF = "bond_coeff.html">bond_coeff</A> command, but
you will need to choose them carefully so they form a suitable bond
potential.
</P>
<P>Rc is the cutoff length at which the bond potential goes smoothly to a
local maximum. If a bond length ever becomes > Rc, LAMMPS "breaks"
the bond, which means two things. First, the bond potential is turned
off by setting its type to 0, and is no longer computed. Second, a
pairwise interaction between the two atoms is turned on, since they
are no longer bonded.
</P>
<P>LAMMPS does the second task via a computational sleight-of-hand. It
subtracts the pairwise interaction as part of the bond computation.
When the bond breaks, the subtraction stops. For this to work, the
pairwise interaction must always be computed by the
<A HREF = "pair_style.html">pair_style</A> command, whether the bond is broken or
not. This means that <A HREF = "special_bonds.html">special_bonds</A> must be set
to 1,1,1, as indicated as a restriction below.
</P>
<P>Note that when bonds are dumped to a file via the <A HREF = "dump.html">dump
local</A> command, bonds with type 0 are not included. The
<A HREF = "delete_bonds.html">delete_bonds</A> command can also be used to query the
status of broken bonds or permanently delete them, e.g.:
</P>
<PRE>delete_bonds all stats
delete_bonds all bond 0 remove
</PRE>
<P><B>Restrictions:</B>
</P>
<P>This bond style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P>The <I>quartic</I> style requires that <A HREF = "special_bonds.html">special_bonds</A>
parameters be set to 1,1,1. Three- and four-body interactions (angle,
dihedral, etc) cannot be used with <I>quartic</I> bonds.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/bond_quartic.txt b/doc/bond_quartic.txt
index b734d7997..5cb2639b3 100644
--- a/doc/bond_quartic.txt
+++ b/doc/bond_quartic.txt
@@ -1,87 +1,87 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style quartic command :h3
[Syntax:]
bond_style quartic :pre
[Examples:]
bond_style quartic
bond_coeff 2 1200 -0.55 0.25 1.3 34.6878 :pre
[Description:]
The {quartic} bond style uses the potential
:c,image(Eqs/bond_quartic.jpg)
to define a bond that can be broken as the simulation proceeds (e.g.
due to a polymer being stretched). The sigma and epsilon used in the
LJ portion of the formula are both set equal to 1.0 by LAMMPS.
The following coefficients must be defined for each bond type via the
"bond_coeff"_bond_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K (energy/distance^2)
B1 (distance)
B2 (distance)
Rc (distance)
U0 (energy) :ul
This potential was constructed to mimic the FENE bond potential for
coarse-grained polymer chains. When monomers with sigma = epsilon =
1.0 are used, the following choice of parameters gives a quartic
potential that looks nearly like the FENE potential: K = 1200, B1 =
-0.55, B2 = 0.25, Rc = 1.3, and U0 = 34.6878. Different parameters
can be specified using the "bond_coeff"_bond_coeff.html command, but
you will need to choose them carefully so they form a suitable bond
potential.
Rc is the cutoff length at which the bond potential goes smoothly to a
local maximum. If a bond length ever becomes > Rc, LAMMPS "breaks"
the bond, which means two things. First, the bond potential is turned
off by setting its type to 0, and is no longer computed. Second, a
pairwise interaction between the two atoms is turned on, since they
are no longer bonded.
LAMMPS does the second task via a computational sleight-of-hand. It
subtracts the pairwise interaction as part of the bond computation.
When the bond breaks, the subtraction stops. For this to work, the
pairwise interaction must always be computed by the
"pair_style"_pair_style.html command, whether the bond is broken or
not. This means that "special_bonds"_special_bonds.html must be set
to 1,1,1, as indicated as a restriction below.
Note that when bonds are dumped to a file via the "dump
local"_dump.html command, bonds with type 0 are not included. The
"delete_bonds"_delete_bonds.html command can also be used to query the
status of broken bonds or permanently delete them, e.g.:
delete_bonds all stats
delete_bonds all bond 0 remove :pre
[Restrictions:]
This bond style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
The {quartic} style requires that "special_bonds"_special_bonds.html
parameters be set to 1,1,1. Three- and four-body interactions (angle,
dihedral, etc) cannot be used with {quartic} bonds.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html
[Default:] none
diff --git a/doc/bond_style.html b/doc/bond_style.html
index 7eea795db..5be22aa83 100644
--- a/doc/bond_style.html
+++ b/doc/bond_style.html
@@ -1,109 +1,109 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style style args
</PRE>
<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>
<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
<LI><A HREF = "bond_fene.html">bond_style fene</A> - FENE (finite-extensible non-linear elastic) bond
<LI><A HREF = "bond_fene_expand.html">bond_style fene/expand</A> - FENE bonds with variable size particles
<LI><A HREF = "bond_harmonic.html">bond_style harmonic</A> - harmonic bond
<LI><A HREF = "bond_morse.html">bond_style morse</A> - Morse bond
<LI><A HREF = "bond_nonlinear.html">bond_style nonlinear</A> - nonlinear bond
<LI><A HREF = "bond_quartic.html">bond_style quartic</A> - breakable quartic bond
<LI><A HREF = "bond_table.html">bond_style table</A> - tabulated by bond length
</UL>
<P>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#3_5">this
+the individual styles are given in the bond section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>Bond styles can only be set for atom styles that allow bonds to be
defined.
</P>
<P>Most bond styles are part of the "molecular" package. They are only
-enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
-LAMMPS</A> section for more info on packages. The
-doc pages for individual bond potentials tell if it is part of a
+enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info on packages.
+The doc pages for individual bond potentials tell if it is part of a
package.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>
</P>
<P><B>Default:</B>
</P>
<P>bond_style none
</P>
</HTML>
diff --git a/doc/bond_style.txt b/doc/bond_style.txt
index 048c64b58..953a764ce 100644
--- a/doc/bond_style.txt
+++ b/doc/bond_style.txt
@@ -1,104 +1,104 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style command :h3
[Syntax:]
bond_style style args :pre
style = {none} or {hybrid} or {class2} or {fene} or {fene/expand} or \
{harmonic} or {morse} or {nonlinear} or {quartic} :ul
args = none for any style except {hybrid}
{hybrid} args = list of one or more styles :pre
[Examples:]
bond_style harmonic
bond_style fene
bond_style hybrid harmonic fene :pre
[Description:]
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 "pair_style"_pair_style.html
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 "read_data"_read_data.html or
"read_restart"_read_restart.html 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.
Hybrid models where bonds are computed using different bond potentials
can be setup using the {hybrid} bond style.
The coefficients associated with a bond style can be specified in a
data or restart file or via the "bond_coeff"_bond_coeff.html command.
All bond potentials store their coefficient data in binary restart
files which means bond_style and "bond_coeff"_bond_coeff.html commands
do not need to be re-specified in an input script that restarts a
simulation. See the "read_restart"_read_restart.html command for
details on how to do this. The one exception is that bond_style
{hybrid} only stores the list of sub-styles in the restart file; bond
coefficients need to be re-specified.
IMPORTANT NOTE: When both a bond and pair style is defined, the
"special_bonds"_special_bonds.html command often needs to be used to
turn off (or weight) the pairwise interaction that would otherwise
exist between 2 bonded atoms.
In the formulas listed for each bond style, {r} is the distance
between the 2 atoms in the bond.
:line
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 "bond_coeff"_bond_coeff.html command:
"bond_style none"_bond_none.html - turn off bonded interactions
"bond_style hybrid"_bond_hybrid.html - define multiple styles of bond interactions :ul
"bond_style class2"_bond_class2.html - COMPASS (class 2) bond
"bond_style fene"_bond_fene.html - FENE (finite-extensible non-linear elastic) bond
"bond_style fene/expand"_bond_fene_expand.html - FENE bonds with variable size particles
"bond_style harmonic"_bond_harmonic.html - harmonic bond
"bond_style morse"_bond_morse.html - Morse bond
"bond_style nonlinear"_bond_nonlinear.html - nonlinear bond
"bond_style quartic"_bond_quartic.html - breakable quartic bond
"bond_style table"_bond_table.html - tabulated by bond length :ul
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 "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
:line
[Restrictions:]
Bond styles can only be set for atom styles that allow bonds to be
defined.
Most bond styles are part of the "molecular" package. They are only
enabled if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages. The
-doc pages for individual bond potentials tell if it is part of a
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
+The doc pages for individual bond potentials tell if it is part of a
package.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html
[Default:]
bond_style none
diff --git a/doc/bond_table.html b/doc/bond_table.html
index 5e36198db..319bcbba7 100644
--- a/doc/bond_table.html
+++ b/doc/bond_table.html
@@ -1,133 +1,133 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>bond_style table command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>bond_style table style N
</PRE>
<UL><LI>style = <I>linear</I> or <I>spline</I> = method of interpolation
<LI>N = use N values in table
</UL>
<P><B>Examples:</B>
</P>
<PRE>bond_style table linear 1000
bond_coeff 1 file.table ENTRY1
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>table</I> creates interpolation tables of length <I>N</I> from bond
potential and force values listed in a file(s) as a function of bond
length. The files are read by the <A HREF = "bond_coeff.html">bond_coeff</A>
command.
</P>
<P>The interpolation tables are created by fitting cubic splines to the
file values and interpolating energy and force values at each of <I>N</I>
distances. During a simulation, these tables are used to interpolate
energy and force values as needed. The interpolation is done in one
of 2 styles: <I>linear</I> or <I>spline</I>.
</P>
<P>For the <I>linear</I> style, the bond length is used to find 2 surrounding
table values from which an energy or force is computed by linear
interpolation.
</P>
<P>For the <I>spline</I> style, a cubic spline coefficients are computed and
stored at each of the <I>N</I> values in the table. The bond length is
used to find the appropriate set of coefficients which are used to
evaluate a cubic polynomial which computes the energy or force.
</P>
<P>The following coefficients must be defined for each bond type via the
<A HREF = "bond_coeff.html">bond_coeff</A> command as in the example above.
</P>
<UL><LI>filename
<LI>keyword
</UL>
<P>The filename specifies a file containing tabulated energy and force
values. The keyword specifies a section of the file. The format of
this file is described below.
</P>
<HR>
<P>The format of a tabulated file is as follows (without the
parenthesized comments):
</P>
<PRE># Bond potential for harmonic (one or more comment or blank lines)
</PRE>
<PRE>HAM (keyword is the first text on line)
N 101 FP 0 0 EQ 0.5 (N, FP, EQ parameters)
(blank line)
1 0.00 338.0000 1352.0000 (index, bond-length, energy, force)
2 0.01 324.6152 1324.9600
...
101 1.00 338.0000 -1352.0000
</PRE>
<P>A section begins with a non-blank line whose 1st character is not a
"#"; blank lines or lines starting with "#" can be used as comments
between sections. The first line begins with a keyword which
identifies the section. The line can contain additional text, but the
initial text must match the argument specified in the
<A HREF = "bond_coeff.html">bond_coeff</A> command. The next line lists (in any
order) one or more parameters for the table. Each parameter is a
keyword followed by one or more numeric values.
</P>
<P>The parameter "N" is required and its value is the number of table
entries that follow. Note that this may be different than the <I>N</I>
specified in the <A HREF = "bond_style.html">bond_style table</A> command. Let
Ntable = <I>N</I> in the bond_style command, and Nfile = "N" in the
tabulated file. What LAMMPS does is a preliminary interpolation by
creating splines using the Nfile tabulated values as nodal points. It
uses these to interpolate as needed to generate energy and force
values at Ntable different points. The resulting tables of length
Ntable are then used as described above, when computing energy and
force for individual bond lengths. This means that if you want the
interpolation tables of length Ntable to match exactly what is in the
tabulated file (with effectively no preliminary interpolation), you
should set Ntable = Nfile.
</P>
<P>The "FP" parameter is optional. If used, it is followed by two values
fplo and fphi, which are the derivatives of the force at the innermost
and outermost bond lengths. These values are needed by the spline
construction routines. If not specified by the "FP" parameter, they
are estimated (less accurately) by the first two and last two force
values in the table.
</P>
<P>The "EQ" parameter is also optional. If used, it is followed by a the
equilibrium bond length, which is used, for example, by the <A HREF = "fix_shake.html">fix
shake</A> command. If not used, the equilibrium bond
length is set to 0.0.
</P>
<P>Following a blank line, the next N lines list the tabulated values.
On each line, the 1st value is the index from 1 to N, the 2nd value is
the bond length r (in distance units), the 3rd value is the energy (in
energy units), and the 4th is the force (in force units). The bond
lengths must range from a LO value to a HI value, and increase from
one line to the next. If the actual bond length is ever smaller than
the LO value or larger than the HI value, then the bond energy and
force is evaluated as if the bond were the LO or HI length.
</P>
<P>Note that one file can contain many sections, each with a tabulated
potential. LAMMPS reads the file section by section until it finds
one that matches the specified keyword.
</P>
<P><B>Restrictions:</B>
</P>
<P>This bond style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "bond_coeff.html">bond_coeff</A>, <A HREF = "delete_bonds.html">delete_bonds</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/bond_table.txt b/doc/bond_table.txt
index 11fbd738b..9dd243c46 100644
--- a/doc/bond_table.txt
+++ b/doc/bond_table.txt
@@ -1,128 +1,128 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
bond_style table command :h3
[Syntax:]
bond_style table style N :pre
style = {linear} or {spline} = method of interpolation
N = use N values in table :ul
[Examples:]
bond_style table linear 1000
bond_coeff 1 file.table ENTRY1 :pre
[Description:]
Style {table} creates interpolation tables of length {N} from bond
potential and force values listed in a file(s) as a function of bond
length. The files are read by the "bond_coeff"_bond_coeff.html
command.
The interpolation tables are created by fitting cubic splines to the
file values and interpolating energy and force values at each of {N}
distances. During a simulation, these tables are used to interpolate
energy and force values as needed. The interpolation is done in one
of 2 styles: {linear} or {spline}.
For the {linear} style, the bond length is used to find 2 surrounding
table values from which an energy or force is computed by linear
interpolation.
For the {spline} style, a cubic spline coefficients are computed and
stored at each of the {N} values in the table. The bond length is
used to find the appropriate set of coefficients which are used to
evaluate a cubic polynomial which computes the energy or force.
The following coefficients must be defined for each bond type via the
"bond_coeff"_bond_coeff.html command as in the example above.
filename
keyword :ul
The filename specifies a file containing tabulated energy and force
values. The keyword specifies a section of the file. The format of
this file is described below.
:line
The format of a tabulated file is as follows (without the
parenthesized comments):
# Bond potential for harmonic (one or more comment or blank lines) :pre
HAM (keyword is the first text on line)
N 101 FP 0 0 EQ 0.5 (N, FP, EQ parameters)
(blank line)
1 0.00 338.0000 1352.0000 (index, bond-length, energy, force)
2 0.01 324.6152 1324.9600
...
101 1.00 338.0000 -1352.0000 :pre
A section begins with a non-blank line whose 1st character is not a
"#"; blank lines or lines starting with "#" can be used as comments
between sections. The first line begins with a keyword which
identifies the section. The line can contain additional text, but the
initial text must match the argument specified in the
"bond_coeff"_bond_coeff.html command. The next line lists (in any
order) one or more parameters for the table. Each parameter is a
keyword followed by one or more numeric values.
The parameter "N" is required and its value is the number of table
entries that follow. Note that this may be different than the {N}
specified in the "bond_style table"_bond_style.html command. Let
Ntable = {N} in the bond_style command, and Nfile = "N" in the
tabulated file. What LAMMPS does is a preliminary interpolation by
creating splines using the Nfile tabulated values as nodal points. It
uses these to interpolate as needed to generate energy and force
values at Ntable different points. The resulting tables of length
Ntable are then used as described above, when computing energy and
force for individual bond lengths. This means that if you want the
interpolation tables of length Ntable to match exactly what is in the
tabulated file (with effectively no preliminary interpolation), you
should set Ntable = Nfile.
The "FP" parameter is optional. If used, it is followed by two values
fplo and fphi, which are the derivatives of the force at the innermost
and outermost bond lengths. These values are needed by the spline
construction routines. If not specified by the "FP" parameter, they
are estimated (less accurately) by the first two and last two force
values in the table.
The "EQ" parameter is also optional. If used, it is followed by a the
equilibrium bond length, which is used, for example, by the "fix
shake"_fix_shake.html command. If not used, the equilibrium bond
length is set to 0.0.
Following a blank line, the next N lines list the tabulated values.
On each line, the 1st value is the index from 1 to N, the 2nd value is
the bond length r (in distance units), the 3rd value is the energy (in
energy units), and the 4th is the force (in force units). The bond
lengths must range from a LO value to a HI value, and increase from
one line to the next. If the actual bond length is ever smaller than
the LO value or larger than the HI value, then the bond energy and
force is evaluated as if the bond were the LO or HI length.
Note that one file can contain many sections, each with a tabulated
potential. LAMMPS reads the file section by section until it finds
one that matches the specified keyword.
[Restrictions:]
This bond style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"bond_coeff"_bond_coeff.html, "delete_bonds"_delete_bonds.html
[Default:] none
diff --git a/doc/change_box.html b/doc/change_box.html
index 0cc459a9f..e258ec233 100644
--- a/doc/change_box.html
+++ b/doc/change_box.html
@@ -1,63 +1,63 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>change_box command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>change_box style
</PRE>
<LI>style = <I>ortho</I> or <I>triclinic</I>
<PRE> <I>ortho</I> = convert simulation box from non-orthogonal (triclinic) to orthogonal
<I>triclinic</I> = convert simulation box from orthogonal to non-orthogonal (triclinic)
</PRE>
<P><B>Examples:</B>
</P>
<PRE>change_box ortho
change_box triclinic
</PRE>
<P><B>Description:</B>
</P>
<P>By default LAMMPS runs a simulation in an orthogonal, axis-aligned
-simulation box. LAMMPS can also run simulations in <A HREF = "Section_howto.html#4_12">non-orthogonal
+simulation box. LAMMPS can also run simulations in <A HREF = "Section_howto.html#howto_12">non-orthogonal
(triclinic) simulation boxes</A>. A box is
defined as either orthogonal or non-orthogonal when it is created via
the <A HREF = "create_box.html">create_box</A>, <A HREF = "read_data.html">read_data</A>, or
<A HREF = "read_restart.html">read_restart</A> commands.
</P>
<P>This command allows you to toggle the existing simulation box from
orthogonal to non-orthogonal and vice versa. For example, an initial
equilibration simulation can be run in an orthogonal box, the box can
-be toggled to non-orthogonal, and then a <A HREF = "Section_howto.html#4_13">non-equilibrium MD (NEMD)
-simulation</A> can be run with deformation via
-the <A HREF = "fix_deform.html">fix deform</A> command.
+be toggled to non-orthogonal, and then a <A HREF = "Section_howto.html#howto_13">non-equilibrium MD (NEMD)
+simulation</A> can be run with deformation
+via the <A HREF = "fix_deform.html">fix deform</A> command.
</P>
<P>Note that if the simulation box is currently non-orthogonal and has
non-zero tilt in xy, yz, or xz, then it cannot be converted to an
orthogonal box.
</P>
<P><B>Restrictions:</B>
</P>
<P>At the point in the input script when this command is issued, no
<A HREF = "dump.html">dumps</A> can be active, nor can a <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A> or <A HREF = "fix_deform.html">fix deform</A> be
active. This is because these commands test whether the simulation
box is orthogonal when they are first issued. Note that these
commands can appear in your script before a change_box command is
issued, so long as an <A HREF = "undump.html">undump</A> or <A HREF = "unfix.html">unfix</A>
command is also used to turn them off.
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/change_box.txt b/doc/change_box.txt
index fc0ff37b2..78c2c757d 100644
--- a/doc/change_box.txt
+++ b/doc/change_box.txt
@@ -1,57 +1,57 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
change_box command :h3
[Syntax:]
change_box style :pre
style = {ortho} or {triclinic} :l
{ortho} = convert simulation box from non-orthogonal (triclinic) to orthogonal
{triclinic} = convert simulation box from orthogonal to non-orthogonal (triclinic) :pre
[Examples:]
change_box ortho
change_box triclinic :pre
[Description:]
By default LAMMPS runs a simulation in an orthogonal, axis-aligned
simulation box. LAMMPS can also run simulations in "non-orthogonal
-(triclinic) simulation boxes"_Section_howto.html#4_12. A box is
+(triclinic) simulation boxes"_Section_howto.html#howto_12. A box is
defined as either orthogonal or non-orthogonal when it is created via
the "create_box"_create_box.html, "read_data"_read_data.html, or
"read_restart"_read_restart.html commands.
This command allows you to toggle the existing simulation box from
orthogonal to non-orthogonal and vice versa. For example, an initial
equilibration simulation can be run in an orthogonal box, the box can
be toggled to non-orthogonal, and then a "non-equilibrium MD (NEMD)
-simulation"_Section_howto.html#4_13 can be run with deformation via
-the "fix deform"_fix_deform.html command.
+simulation"_Section_howto.html#howto_13 can be run with deformation
+via the "fix deform"_fix_deform.html command.
Note that if the simulation box is currently non-orthogonal and has
non-zero tilt in xy, yz, or xz, then it cannot be converted to an
orthogonal box.
[Restrictions:]
At the point in the input script when this command is issued, no
"dumps"_dump.html can be active, nor can a "fix
ave/spatial"_fix_ave_spatial.html or "fix deform"_fix_deform.html be
active. This is because these commands test whether the simulation
box is orthogonal when they are first issued. Note that these
commands can appear in your script before a change_box command is
issued, so long as an "undump"_undump.html or "unfix"_unfix.html
command is also used to turn them off.
[Related commands:] none
[Default:] none
diff --git a/doc/compute.html b/doc/compute.html
index 9f5ed1945..4e3d6ffee 100644
--- a/doc/compute.html
+++ b/doc/compute.html
@@ -1,238 +1,238 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID style args
</PRE>
<UL><LI>ID = user-assigned name for the computation
<LI>group-ID = ID of the group of atoms to perform the computation on
<LI>style = one of a list of possible style names (see below)
<LI>args = arguments used by a particular style
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all temp
compute newtemp flow temp/partial 1 1 0
compute 3 all ke/atom
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that will be performed on a group of atoms.
Quantities calculated by a compute are instantaneous values, meaning
they are calculated from information about atoms on the current
timestep or iteration, though a compute may internally store some
information about a previous state of the system. Defining a compute
does not perform a computation. Instead computes are invoked by other
LAMMPS commands as needed, e.g. to calculate a temperature needed for
a thermostat fix or to generate thermodynamic or dump file output.
-See this <A HREF = "Section_howto.html#4_15">howto section</A> for a summary of
+See this <A HREF = "Section_howto.html#howto_15">howto section</A> for a summary of
various LAMMPS output options, many of which involve computes.
</P>
<P>The ID of a compute can only contain alphanumeric characters and
underscores.
</P>
<HR>
<P>Computes calculate one of three styles of quantities: global,
per-atom, or local. A global quantity is one or more system-wide
values, e.g. the temperature of the system. A per-atom quantity is
one or more values per atom, e.g. the kinetic energy of each atom.
Per-atom values are set to 0.0 for atoms not in the specified compute
group. Local quantities are calculated by each processor based on the
atoms it owns, but there may be zero or more per atom, e.g. a list of
bond distances. Computes that produce per-atom quantities have the
word "atom" in their style, e.g. <I>ke/atom</I>. Computes that produce
local quantities have the word "local" in their style,
e.g. <I>bond/local</I>. Styles with neither "atom" or "local" in their
style produce global quantities.
</P>
<P>Note that a single compute produces either global or per-atom or local
quantities, but never more than one of these.
</P>
<P>Global, per-atom, and local quantities each come in three kinds: a
single scalar value, a vector of values, or a 2d array of values. The
doc page for each compute describes the style and kind of values it
produces, e.g. a per-atom vector. Some computes produce more than one
kind of a single style, e.g. a global scalar and a global vector.
</P>
<P>When a compute quantity is accessed, as in many of the output commands
discussed below, it can be referenced via the following bracket
notation, where ID is the ID of the compute:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >c_ID </TD><TD > entire scalar, vector, or array</TD></TR>
<TR><TD >c_ID[I] </TD><TD > one element of vector, one column of array</TD></TR>
<TR><TD >c_ID[I][J] </TD><TD > one element of array
</TD></TR></TABLE></DIV>
<P>In other words, using one bracket reduces the dimension of the
quantity once (vector -> scalar, array -> vector). Using two brackets
reduces the dimension twice (array -> scalar). Thus a command that
uses scalar compute values as input can also process elements of a
vector or array.
</P>
<P>Note that commands and <A HREF = "variable.html">variables</A> which use compute
quantities typically do not allow for all kinds, e.g. a command may
require a vector of values, not a scalar. This means there is no
ambiguity about referring to a compute quantity as c_ID even if it
produces, for example, both a scalar and vector. The doc pages for
various commands explain the details.
</P>
<HR>
<P>In LAMMPS, the values generated by a compute can be used in several
ways:
</P>
<UL><LI>The results of computes that calculate a global temperature or
pressure can be used by fixes that do thermostatting or barostatting
or when atom velocities are created.
<LI>Global values can be output via the <A HREF = "thermo_style.html">thermo_style
custom</A> or <A HREF = "fix_ave_time.html">fix ave/time</A> command.
Or the values can be referenced in a <A HREF = "variable.html">variable equal</A> or
<A HREF = "variable.html">variable atom</A> command.
<LI>Per-atom values can be output via the <A HREF = "dump.html">dump custom</A> command
or the <A HREF = "fix_ave_spatial.html">fix ave/spatial</A> command. Or they can be
time-averaged via the <A HREF = "fix_ave_atom.html">fix ave/atom</A> command or
reduced by the <A HREF = "compute_reduce.html">compute reduce</A> command. Or the
per-atom values can be referenced in an <A HREF = "variable.html">atom-style
variable</A>.
<LI>Local values can be reduced by the <A HREF = "compute_reduce.html">compute
reduce</A> command, or histogrammed by the <A HREF = "fix_ave_histo.html">fix
ave/histo</A> command, or output by the <A HREF = "dump.html">dump
local</A> command.
</UL>
<P>The results of computes that calculate global quantities can be either
"intensive" or "extensive" values. Intensive means the value is
independent of the number of atoms in the simulation,
e.g. temperature. Extensive means the value scales with the number of
atoms in the simulation, e.g. total rotational kinetic energy.
<A HREF = "thermo_style.html">Thermodynamic output</A> will normalize extensive
values by the number of atoms in the system, depending on the
"thermo_modify norm" setting. It will not normalize intensive values.
If a compute value is accessed in another way, e.g. by a
<A HREF = "variable.html">variable</A>, you may want to know whether it is an
intensive or extensive value. See the doc page for individual
computes for further info.
</P>
<HR>
<P>LAMMPS creates its own computes internally for thermodynamic output.
Three computes are always created, named "thermo_temp",
"thermo_press", and "thermo_pe", as if these commands had been invoked
in the input script:
</P>
<PRE>compute thermo_temp all temp
compute thermo_press all pressure thermo_temp
compute thermo_pe all pe
</PRE>
<P>Additional computes for other quantities are created if the thermo
style requires it. See the documentation for the
<A HREF = "thermo_style.html">thermo_style</A> command.
</P>
<P>Fixes that calculate temperature or pressure, i.e. for thermostatting
or barostatting, may also create computes. These are discussed in the
documentation for specific <A HREF = "fix.html">fix</A> commands.
</P>
<P>In all these cases, the default computes LAMMPS creates can be
replaced by computes defined by the user in the input script, as
described by the <A HREF = "thermo_modify.html">thermo_modify</A> and <A HREF = "fix_modify.html">fix
modify</A> commands.
</P>
<P>Properties of either a default or user-defined compute can be modified
via the <A HREF = "compute_modify.html">compute_modify</A> command.
</P>
<P>Computes can be deleted with the <A HREF = "uncompute.html">uncompute</A> command.
</P>
<P>Code for new computes can be added to LAMMPS (see <A HREF = "Section_modify.html">this
section</A> of the manual) and the results of their
calculations accessed in the various ways described above.
</P>
<HR>
<P>Each compute style has its own doc page which describes its arguments
and what it does. Here is an alphabetic list of compute styles
available in LAMMPS:
</P>
<UL><LI><A HREF = "compute_bond_local.html">angle/local</A> - theta and energy of each angle
<LI><A HREF = "compute_atom_molecule.html">atom/molecule</A> - sum per-atom properties for each molecule
<LI><A HREF = "compute_bond_local.html">bond/local</A> - distance and energy of each bond
<LI><A HREF = "compute_centro_atom.html">centro/atom</A> - centro-symmetry parameter for each atom
<LI><A HREF = "compute_cluster_atom.html">cluster/atom</A> - cluster ID for each atom
<LI><A HREF = "compute_cna_atom.html">cna/atom</A> - common neighbor analysis (CNA) for each atom
<LI><A HREF = "compute_com.html">com</A> - center-of-mass of group of atoms
<LI><A HREF = "compute_com_molecule.html">com/molecule</A> - center-of-mass for each molecule
<LI><A HREF = "compute_coord_atom.html">coord/atom</A> - coordination number for each atom
<LI><A HREF = "compute_damage_atom.html">damage/atom</A> - Peridynamic damage for each atom
<LI><A HREF = "compute_dihedral_local.html">dihedral/local</A> - angle of each dihedral
<LI><A HREF = "compute_displace_atom.html">displace/atom</A> - displacement of each atom
<LI><A HREF = "compute_erotate_asphere.html">erotate/asphere</A> - rotational energy of aspherical particles
<LI><A HREF = "compute_erotate_sphere.html">erotate/sphere</A> - rotational energy of spherical particles
<LI><A HREF = "compute_event_displace.html">event/displace</A> - detect event on atom displacement
<LI><A HREF = "compute_group_group.html">group/group</A> - energy/force between two groups of atoms
<LI><A HREF = "compute_gyration.html">gyration</A> - radius of gyration of group of atoms
<LI><A HREF = "compute_gyration_molecule.html">gyration/molecule</A> - radius of gyration for each molecule
<LI><A HREF = "compute_heat_flux.html">heat/flux</A> - heat flux through a group of atoms
<LI><A HREF = "compute_improper_local.html">improper/local</A> - angle of each improper
<LI><A HREF = "compute_ke.html">ke</A> - translational kinetic energy
<LI><A HREF = "compute_ke_atom.html">ke/atom</A> - kinetic energy for each atom
<LI><A HREF = "compute_msd.html">msd</A> - mean-squared displacement of group of atoms
<LI><A HREF = "compute_msd_molecule.html">msd/molecule</A> - mean-squared displacement for each molecule
<LI><A HREF = "compute_pair.html">pair</A> - values computed by a pair style
<LI><A HREF = "compute_pair_local.html">pair/local</A> - distance/energy/force of each pairwise interaction
<LI><A HREF = "compute_pe.html">pe</A> - potential energy
<LI><A HREF = "compute_pe_atom.html">pe/atom</A> - potential energy for each atom
<LI><A HREF = "compute_pressure.html">pressure</A> - total pressure and pressure tensor
<LI><A HREF = "compute_property_atom.html">property/atom</A> - convert atom attributes to per-atom vectors/arrays
<LI><A HREF = "compute_property_local.html">property/local</A> - convert local attributes to localvectors/arrays
<LI><A HREF = "compute_property_molecule.html">property/molecule</A> - convert molecule attributes to localvectors/arrays
<LI><A HREF = "compute_rdf.html">rdf</A> - radial distribution function g(r) histogram of group of atoms
<LI><A HREF = "compute_reduce.html">reduce</A> - combine per-atom quantities into a single global value
<LI><A HREF = "compute_reduce.html">reduce/region</A> - same as compute reduce, within a region
<LI><A HREF = "compute_slice.html">slice</A> - extract values from global vector or array
<LI><A HREF = "compute_stress_atom.html">stress/atom</A> - stress tensor for each atom
<LI><A HREF = "compute_temp.html">temp</A> - temperature of group of atoms
<LI><A HREF = "compute_temp_asphere.html">temp/asphere</A> - temperature of aspherical particles
<LI><A HREF = "compute_temp_com.html">temp/com</A> - temperature after subtracting center-of-mass velocity
<LI><A HREF = "compute_temp_deform.html">temp/deform</A> - temperature excluding box deformation velocity
<LI><A HREF = "compute_temp_partial.html">temp/partial</A> - temperature excluding one or more dimensions of velocity
<LI><A HREF = "compute_temp_profile.html">temp/profile</A> - temperature excluding a binned velocity profile
<LI><A HREF = "compute_temp_ramp.html">temp/ramp</A> - temperature excluding ramped velocity component
<LI><A HREF = "compute_temp_region.html">temp/region</A> - temperature of a region of atoms
<LI><A HREF = "compute_temp_sphere.html">temp/sphere</A> - temperature of spherical particles
<LI><A HREF = "compute_ti.html">ti</A> - thermodyanmic integration free energy values
</UL>
<P>There are also additional compute 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 compute section of <A HREF = "Section_commands.html#3_5">this
+the individual styles are given in the compute section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<P>There are also additional accelerated compute styles included in the
LAMMPS distribution for faster performance on CPUs and GPUs. The list
of these with links to the individual styles are given in the pair
-section of <A HREF = "Section_commands.html#3_5">this page</A>.
+section of <A HREF = "Section_commands.html#cmd_5">this page</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "uncompute.html">uncompute</A>, <A HREF = "compute_modify.html">compute_modify</A>, <A HREF = "fix_ave_atom.html">fix
ave/atom</A>, <A HREF = "fix_ave_spatial.html">fix ave/spatial</A>,
<A HREF = "fix_ave_time.html">fix ave/time</A>, <A HREF = "fix_ave_histo.html">fix ave/histo</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute.txt b/doc/compute.txt
index 47a3ed829..2c53f5f4e 100644
--- a/doc/compute.txt
+++ b/doc/compute.txt
@@ -1,231 +1,231 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute command :h3
[Syntax:]
compute ID group-ID style args :pre
ID = user-assigned name for the computation
group-ID = ID of the group of atoms to perform the computation on
style = one of a list of possible style names (see below)
args = arguments used by a particular style :ul
[Examples:]
compute 1 all temp
compute newtemp flow temp/partial 1 1 0
compute 3 all ke/atom :pre
[Description:]
Define a computation that will be performed on a group of atoms.
Quantities calculated by a compute are instantaneous values, meaning
they are calculated from information about atoms on the current
timestep or iteration, though a compute may internally store some
information about a previous state of the system. Defining a compute
does not perform a computation. Instead computes are invoked by other
LAMMPS commands as needed, e.g. to calculate a temperature needed for
a thermostat fix or to generate thermodynamic or dump file output.
-See this "howto section"_Section_howto.html#4_15 for a summary of
+See this "howto section"_Section_howto.html#howto_15 for a summary of
various LAMMPS output options, many of which involve computes.
The ID of a compute can only contain alphanumeric characters and
underscores.
:line
Computes calculate one of three styles of quantities: global,
per-atom, or local. A global quantity is one or more system-wide
values, e.g. the temperature of the system. A per-atom quantity is
one or more values per atom, e.g. the kinetic energy of each atom.
Per-atom values are set to 0.0 for atoms not in the specified compute
group. Local quantities are calculated by each processor based on the
atoms it owns, but there may be zero or more per atom, e.g. a list of
bond distances. Computes that produce per-atom quantities have the
word "atom" in their style, e.g. {ke/atom}. Computes that produce
local quantities have the word "local" in their style,
e.g. {bond/local}. Styles with neither "atom" or "local" in their
style produce global quantities.
Note that a single compute produces either global or per-atom or local
quantities, but never more than one of these.
Global, per-atom, and local quantities each come in three kinds: a
single scalar value, a vector of values, or a 2d array of values. The
doc page for each compute describes the style and kind of values it
produces, e.g. a per-atom vector. Some computes produce more than one
kind of a single style, e.g. a global scalar and a global vector.
When a compute quantity is accessed, as in many of the output commands
discussed below, it can be referenced via the following bracket
notation, where ID is the ID of the compute:
c_ID | entire scalar, vector, or array
c_ID\[I\] | one element of vector, one column of array
c_ID\[I\]\[J\] | one element of array :tb(s=|)
In other words, using one bracket reduces the dimension of the
quantity once (vector -> scalar, array -> vector). Using two brackets
reduces the dimension twice (array -> scalar). Thus a command that
uses scalar compute values as input can also process elements of a
vector or array.
Note that commands and "variables"_variable.html which use compute
quantities typically do not allow for all kinds, e.g. a command may
require a vector of values, not a scalar. This means there is no
ambiguity about referring to a compute quantity as c_ID even if it
produces, for example, both a scalar and vector. The doc pages for
various commands explain the details.
:line
In LAMMPS, the values generated by a compute can be used in several
ways:
The results of computes that calculate a global temperature or
pressure can be used by fixes that do thermostatting or barostatting
or when atom velocities are created. :ulb,l
Global values can be output via the "thermo_style
custom"_thermo_style.html or "fix ave/time"_fix_ave_time.html command.
Or the values can be referenced in a "variable equal"_variable.html or
"variable atom"_variable.html command. :l
Per-atom values can be output via the "dump custom"_dump.html command
or the "fix ave/spatial"_fix_ave_spatial.html command. Or they can be
time-averaged via the "fix ave/atom"_fix_ave_atom.html command or
reduced by the "compute reduce"_compute_reduce.html command. Or the
per-atom values can be referenced in an "atom-style
variable"_variable.html. :l
Local values can be reduced by the "compute
reduce"_compute_reduce.html command, or histogrammed by the "fix
ave/histo"_fix_ave_histo.html command, or output by the "dump
local"_dump.html command. :l,ule
The results of computes that calculate global quantities can be either
"intensive" or "extensive" values. Intensive means the value is
independent of the number of atoms in the simulation,
e.g. temperature. Extensive means the value scales with the number of
atoms in the simulation, e.g. total rotational kinetic energy.
"Thermodynamic output"_thermo_style.html will normalize extensive
values by the number of atoms in the system, depending on the
"thermo_modify norm" setting. It will not normalize intensive values.
If a compute value is accessed in another way, e.g. by a
"variable"_variable.html, you may want to know whether it is an
intensive or extensive value. See the doc page for individual
computes for further info.
:line
LAMMPS creates its own computes internally for thermodynamic output.
Three computes are always created, named "thermo_temp",
"thermo_press", and "thermo_pe", as if these commands had been invoked
in the input script:
compute thermo_temp all temp
compute thermo_press all pressure thermo_temp
compute thermo_pe all pe :pre
Additional computes for other quantities are created if the thermo
style requires it. See the documentation for the
"thermo_style"_thermo_style.html command.
Fixes that calculate temperature or pressure, i.e. for thermostatting
or barostatting, may also create computes. These are discussed in the
documentation for specific "fix"_fix.html commands.
In all these cases, the default computes LAMMPS creates can be
replaced by computes defined by the user in the input script, as
described by the "thermo_modify"_thermo_modify.html and "fix
modify"_fix_modify.html commands.
Properties of either a default or user-defined compute can be modified
via the "compute_modify"_compute_modify.html command.
Computes can be deleted with the "uncompute"_uncompute.html command.
Code for new computes can be added to LAMMPS (see "this
section"_Section_modify.html of the manual) and the results of their
calculations accessed in the various ways described above.
:line
Each compute style has its own doc page which describes its arguments
and what it does. Here is an alphabetic list of compute styles
available in LAMMPS:
"angle/local"_compute_bond_local.html - theta and energy of each angle
"atom/molecule"_compute_atom_molecule.html - sum per-atom properties for each molecule
"bond/local"_compute_bond_local.html - distance and energy of each bond
"centro/atom"_compute_centro_atom.html - centro-symmetry parameter for each atom
"cluster/atom"_compute_cluster_atom.html - cluster ID for each atom
"cna/atom"_compute_cna_atom.html - common neighbor analysis (CNA) for each atom
"com"_compute_com.html - center-of-mass of group of atoms
"com/molecule"_compute_com_molecule.html - center-of-mass for each molecule
"coord/atom"_compute_coord_atom.html - coordination number for each atom
"damage/atom"_compute_damage_atom.html - Peridynamic damage for each atom
"dihedral/local"_compute_dihedral_local.html - angle of each dihedral
"displace/atom"_compute_displace_atom.html - displacement of each atom
"erotate/asphere"_compute_erotate_asphere.html - rotational energy of aspherical particles
"erotate/sphere"_compute_erotate_sphere.html - rotational energy of spherical particles
"event/displace"_compute_event_displace.html - detect event on atom displacement
"group/group"_compute_group_group.html - energy/force between two groups of atoms
"gyration"_compute_gyration.html - radius of gyration of group of atoms
"gyration/molecule"_compute_gyration_molecule.html - radius of gyration for each molecule
"heat/flux"_compute_heat_flux.html - heat flux through a group of atoms
"improper/local"_compute_improper_local.html - angle of each improper
"ke"_compute_ke.html - translational kinetic energy
"ke/atom"_compute_ke_atom.html - kinetic energy for each atom
"msd"_compute_msd.html - mean-squared displacement of group of atoms
"msd/molecule"_compute_msd_molecule.html - mean-squared displacement for each molecule
"pair"_compute_pair.html - values computed by a pair style
"pair/local"_compute_pair_local.html - distance/energy/force of each pairwise interaction
"pe"_compute_pe.html - potential energy
"pe/atom"_compute_pe_atom.html - potential energy for each atom
"pressure"_compute_pressure.html - total pressure and pressure tensor
"property/atom"_compute_property_atom.html - convert atom attributes to per-atom vectors/arrays
"property/local"_compute_property_local.html - convert local attributes to localvectors/arrays
"property/molecule"_compute_property_molecule.html - convert molecule attributes to localvectors/arrays
"rdf"_compute_rdf.html - radial distribution function g(r) histogram of group of atoms
"reduce"_compute_reduce.html - combine per-atom quantities into a single global value
"reduce/region"_compute_reduce.html - same as compute reduce, within a region
"slice"_compute_slice.html - extract values from global vector or array
"stress/atom"_compute_stress_atom.html - stress tensor for each atom
"temp"_compute_temp.html - temperature of group of atoms
"temp/asphere"_compute_temp_asphere.html - temperature of aspherical particles
"temp/com"_compute_temp_com.html - temperature after subtracting center-of-mass velocity
"temp/deform"_compute_temp_deform.html - temperature excluding box deformation velocity
"temp/partial"_compute_temp_partial.html - temperature excluding one or more dimensions of velocity
"temp/profile"_compute_temp_profile.html - temperature excluding a binned velocity profile
"temp/ramp"_compute_temp_ramp.html - temperature excluding ramped velocity component
"temp/region"_compute_temp_region.html - temperature of a region of atoms
"temp/sphere"_compute_temp_sphere.html - temperature of spherical particles
"ti"_compute_ti.html - thermodyanmic integration free energy values :ul
There are also additional compute 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 compute section of "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
There are also additional accelerated compute styles included in the
LAMMPS distribution for faster performance on CPUs and GPUs. The list
of these with links to the individual styles are given in the pair
-section of "this page"_Section_commands.html#3_5.
+section of "this page"_Section_commands.html#cmd_5.
[Restrictions:] none
[Related commands:]
"uncompute"_uncompute.html, "compute_modify"_compute_modify.html, "fix
ave/atom"_fix_ave_atom.html, "fix ave/spatial"_fix_ave_spatial.html,
"fix ave/time"_fix_ave_time.html, "fix ave/histo"_fix_ave_histo.html
[Default:] none
diff --git a/doc/compute_ackland_atom.html b/doc/compute_ackland_atom.html
index c374f16e5..31abcf1f9 100644
--- a/doc/compute_ackland_atom.html
+++ b/doc/compute_ackland_atom.html
@@ -1,77 +1,77 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute ackland/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID ackland/atom
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>ackland/atom = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all ackland/atom
</PRE>
<P><B>Description:</B>
</P>
<P>Defines a computation that calculates the local lattice structure
according to the formulation given in <A HREF = "#Ackland">(Ackland)</A>.
</P>
<P>In contrast to the <A HREF = "compute_centro_atom.html">centro-symmetry
parameter</A> this method is stable against
temperature boost, because it is based not on the distance between
particles but the angles. Therefore statistical fluctuations are
averaged out a little more. A comparison with the Common Neighbor
Analysis metric is made in the paper.
</P>
<P>The result is a number which is mapped to the following different
lattice structures:
</P>
<UL><LI>0 = UNKNOWN
<LI>1 = BCC
<LI>2 = FCC
<LI>3 = HCP
<LI>4 = ICO
</UL>
<P>The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (i.e. each time a snapshot of atoms
is dumped). Thus it can be inefficient to compute/dump this quantity
too frequently or to have multiple compute/dump commands, each of
which computes this quantity.-
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a scalar quantity for each atom, which can be
accessed by any command that uses per-atom values from a compute as
-input. See <A HREF = "Section_howto.html#4_15">this section</A> for an overview of
-LAMMPS output options.
+input. See <A HREF = "Section_howto.html#howto_15">this section</A> for an overview
+of LAMMPS output options.
</P>
<P><B>Restrictions:</B>
</P>
<P>This compute is part of the "user-misc" package. It is only enabled
-if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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><B>Related commands:</B>
</P>
<P><A HREF = "compute_centro_atom.html">compute centro/atom</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Ackland"></A>
<P><B>(Ackland)</B> Ackland, Jones, Phys Rev B, 73, 054104 (2006).
</P>
</HTML>
diff --git a/doc/compute_ackland_atom.txt b/doc/compute_ackland_atom.txt
index e50bdd368..99991c798 100644
--- a/doc/compute_ackland_atom.txt
+++ b/doc/compute_ackland_atom.txt
@@ -1,71 +1,71 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute ackland/atom command :h3
[Syntax:]
compute ID group-ID ackland/atom :pre
ID, group-ID are documented in "compute"_compute.html command
ackland/atom = style name of this compute command :ul
[Examples:]
compute 1 all ackland/atom :pre
[Description:]
Defines a computation that calculates the local lattice structure
according to the formulation given in "(Ackland)"_#Ackland.
In contrast to the "centro-symmetry
parameter"_compute_centro_atom.html this method is stable against
temperature boost, because it is based not on the distance between
particles but the angles. Therefore statistical fluctuations are
averaged out a little more. A comparison with the Common Neighbor
Analysis metric is made in the paper.
The result is a number which is mapped to the following different
lattice structures:
0 = UNKNOWN
1 = BCC
2 = FCC
3 = HCP
4 = ICO :ul
The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (i.e. each time a snapshot of atoms
is dumped). Thus it can be inefficient to compute/dump this quantity
too frequently or to have multiple compute/dump commands, each of
which computes this quantity.-
[Output info:]
This compute calculates a scalar quantity for each atom, which can be
accessed by any command that uses per-atom values from a compute as
-input. See "this section"_Section_howto.html#4_15 for an overview of
-LAMMPS output options.
+input. See "this section"_Section_howto.html#howto_15 for an overview
+of LAMMPS output options.
[Restrictions:]
This compute is part of the "user-misc" package. It is only enabled
if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"compute centro/atom"_compute_centro_atom.html
[Default:] none
:line
:link(Ackland)
[(Ackland)] Ackland, Jones, Phys Rev B, 73, 054104 (2006).
diff --git a/doc/compute_angle_local.html b/doc/compute_angle_local.html
index 547bc7b86..772388db4 100644
--- a/doc/compute_angle_local.html
+++ b/doc/compute_angle_local.html
@@ -1,86 +1,86 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute angle/local command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID angle/local input1 input2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>angle/local = style name of this compute command
<LI>zero or more keywords may be appended
<LI>keyword = <I>theta</I> or <I>eng</I>
<PRE> <I>theta</I> = tabulate angles
<I>eng</I> = tabulate angle energies
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all angle/local theta
compute 1 all angle/local eng theta
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates properties of individual angle
interactions. The number of datums generated, aggregated across all
processors, equals the number of angles in the system.
</P>
<P>The local data stored by this command is generated by looping over all
the atoms owned on a processor and their angles. An angle will only
be included if all 3 atoms in the angle are in the specified compute
group. Any angles that have been broken (see the
<A HREF = "angle_style.html">angle_style</A> command) by setting their angle type to
0 are not included. Angles that have been turned off (see the <A HREF = "fix_shake.html">fix
shake</A> or <A HREF = "delete_bonds.html">delete_bonds</A> commands) by
setting their angle type negative are written into the file, but their
energy will be 0.0.
</P>
<P>Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, angle output from the <A HREF = "compute_property_local.html">compute
property/local</A> command can be combined
with data from this command and output by the <A HREF = "dump.html">dump local</A>
command in a consistent way.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of angles. If a single keyword is specified, a
local vector is produced. If two or more keywords are specified, a
local array is produced where the number of columns = the number of
keywords. The vector or array can be accessed by any command that
-uses local values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+uses local 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 output for <I>theta</I> will be in degrees. The output for <I>eng</I> will
be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump local</A>, <A HREF = "compute_property_local.html">compute
property/local</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_angle_local.txt b/doc/compute_angle_local.txt
index 91cf1dcdf..253a78e8f 100644
--- a/doc/compute_angle_local.txt
+++ b/doc/compute_angle_local.txt
@@ -1,76 +1,76 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute angle/local command :h3
[Syntax:]
compute ID group-ID angle/local input1 input2 ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
angle/local = style name of this compute command :l
zero or more keywords may be appended :l
keyword = {theta} or {eng} :l
{theta} = tabulate angles
{eng} = tabulate angle energies :pre
:ule
[Examples:]
compute 1 all angle/local theta
compute 1 all angle/local eng theta :pre
[Description:]
Define a computation that calculates properties of individual angle
interactions. The number of datums generated, aggregated across all
processors, equals the number of angles in the system.
The local data stored by this command is generated by looping over all
the atoms owned on a processor and their angles. An angle will only
be included if all 3 atoms in the angle are in the specified compute
group. Any angles that have been broken (see the
"angle_style"_angle_style.html command) by setting their angle type to
0 are not included. Angles that have been turned off (see the "fix
shake"_fix_shake.html or "delete_bonds"_delete_bonds.html commands) by
setting their angle type negative are written into the file, but their
energy will be 0.0.
Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, angle output from the "compute
property/local"_compute_property_local.html command can be combined
with data from this command and output by the "dump local"_dump.html
command in a consistent way.
[Output info:]
This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of angles. If a single keyword is specified, a
local vector is produced. If two or more keywords are specified, a
local array is produced where the number of columns = the number of
keywords. The vector or array can be accessed by any command that
uses local values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The output for {theta} will be in degrees. The output for {eng} will
be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"dump local"_dump.html, "compute
property/local"_compute_property_local.html
[Default:] none
diff --git a/doc/compute_atom_molecule.html b/doc/compute_atom_molecule.html
index 322679449..d185c1e99 100644
--- a/doc/compute_atom_molecule.html
+++ b/doc/compute_atom_molecule.html
@@ -1,118 +1,118 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute atom/molecule command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID atom/molecule input1 input2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>atom/molecule = style name of this compute command
<LI>one or more inputs can be listed
<LI>input = c_ID, c_ID[N], f_ID, f_ID[N], v_name
<PRE> 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>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all atom/molecule c_ke c_pe
compute 1 top atom/molecule v_myFormula c_stress<B>3</B>
</PRE>
<P><B>Description:</B>
</P>
<P>Define a calculation that sums per-atom values on a per-molecule
basis, one per listed input. The inputs can <A HREF = "compute.html">computes</A>,
<A HREF = "fix.html">fixes</A>, or <A HREF = "variable.html">variables</A> that generate per-atom
quantities. Note that attributes stored by atoms, such as mass or
force, can also be summed on a per-molecule basis, by accessing these
quantities via the <A HREF = "compute_property_atom.html">compute property/atom</A>
command.
</P>
<P>Each listed input is operated on independently. Only atoms within the
specified group contribute to the per-molecule sum. Note that compute
or fix inputs define their own group which may affect the quantities
they return. For example, if a compute is used as an input which
generates a per-atom vector, it will generate values of 0.0 for atoms
that are not in the group specified for that compute.
</P>
<P>The ordering of per-molecule quantities produced by this compute is
consistent with the ordering produced by other compute commands that
generate per-molecule datums. Conceptually, them molecule IDs will be
in ascending order for any molecule with one or more of its atoms in
the specified group.
</P>
<P>If an input begins with "c_", a compute ID must follow which has been
previously defined in the input script and which generates per-atom
quantities. See the individual <A HREF = "compute.html">compute</A> doc page for
details. If no bracketed integer is appended, the vector calculated
by the compute is used. If a bracketed interger is appended, the Ith
column of the array calculated by the compute is used. Users can also
write code for their own compute styles and <A HREF = "Section_modify.html">add them to
LAMMPS</A>.
</P>
<P>If an input begins with "f_", a fix ID must follow which has been
previously defined in the input script and which generates per-atom
quantities. See the individual <A HREF = "fix.html">fix</A> doc page for details.
Note that some fixes only produce their values on certain timesteps,
which must be compatible with when compute atom/molecule references
the values, else an error results. If no bracketed integer is
appended, the vector calculated by the fix is used. If a bracketed
integer is appended, the Ith column of the array calculated by the fix
is used. Users can also write code for their own fix style and <A HREF = "Section_modify.html">add
them to LAMMPS</A>.
</P>
<P>If an input begins with "v_", a variable name must follow which has
been previously defined in the input script. It must be an
<A HREF = "variable.html">atom-style variable</A>. Atom-style variables can
reference thermodynamic keywords and various per-atom attributes, or
invoke other computes, fixes, or variables when they are evaluated, so
this is a very general means of generating per-atom quantities to sum
on a per-molecule basis.
</P>
<HR>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global vector or global array depending on
the number of input values. The length of the vector or number of
rows in the array is the number of molecules. If a single input is
specified, a global vector is produced. If two or more inputs are
specified, a global array is produced where the number of columns =
the number of inputs. The vector or array can be accessed by any
-command that uses global values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+command that uses global 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>All the vector or array values calculated by this compute are
"extensive".
</P>
<P>The vector or array values will be in whatever <A HREF = "units.html">units</A> the
input quantities are in.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute.html">compute</A>, <A HREF = "fix.html">fix</A>, <A HREF = "variable.html">variable</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_atom_molecule.txt b/doc/compute_atom_molecule.txt
index d348b8256..53d4d3889 100644
--- a/doc/compute_atom_molecule.txt
+++ b/doc/compute_atom_molecule.txt
@@ -1,108 +1,108 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute atom/molecule command :h3
[Syntax:]
compute ID group-ID atom/molecule input1 input2 ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
atom/molecule = style name of this compute command :l
one or more inputs can be listed :l
input = c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l
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
:ule
[Examples:]
compute 1 all atom/molecule c_ke c_pe
compute 1 top atom/molecule v_myFormula c_stress[3] :pre
[Description:]
Define a calculation that sums per-atom values on a per-molecule
basis, one per listed input. The inputs can "computes"_compute.html,
"fixes"_fix.html, or "variables"_variable.html that generate per-atom
quantities. Note that attributes stored by atoms, such as mass or
force, can also be summed on a per-molecule basis, by accessing these
quantities via the "compute property/atom"_compute_property_atom.html
command.
Each listed input is operated on independently. Only atoms within the
specified group contribute to the per-molecule sum. Note that compute
or fix inputs define their own group which may affect the quantities
they return. For example, if a compute is used as an input which
generates a per-atom vector, it will generate values of 0.0 for atoms
that are not in the group specified for that compute.
The ordering of per-molecule quantities produced by this compute is
consistent with the ordering produced by other compute commands that
generate per-molecule datums. Conceptually, them molecule IDs will be
in ascending order for any molecule with one or more of its atoms in
the specified group.
If an input begins with "c_", a compute ID must follow which has been
previously defined in the input script and which generates per-atom
quantities. See the individual "compute"_compute.html doc page for
details. If no bracketed integer is appended, the vector calculated
by the compute is used. If a bracketed interger is appended, the Ith
column of the array calculated by the compute is used. Users can also
write code for their own compute styles and "add them to
LAMMPS"_Section_modify.html.
If an input begins with "f_", a fix ID must follow which has been
previously defined in the input script and which generates per-atom
quantities. See the individual "fix"_fix.html doc page for details.
Note that some fixes only produce their values on certain timesteps,
which must be compatible with when compute atom/molecule references
the values, else an error results. If no bracketed integer is
appended, the vector calculated by the fix is used. If a bracketed
integer is appended, the Ith column of the array calculated by the fix
is used. Users can also write code for their own fix style and "add
them to LAMMPS"_Section_modify.html.
If an input begins with "v_", a variable name must follow which has
been previously defined in the input script. It must be an
"atom-style variable"_variable.html. Atom-style variables can
reference thermodynamic keywords and various per-atom attributes, or
invoke other computes, fixes, or variables when they are evaluated, so
this is a very general means of generating per-atom quantities to sum
on a per-molecule basis.
:line
[Output info:]
This compute calculates a global vector or global array depending on
the number of input values. The length of the vector or number of
rows in the array is the number of molecules. If a single input is
specified, a global vector is produced. If two or more inputs are
specified, a global array is produced where the number of columns =
the number of inputs. The vector or array can be accessed by any
command that uses global values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
All the vector or array values calculated by this compute are
"extensive".
The vector or array values will be in whatever "units"_units.html the
input quantities are in.
[Restrictions:] none
[Related commands:]
"compute"_compute.html, "fix"_fix.html, "variable"_variable.html
[Default:] none
diff --git a/doc/compute_bond_local.html b/doc/compute_bond_local.html
index 59e647cf3..67bb43353 100644
--- a/doc/compute_bond_local.html
+++ b/doc/compute_bond_local.html
@@ -1,85 +1,85 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute bond/local command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID bond/local input1 input2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>bond/local = style name of this compute command
<LI>zero or more keywords may be appended
<LI>keyword = <I>dist</I> or <I>eng</I>
<PRE> <I>dist</I> = tabulate bond distances
<I>eng</I> = tablutate bond energies
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all bond/local eng
compute 1 all bond/local dist eng
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates properties of individual bond
interactions. The number of datums generated, aggregated across all
processors, equals the number of bonds in the system.
</P>
<P>The local data stored by this command is generated by looping over all
the atoms owned on a processor and their bonds. A bond will only be
included if both atoms in the bond are in the specified compute group.
Any bonds that have been broken (see the <A HREF = "bond_style.html">bond_style</A>
command) by setting their bond type to 0 are not included. Bonds that
have been turned off (see the <A HREF = "fix_shake.html">fix shake</A> or
<A HREF = "delete_bonds.html">delete_bonds</A> commands) by setting their bond type
negative are written into the file, but their energy will be 0.0.
</P>
<P>Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, bond output from the <A HREF = "compute_property_local.html">compute
property/local</A> command can be combined
with data from this command and output by the <A HREF = "dump.html">dump local</A>
command in a consistent way.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of bonds. If a single keyword is specified, a
local vector is produced. If two or more keywords are specified, a
local array is produced where the number of columns = the number of
keywords. The vector or array can be accessed by any command that
-uses local values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+uses local 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 output for <I>dist</I> will be in distance <A HREF = "units.html">units</A>. The
output for <I>eng</I> will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump local</A>, <A HREF = "compute_property_local.html">compute
property/local</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_bond_local.txt b/doc/compute_bond_local.txt
index a7801a66f..92768b6a5 100644
--- a/doc/compute_bond_local.txt
+++ b/doc/compute_bond_local.txt
@@ -1,75 +1,75 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute bond/local command :h3
[Syntax:]
compute ID group-ID bond/local input1 input2 ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
bond/local = style name of this compute command :l
zero or more keywords may be appended :l
keyword = {dist} or {eng} :l
{dist} = tabulate bond distances
{eng} = tablutate bond energies :pre
:ule
[Examples:]
compute 1 all bond/local eng
compute 1 all bond/local dist eng :pre
[Description:]
Define a computation that calculates properties of individual bond
interactions. The number of datums generated, aggregated across all
processors, equals the number of bonds in the system.
The local data stored by this command is generated by looping over all
the atoms owned on a processor and their bonds. A bond will only be
included if both atoms in the bond are in the specified compute group.
Any bonds that have been broken (see the "bond_style"_bond_style.html
command) by setting their bond type to 0 are not included. Bonds that
have been turned off (see the "fix shake"_fix_shake.html or
"delete_bonds"_delete_bonds.html commands) by setting their bond type
negative are written into the file, but their energy will be 0.0.
Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, bond output from the "compute
property/local"_compute_property_local.html command can be combined
with data from this command and output by the "dump local"_dump.html
command in a consistent way.
[Output info:]
This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of bonds. If a single keyword is specified, a
local vector is produced. If two or more keywords are specified, a
local array is produced where the number of columns = the number of
keywords. The vector or array can be accessed by any command that
uses local values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The output for {dist} will be in distance "units"_units.html. The
output for {eng} will be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"dump local"_dump.html, "compute
property/local"_compute_property_local.html
[Default:] none
diff --git a/doc/compute_centro_atom.html b/doc/compute_centro_atom.html
index caac6e53f..63c0c2b95 100644
--- a/doc/compute_centro_atom.html
+++ b/doc/compute_centro_atom.html
@@ -1,126 +1,126 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute centro/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID centro/atom lattice
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>centro/atom = style name of this compute command
<LI>lattice = <I>fcc</I> or <I>bcc</I> or N = # of neighbors per atom to include
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all centro/atom fcc
</PRE>
<PRE>compute 1 all centro/atom 8
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the centro-symmetry parameter for
each atom in the group. In solid-state systems the centro-symmetry
parameter is a useful measure of the local lattice disorder around an
atom and can be used to characterize whether the atom is part of a
perfect lattice, a local defect (e.g. a dislocation or stacking
fault), or at a surface.
</P>
<P>The value of the centro-symmetry parameter will be 0.0 for atoms not
in the specified compute group.
</P>
<P>This parameter is computed using the following formula from
<A HREF = "#Kelchner">(Kelchner)</A>
</P>
<CENTER><IMG SRC = "Eqs/centro_symmetry.jpg">
</CENTER>
<P>where the <I>N</I> nearest neighbors or each atom are identified and Ri and
Ri+N/2 are vectors from the central atom to a particular pair of
nearest neighbors. There are N*(N-1)/2 possible neighbor pairs that
can contribute to this formula. The quantity in the sum is computed
for each, and the N/2 smallest are used. This will typically be for
pairs of atoms in symmetrically opposite positions with respect to the
central atom; hence the i+N/2 notation.
</P>
<P><I>N</I> is an input parameter, which should be set to correspond to the
number of nearest neighbors in the underlying lattice of atoms. If
the keyword <I>fcc</I> or <I>bcc</I> is used, <I>N</I> is set to 12 and 8
respectively. More generally, <I>N</I> can be set to a positive, even
integer.
</P>
<P>For an atom on a lattice site, surrounded by atoms on a perfect
lattice, the centro-symmetry parameter will be 0. It will be near 0
for small thermal perturbations of a perfect lattice. If a point
defect exists, the symmetry is broken, and the parameter will be a
larger positive value. An atom at a surface will have a large
positive parameter. If the atom does not have <I>N</I> neighbors (within
the potential cutoff), then its centro-symmetry parameter is set to
0.0.
</P>
<P>Only atoms within the cutoff of the pairwise neighbor list are
considered as possible neighbors. Atoms not in the compute group are
included in the <I>N</I> neighbors used in this calculation.
</P>
<P>The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (e.g. each time a snapshot of atoms
is dumped). Thus it can be inefficient to compute/dump this quantity
too frequently or to have multiple compute/dump commands, each with a
<I>centro/atom</I> style.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-<A HREF = "Section_howto.html#4_15">this section</A> for an overview of LAMMPS
+<A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS
output options.
</P>
<P>The per-atom vector values are unitless values >= 0.0. Their
magnitude depends on the lattice style due to the number of
contibuting neighbor pairs in the summation in the formula above. And
it depends on the local defects surrounding the central atom, as
described above.
</P>
<P>Here are typical centro-symmetry values, from a a nanoindentation
simulation into gold (FCC). These were provided by Jon Zimmerman
(Sandia):
</P>
<PRE>Bulk lattice = 0
Dislocation core ~ 1.0 (0.5 to 1.25)
Stacking faults ~ 5.0 (4.0 to 6.0)
Free surface ~ 23.0
</PRE>
<P>These values are *not* normalized by the square of the lattice
parameter. If they were, normalized values would be:
</P>
<PRE>Bulk lattice = 0
Dislocation core ~ 0.06 (0.03 to 0.075)
Stacking faults ~ 0.3 (0.24 to 0.36)
Free surface ~ 1.38
</PRE>
<P>For BCC materials, the values for dislocation cores and free surfaces
would be somewhat different, due to their being only 8 neighbors instead
of 12.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_cna_atom.html">compute cna/atom</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Kelchner"></A>
<P><B>(Kelchner)</B> Kelchner, Plimpton, Hamilton, Phys Rev B, 58, 11085 (1998).
</P>
</HTML>
diff --git a/doc/compute_centro_atom.txt b/doc/compute_centro_atom.txt
index ec9dc2060..a5a83a0c3 100644
--- a/doc/compute_centro_atom.txt
+++ b/doc/compute_centro_atom.txt
@@ -1,119 +1,119 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute centro/atom command :h3
[Syntax:]
compute ID group-ID centro/atom lattice :pre
ID, group-ID are documented in "compute"_compute.html command
centro/atom = style name of this compute command
lattice = {fcc} or {bcc} or N = # of neighbors per atom to include :ul
[Examples:]
compute 1 all centro/atom fcc :pre
compute 1 all centro/atom 8 :pre
[Description:]
Define a computation that calculates the centro-symmetry parameter for
each atom in the group. In solid-state systems the centro-symmetry
parameter is a useful measure of the local lattice disorder around an
atom and can be used to characterize whether the atom is part of a
perfect lattice, a local defect (e.g. a dislocation or stacking
fault), or at a surface.
The value of the centro-symmetry parameter will be 0.0 for atoms not
in the specified compute group.
This parameter is computed using the following formula from
"(Kelchner)"_#Kelchner
:c,image(Eqs/centro_symmetry.jpg)
where the {N} nearest neighbors or each atom are identified and Ri and
Ri+N/2 are vectors from the central atom to a particular pair of
nearest neighbors. There are N*(N-1)/2 possible neighbor pairs that
can contribute to this formula. The quantity in the sum is computed
for each, and the N/2 smallest are used. This will typically be for
pairs of atoms in symmetrically opposite positions with respect to the
central atom; hence the i+N/2 notation.
{N} is an input parameter, which should be set to correspond to the
number of nearest neighbors in the underlying lattice of atoms. If
the keyword {fcc} or {bcc} is used, {N} is set to 12 and 8
respectively. More generally, {N} can be set to a positive, even
integer.
For an atom on a lattice site, surrounded by atoms on a perfect
lattice, the centro-symmetry parameter will be 0. It will be near 0
for small thermal perturbations of a perfect lattice. If a point
defect exists, the symmetry is broken, and the parameter will be a
larger positive value. An atom at a surface will have a large
positive parameter. If the atom does not have {N} neighbors (within
the potential cutoff), then its centro-symmetry parameter is set to
0.0.
Only atoms within the cutoff of the pairwise neighbor list are
considered as possible neighbors. Atoms not in the compute group are
included in the {N} neighbors used in this calculation.
The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (e.g. each time a snapshot of atoms
is dumped). Thus it can be inefficient to compute/dump this quantity
too frequently or to have multiple compute/dump commands, each with a
{centro/atom} style.
[Output info:]
This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-"this section"_Section_howto.html#4_15 for an overview of LAMMPS
+"this section"_Section_howto.html#howto_15 for an overview of LAMMPS
output options.
The per-atom vector values are unitless values >= 0.0. Their
magnitude depends on the lattice style due to the number of
contibuting neighbor pairs in the summation in the formula above. And
it depends on the local defects surrounding the central atom, as
described above.
Here are typical centro-symmetry values, from a a nanoindentation
simulation into gold (FCC). These were provided by Jon Zimmerman
(Sandia):
Bulk lattice = 0
Dislocation core ~ 1.0 (0.5 to 1.25)
Stacking faults ~ 5.0 (4.0 to 6.0)
Free surface ~ 23.0 :pre
These values are *not* normalized by the square of the lattice
parameter. If they were, normalized values would be:
Bulk lattice = 0
Dislocation core ~ 0.06 (0.03 to 0.075)
Stacking faults ~ 0.3 (0.24 to 0.36)
Free surface ~ 1.38 :pre
For BCC materials, the values for dislocation cores and free surfaces
would be somewhat different, due to their being only 8 neighbors instead
of 12.
[Restrictions:] none
[Related commands:]
"compute cna/atom"_compute_cna_atom.html
[Default:] none
:line
:link(Kelchner)
[(Kelchner)] Kelchner, Plimpton, Hamilton, Phys Rev B, 58, 11085 (1998).
diff --git a/doc/compute_cluster_atom.html b/doc/compute_cluster_atom.html
index 1cb85dad1..b2f7b49fd 100644
--- a/doc/compute_cluster_atom.html
+++ b/doc/compute_cluster_atom.html
@@ -1,62 +1,62 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute cluster/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID cluster/atom cutoff
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>cluster/atom = style name of this compute command
<LI>cutoff = distance within which to label atoms as part of same cluster (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all cluster/atom 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that assigns each atom a cluster ID.
</P>
<P>A cluster is defined as a set of atoms, each of which is within the
cutoff distance from one or more other atoms in the cluster. If an
atom has no neighbors within the cutoff distance, then it is a 1-atom
cluster. The ID of every atom in the cluster will be the smallest
atom ID of any atom in the cluster.
</P>
<P>Only atoms in the compute group are clustered and assigned cluster
IDs. Atoms not in the compute group are assigned a cluster ID = 0.
</P>
<P>The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (i.e. each time a snapshot of atoms
is dumped). Thus it can be inefficient to compute/dump this quantity
too frequently or to have multiple compute/dump commands, each of a
<I>clsuter/atom</I> style.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-<A HREF = "Section_howto.html#4_15">this section</A> for an overview of LAMMPS
+<A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS
output options.
</P>
<P>The per-atom vector values will be an ID > 0, as explained above.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_coord_atom.html">compute coord/atom</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_cluster_atom.txt b/doc/compute_cluster_atom.txt
index 497417b4c..3193331f9 100644
--- a/doc/compute_cluster_atom.txt
+++ b/doc/compute_cluster_atom.txt
@@ -1,57 +1,57 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute cluster/atom command :h3
[Syntax:]
compute ID group-ID cluster/atom cutoff :pre
ID, group-ID are documented in "compute"_compute.html command
cluster/atom = style name of this compute command
cutoff = distance within which to label atoms as part of same cluster (distance units) :ul
[Examples:]
compute 1 all cluster/atom 1.0 :pre
[Description:]
Define a computation that assigns each atom a cluster ID.
A cluster is defined as a set of atoms, each of which is within the
cutoff distance from one or more other atoms in the cluster. If an
atom has no neighbors within the cutoff distance, then it is a 1-atom
cluster. The ID of every atom in the cluster will be the smallest
atom ID of any atom in the cluster.
Only atoms in the compute group are clustered and assigned cluster
IDs. Atoms not in the compute group are assigned a cluster ID = 0.
The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (i.e. each time a snapshot of atoms
is dumped). Thus it can be inefficient to compute/dump this quantity
too frequently or to have multiple compute/dump commands, each of a
{clsuter/atom} style.
[Output info:]
This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-"this section"_Section_howto.html#4_15 for an overview of LAMMPS
+"this section"_Section_howto.html#howto_15 for an overview of LAMMPS
output options.
The per-atom vector values will be an ID > 0, as explained above.
[Restrictions:] none
[Related commands:]
"compute coord/atom"_compute_coord_atom.html
[Default:] none
diff --git a/doc/compute_cna_atom.html b/doc/compute_cna_atom.html
index 958c03912..7549fa7c6 100644
--- a/doc/compute_cna_atom.html
+++ b/doc/compute_cna_atom.html
@@ -1,104 +1,104 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute cna/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID cna/atom cutoff
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>cna/atom = style name of this compute command
<LI>cutoff = cutoff distance for nearest neighbors (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all cna/atom 3.08
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the CNA (Common Neighbor
Analysis) pattern for each atom in the group. In solid-state systems
the CNA pattern is a useful measure of the local crystal structure
around an atom. The CNA methodology is described in <A HREF = "#Faken">(Faken)</A>
and <A HREF = "#Tsuzuki">(Tsuzuki)</A>.
</P>
<P>Currently, there are five kinds of CNA patterns LAMMPS recognizes:
</P>
<UL><LI>fcc = 1
<LI>hcp = 2
<LI>bcc = 3
<LI>icosohedral = 4
<LI>unknown = 5
</UL>
<P>The value of the CNA pattern will be 0 for atoms not in the specified
compute group. Note that normally a CNA calculation should only be
performed on mono-component systems.
</P>
<P>The CNA calculation can be sensitive to the specified cutoff value.
You should insure the appropriate nearest neighbors of an atom are
found within the cutoff distance for the presumed crystal strucure.
E.g. 12 nearest neighbor for perfect FCC and HCP crystals, 14 nearest
neighbors for perfect BCC crystals. These formulas can be used to
obtain a good cutoff distance:
</P>
<CENTER><IMG SRC = "Eqs/cna_cutoff1.jpg">
</CENTER>
<P>where a is the lattice constant for the crystal structure concerned
and in the HCP case, x = (c/a) / 1.633, where 1.633 is the ideal c/a
for HCP crystals.
</P>
<P>Also note that since the CNA calculation in LAMMPS uses the neighbors
of an owned atom to find the nearest neighbors of a ghost atom, the
following relation should also be satisfied:
</P>
<CENTER><IMG SRC = "Eqs/cna_cutoff2.jpg">
</CENTER>
<P>where Rc is the cutoff distance of the potential, Rs is the skin
distance as specified by the <A HREF = "neighbor.html">neighbor</A> command, and
cutoff is the argument used with the compute cna/atom command. LAMMPS
will issue a warning if this is not the case.
</P>
<P>The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (e.g. each time a snapshot of atoms
is dumped). Thus it can be inefficient to compute/dump this quantity
too frequently or to have multiple compute/dump commands, each with a
<I>cna/atom</I> style.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-<A HREF = "Section_howto.html#4_15">this section</A> for an overview of LAMMPS
+<A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS
output options.
</P>
<P>The per-atom vector values will be a number from 0 to 5, as explained
above.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_centro_atom.html">compute centro/atom</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Faken"></A>
<P><B>(Faken)</B> Faken, Jonsson, Comput Mater Sci, 2, 279 (1994).
</P>
<A NAME = "Tsuzuki"></A>
<P><B>(Tsuzuki)</B> Tsuzuki, Branicio, Rino, Comput Phys Comm, 177, 518 (2007).
</P>
</HTML>
diff --git a/doc/compute_cna_atom.txt b/doc/compute_cna_atom.txt
index 818459781..63afcf9a8 100644
--- a/doc/compute_cna_atom.txt
+++ b/doc/compute_cna_atom.txt
@@ -1,97 +1,97 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute cna/atom command :h3
[Syntax:]
compute ID group-ID cna/atom cutoff :pre
ID, group-ID are documented in "compute"_compute.html command
cna/atom = style name of this compute command
cutoff = cutoff distance for nearest neighbors (distance units) :ul
[Examples:]
compute 1 all cna/atom 3.08 :pre
[Description:]
Define a computation that calculates the CNA (Common Neighbor
Analysis) pattern for each atom in the group. In solid-state systems
the CNA pattern is a useful measure of the local crystal structure
around an atom. The CNA methodology is described in "(Faken)"_#Faken
and "(Tsuzuki)"_#Tsuzuki.
Currently, there are five kinds of CNA patterns LAMMPS recognizes:
fcc = 1
hcp = 2
bcc = 3
icosohedral = 4
unknown = 5 :ul
The value of the CNA pattern will be 0 for atoms not in the specified
compute group. Note that normally a CNA calculation should only be
performed on mono-component systems.
The CNA calculation can be sensitive to the specified cutoff value.
You should insure the appropriate nearest neighbors of an atom are
found within the cutoff distance for the presumed crystal strucure.
E.g. 12 nearest neighbor for perfect FCC and HCP crystals, 14 nearest
neighbors for perfect BCC crystals. These formulas can be used to
obtain a good cutoff distance:
:c,image(Eqs/cna_cutoff1.jpg)
where a is the lattice constant for the crystal structure concerned
and in the HCP case, x = (c/a) / 1.633, where 1.633 is the ideal c/a
for HCP crystals.
Also note that since the CNA calculation in LAMMPS uses the neighbors
of an owned atom to find the nearest neighbors of a ghost atom, the
following relation should also be satisfied:
:c,image(Eqs/cna_cutoff2.jpg)
where Rc is the cutoff distance of the potential, Rs is the skin
distance as specified by the "neighbor"_neighbor.html command, and
cutoff is the argument used with the compute cna/atom command. LAMMPS
will issue a warning if this is not the case.
The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (e.g. each time a snapshot of atoms
is dumped). Thus it can be inefficient to compute/dump this quantity
too frequently or to have multiple compute/dump commands, each with a
{cna/atom} style.
[Output info:]
This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-"this section"_Section_howto.html#4_15 for an overview of LAMMPS
+"this section"_Section_howto.html#howto_15 for an overview of LAMMPS
output options.
The per-atom vector values will be a number from 0 to 5, as explained
above.
[Restrictions:] none
[Related commands:]
"compute centro/atom"_compute_centro_atom.html
[Default:] none
:line
:link(Faken)
[(Faken)] Faken, Jonsson, Comput Mater Sci, 2, 279 (1994).
:link(Tsuzuki)
[(Tsuzuki)] Tsuzuki, Branicio, Rino, Comput Phys Comm, 177, 518 (2007).
diff --git a/doc/compute_com.html b/doc/compute_com.html
index 10b02794f..b8bdb0553 100644
--- a/doc/compute_com.html
+++ b/doc/compute_com.html
@@ -1,69 +1,70 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute com command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID com
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>com = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all com
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the center-of-mass of the group
of atoms, including all effects due to atoms passing thru periodic
boundaries.
</P>
<P>A vector of three quantites is calculated by this compute, which
are the x,y,z coordinates of the center of mass.
</P>
<P>IMPORTANT NOTE: The coordinates of an atom contribute to the
center-of-mass in "unwrapped" form, by using the image flags
associated with each atom. See the <A HREF = "dump.html">dump custom</A> command
for a discussion of "unwrapped" coordinates. See the Atoms section of
the <A HREF = "read_data.html">read_data</A> command for a discussion of image flags
and how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the <A HREF = "set.html">set
image</A> command.
</P>
<P>IMPORTANT NOTE: If an atom is part of a rigid body (see the <A HREF = "fix_rigid.html">fix
rigid</A> command), it's periodic image flags are altered,
and its contribution to the center-of-mass may not reflect its true
contribution. See the <A HREF = "fix_rigid.html">fix rigid</A> command for details.
Thus, to compute the center-of-mass of rigid bodies as they cross
periodic boundaries, you will need to post-process a <A HREF = "dump.html">dump
file</A> containing coordinates of the atoms in the bodies.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global vector of length 3, which can be
accessed by indices 1-3 by any command that uses global vector values
-from a compute as input. See <A HREF = "Section_howto.html#4_15">this section</A>
-for an overview of LAMMPS output options.
+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 vector values are "intensive". The vector values will be in
distance <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_com_molecule.html">compute com/molecule</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_com.txt b/doc/compute_com.txt
index 4b678ae01..43844dfd2 100644
--- a/doc/compute_com.txt
+++ b/doc/compute_com.txt
@@ -1,64 +1,65 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute com command :h3
[Syntax:]
compute ID group-ID com :pre
ID, group-ID are documented in "compute"_compute.html command
com = style name of this compute command :ul
[Examples:]
compute 1 all com :pre
[Description:]
Define a computation that calculates the center-of-mass of the group
of atoms, including all effects due to atoms passing thru periodic
boundaries.
A vector of three quantites is calculated by this compute, which
are the x,y,z coordinates of the center of mass.
IMPORTANT NOTE: The coordinates of an atom contribute to the
center-of-mass in "unwrapped" form, by using the image flags
associated with each atom. See the "dump custom"_dump.html command
for a discussion of "unwrapped" coordinates. See the Atoms section of
the "read_data"_read_data.html command for a discussion of image flags
and how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the "set
image"_set.html command.
IMPORTANT NOTE: If an atom is part of a rigid body (see the "fix
rigid"_fix_rigid.html command), it's periodic image flags are altered,
and its contribution to the center-of-mass may not reflect its true
contribution. See the "fix rigid"_fix_rigid.html command for details.
Thus, to compute the center-of-mass of rigid bodies as they cross
periodic boundaries, you will need to post-process a "dump
file"_dump.html containing coordinates of the atoms in the bodies.
[Output info:]
This compute calculates a global vector of length 3, which can be
accessed by indices 1-3 by any command that uses global vector values
-from a compute as input. See "this section"_Section_howto.html#4_15
-for an overview of LAMMPS output options.
+from a compute as input. See "this
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+options.
The vector values are "intensive". The vector values will be in
distance "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute com/molecule"_compute_com_molecule.html
[Default:] none
diff --git a/doc/compute_com_molecule.html b/doc/compute_com_molecule.html
index 3f6ac13cb..957b3feca 100644
--- a/doc/compute_com_molecule.html
+++ b/doc/compute_com_molecule.html
@@ -1,81 +1,81 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute com/molecule command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID com/molecule
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>com/molecule = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 fluid com/molecule
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the center-of-mass of individual
molecules. The calculation includes all effects due to atoms passing
thru periodic boundaries.
</P>
<P>The x,y,z coordinates of the center-of-mass for a particular molecule
are only computed if one or more of its atoms are in the specified
group. Normally all atoms in the molecule should be in the group,
however this is not required. LAMMPS will warn you if this is not the
case. Only atoms in the group contribute to the center-of-mass
calculation for the molecule.
</P>
<P>The ordering of per-molecule quantities produced by this compute is
consistent with the ordering produced by other compute commands that
generate per-molecule datums. Conceptually, them molecule IDs will be
in ascending order for any molecule with one or more of its atoms in
the specified group.
</P>
<P>IMPORTANT NOTE: The coordinates of an atom contribute to the
molecule's center-of-mass in "unwrapped" form, by using the image
flags associated with each atom. See the <A HREF = "dump.html">dump custom</A>
command for a discussion of "unwrapped" coordinates. See the Atoms
section of the <A HREF = "read_data.html">read_data</A> command for a discussion of
image flags and how they are set for each atom. You can reset the
image flags (e.g. to 0) before invoking this compute by using the <A HREF = "set.html">set
image</A> command.
</P>
<P>IMPORTANT NOTE: If an atom is part of a rigid body (see the <A HREF = "fix_rigid.html">fix
rigid</A> command), it's periodic image flags are altered,
and its contribution to the center-of-mass may not reflect its true
contribution. See the <A HREF = "fix_rigid.html">fix rigid</A> command for details.
Thus, to compute the center-of-mass of rigid bodies as they cross
periodic boundaries, you will need to post-process a <A HREF = "dump.html">dump
file</A> containing coordinates of the atoms in the bodies.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global array where the number of rows =
Nmolecules and the number of columns = 3 for the x,y,z center-of-mass
coordinates of each molecule. These values can be accessed by any
command that uses global array values from a compute as input. See
-<A HREF = "Section_howto.html#4_15">this section</A> for an overview of LAMMPS
+<A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS
output options.
</P>
<P>The array values are "intensive". The array values will be in
distance <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_com.html">compute com</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_com_molecule.txt b/doc/compute_com_molecule.txt
index 670c9117a..accfd389c 100644
--- a/doc/compute_com_molecule.txt
+++ b/doc/compute_com_molecule.txt
@@ -1,76 +1,76 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute com/molecule command :h3
[Syntax:]
compute ID group-ID com/molecule :pre
ID, group-ID are documented in "compute"_compute.html command
com/molecule = style name of this compute command :ul
[Examples:]
compute 1 fluid com/molecule :pre
[Description:]
Define a computation that calculates the center-of-mass of individual
molecules. The calculation includes all effects due to atoms passing
thru periodic boundaries.
The x,y,z coordinates of the center-of-mass for a particular molecule
are only computed if one or more of its atoms are in the specified
group. Normally all atoms in the molecule should be in the group,
however this is not required. LAMMPS will warn you if this is not the
case. Only atoms in the group contribute to the center-of-mass
calculation for the molecule.
The ordering of per-molecule quantities produced by this compute is
consistent with the ordering produced by other compute commands that
generate per-molecule datums. Conceptually, them molecule IDs will be
in ascending order for any molecule with one or more of its atoms in
the specified group.
IMPORTANT NOTE: The coordinates of an atom contribute to the
molecule's center-of-mass in "unwrapped" form, by using the image
flags associated with each atom. See the "dump custom"_dump.html
command for a discussion of "unwrapped" coordinates. See the Atoms
section of the "read_data"_read_data.html command for a discussion of
image flags and how they are set for each atom. You can reset the
image flags (e.g. to 0) before invoking this compute by using the "set
image"_set.html command.
IMPORTANT NOTE: If an atom is part of a rigid body (see the "fix
rigid"_fix_rigid.html command), it's periodic image flags are altered,
and its contribution to the center-of-mass may not reflect its true
contribution. See the "fix rigid"_fix_rigid.html command for details.
Thus, to compute the center-of-mass of rigid bodies as they cross
periodic boundaries, you will need to post-process a "dump
file"_dump.html containing coordinates of the atoms in the bodies.
[Output info:]
This compute calculates a global array where the number of rows =
Nmolecules and the number of columns = 3 for the x,y,z center-of-mass
coordinates of each molecule. These values can be accessed by any
command that uses global array values from a compute as input. See
-"this section"_Section_howto.html#4_15 for an overview of LAMMPS
+"this section"_Section_howto.html#howto_15 for an overview of LAMMPS
output options.
The array values are "intensive". The array values will be in
distance "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute com"_compute_com.html
[Default:] none
diff --git a/doc/compute_coord_atom.html b/doc/compute_coord_atom.html
index 6ab22c03b..57738b4f3 100644
--- a/doc/compute_coord_atom.html
+++ b/doc/compute_coord_atom.html
@@ -1,63 +1,63 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute coord/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID coord/atom cutoff
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>coord/atom = style name of this compute command
<LI>cutoff = distance within which to count coordination neighbors (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all coord/atom 2.0
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the coordination number for each
atom in a group.
</P>
<P>The value of the coordination number will be 0.0 for atoms not in the
specified compute group.
</P>
<P>The coordination number is defined as the number of neighbor atoms
within the specified cutoff distance from the central atom. Atoms not
in the group are included in the coordination number of atoms in the
group.
</P>
<P>The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (i.e. each time a snapshot of atoms
is dumped). Thus it can be inefficient to compute/dump this quantity
too frequently or to have multiple compute/dump commands, each of a
<I>coord/atom</I> style.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-<A HREF = "Section_howto.html#4_15">this section</A> for an overview of LAMMPS
+<A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS
output options.
</P>
<P>The per-atom vector values will be a number >= 0.0, as explained
above.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_cluster_atom.html">compute cluster/atom</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_coord_atom.txt b/doc/compute_coord_atom.txt
index bd9c471a7..fc5f2c900 100644
--- a/doc/compute_coord_atom.txt
+++ b/doc/compute_coord_atom.txt
@@ -1,58 +1,58 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute coord/atom command :h3
[Syntax:]
compute ID group-ID coord/atom cutoff :pre
ID, group-ID are documented in "compute"_compute.html command
coord/atom = style name of this compute command
cutoff = distance within which to count coordination neighbors (distance units) :ul
[Examples:]
compute 1 all coord/atom 2.0 :pre
[Description:]
Define a computation that calculates the coordination number for each
atom in a group.
The value of the coordination number will be 0.0 for atoms not in the
specified compute group.
The coordination number is defined as the number of neighbor atoms
within the specified cutoff distance from the central atom. Atoms not
in the group are included in the coordination number of atoms in the
group.
The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (i.e. each time a snapshot of atoms
is dumped). Thus it can be inefficient to compute/dump this quantity
too frequently or to have multiple compute/dump commands, each of a
{coord/atom} style.
[Output info:]
This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-"this section"_Section_howto.html#4_15 for an overview of LAMMPS
+"this section"_Section_howto.html#howto_15 for an overview of LAMMPS
output options.
The per-atom vector values will be a number >= 0.0, as explained
above.
[Restrictions:] none
[Related commands:]
"compute cluster/atom"_compute_cluster_atom.html
[Default:] none
diff --git a/doc/compute_damage_atom.html b/doc/compute_damage_atom.html
index f943fe06d..b15291a14 100644
--- a/doc/compute_damage_atom.html
+++ b/doc/compute_damage_atom.html
@@ -1,58 +1,58 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute damage/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID damage/atom
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>damage/atom = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all damage/atom
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the per-atom damage for each atom
in a group. Please see the <A HREF = "http://www.sandia.gov/~mlparks/papers/PDLAMMPS.pdf">PDLAMMPS user
guide</A> for a formal
definition of "damage" and more details about Peridynamics as it is
implemented in LAMMPS.
</P>
<P>The value of the damage will be 0.0 for atoms not in the specified
compute group.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-<A HREF = "Section_howto.html#4_15">this section</A> for an overview of LAMMPS
+<A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS
output options.
</P>
<P>The per-atom vector values will be a number >= 0.0, as explained
above.
</P>
<P><B>Restrictions:</B>
</P>
<P>This compute is part of the "peri" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump custom</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_damage_atom.txt b/doc/compute_damage_atom.txt
index 4a4b951ce..830caa933 100644
--- a/doc/compute_damage_atom.txt
+++ b/doc/compute_damage_atom.txt
@@ -1,53 +1,53 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute damage/atom command :h3
[Syntax:]
compute ID group-ID damage/atom :pre
ID, group-ID are documented in "compute"_compute.html command
damage/atom = style name of this compute command :ul
[Examples:]
compute 1 all damage/atom :pre
[Description:]
Define a computation that calculates the per-atom damage for each atom
in a group. Please see the "PDLAMMPS user
guide"_http://www.sandia.gov/~mlparks/papers/PDLAMMPS.pdf for a formal
definition of "damage" and more details about Peridynamics as it is
implemented in LAMMPS.
The value of the damage will be 0.0 for atoms not in the specified
compute group.
[Output info:]
This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-"this section"_Section_howto.html#4_15 for an overview of LAMMPS
+"this section"_Section_howto.html#howto_15 for an overview of LAMMPS
output options.
The per-atom vector values will be a number >= 0.0, as explained
above.
[Restrictions:]
This compute is part of the "peri" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"dump custom"_dump.html
[Default:] none
diff --git a/doc/compute_dihedral_local.html b/doc/compute_dihedral_local.html
index a5a122cb7..e1f9cf13b 100644
--- a/doc/compute_dihedral_local.html
+++ b/doc/compute_dihedral_local.html
@@ -1,78 +1,78 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute dihedral/local command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID dihedral/local input1 input2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>dihedral/local = style name of this compute command
<LI>zero or more keywords may be appended
<LI>keyword = <I>phi</I>
<PRE> <I>phi</I> = tabulate dihedral angles
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all dihedral/local phi
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates properties of individual dihedral
interactions. The number of datums generated, aggregated across all
processors, equals the number of angles in the system.
</P>
<P>The local data stored by this command is generated by looping over all
the atoms owned on a processor and their dihedrals. A dihedral will
only be included if all 4 atoms in the dihedral are in the specified
compute group.
</P>
<P>Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, dihedral output from the <A HREF = "compute_property_local.html">compute
property/local</A> command can be combined
with data from this command and output by the <A HREF = "dump.html">dump local</A>
command in a consistent way.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of dihedrals. If a single keyword is specified, a
local vector is produced. If two or more keywords are specified, a
local array is produced where the number of columns = the number of
keywords. The vector or array can be accessed by any command that
-uses local values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+uses local 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 output for <I>phi</I> will be in degrees.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump local</A>, <A HREF = "compute_property_local.html">compute
property/local</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_dihedral_local.txt b/doc/compute_dihedral_local.txt
index 405465a0e..0bc32936f 100644
--- a/doc/compute_dihedral_local.txt
+++ b/doc/compute_dihedral_local.txt
@@ -1,68 +1,68 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute dihedral/local command :h3
[Syntax:]
compute ID group-ID dihedral/local input1 input2 ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
dihedral/local = style name of this compute command :l
zero or more keywords may be appended :l
keyword = {phi} :l
{phi} = tabulate dihedral angles :pre
:ule
[Examples:]
compute 1 all dihedral/local phi :pre
[Description:]
Define a computation that calculates properties of individual dihedral
interactions. The number of datums generated, aggregated across all
processors, equals the number of angles in the system.
The local data stored by this command is generated by looping over all
the atoms owned on a processor and their dihedrals. A dihedral will
only be included if all 4 atoms in the dihedral are in the specified
compute group.
Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, dihedral output from the "compute
property/local"_compute_property_local.html command can be combined
with data from this command and output by the "dump local"_dump.html
command in a consistent way.
[Output info:]
This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of dihedrals. If a single keyword is specified, a
local vector is produced. If two or more keywords are specified, a
local array is produced where the number of columns = the number of
keywords. The vector or array can be accessed by any command that
uses local values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The output for {phi} will be in degrees.
[Restrictions:] none
[Related commands:]
"dump local"_dump.html, "compute
property/local"_compute_property_local.html
[Default:] none
diff --git a/doc/compute_displace_atom.html b/doc/compute_displace_atom.html
index e21919b5e..79dae1562 100644
--- a/doc/compute_displace_atom.html
+++ b/doc/compute_displace_atom.html
@@ -1,93 +1,93 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute displace/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID displace/atom
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>displace/atom = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all displace/atom
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the current displacement of each
atom in the group from its original coordinates, including all effects
due to atoms passing thru periodic boundaries.
</P>
<P>A vector of four quantites per atom is calculated by this compute.
The first 3 elements of the vector are the dx,dy,dz displacements.
The 4th component is the total displacement, i.e. sqrt(dx*dx + dy*dy +
dz*dz).
</P>
<P>The displacement of an atom is from its original position at the time
the compute command was issued. To store the original coordinates,
the compute creates its own fix of style "store/state", as if this
command had been issued:
</P>
<PRE>fix compute-ID_store_state group-ID store/state xu yu zu
</PRE>
<P>See the <A HREF = "fix_store_state.html">fix store/state</A> command for details.
Note that the ID of the new fix is the compute-ID + underscore +
"store/state", and the group for the new fix is the same as the
compute group.
</P>
<P>The value of the displacement will be 0.0 for atoms not in the
specified compute group.
</P>
<P>IMPORTANT NOTE: Fix store/state stores the initial coordinates in
"unwrapped" form, by using the image flags associated with each atom.
See the <A HREF = "dump.html">dump custom</A> command for a discussion of
"unwrapped" coordinates. See the Atoms section of the
<A HREF = "read_data.html">read_data</A> command for a discussion of image flags and
how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the <A HREF = "set.html">set
image</A> command.
</P>
<P>IMPORTANT NOTE: If an atom is part of a rigid body (see the <A HREF = "fix_rigid.html">fix
rigid</A> command), it's periodic image flags are altered,
and the computed displacement may not reflect its true displacement.
See the <A HREF = "fix_rigid.html">fix rigid</A> command for details. Thus, to
compute the displacement of rigid bodies as they cross periodic
boundaries, you will need to post-process a <A HREF = "dump.html">dump file</A>
containing coordinates of the atoms in the bodies.
</P>
<P>IMPORTANT NOTE: If you want the quantities calculated by this compute
to be continuous when running from a <A HREF = "read_restart.html">restart file</A>,
then you should use the same ID for this compute, as in the original
run. This is so that the created fix will also have the same ID, and
thus be initialized correctly with atom coordinates from the restart
file.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a per-atom array with 4 columns, which can be
accessed by indices 1-4 by any command that uses per-atom values from
-a compute as input. See <A HREF = "Section_howto.html#4_15">this section</A> for an
-overview of LAMMPS output options.
+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 per-atom array values will be in distance <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_msd.html">compute msd</A>, <A HREF = "dump.html">dump custom</A>, <A HREF = "fix_store_state.html">fix
store/state</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_displace_atom.txt b/doc/compute_displace_atom.txt
index 9cd35c4a2..ecbdf22b3 100644
--- a/doc/compute_displace_atom.txt
+++ b/doc/compute_displace_atom.txt
@@ -1,88 +1,88 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute displace/atom command :h3
[Syntax:]
compute ID group-ID displace/atom :pre
ID, group-ID are documented in "compute"_compute.html command
displace/atom = style name of this compute command :ul
[Examples:]
compute 1 all displace/atom :pre
[Description:]
Define a computation that calculates the current displacement of each
atom in the group from its original coordinates, including all effects
due to atoms passing thru periodic boundaries.
A vector of four quantites per atom is calculated by this compute.
The first 3 elements of the vector are the dx,dy,dz displacements.
The 4th component is the total displacement, i.e. sqrt(dx*dx + dy*dy +
dz*dz).
The displacement of an atom is from its original position at the time
the compute command was issued. To store the original coordinates,
the compute creates its own fix of style "store/state", as if this
command had been issued:
fix compute-ID_store_state group-ID store/state xu yu zu :pre
See the "fix store/state"_fix_store_state.html command for details.
Note that the ID of the new fix is the compute-ID + underscore +
"store/state", and the group for the new fix is the same as the
compute group.
The value of the displacement will be 0.0 for atoms not in the
specified compute group.
IMPORTANT NOTE: Fix store/state stores the initial coordinates in
"unwrapped" form, by using the image flags associated with each atom.
See the "dump custom"_dump.html command for a discussion of
"unwrapped" coordinates. See the Atoms section of the
"read_data"_read_data.html command for a discussion of image flags and
how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the "set
image"_set.html command.
IMPORTANT NOTE: If an atom is part of a rigid body (see the "fix
rigid"_fix_rigid.html command), it's periodic image flags are altered,
and the computed displacement may not reflect its true displacement.
See the "fix rigid"_fix_rigid.html command for details. Thus, to
compute the displacement of rigid bodies as they cross periodic
boundaries, you will need to post-process a "dump file"_dump.html
containing coordinates of the atoms in the bodies.
IMPORTANT NOTE: If you want the quantities calculated by this compute
to be continuous when running from a "restart file"_read_restart.html,
then you should use the same ID for this compute, as in the original
run. This is so that the created fix will also have the same ID, and
thus be initialized correctly with atom coordinates from the restart
file.
[Output info:]
This compute calculates a per-atom array with 4 columns, which can be
accessed by indices 1-4 by any command that uses per-atom values from
-a compute as input. See "this section"_Section_howto.html#4_15 for an
-overview of LAMMPS output options.
+a compute as input. See "this section"_Section_howto.html#howto_15
+for an overview of LAMMPS output options.
The per-atom array values will be in distance "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute msd"_compute_msd.html, "dump custom"_dump.html, "fix
store/state"_fix_store_state.html
[Default:] none
diff --git a/doc/compute_erotate_asphere.html b/doc/compute_erotate_asphere.html
index 60317c200..642fb5776 100644
--- a/doc/compute_erotate_asphere.html
+++ b/doc/compute_erotate_asphere.html
@@ -1,63 +1,63 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute erotate/asphere command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID erotate/asphere
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>erotate/asphere = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all erotate/asphere
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the rotational kinetic energy of
a group of aspherical particles.
</P>
<P>The rotational kinetic energy is computed as 1/2 I w^2, where I is the
inertia tensor for the aspherical particle and w is its angular
velocity, which is computed from its angular momentum.
</P>
<P>IMPORTANT NOTE: For <A HREF = "dimension.html">2d models</A>, particles are treated
as ellipsoids, not ellipses, meaning their moments of inertia will be
the same as in 3d.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the KE). This value can be
used by any command that uses a global scalar value from a compute as
-input. See <A HREF = "Section_howto.html#4_15">this section</A> for an overview of
-LAMMPS output options.
+input. See <A HREF = "Section_howto.html#howto_15">this section</A> for an overview
+of LAMMPS output options.
</P>
<P>The scalar value calculated by this compute is "extensive". The
scalar value will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This compute requires that atoms store a shape and quaternion
orientation and angular momentum as defined by the <A HREF = "atom_style.html">atom_style
ellipsoid</A> command.
</P>
<P>All particles in the group must be finite-size. They cannot be point
particles.
</P>
<P><B>Related commands:</B> none
</P>
<P><A HREF = "compute_erotate_sphere.html">compute erotate/sphere</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_erotate_asphere.txt b/doc/compute_erotate_asphere.txt
index c71bee3f0..607d9d442 100644
--- a/doc/compute_erotate_asphere.txt
+++ b/doc/compute_erotate_asphere.txt
@@ -1,58 +1,58 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute erotate/asphere command :h3
[Syntax:]
compute ID group-ID erotate/asphere :pre
ID, group-ID are documented in "compute"_compute.html command
erotate/asphere = style name of this compute command :ul
[Examples:]
compute 1 all erotate/asphere :pre
[Description:]
Define a computation that calculates the rotational kinetic energy of
a group of aspherical particles.
The rotational kinetic energy is computed as 1/2 I w^2, where I is the
inertia tensor for the aspherical particle and w is its angular
velocity, which is computed from its angular momentum.
IMPORTANT NOTE: For "2d models"_dimension.html, particles are treated
as ellipsoids, not ellipses, meaning their moments of inertia will be
the same as in 3d.
[Output info:]
This compute calculates a global scalar (the KE). This value can be
used by any command that uses a global scalar value from a compute as
-input. See "this section"_Section_howto.html#4_15 for an overview of
-LAMMPS output options.
+input. See "this section"_Section_howto.html#howto_15 for an overview
+of LAMMPS output options.
The scalar value calculated by this compute is "extensive". The
scalar value will be in energy "units"_units.html.
[Restrictions:]
This compute requires that atoms store a shape and quaternion
orientation and angular momentum as defined by the "atom_style
ellipsoid"_atom_style.html command.
All particles in the group must be finite-size. They cannot be point
particles.
[Related commands:] none
"compute erotate/sphere"_compute_erotate_sphere.html
[Default:] none
diff --git a/doc/compute_erotate_sphere.html b/doc/compute_erotate_sphere.html
index 9a1468eb3..d9e328364 100644
--- a/doc/compute_erotate_sphere.html
+++ b/doc/compute_erotate_sphere.html
@@ -1,62 +1,62 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute erotate/sphere command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID erotate/sphere
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>erotate/sphere = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all erotate/sphere
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the rotational kinetic energy of
a group of spherical particles.
</P>
<P>The rotational energy is computed as 1/2 I w^2, where I is the moment
of inertia for a sphere and w is the particle's angular velocity.
</P>
<P>IMPORTANT NOTE: For <A HREF = "dimension.html">2d models</A>, particles are treated
as spheres, not disks, meaning their moment of inertia will be the
same as in 3d.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the KE). This value can be
used by any command that uses a global scalar value from a compute as
-input. See <A HREF = "Section_howto.html#4_15">this section</A> for an overview of
-LAMMPS output options.
+input. See <A HREF = "Section_howto.html#howto_15">this section</A> for an overview
+of LAMMPS output options.
</P>
<P>The scalar value calculated by this compute is "extensive". The
scalar value will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This compute requires that atoms store a radius and angular velocity
(omega) as defined by the <A HREF = "atom_style.html">atom_style sphere</A> command.
</P>
<P>All particles in the group must be finite-size spheres or point
particles. They cannot be aspherical. Point particles will not
contribute to the rotational energy.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_erotate_asphere.html">compute erotate/asphere</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_erotate_sphere.txt b/doc/compute_erotate_sphere.txt
index 21c016b70..7e480a281 100644
--- a/doc/compute_erotate_sphere.txt
+++ b/doc/compute_erotate_sphere.txt
@@ -1,57 +1,57 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute erotate/sphere command :h3
[Syntax:]
compute ID group-ID erotate/sphere :pre
ID, group-ID are documented in "compute"_compute.html command
erotate/sphere = style name of this compute command :ul
[Examples:]
compute 1 all erotate/sphere :pre
[Description:]
Define a computation that calculates the rotational kinetic energy of
a group of spherical particles.
The rotational energy is computed as 1/2 I w^2, where I is the moment
of inertia for a sphere and w is the particle's angular velocity.
IMPORTANT NOTE: For "2d models"_dimension.html, particles are treated
as spheres, not disks, meaning their moment of inertia will be the
same as in 3d.
[Output info:]
This compute calculates a global scalar (the KE). This value can be
used by any command that uses a global scalar value from a compute as
-input. See "this section"_Section_howto.html#4_15 for an overview of
-LAMMPS output options.
+input. See "this section"_Section_howto.html#howto_15 for an overview
+of LAMMPS output options.
The scalar value calculated by this compute is "extensive". The
scalar value will be in energy "units"_units.html.
[Restrictions:]
This compute requires that atoms store a radius and angular velocity
(omega) as defined by the "atom_style sphere"_atom_style.html command.
All particles in the group must be finite-size spheres or point
particles. They cannot be aspherical. Point particles will not
contribute to the rotational energy.
[Related commands:]
"compute erotate/asphere"_compute_erotate_asphere.html
[Default:] none
diff --git a/doc/compute_event_displace.html b/doc/compute_event_displace.html
index 206ef664c..66a3d841c 100644
--- a/doc/compute_event_displace.html
+++ b/doc/compute_event_displace.html
@@ -1,67 +1,67 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute event/displace command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID event/displace threshold
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>event/displace = style name of this compute command
<LI>threshold = minimum distance anyparticle must move to trigger an event (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all event/displace 0.5
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that flags an "event" if any particle in the
group has moved a distance greater than the specified threshold
distance when compared to a previously stored reference state
(i.e. the previous event). This compute is typically used in
conjunction with the <A HREF = "prd.html">prd</A> and <A HREF = "tad.html">tad</A> commands,
to detect if a transition
to a new minimum energy basin has occurred.
</P>
<P>This value calculated by the compute is equal to 0 if no particle has
moved far enough, and equal to 1 if one or more particles have moved
further than the threshold distance.
</P>
<P>NOTE: If the system is undergoing significant center-of-mass motion,
due to thermal motion, an external force, or an initial net momentum,
then this compute will not be able to distinguish that motion from
local atom displacements and may generate "false postives."
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the flag). This value can be
used by any command that uses a global scalar value from a compute as
-input. See <A HREF = "Section_howto.html#4_15">this section</A> for an overview of
-LAMMPS output options.
+input. See <A HREF = "Section_howto.html#howto_15">this section</A> for an overview
+of LAMMPS output options.
</P>
<P>The scalar value calculated by this compute is "intensive". The
scalar value will be a 0 or 1 as explained above.
</P>
<P><B>Restrictions:</B>
</P>
<P>This command can only be used if LAMMPS was built with the "replica"
-package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info on packages.
+package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "prd.html">prd</A>, <A HREF = "tad.html">tad</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_event_displace.txt b/doc/compute_event_displace.txt
index cf40ae775..2b84eafab 100644
--- a/doc/compute_event_displace.txt
+++ b/doc/compute_event_displace.txt
@@ -1,62 +1,62 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute event/displace command :h3
[Syntax:]
compute ID group-ID event/displace threshold :pre
ID, group-ID are documented in "compute"_compute.html command
event/displace = style name of this compute command
threshold = minimum distance anyparticle must move to trigger an event (distance units) :ul
[Examples:]
compute 1 all event/displace 0.5 :pre
[Description:]
Define a computation that flags an "event" if any particle in the
group has moved a distance greater than the specified threshold
distance when compared to a previously stored reference state
(i.e. the previous event). This compute is typically used in
conjunction with the "prd"_prd.html and "tad"_tad.html commands,
to detect if a transition
to a new minimum energy basin has occurred.
This value calculated by the compute is equal to 0 if no particle has
moved far enough, and equal to 1 if one or more particles have moved
further than the threshold distance.
NOTE: If the system is undergoing significant center-of-mass motion,
due to thermal motion, an external force, or an initial net momentum,
then this compute will not be able to distinguish that motion from
local atom displacements and may generate "false postives."
[Output info:]
This compute calculates a global scalar (the flag). This value can be
used by any command that uses a global scalar value from a compute as
-input. See "this section"_Section_howto.html#4_15 for an overview of
-LAMMPS output options.
+input. See "this section"_Section_howto.html#howto_15 for an overview
+of LAMMPS output options.
The scalar value calculated by this compute is "intensive". The
scalar value will be a 0 or 1 as explained above.
[Restrictions:]
This command can only be used if LAMMPS was built with the "replica"
-package. See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info on packages.
+package. See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
[Related commands:]
"prd"_prd.html, "tad"_tad.html
[Default:] none
diff --git a/doc/compute_group_group.html b/doc/compute_group_group.html
index bb665ca6f..bd1aacc41 100644
--- a/doc/compute_group_group.html
+++ b/doc/compute_group_group.html
@@ -1,73 +1,73 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute group/group command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID group/group group2-ID
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>group/group = style name of this compute command
<LI>group2-ID = group ID of second (or same) group
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 lower group/group upper
compute mine fluid group/group wall
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the total energy and force
interaction between two groups of atoms: the compute group and the
specified group2. The two groups can be the same. The interaction
energy is defined as the pairwise energy between all pairs of atoms
where one atom in the pair is in the first group and the other is in
the second group. Likewise, the interaction force calculated by this
compute is the force on the compute group atoms due to pairwise
interactions with atoms in the specified group2.
</P>
<P>The energy and force are calculated by looping over a neighbor list of
pairwise interactions. Thus it can be inefficient to compute this
quantity too frequently.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the energy) and a global
vector of length 3 (force), which can be accessed by indices 1-3.
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#4_15">this
+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>Both the scalar and vector values calculated by this compute are
"extensive". The scalar value will be in energy <A HREF = "units.html">units</A>.
The vector values will be in force <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>Only pairwise interactions, as defined by the
<A HREF = "pair_style.html">pair_style</A> command, are included in this
calculation. Bond (angle, dihedral, etc) interactions between atoms
in the two groups are not included. Long-range interactions due to a
<A HREF = "kspace_style.html">kspace_style</A> command are also not included. Not
all pair potentials can be evaluated in a pairwise mode as required by
this compute. For example, 3-body potentials, such as
<A HREF = "pair_tersoff.html">Tersoff</A> and <A HREF = "pair_sw.html">Stillinger-Weber</A> cannot
be used. <A HREF = "pair_eam.html">EAM</A> potentials for metals only include the
pair potential portion of the EAM interaction, not the embedding
term.
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_group_group.txt b/doc/compute_group_group.txt
index 5a77bcd56..cb49e7558 100644
--- a/doc/compute_group_group.txt
+++ b/doc/compute_group_group.txt
@@ -1,68 +1,68 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute group/group command :h3
[Syntax:]
compute ID group-ID group/group group2-ID :pre
ID, group-ID are documented in "compute"_compute.html command
group/group = style name of this compute command
group2-ID = group ID of second (or same) group :ul
[Examples:]
compute 1 lower group/group upper
compute mine fluid group/group wall :pre
[Description:]
Define a computation that calculates the total energy and force
interaction between two groups of atoms: the compute group and the
specified group2. The two groups can be the same. The interaction
energy is defined as the pairwise energy between all pairs of atoms
where one atom in the pair is in the first group and the other is in
the second group. Likewise, the interaction force calculated by this
compute is the force on the compute group atoms due to pairwise
interactions with atoms in the specified group2.
The energy and force are calculated by looping over a neighbor list of
pairwise interactions. Thus it can be inefficient to compute this
quantity too frequently.
[Output info:]
This compute calculates a global scalar (the energy) and a global
vector of length 3 (force), which can be accessed by indices 1-3.
These values can be used by any command that uses global scalar or
vector values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
Both the scalar and vector values calculated by this compute are
"extensive". The scalar value will be in energy "units"_units.html.
The vector values will be in force "units"_units.html.
[Restrictions:]
Only pairwise interactions, as defined by the
"pair_style"_pair_style.html command, are included in this
calculation. Bond (angle, dihedral, etc) interactions between atoms
in the two groups are not included. Long-range interactions due to a
"kspace_style"_kspace_style.html command are also not included. Not
all pair potentials can be evaluated in a pairwise mode as required by
this compute. For example, 3-body potentials, such as
"Tersoff"_pair_tersoff.html and "Stillinger-Weber"_pair_sw.html cannot
be used. "EAM"_pair_eam.html potentials for metals only include the
pair potential portion of the EAM interaction, not the embedding
term.
[Related commands:] none
[Default:] none
diff --git a/doc/compute_gyration.html b/doc/compute_gyration.html
index 65fb73116..1d8b8389c 100644
--- a/doc/compute_gyration.html
+++ b/doc/compute_gyration.html
@@ -1,66 +1,66 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute gyration command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID gyration
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>gyration = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 molecule gyration
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the radius of gyration Rg of the
group of atoms, including all effects due to atoms passing thru
periodic boundaries.
</P>
<P>Rg is a measure of the size of the group of atoms, and is computed by
this formula
</P>
<CENTER><IMG SRC = "Eqs/compute_gyration.jpg">
</CENTER>
<P>where M is the total mass of the group, Rcm is the center-of-mass
position of the group, and the sum is over all atoms in the group.
</P>
<P>IMPORTANT NOTE: The coordinates of an atom contribute to Rg in
"unwrapped" form, by using the image flags associated with each atom.
See the <A HREF = "dump.html">dump custom</A> command for a discussion of
"unwrapped" coordinates. See the Atoms section of the
<A HREF = "read_data.html">read_data</A> command for a discussion of image flags and
how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the <A HREF = "set.html">set
image</A> command.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (Rg). This value can be used
by any command that uses a global scalar value from a compute as
-input. See <A HREF = "Section_howto.html#4_15">this section</A> for an overview of
-LAMMPS output options.
+input. See <A HREF = "Section_howto.html#howto_15">this section</A> for an overview
+of LAMMPS output options.
</P>
<P>The scalar value calculated by this compute is "intensive". The
scalar value will be in distance <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_gyration_molecule.html">compute gyration/molecule</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_gyration.txt b/doc/compute_gyration.txt
index c3390ba5a..867669d0a 100644
--- a/doc/compute_gyration.txt
+++ b/doc/compute_gyration.txt
@@ -1,61 +1,61 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute gyration command :h3
[Syntax:]
compute ID group-ID gyration :pre
ID, group-ID are documented in "compute"_compute.html command
gyration = style name of this compute command :ul
[Examples:]
compute 1 molecule gyration :pre
[Description:]
Define a computation that calculates the radius of gyration Rg of the
group of atoms, including all effects due to atoms passing thru
periodic boundaries.
Rg is a measure of the size of the group of atoms, and is computed by
this formula
:c,image(Eqs/compute_gyration.jpg)
where M is the total mass of the group, Rcm is the center-of-mass
position of the group, and the sum is over all atoms in the group.
IMPORTANT NOTE: The coordinates of an atom contribute to Rg in
"unwrapped" form, by using the image flags associated with each atom.
See the "dump custom"_dump.html command for a discussion of
"unwrapped" coordinates. See the Atoms section of the
"read_data"_read_data.html command for a discussion of image flags and
how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the "set
image"_set.html command.
[Output info:]
This compute calculates a global scalar (Rg). This value can be used
by any command that uses a global scalar value from a compute as
-input. See "this section"_Section_howto.html#4_15 for an overview of
-LAMMPS output options.
+input. See "this section"_Section_howto.html#howto_15 for an overview
+of LAMMPS output options.
The scalar value calculated by this compute is "intensive". The
scalar value will be in distance "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute gyration/molecule"_compute_gyration_molecule.html
[Default:] none
diff --git a/doc/compute_gyration_molecule.html b/doc/compute_gyration_molecule.html
index b8ad07e64..f74218009 100644
--- a/doc/compute_gyration_molecule.html
+++ b/doc/compute_gyration_molecule.html
@@ -1,80 +1,80 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute gyration/molecule command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID gyration/molecule
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>gyration/molecule = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 molecule gyration/molecule
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the radius of gyration Rg of
individual molecules. The calculation includes all effects due to
atoms passing thru periodic boundaries.
</P>
<P>Rg is a measure of the size of a molecule, and is computed by this
formula
</P>
<CENTER><IMG SRC = "Eqs/compute_gyration.jpg">
</CENTER>
<P>where M is the total mass of the molecule, Rcm is the center-of-mass
position of the molecule, and the sum is over all atoms in the
molecule and in the group.
</P>
<P>Rg for a particular molecule is only computed if one or more of its
atoms are in the specified group. Normally all atoms in the molecule
should be in the group, however this is not required. LAMMPS will
warn you if this is not the case. Only atoms in the group contribute
to the Rg calculation for the molecule.
</P>
<P>The ordering of per-molecule quantities produced by this compute is
consistent with the ordering produced by other compute commands that
generate per-molecule datums. Conceptually, them molecule IDs will be
in ascending order for any molecule with one or more of its atoms in
the specified group.
</P>
<P>IMPORTANT NOTE: The coordinates of an atom contribute to Rg in
"unwrapped" form, by using the image flags associated with each atom.
See the <A HREF = "dump.html">dump custom</A> command for a discussion of
"unwrapped" coordinates. See the Atoms section of the
<A HREF = "read_data.html">read_data</A> command for a discussion of image flags and
how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the <A HREF = "set.html">set
image</A> command.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global vector of Rg values where the length
of the vector = Nmolecules. These values can be used by any command
-that uses global vector values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+that uses global 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 vector values calculated by this compute are "intensive". The
vector values will be in distance <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B> none
</P>
<P><A HREF = "compute_gyration.html">compute gyration</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_gyration_molecule.txt b/doc/compute_gyration_molecule.txt
index 52abb883c..375e10932 100644
--- a/doc/compute_gyration_molecule.txt
+++ b/doc/compute_gyration_molecule.txt
@@ -1,75 +1,75 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute gyration/molecule command :h3
[Syntax:]
compute ID group-ID gyration/molecule :pre
ID, group-ID are documented in "compute"_compute.html command
gyration/molecule = style name of this compute command :ul
[Examples:]
compute 1 molecule gyration/molecule :pre
[Description:]
Define a computation that calculates the radius of gyration Rg of
individual molecules. The calculation includes all effects due to
atoms passing thru periodic boundaries.
Rg is a measure of the size of a molecule, and is computed by this
formula
:c,image(Eqs/compute_gyration.jpg)
where M is the total mass of the molecule, Rcm is the center-of-mass
position of the molecule, and the sum is over all atoms in the
molecule and in the group.
Rg for a particular molecule is only computed if one or more of its
atoms are in the specified group. Normally all atoms in the molecule
should be in the group, however this is not required. LAMMPS will
warn you if this is not the case. Only atoms in the group contribute
to the Rg calculation for the molecule.
The ordering of per-molecule quantities produced by this compute is
consistent with the ordering produced by other compute commands that
generate per-molecule datums. Conceptually, them molecule IDs will be
in ascending order for any molecule with one or more of its atoms in
the specified group.
IMPORTANT NOTE: The coordinates of an atom contribute to Rg in
"unwrapped" form, by using the image flags associated with each atom.
See the "dump custom"_dump.html command for a discussion of
"unwrapped" coordinates. See the Atoms section of the
"read_data"_read_data.html command for a discussion of image flags and
how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the "set
image"_set.html command.
[Output info:]
This compute calculates a global vector of Rg values where the length
of the vector = Nmolecules. These values can be used by any command
that uses global vector values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The vector values calculated by this compute are "intensive". The
vector values will be in distance "units"_units.html.
[Restrictions:] none
[Related commands:] none
"compute gyration"_compute_gyration.html
[Default:] none
diff --git a/doc/compute_heat_flux.html b/doc/compute_heat_flux.html
index 84f8b2835..b56ce96f3 100644
--- a/doc/compute_heat_flux.html
+++ b/doc/compute_heat_flux.html
@@ -1,194 +1,194 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute heat/flux command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID heat/flux ke-ID pe-ID stress-ID
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>heat/flux = style name of this compute command
<LI>ke-ID = ID of a compute that calculates per-atom kinetic energy
<LI>pe-ID = ID of a compute that calculates per-atom potential energy
<LI>stress-ID = ID of a compute that calculates per-atom stress
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute myFlux all heat/flux myKE myPE myStress
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the heat flux vector based on
contributions from atoms in the specified group. This can be used by
itself to measure the heat flux into or out of a reservoir of atoms,
or to calculate a thermal conductivity using the Green-Kubo formalism.
</P>
<P>See the <A HREF = "fix_thermal_conductivity.html">fix thermal/conductivity</A>
command for details on how to compute thermal conductivity in an
alternate way, via the Muller-Plathe method. See the <A HREF = "fix_heat.html">fix
heat</A> command for a way to control the heat added or
subtracted to a group of atoms.
</P>
<P>The compute takes three arguments which are IDs of other
<A HREF = "compute.html">computes</A>. One calculates per-atom kinetic energy
(<I>ke-ID</I>), one calculates per-atom potential energy (<I>pe-ID)</I>, and the
third calcualtes per-atom stress (<I>stress-ID</I>). These should be
defined for the same group used by compute heat/flux, though LAMMPS
does not check for this.
</P>
<P>The Green-Kubo formulas relate the ensemble average of the
auto-correlation of the heat flux J to the thermal conductivity kappa:
</P>
<CENTER><IMG SRC = "Eqs/heat_flux_J.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/heat_flux_k.jpg">
</CENTER>
<P>Ei in the first term of the equation for J is the per-atom energy
(potential and kinetic). This is calculated by the computes <I>ke-ID</I>
and <I>pe-ID</I>. Si in the second term of the equation for J is the
per-atom stress tensor calculated by the compute <I>stress-ID</I>. The
tensor multiplies Vi as a 3x3 matrix-vector multiply to yield a
vector. Note that as discussed below, the 1/V scaling factor in the
equation for J is NOT included in the calculation performed by this
compute; you need to add it for a volume appropriate to the atoms
included in the calculation.
</P>
<P>IMPORTANT NOTE: The <A HREF = "compute_pe_atom.html">compute pe/atom</A> and
<A HREF = "compute_stress_atom.html">compute stress/atom</A> commands have options
for which terms to include in their calculation (pair, bond, etc).
The heat flux calculation will thus include exactly the same terms.
Normally you should use <A HREF = "compute_stress_atom.html">compute stress/atom
virial</A> so as not to include a kinetic energy
term in the heat flux. Note that neither of those computes is able to
include a long-range Coulombic contribution to the per-atom energy or
stress.
</P>
<P>This compute calculates 6 quantities and stores them in a 6-component
vector. The first 3 components are the x, y, z components of the full
heat flux vector, i.e. (Jx, Jy, Jz). The next 3 components are the x,
y, z components of just the convective portion of the flux, i.e. the
first term in the equation for J above.
</P>
<HR>
<P>The heat flux can be output every so many timesteps (e.g. via the
<A HREF = "thermo_style.html">thermo_style custom</A> command). Then as a
post-processing operation, an autocorrelation can be performed, its
integral estimated, and the Green-Kubo formula above evaluated.
</P>
<P>The <A HREF = "fix_ave_correlate.html">fix ave/correlate</A> command can calclate
the autocorrelation. The trap() function in the
<A HREF = "variable.html">variable</A> command can calculate the integral.
</P>
<P>An example LAMMPS input script for solid Ar is appended below. The
result should be: average conductivity ~0.29 in W/mK.
</P>
<HR>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global vector of length 6 (total heat flux
vector, followed by conductive heat flux vector), which can be
accessed by indices 1-6. These values can be used by any command that
-uses global vector values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+uses global 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 vector values calculated by this compute are "extensive", meaning
they scale with the number of atoms in the simulation. They can be
divided by the appropriate volume to get a flux, which would then be
an "intensive" value, meaning independent of the number of atoms in
the simulation. Note that if the compute is "all", then the
appropriate volume to divide by is the simulation box volume.
However, if a sub-group is used, it should be the volume containing
those atoms.
</P>
<P>The vector values will be in energy*velocity <A HREF = "units.html">units</A>. Once
divided by a volume the units will be that of flux, namely
energy/area/time <A HREF = "units.html">units</A>
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_thermal_conductivity.html">fix thermal/conductivity</A>,
<A HREF = "fix_ave_correlate.html">fix ave/correlate</A>,
<A HREF = "variable.html">variable</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<PRE># Sample LAMMPS input script for thermal conductivity of solid Ar
</PRE>
<PRE>units real
variable T equal 70
variable V equal vol
variable dt equal 4.0
variable p equal 200 # correlation length
variable s equal 10 # sample interval
variable d equal $p*$s # dump interval
</PRE>
<PRE># convert from LAMMPS real units to SI
</PRE>
<PRE>variable kB equal 1.3806504e-23 # [J/K] Boltzmann
variable kCal2J equal 4186.0/6.02214e23
variable A2m equal 1.0e-10
variable fs2s equal 1.0e-15
variable convert equal ${kCal2J}*${kCal2J}/${fs2s}/${A2m}
</PRE>
<PRE># setup problem
</PRE>
<PRE>dimension 3
boundary p p p
lattice fcc 5.376 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
region box block 0 4 0 4 0 4
create_box 1 box
create_atoms 1 box
mass 1 39.948
pair_style lj/cut 13.0
pair_coeff * * 0.2381 3.405
timestep ${dt}
thermo $d
</PRE>
<PRE># equilibration and thermalization
</PRE>
<PRE>velocity all create $T 102486 mom yes rot yes dist gaussian
fix NVT all nvt temp $T $T 10 drag 0.2
run 8000
</PRE>
<PRE># thermal conductivity calculation, switch to NVE if desired
</PRE>
<PRE>#unfix NVT
#fix NVE all nve
</PRE>
<PRE>reset_timestep 0
compute myKE all ke/atom
compute myPE all pe/atom
compute myStress all stress/atom virial
compute flux all heat/flux myKE myPE myStress
variable Jx equal c_flux[1]/vol
variable Jy equal c_flux[2]/vol
variable Jz equal c_flux[3]/vol
fix JJ all ave/correlate $s $p $d &
c_flux[1] c_flux[2] c_flux[3] type auto file J0Jt.dat ave running
variable scale equal ${convert}/${kB}/$T/$T/$V*$s*${dt}
variable k11 equal trap(f_JJ[3])*${scale}
variable k22 equal trap(f_JJ[4])*${scale}
variable k33 equal trap(f_JJ[5])*${scale}
thermo_style custom step temp v_Jx v_Jy v_Jz v_k11 v_k22 v_k33
run 100000
variable k equal (v_k11+v_k22+v_k33)/3.0
variable ndens equal count(all)/vol
print "average conductivity: $k[W/mK] @ $T K, ${ndens} /A^3"
</PRE>
</HTML>
diff --git a/doc/compute_heat_flux.txt b/doc/compute_heat_flux.txt
index ef4907cdd..2d9816a06 100644
--- a/doc/compute_heat_flux.txt
+++ b/doc/compute_heat_flux.txt
@@ -1,189 +1,189 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute heat/flux command :h3
[Syntax:]
compute ID group-ID heat/flux ke-ID pe-ID stress-ID :pre
ID, group-ID are documented in "compute"_compute.html command
heat/flux = style name of this compute command
ke-ID = ID of a compute that calculates per-atom kinetic energy
pe-ID = ID of a compute that calculates per-atom potential energy
stress-ID = ID of a compute that calculates per-atom stress :ul
[Examples:]
compute myFlux all heat/flux myKE myPE myStress :pre
[Description:]
Define a computation that calculates the heat flux vector based on
contributions from atoms in the specified group. This can be used by
itself to measure the heat flux into or out of a reservoir of atoms,
or to calculate a thermal conductivity using the Green-Kubo formalism.
See the "fix thermal/conductivity"_fix_thermal_conductivity.html
command for details on how to compute thermal conductivity in an
alternate way, via the Muller-Plathe method. See the "fix
heat"_fix_heat.html command for a way to control the heat added or
subtracted to a group of atoms.
The compute takes three arguments which are IDs of other
"computes"_compute.html. One calculates per-atom kinetic energy
({ke-ID}), one calculates per-atom potential energy ({pe-ID)}, and the
third calcualtes per-atom stress ({stress-ID}). These should be
defined for the same group used by compute heat/flux, though LAMMPS
does not check for this.
The Green-Kubo formulas relate the ensemble average of the
auto-correlation of the heat flux J to the thermal conductivity kappa:
:c,image(Eqs/heat_flux_J.jpg)
:c,image(Eqs/heat_flux_k.jpg)
Ei in the first term of the equation for J is the per-atom energy
(potential and kinetic). This is calculated by the computes {ke-ID}
and {pe-ID}. Si in the second term of the equation for J is the
per-atom stress tensor calculated by the compute {stress-ID}. The
tensor multiplies Vi as a 3x3 matrix-vector multiply to yield a
vector. Note that as discussed below, the 1/V scaling factor in the
equation for J is NOT included in the calculation performed by this
compute; you need to add it for a volume appropriate to the atoms
included in the calculation.
IMPORTANT NOTE: The "compute pe/atom"_compute_pe_atom.html and
"compute stress/atom"_compute_stress_atom.html commands have options
for which terms to include in their calculation (pair, bond, etc).
The heat flux calculation will thus include exactly the same terms.
Normally you should use "compute stress/atom
virial"_compute_stress_atom.html so as not to include a kinetic energy
term in the heat flux. Note that neither of those computes is able to
include a long-range Coulombic contribution to the per-atom energy or
stress.
This compute calculates 6 quantities and stores them in a 6-component
vector. The first 3 components are the x, y, z components of the full
heat flux vector, i.e. (Jx, Jy, Jz). The next 3 components are the x,
y, z components of just the convective portion of the flux, i.e. the
first term in the equation for J above.
:line
The heat flux can be output every so many timesteps (e.g. via the
"thermo_style custom"_thermo_style.html command). Then as a
post-processing operation, an autocorrelation can be performed, its
integral estimated, and the Green-Kubo formula above evaluated.
The "fix ave/correlate"_fix_ave_correlate.html command can calclate
the autocorrelation. The trap() function in the
"variable"_variable.html command can calculate the integral.
An example LAMMPS input script for solid Ar is appended below. The
result should be: average conductivity ~0.29 in W/mK.
:line
[Output info:]
This compute calculates a global vector of length 6 (total heat flux
vector, followed by conductive heat flux vector), which can be
accessed by indices 1-6. These values can be used by any command that
uses global vector values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The vector values calculated by this compute are "extensive", meaning
they scale with the number of atoms in the simulation. They can be
divided by the appropriate volume to get a flux, which would then be
an "intensive" value, meaning independent of the number of atoms in
the simulation. Note that if the compute is "all", then the
appropriate volume to divide by is the simulation box volume.
However, if a sub-group is used, it should be the volume containing
those atoms.
The vector values will be in energy*velocity "units"_units.html. Once
divided by a volume the units will be that of flux, namely
energy/area/time "units"_units.html
[Restrictions:] none
[Related commands:]
"fix thermal/conductivity"_fix_thermal_conductivity.html,
"fix ave/correlate"_fix_ave_correlate.html,
"variable"_variable.html
[Default:] none
:line
# Sample LAMMPS input script for thermal conductivity of solid Ar :pre
units real
variable T equal 70
variable V equal vol
variable dt equal 4.0
variable p equal 200 # correlation length
variable s equal 10 # sample interval
variable d equal $p*$s # dump interval :pre
# convert from LAMMPS real units to SI :pre
variable kB equal 1.3806504e-23 # \[J/K\] Boltzmann
variable kCal2J equal 4186.0/6.02214e23
variable A2m equal 1.0e-10
variable fs2s equal 1.0e-15
variable convert equal $\{kCal2J\}*$\{kCal2J\}/$\{fs2s\}/$\{A2m\} :pre
# setup problem :pre
dimension 3
boundary p p p
lattice fcc 5.376 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
region box block 0 4 0 4 0 4
create_box 1 box
create_atoms 1 box
mass 1 39.948
pair_style lj/cut 13.0
pair_coeff * * 0.2381 3.405
timestep $\{dt\}
thermo $d :pre
# equilibration and thermalization :pre
velocity all create $T 102486 mom yes rot yes dist gaussian
fix NVT all nvt temp $T $T 10 drag 0.2
run 8000 :pre
# thermal conductivity calculation, switch to NVE if desired :pre
#unfix NVT
#fix NVE all nve :pre
reset_timestep 0
compute myKE all ke/atom
compute myPE all pe/atom
compute myStress all stress/atom virial
compute flux all heat/flux myKE myPE myStress
variable Jx equal c_flux\[1\]/vol
variable Jy equal c_flux\[2\]/vol
variable Jz equal c_flux\[3\]/vol
fix JJ all ave/correlate $s $p $d &
c_flux\[1\] c_flux\[2\] c_flux\[3\] type auto file J0Jt.dat ave running
variable scale equal $\{convert\}/$\{kB\}/$T/$T/$V*$s*$\{dt\}
variable k11 equal trap(f_JJ\[3\])*$\{scale\}
variable k22 equal trap(f_JJ\[4\])*$\{scale\}
variable k33 equal trap(f_JJ\[5\])*$\{scale\}
thermo_style custom step temp v_Jx v_Jy v_Jz v_k11 v_k22 v_k33
run 100000
variable k equal (v_k11+v_k22+v_k33)/3.0
variable ndens equal count(all)/vol
print "average conductivity: $k\[W/mK\] @ $T K, $\{ndens\} /A^3" :pre
diff --git a/doc/compute_improper_local.html b/doc/compute_improper_local.html
index ceb67530a..cf529f222 100644
--- a/doc/compute_improper_local.html
+++ b/doc/compute_improper_local.html
@@ -1,78 +1,78 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute improper/local command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID improper/local input1 input2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>improper/local = style name of this compute command
<LI>zero or more keywords may be appended
<LI>keyword = <I>chi</I>
<PRE> <I>chi</I> = tabulate improper angles
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all improper/local chi
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates properties of individual improper
interactions. The number of datums generated, aggregated across all
processors, equals the number of impropers in the system.
</P>
<P>The local data stored by this command is generated by looping over all
the atoms owned on a processor and their impropers. An improper will
only be included if all 4 atoms in the improper are in the specified
compute group.
</P>
<P>Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, improper output from the <A HREF = "compute_property_local.html">compute
property/local</A> command can be combined
with data from this command and output by the <A HREF = "dump.html">dump local</A>
command in a consistent way.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of impropers. If a single keyword is specified, a
local vector is produced. If two or more keywords are specified, a
local array is produced where the number of columns = the number of
keywords. The vector or array can be accessed by any command that
-uses local values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+uses local 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 output for <I>chi</I> will be in degrees.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump local</A>, <A HREF = "compute_property_local.html">compute
property/local</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_improper_local.txt b/doc/compute_improper_local.txt
index 401e3b509..c227cb2b8 100644
--- a/doc/compute_improper_local.txt
+++ b/doc/compute_improper_local.txt
@@ -1,68 +1,68 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute improper/local command :h3
[Syntax:]
compute ID group-ID improper/local input1 input2 ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
improper/local = style name of this compute command :l
zero or more keywords may be appended :l
keyword = {chi} :l
{chi} = tabulate improper angles :pre
:ule
[Examples:]
compute 1 all improper/local chi :pre
[Description:]
Define a computation that calculates properties of individual improper
interactions. The number of datums generated, aggregated across all
processors, equals the number of impropers in the system.
The local data stored by this command is generated by looping over all
the atoms owned on a processor and their impropers. An improper will
only be included if all 4 atoms in the improper are in the specified
compute group.
Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, improper output from the "compute
property/local"_compute_property_local.html command can be combined
with data from this command and output by the "dump local"_dump.html
command in a consistent way.
[Output info:]
This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of impropers. If a single keyword is specified, a
local vector is produced. If two or more keywords are specified, a
local array is produced where the number of columns = the number of
keywords. The vector or array can be accessed by any command that
uses local values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The output for {chi} will be in degrees.
[Restrictions:] none
[Related commands:]
"dump local"_dump.html, "compute
property/local"_compute_property_local.html
[Default:] none
diff --git a/doc/compute_ke.html b/doc/compute_ke.html
index c974ab79b..12769e0f5 100644
--- a/doc/compute_ke.html
+++ b/doc/compute_ke.html
@@ -1,64 +1,64 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute ke command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID ke
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>ke = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all ke
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the translational kinetic energy
of a group of particles.
</P>
<P>The kinetic energy or each particle is computed as 1/2 m v^2, where m
and v are the mass and velocity of the particle.
</P>
<P>There is a subtle difference between the quantity calculated by this
compute and the kinetic energy calculated by the <I>ke</I> or <I>etotal</I>
keyword used in thermodynamic output, as specified by the
<A HREF = "thermo_style.html">thermo_style</A> command. For this compute, kinetic
energy is "translational" kinetic energy, calculated by the simple
formula above. For thermodynamic output, the <I>ke</I> keyword infers
kinetic energy from the temperature of the system with 1/2 Kb T of
energy for each degree of freedom. For the default temperature
computation via the <A HREF = "compute_temp.html">compute temp</A> command, these
are the same. But different computes that calculate temperature can
subtract out different non-thermal components of velocity and/or
include different degrees of freedom (translational, rotational, etc).
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the KE). This value can be
used by any command that uses a global scalar value from a compute as
-input. See <A HREF = "Section_howto.html#4_15">this section</A> for an overview of
-LAMMPS output options.
+input. See <A HREF = "Section_howto.html#howto_15">this section</A> for an overview
+of LAMMPS output options.
</P>
<P>The scalar value calculated by this compute is "extensive". The
scalar value will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_erotate_sphere.html">compute erotate/sphere</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_ke.txt b/doc/compute_ke.txt
index d9847cb50..003332c07 100644
--- a/doc/compute_ke.txt
+++ b/doc/compute_ke.txt
@@ -1,59 +1,59 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute ke command :h3
[Syntax:]
compute ID group-ID ke :pre
ID, group-ID are documented in "compute"_compute.html command
ke = style name of this compute command :ul
[Examples:]
compute 1 all ke :pre
[Description:]
Define a computation that calculates the translational kinetic energy
of a group of particles.
The kinetic energy or each particle is computed as 1/2 m v^2, where m
and v are the mass and velocity of the particle.
There is a subtle difference between the quantity calculated by this
compute and the kinetic energy calculated by the {ke} or {etotal}
keyword used in thermodynamic output, as specified by the
"thermo_style"_thermo_style.html command. For this compute, kinetic
energy is "translational" kinetic energy, calculated by the simple
formula above. For thermodynamic output, the {ke} keyword infers
kinetic energy from the temperature of the system with 1/2 Kb T of
energy for each degree of freedom. For the default temperature
computation via the "compute temp"_compute_temp.html command, these
are the same. But different computes that calculate temperature can
subtract out different non-thermal components of velocity and/or
include different degrees of freedom (translational, rotational, etc).
[Output info:]
This compute calculates a global scalar (the KE). This value can be
used by any command that uses a global scalar value from a compute as
-input. See "this section"_Section_howto.html#4_15 for an overview of
-LAMMPS output options.
+input. See "this section"_Section_howto.html#howto_15 for an overview
+of LAMMPS output options.
The scalar value calculated by this compute is "extensive". The
scalar value will be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute erotate/sphere"_compute_erotate_sphere.html
[Default:] none
diff --git a/doc/compute_ke_atom.html b/doc/compute_ke_atom.html
index 6ad15d64d..434718e6a 100644
--- a/doc/compute_ke_atom.html
+++ b/doc/compute_ke_atom.html
@@ -1,53 +1,53 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute ke/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID ke/atom
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>ke/atom = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all ke/atom
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the per-atom translational
kinetic energy for each atom in a group.
</P>
<P>The kinetic energy is simply 1/2 m v^2, where m is the mass and v is
the velocity of each atom.
</P>
<P>The value of the kinetic energy will be 0.0 for atoms not in the
specified compute group.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-<A HREF = "Section_howto.html#4_15">this section</A> for an overview of LAMMPS
+<A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS
output options.
</P>
<P>The per-atom vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump custom</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_ke_atom.txt b/doc/compute_ke_atom.txt
index 590ee3fae..fd4265130 100644
--- a/doc/compute_ke_atom.txt
+++ b/doc/compute_ke_atom.txt
@@ -1,48 +1,48 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute ke/atom command :h3
[Syntax:]
compute ID group-ID ke/atom :pre
ID, group-ID are documented in "compute"_compute.html command
ke/atom = style name of this compute command :ul
[Examples:]
compute 1 all ke/atom :pre
[Description:]
Define a computation that calculates the per-atom translational
kinetic energy for each atom in a group.
The kinetic energy is simply 1/2 m v^2, where m is the mass and v is
the velocity of each atom.
The value of the kinetic energy will be 0.0 for atoms not in the
specified compute group.
[Output info:]
This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-"this section"_Section_howto.html#4_15 for an overview of LAMMPS
+"this section"_Section_howto.html#howto_15 for an overview of LAMMPS
output options.
The per-atom vector values will be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"dump custom"_dump.html
[Default:] none
diff --git a/doc/compute_ke_atom_eff.html b/doc/compute_ke_atom_eff.html
index d665e62f3..4bd6b6f95 100644
--- a/doc/compute_ke_atom_eff.html
+++ b/doc/compute_ke_atom_eff.html
@@ -1,82 +1,82 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute ke/atom/eff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID ke/atom/eff
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>ke/atom/eff = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all ke/atom/eff
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the per-atom translational
(nuclei and electrons) and radial kinetic energy (electron only) in a
group. The particles are assumed to be nuclei and electrons modeled
with the <A HREF = "pair_eff.html">electronic force field</A>.
</P>
<P>The kinetic energy for each nucleus is computed as 1/2 m v^2, where m
corresponds to the corresponding nuclear mass, and the kinetic energy
for each electron is computed as 1/2 (me v^2 + 3/4 me s^2), where me
and v correspond to the mass and translational velocity of each
electron, and s to its radial velocity, respectively.
</P>
<P>There is a subtle difference between the quantity calculated by this
compute and the kinetic energy calculated by the <I>ke</I> or <I>etotal</I>
keyword used in thermodynamic output, as specified by the
<A HREF = "thermo_style.html">thermo_style</A> command. For this compute, kinetic
energy is "translational" plus electronic "radial" kinetic energy,
calculated by the simple formula above. For thermodynamic output, the
<I>ke</I> keyword infers kinetic energy from the temperature of the system
with 1/2 Kb T of energy for each (nuclear-only) degree of freedom in
eFF.
</P>
<P>IMPORTANT NOTE: The temperature in eFF should be monitored via the
<A HREF = "compute_temp_eff.html">compute temp/eff</A> command, which can be printed
with thermodynamic output by using the
<A HREF = "thermo_modify.html">thermo_modify</A> command, as shown in the following
example:
</P>
<PRE>compute effTemp all temp/eff
thermo_style custom step etotal pe ke temp press
thermo_modify temp effTemp
</PRE>
<P>The value of the kinetic energy will be 0.0 for atoms (nuclei or
electrons) not in the specified compute group.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a scalar quantity for each atom, which can be
accessed by any command that uses per-atom computes as input. See
-<A HREF = "Section_howto.html#4_15">this section</A> for an overview of LAMMPS
+<A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS
output options.
</P>
<P>The per-atom vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This compute 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#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump custom</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_ke_atom_eff.txt b/doc/compute_ke_atom_eff.txt
index 3dd67d8b6..cb69fc5a8 100644
--- a/doc/compute_ke_atom_eff.txt
+++ b/doc/compute_ke_atom_eff.txt
@@ -1,77 +1,77 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute ke/atom/eff command :h3
[Syntax:]
compute ID group-ID ke/atom/eff :pre
ID, group-ID are documented in "compute"_compute.html command
ke/atom/eff = style name of this compute command :ul
[Examples:]
compute 1 all ke/atom/eff :pre
[Description:]
Define a computation that calculates the per-atom translational
(nuclei and electrons) and radial kinetic energy (electron only) in a
group. The particles are assumed to be nuclei and electrons modeled
with the "electronic force field"_pair_eff.html.
The kinetic energy for each nucleus is computed as 1/2 m v^2, where m
corresponds to the corresponding nuclear mass, and the kinetic energy
for each electron is computed as 1/2 (me v^2 + 3/4 me s^2), where me
and v correspond to the mass and translational velocity of each
electron, and s to its radial velocity, respectively.
There is a subtle difference between the quantity calculated by this
compute and the kinetic energy calculated by the {ke} or {etotal}
keyword used in thermodynamic output, as specified by the
"thermo_style"_thermo_style.html command. For this compute, kinetic
energy is "translational" plus electronic "radial" kinetic energy,
calculated by the simple formula above. For thermodynamic output, the
{ke} keyword infers kinetic energy from the temperature of the system
with 1/2 Kb T of energy for each (nuclear-only) degree of freedom in
eFF.
IMPORTANT NOTE: The temperature in eFF should be monitored via the
"compute temp/eff"_compute_temp_eff.html command, which can be printed
with thermodynamic output by using the
"thermo_modify"_thermo_modify.html command, as shown in the following
example:
compute effTemp all temp/eff
thermo_style custom step etotal pe ke temp press
thermo_modify temp effTemp :pre
The value of the kinetic energy will be 0.0 for atoms (nuclei or
electrons) not in the specified compute group.
[Output info:]
This compute calculates a scalar quantity for each atom, which can be
accessed by any command that uses per-atom computes as input. See
-"this section"_Section_howto.html#4_15 for an overview of LAMMPS
+"this section"_Section_howto.html#howto_15 for an overview of LAMMPS
output options.
The per-atom vector values will be in energy "units"_units.html.
[Restrictions:]
This compute is part of the "user-eff" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"dump custom"_dump.html
[Default:] none
diff --git a/doc/compute_ke_eff.html b/doc/compute_ke_eff.html
index 5e12f747a..3b0d55b2d 100644
--- a/doc/compute_ke_eff.html
+++ b/doc/compute_ke_eff.html
@@ -1,83 +1,83 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute ke/eff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID ke/eff
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>ke/eff = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all ke/eff
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the kinetic energy of motion of a
group of eFF particles (nuclei and electrons), as modeled with the
<A HREF = "pair_eff.html">electronic force field</A>.
</P>
<P>The kinetic energy for each nucleus is computed as 1/2 m v^2 and the
kinetic energy for each electron is computed as 1/2(me v^2 + 3/4 me
s^2), where m corresponds to the nuclear mass, me to the electron
mass, v to the translational velocity of each particle, and s to the
radial velocity of the electron, respectively.
</P>
<P>There is a subtle difference between the quantity calculated by this
compute and the kinetic energy calculated by the <I>ke</I> or <I>etotal</I>
keyword used in thermodynamic output, as specified by the
<A HREF = "thermo_style.html">thermo_style</A> command. For this compute, kinetic
energy is "translational" and "radial" (only for electrons) kinetic
energy, calculated by the simple formula above. For thermodynamic
output, the <I>ke</I> keyword infers kinetic energy from the temperature of
the system with 1/2 Kb T of energy for each degree of freedom. For
the eFF temperature computation via the <A HREF = "compute_temp_eff.html">compute
temp_eff</A> command, these are the same. But
different computes that calculate temperature can subtract out
different non-thermal components of velocity and/or include other
degrees of freedom.
</P>
<P>IMPRORTANT NOTE: The temperature in eFF models should be monitored via
the <A HREF = "compute_temp_eff.html">compute temp/eff</A> command, which can be
printed with thermodynamic output by using the
<A HREF = "thermo_modify.html">thermo_modify</A> command, as shown in the following
example:
</P>
<PRE>compute effTemp all temp/eff
thermo_style custom step etotal pe ke temp press
thermo_modify temp effTemp
</PRE>
<P>See <A HREF = "compute_temp_eff.html">compute temp/eff</A>.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the KE). This value can be
used by any command that uses a global scalar value from a compute as
-input. See <A HREF = "Section_howto.html#4_15">this section</A> for an overview of
-LAMMPS output options.
+input. See <A HREF = "Section_howto.html#howto_15">this section</A> for an overview
+of LAMMPS output options.
</P>
<P>The scalar value calculated by this compute is "extensive". The
scalar value will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This compute 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#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_ke_eff.txt b/doc/compute_ke_eff.txt
index 09001228e..e5c0216db 100644
--- a/doc/compute_ke_eff.txt
+++ b/doc/compute_ke_eff.txt
@@ -1,78 +1,78 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute ke/eff command :h3
[Syntax:]
compute ID group-ID ke/eff :pre
ID, group-ID are documented in "compute"_compute.html command
ke/eff = style name of this compute command :ul
[Examples:]
compute 1 all ke/eff :pre
[Description:]
Define a computation that calculates the kinetic energy of motion of a
group of eFF particles (nuclei and electrons), as modeled with the
"electronic force field"_pair_eff.html.
The kinetic energy for each nucleus is computed as 1/2 m v^2 and the
kinetic energy for each electron is computed as 1/2(me v^2 + 3/4 me
s^2), where m corresponds to the nuclear mass, me to the electron
mass, v to the translational velocity of each particle, and s to the
radial velocity of the electron, respectively.
There is a subtle difference between the quantity calculated by this
compute and the kinetic energy calculated by the {ke} or {etotal}
keyword used in thermodynamic output, as specified by the
"thermo_style"_thermo_style.html command. For this compute, kinetic
energy is "translational" and "radial" (only for electrons) kinetic
energy, calculated by the simple formula above. For thermodynamic
output, the {ke} keyword infers kinetic energy from the temperature of
the system with 1/2 Kb T of energy for each degree of freedom. For
the eFF temperature computation via the "compute
temp_eff"_compute_temp_eff.html command, these are the same. But
different computes that calculate temperature can subtract out
different non-thermal components of velocity and/or include other
degrees of freedom.
IMPRORTANT NOTE: The temperature in eFF models should be monitored via
the "compute temp/eff"_compute_temp_eff.html command, which can be
printed with thermodynamic output by using the
"thermo_modify"_thermo_modify.html command, as shown in the following
example:
compute effTemp all temp/eff
thermo_style custom step etotal pe ke temp press
thermo_modify temp effTemp :pre
See "compute temp/eff"_compute_temp_eff.html.
[Output info:]
This compute calculates a global scalar (the KE). This value can be
used by any command that uses a global scalar value from a compute as
-input. See "this section"_Section_howto.html#4_15 for an overview of
-LAMMPS output options.
+input. See "this section"_Section_howto.html#howto_15 for an overview
+of LAMMPS output options.
The scalar value calculated by this compute is "extensive". The
scalar value will be in energy "units"_units.html.
[Restrictions:]
This compute is part of the "user-eff" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:] none
[Default:] none
diff --git a/doc/compute_msd.html b/doc/compute_msd.html
index fde408b9e..7814701ff 100644
--- a/doc/compute_msd.html
+++ b/doc/compute_msd.html
@@ -1,113 +1,114 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute msd command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID msd keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>msd = style name of this compute command
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>com</I>
<PRE> <I>com</I> value = <I>yes</I> or <I>no</I>
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all msd
compute 1 upper msd com yes
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the mean-squared displacement
(MSD) of the group of atoms, including all effects due to atoms
passing thru periodic boundaries.
</P>
<P>A vector of four quantites is calculated by this compute. The first 3
elements of the vector are the squared dx,dy,dz displacements, summed
and averaged over atoms in the group. The 4th component is the total
squared displacement, i.e. (dx*dx + dy*dy + dz*dz), summed and
averaged over atoms in the group.
</P>
<P>The slope of the mean-squared displacement (MSD) versus time is
proportional to the diffusion coefficient of the diffusing atoms.
</P>
<P>The displacement of an atom is from its original position at the time
the compute command was issued. To store the original coordinates,
the compute creates its own fix of style "store/state", as if this
command had been issued:
</P>
<PRE>fix compute-ID_store_state group-ID store/state xu yu zu
</PRE>
<P>See the <A HREF = "fix_store_state.html">fix store/state</A> command for details.
Note that the ID of the new fix is the compute-ID + underscore +
"store_state", and the group for the new fix is the same as the
compute group.
</P>
<P>If the <I>com</I> option is set to <I>yes</I> then the effect of any drift in
the center-of-mass of the group of atoms is subtracted out before the
displacment of each atom is calcluated. The <I>com</I> option is also
passed to the created fix store/state.
</P>
<P>IMPORTANT NOTE: Fix store/state stores the initial coordinates in
"unwrapped" form, by using the image flags associated with each atom.
See the <A HREF = "dump.html">dump custom</A> command for a discussion of
"unwrapped" coordinates. See the Atoms section of the
<A HREF = "read_data.html">read_data</A> command for a discussion of image flags and
how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the <A HREF = "set.html">set
image</A> command.
</P>
<P>IMPORTANT NOTE: If an atom is part of a rigid body (see the <A HREF = "fix_rigid.html">fix
rigid</A> command), it's periodic image flags are altered,
and its contribution to the MSD may not reflect its true contribution.
See the <A HREF = "fix_rigid.html">fix rigid</A> command for details. Thus, to
compute the MSD of rigid bodies as they cross periodic boundaries, you
will need to post-process a <A HREF = "dump.html">dump file</A> containing
coordinates of the atoms in the bodies.
</P>
<P>IMPORTANT NOTE: If you want the quantities calculated by this compute
to be continuous when running from a <A HREF = "read_restart.html">restart file</A>,
then you should use the same ID for this compute, as in the original
run. This is so that the created fix will also have the same ID, and
thus be initialized correctly with atom coordinates from the restart
file.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global vector of length 4, which can be
accessed by indices 1-4 by any command that uses global vector values
-from a compute as input. See <A HREF = "Section_howto.html#4_15">this section</A>
-for an overview of LAMMPS output options.
+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 vector values are "intensive". The vector values will be in
distance^2 <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_displace_atom.html">compute displace_atom</A>, <A HREF = "fix_store_state.html">fix
store/state</A>, <A HREF = "compute_msd_molecule.html">compute
msd/molecule</A>
</P>
<P><B>Default:</B>
</P>
<P>The option default is com = no.
</P>
</HTML>
diff --git a/doc/compute_msd.txt b/doc/compute_msd.txt
index 10bd9fecd..e40a18b22 100644
--- a/doc/compute_msd.txt
+++ b/doc/compute_msd.txt
@@ -1,103 +1,104 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute msd command :h3
[Syntax:]
compute ID group-ID msd keyword values ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
msd = style name of this compute command :l
zero or more keyword/value pairs may be appended :l
keyword = {com} :l
{com} value = {yes} or {no} :pre
:ule
[Examples:]
compute 1 all msd
compute 1 upper msd com yes :pre
[Description:]
Define a computation that calculates the mean-squared displacement
(MSD) of the group of atoms, including all effects due to atoms
passing thru periodic boundaries.
A vector of four quantites is calculated by this compute. The first 3
elements of the vector are the squared dx,dy,dz displacements, summed
and averaged over atoms in the group. The 4th component is the total
squared displacement, i.e. (dx*dx + dy*dy + dz*dz), summed and
averaged over atoms in the group.
The slope of the mean-squared displacement (MSD) versus time is
proportional to the diffusion coefficient of the diffusing atoms.
The displacement of an atom is from its original position at the time
the compute command was issued. To store the original coordinates,
the compute creates its own fix of style "store/state", as if this
command had been issued:
fix compute-ID_store_state group-ID store/state xu yu zu :pre
See the "fix store/state"_fix_store_state.html command for details.
Note that the ID of the new fix is the compute-ID + underscore +
"store_state", and the group for the new fix is the same as the
compute group.
If the {com} option is set to {yes} then the effect of any drift in
the center-of-mass of the group of atoms is subtracted out before the
displacment of each atom is calcluated. The {com} option is also
passed to the created fix store/state.
IMPORTANT NOTE: Fix store/state stores the initial coordinates in
"unwrapped" form, by using the image flags associated with each atom.
See the "dump custom"_dump.html command for a discussion of
"unwrapped" coordinates. See the Atoms section of the
"read_data"_read_data.html command for a discussion of image flags and
how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the "set
image"_set.html command.
IMPORTANT NOTE: If an atom is part of a rigid body (see the "fix
rigid"_fix_rigid.html command), it's periodic image flags are altered,
and its contribution to the MSD may not reflect its true contribution.
See the "fix rigid"_fix_rigid.html command for details. Thus, to
compute the MSD of rigid bodies as they cross periodic boundaries, you
will need to post-process a "dump file"_dump.html containing
coordinates of the atoms in the bodies.
IMPORTANT NOTE: If you want the quantities calculated by this compute
to be continuous when running from a "restart file"_read_restart.html,
then you should use the same ID for this compute, as in the original
run. This is so that the created fix will also have the same ID, and
thus be initialized correctly with atom coordinates from the restart
file.
[Output info:]
This compute calculates a global vector of length 4, which can be
accessed by indices 1-4 by any command that uses global vector values
-from a compute as input. See "this section"_Section_howto.html#4_15
-for an overview of LAMMPS output options.
+from a compute as input. See "this
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+options.
The vector values are "intensive". The vector values will be in
distance^2 "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute displace_atom"_compute_displace_atom.html, "fix
store/state"_fix_store_state.html, "compute
msd/molecule"_compute_msd_molecule.html
[Default:]
The option default is com = no.
diff --git a/doc/compute_msd_molecule.html b/doc/compute_msd_molecule.html
index f00536e0d..2f30e1438 100644
--- a/doc/compute_msd_molecule.html
+++ b/doc/compute_msd_molecule.html
@@ -1,99 +1,99 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute msd/molecule command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID msd/molecule
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>msd/molecule = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all msd/molecule
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the mean-squared displacement
(MSD) of individual molecules. The calculation includes all effects
due to atoms passing thru periodic boundaries.
</P>
<P>Four quantites are calculated by this compute for each molecule. The
first 3 quantities are the squared dx,dy,dz displacements of the
center-of-mass. The 4th component is the total squared displacement,
i.e. (dx*dx + dy*dy + dz*dz) of the center-of-mass.
</P>
<P>The slope of the mean-squared displacement (MSD) versus time is
proportional to the diffusion coefficient of the diffusing molecules.
</P>
<P>The displacement of the center-of-mass of the molecule is from its
original center-of-mass position at the time the compute command was
issued.
</P>
<P>The MSD for a particular molecule is only computed if one or more of
its atoms are in the specified group. Normally all atoms in the
molecule should be in the group, however this is not required. LAMMPS
will warn you if this is not the case. Only atoms in the group
contribute to the center-of-mass calculation for the molecule, which
is used to caculate its initial and current position.
</P>
<P>The ordering of per-molecule quantities produced by this compute is
consistent with the ordering produced by other compute commands that
generate per-molecule datums. Conceptually, them molecule IDs will be
in ascending order for any molecule with one or more of its atoms in
the specified group.
</P>
<P>IMPORTANT NOTE: The initial coordinates of each molecule are stored in
"unwrapped" form, by using the image flags associated with each atom.
See the <A HREF = "dump.html">dump custom</A> command for a discussion of
"unwrapped" coordinates. See the Atoms section of the
<A HREF = "read_data.html">read_data</A> command for a discussion of image flags and
how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the <A HREF = "set.html">set
image</A> command.
</P>
<P>IMPORTANT NOTE: If an atom is part of a rigid body (see the <A HREF = "fix_rigid.html">fix
rigid</A> command), it's periodic image flags are altered,
and its contribution to the MSD may not reflect its true contribution.
See the <A HREF = "fix_rigid.html">fix rigid</A> command for details. Thus, to
compute the MSD of rigid bodies as they cross periodic boundaries, you
will need to post-process a <A HREF = "dump.html">dump file</A> containing
coordinates of the atoms in the bodies.
</P>
<P>IMPORTANT NOTE: Unlike the <A HREF = "compute_msd.html">compute msd</A> command,
this compute does not store the initial center-of-mass coorindates of
its molecules in a restart file. Thus you cannot continue the MSD per
molecule calculation of this compute when running from a <A HREF = "read_restart.html">restart
file</A>.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global array where the number of rows =
Nmolecules and the number of columns = 4 for dx,dy,dz and the total
displacement. These values can be accessed by any command that uses
-global array values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+global array 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 array values are "intensive". The array values will be in
distance^2 <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_msd.html">compute msd</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_msd_molecule.txt b/doc/compute_msd_molecule.txt
index d411a49d0..2b8bd93cf 100644
--- a/doc/compute_msd_molecule.txt
+++ b/doc/compute_msd_molecule.txt
@@ -1,94 +1,94 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute msd/molecule command :h3
[Syntax:]
compute ID group-ID msd/molecule :pre
ID, group-ID are documented in "compute"_compute.html command
msd/molecule = style name of this compute command :ul
[Examples:]
compute 1 all msd/molecule :pre
[Description:]
Define a computation that calculates the mean-squared displacement
(MSD) of individual molecules. The calculation includes all effects
due to atoms passing thru periodic boundaries.
Four quantites are calculated by this compute for each molecule. The
first 3 quantities are the squared dx,dy,dz displacements of the
center-of-mass. The 4th component is the total squared displacement,
i.e. (dx*dx + dy*dy + dz*dz) of the center-of-mass.
The slope of the mean-squared displacement (MSD) versus time is
proportional to the diffusion coefficient of the diffusing molecules.
The displacement of the center-of-mass of the molecule is from its
original center-of-mass position at the time the compute command was
issued.
The MSD for a particular molecule is only computed if one or more of
its atoms are in the specified group. Normally all atoms in the
molecule should be in the group, however this is not required. LAMMPS
will warn you if this is not the case. Only atoms in the group
contribute to the center-of-mass calculation for the molecule, which
is used to caculate its initial and current position.
The ordering of per-molecule quantities produced by this compute is
consistent with the ordering produced by other compute commands that
generate per-molecule datums. Conceptually, them molecule IDs will be
in ascending order for any molecule with one or more of its atoms in
the specified group.
IMPORTANT NOTE: The initial coordinates of each molecule are stored in
"unwrapped" form, by using the image flags associated with each atom.
See the "dump custom"_dump.html command for a discussion of
"unwrapped" coordinates. See the Atoms section of the
"read_data"_read_data.html command for a discussion of image flags and
how they are set for each atom. You can reset the image flags
(e.g. to 0) before invoking this compute by using the "set
image"_set.html command.
IMPORTANT NOTE: If an atom is part of a rigid body (see the "fix
rigid"_fix_rigid.html command), it's periodic image flags are altered,
and its contribution to the MSD may not reflect its true contribution.
See the "fix rigid"_fix_rigid.html command for details. Thus, to
compute the MSD of rigid bodies as they cross periodic boundaries, you
will need to post-process a "dump file"_dump.html containing
coordinates of the atoms in the bodies.
IMPORTANT NOTE: Unlike the "compute msd"_compute_msd.html command,
this compute does not store the initial center-of-mass coorindates of
its molecules in a restart file. Thus you cannot continue the MSD per
molecule calculation of this compute when running from a "restart
file"_read_restart.html.
[Output info:]
This compute calculates a global array where the number of rows =
Nmolecules and the number of columns = 4 for dx,dy,dz and the total
displacement. These values can be accessed by any command that uses
global array values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The array values are "intensive". The array values will be in
distance^2 "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute msd"_compute_msd.html
[Default:] none
diff --git a/doc/compute_pair.html b/doc/compute_pair.html
index b59204428..b456d96ba 100644
--- a/doc/compute_pair.html
+++ b/doc/compute_pair.html
@@ -1,85 +1,86 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute pair command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID pair pstyle evalue
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>pair = style name of this compute command
<LI>pstyle = style name of a pair style that calculates additional values
<LI>evalue = <I>epair</I> or <I>evdwl</I> or <I>ecoul</I> or blank (optional setting)
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all pair gauss
compute 1 all pair lj/cut/coul/cut ecoul
compute 1 all pair reax
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that extracts additional values calculated by a
pair style, sums them across processors, and makes them accessible for
output or further processing by other commands. The group specified
for this command is ignored.
</P>
<P>The specified <I>pstyle</I> must be a pair style used in your simulation
either by itself or as a sub-style in a <A HREF = "pair_hybrid.html">pair_style hybrid or
hybrid/overlay</A> command.
</P>
<P>The <I>evalue</I> setting is optional; it may be left off the command. All
pair styles tally a potential energy <I>epair</I> which may be broken into
two parts: <I>evdwl</I> and <I>ecoul</I> such that <I>epair</I> = <I>evdwl</I> + <I>ecoul</I>.
If the pair style calculates Coulombic interactions, their energy will
be tallied in <I>ecoul</I>. Everything else (whether it is a Lennard-Jones
style van der Waals interaction or not) is tallied in <I>evdwl</I>. If
<I>evalue</I> is specified as <I>epair</I> or left out, then <I>epair</I> is stored
as a global scalar by this compute. This is useful when using
<A HREF = "pair_hybrid.html">pair_style hybrid</A> if you want to know the portion
of the total energy contributed by one sub-style. If <I>evalue</I> is
specfied as <I>evdwl</I> or <I>ecoul</I>, then just that portion of the energy
is stored as a global scalar.
</P>
<P>Some pair styles tally additional quantities, e.g. a breakdown of
potential energy into a dozen or so components is tallied by the
<A HREF = "pair_reax.html">pair_style reax</A> commmand. These values (1 or more)
are stored as a global vector by this compute. See the doc page for
<A HREF = "pair_style.html">individual pair styles</A> for info on these values.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar which is <I>epair</I> or <I>evdwl</I> or
<I>ecoul</I>. If the pair style supports it, it also calculates a global
vector of length >= 1, as determined by the pair style. 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#4_15">this section</A>
-for an overview of LAMMPS output options.
+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
"extensive".
</P>
<P>The scalar value will be in energy <A HREF = "units.html">units</A>. The vector
values will typically also be in energy <A HREF = "units.html">units</A>, but
see the doc page for the pair style for details.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_pe.html">compute pe</A>
</P>
<P><B>Default:</B>
</P>
<P>The default for <I>evalue</I> is <I>epair</I>.
</P>
</HTML>
diff --git a/doc/compute_pair.txt b/doc/compute_pair.txt
index c1144013d..d1662acfa 100644
--- a/doc/compute_pair.txt
+++ b/doc/compute_pair.txt
@@ -1,80 +1,81 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute pair command :h3
[Syntax:]
compute ID group-ID pair pstyle evalue :pre
ID, group-ID are documented in "compute"_compute.html command
pair = style name of this compute command
pstyle = style name of a pair style that calculates additional values
evalue = {epair} or {evdwl} or {ecoul} or blank (optional setting) :ul
[Examples:]
compute 1 all pair gauss
compute 1 all pair lj/cut/coul/cut ecoul
compute 1 all pair reax :pre
[Description:]
Define a computation that extracts additional values calculated by a
pair style, sums them across processors, and makes them accessible for
output or further processing by other commands. The group specified
for this command is ignored.
The specified {pstyle} must be a pair style used in your simulation
either by itself or as a sub-style in a "pair_style hybrid or
hybrid/overlay"_pair_hybrid.html command.
The {evalue} setting is optional; it may be left off the command. All
pair styles tally a potential energy {epair} which may be broken into
two parts: {evdwl} and {ecoul} such that {epair} = {evdwl} + {ecoul}.
If the pair style calculates Coulombic interactions, their energy will
be tallied in {ecoul}. Everything else (whether it is a Lennard-Jones
style van der Waals interaction or not) is tallied in {evdwl}. If
{evalue} is specified as {epair} or left out, then {epair} is stored
as a global scalar by this compute. This is useful when using
"pair_style hybrid"_pair_hybrid.html if you want to know the portion
of the total energy contributed by one sub-style. If {evalue} is
specfied as {evdwl} or {ecoul}, then just that portion of the energy
is stored as a global scalar.
Some pair styles tally additional quantities, e.g. a breakdown of
potential energy into a dozen or so components is tallied by the
"pair_style reax"_pair_reax.html commmand. These values (1 or more)
are stored as a global vector by this compute. See the doc page for
"individual pair styles"_pair_style.html for info on these values.
[Output info:]
This compute calculates a global scalar which is {epair} or {evdwl} or
{ecoul}. If the pair style supports it, it also calculates a global
vector of length >= 1, as determined by the pair style. These values
can be used by any command that uses global scalar or vector values
-from a compute as input. See "this section"_Section_howto.html#4_15
-for an overview of LAMMPS output options.
+from a compute as input. See "this
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
+options.
The scalar and vector values calculated by this compute are
"extensive".
The scalar value will be in energy "units"_units.html. The vector
values will typically also be in energy "units"_units.html, but
see the doc page for the pair style for details.
[Restrictions:] none
[Related commands:]
"compute pe"_compute_pe.html
[Default:]
The default for {evalue} is {epair}.
diff --git a/doc/compute_pair_local.html b/doc/compute_pair_local.html
index f6bea11ce..49a9d3780 100644
--- a/doc/compute_pair_local.html
+++ b/doc/compute_pair_local.html
@@ -1,100 +1,100 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute pair/local command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID pair/local input1 input2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>pair/local = style name of this compute command
<LI>zero or more keywords may be appended
<LI>keyword = <I>dist</I> or <I>eng</I> or <I>force</I>
<PRE> <I>dist</I> = tabulate pairwise distances
<I>eng</I> = tablutate pairwise energies
<I>force</I> = tablutate pairwise forces
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all pair/local eng
compute 1 all pair/local dist eng force
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates properties of individual pairwise
interactions. The number of datums generated, aggregated across all
processors, equals the number of pairwise interactions in the system.
</P>
<P>The local data stored by this command is generated by looping over the
pairwise neighbor list. Info about an individual pairwise interaction
will only be included if both atoms in the pair are in the specified
compute group, and if the current pairwise distance is less than the
force cutoff distance for that interaction, as defined by the
<A HREF = "pair_style.html">pair_style</A> and <A HREF = "pair_coeff.html">pair_coeff</A>
commands.
</P>
<P>The output <I>dist</I> will be in distance <A HREF = "units.html">units</A>. The output
<I>eng</I> will be in energy <A HREF = "units.html">units</A>. The output <I>force</I> will
be in force <A HREF = "units.html">units</A>.
</P>
<P>Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, pair output from the <A HREF = "compute_property_local.html">compute
property/local</A> command can be combined
with data from this command and output by the <A HREF = "dump.html">dump local</A>
command in a consistent way.
</P>
<P>IMPORTANT NOTE: For pairs, if two atoms I,J are involved in 1-2, 1-3,
1-4 interactions within the molecular topology, their pairwise
interaction may be turned off, and thus they may not appear in the
neighbor list, and will not be part of the local data created by this
command. More specifically, this may be true of I,J pairs with a
weighting factor of 0.0; pairs with a non-zero weighting factor are
included. The weighting factors for 1-2, 1-3, and 1-4 pairwise
interactions are set by the <A HREF = "special_bonds.html">special_bonds</A>
command.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of pairs. If a single keyword is specified, a
local vector is produced. If two or more keywords are specified, a
local array is produced where the number of columns = the number of
keywords. The vector or array can be accessed by any command that
-uses local values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+uses local 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 output for <I>dist</I> will be in distance <A HREF = "units.html">units</A>. The
output for <I>eng</I> will be in energy <A HREF = "units.html">units</A>. The output for
<I>force</I> will be in force <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump local</A>, <A HREF = "compute_property_local.html">compute
property/local</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_pair_local.txt b/doc/compute_pair_local.txt
index 0659e8082..7f9f0cb4e 100644
--- a/doc/compute_pair_local.txt
+++ b/doc/compute_pair_local.txt
@@ -1,90 +1,90 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute pair/local command :h3
[Syntax:]
compute ID group-ID pair/local input1 input2 ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
pair/local = style name of this compute command :l
zero or more keywords may be appended :l
keyword = {dist} or {eng} or {force} :l
{dist} = tabulate pairwise distances
{eng} = tablutate pairwise energies
{force} = tablutate pairwise forces :pre
:ule
[Examples:]
compute 1 all pair/local eng
compute 1 all pair/local dist eng force :pre
[Description:]
Define a computation that calculates properties of individual pairwise
interactions. The number of datums generated, aggregated across all
processors, equals the number of pairwise interactions in the system.
The local data stored by this command is generated by looping over the
pairwise neighbor list. Info about an individual pairwise interaction
will only be included if both atoms in the pair are in the specified
compute group, and if the current pairwise distance is less than the
force cutoff distance for that interaction, as defined by the
"pair_style"_pair_style.html and "pair_coeff"_pair_coeff.html
commands.
The output {dist} will be in distance "units"_units.html. The output
{eng} will be in energy "units"_units.html. The output {force} will
be in force "units"_units.html.
Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, pair output from the "compute
property/local"_compute_property_local.html command can be combined
with data from this command and output by the "dump local"_dump.html
command in a consistent way.
IMPORTANT NOTE: For pairs, if two atoms I,J are involved in 1-2, 1-3,
1-4 interactions within the molecular topology, their pairwise
interaction may be turned off, and thus they may not appear in the
neighbor list, and will not be part of the local data created by this
command. More specifically, this may be true of I,J pairs with a
weighting factor of 0.0; pairs with a non-zero weighting factor are
included. The weighting factors for 1-2, 1-3, and 1-4 pairwise
interactions are set by the "special_bonds"_special_bonds.html
command.
[Output info:]
This compute calculates a local vector or local array depending on the
number of keywords. The length of the vector or number of rows in the
array is the number of pairs. If a single keyword is specified, a
local vector is produced. If two or more keywords are specified, a
local array is produced where the number of columns = the number of
keywords. The vector or array can be accessed by any command that
uses local values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The output for {dist} will be in distance "units"_units.html. The
output for {eng} will be in energy "units"_units.html. The output for
{force} will be in force "units"_units.html.
[Restrictions:] none
[Related commands:]
"dump local"_dump.html, "compute
property/local"_compute_property_local.html
[Default:] none
diff --git a/doc/compute_pe.html b/doc/compute_pe.html
index b970a70c5..f86c8d8bd 100644
--- a/doc/compute_pe.html
+++ b/doc/compute_pe.html
@@ -1,100 +1,100 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute pe command
</H3>
<H3>compute pe/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID pe keyword ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>pe = style name of this compute command
<LI>zero or more keywords may be appended
<LI>keyword = <I>pair</I> or <I>bond</I> or <I>angle</I> or <I>dihedral</I> or <I>improper</I> or <I>kspace</I>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all pe
compute molPE all pe bond angle dihedral improper
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the potential energy of the
entire system of atoms. The specified group must be "all". See the
<A HREF = "compute_pe_atom.html">compute pe/atom</A> command if you want per-atom
energies. 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 energy is calculated by the various pair, bond, etc potentials
defined for the simulation. If no extra keywords are listed, then the
potential energy is the sum of pair, bond, angle, dihedral, improper,
and kspace (long-range) energy. If any extra keywords are listed,
then only those components are summed to compute the potential energy.
</P>
<P>Various fixes can contribute to the total potential energy of the
system. See the doc pages for <A HREF = "fix.html">individual fixes</A> for
details. The <I>thermo</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command determines whether these
contributions are added into the computed potential energy. If no
keywords are specified the default is <I>yes</I>. If any keywords are
specified, the default is <I>no</I>.
</P>
<P>A compute of this style with the ID of "thermo_pe" is created when
LAMMPS starts up, as if this command were in the input script:
</P>
<PRE>compute thermo_pe all pe
</PRE>
<P>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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</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 potential energy). This
value can be used by any command that uses a global scalar value from
-a compute as input. See <A HREF = "Section_howto.html#4_15">this section</A> for an
-overview of LAMMPS output options.
+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 value calculated by this compute is "extensive". The
scalar value will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_pe_atom.html">compute pe/atom</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_pe.txt b/doc/compute_pe.txt
index d013bd8c2..17d0cc0e2 100644
--- a/doc/compute_pe.txt
+++ b/doc/compute_pe.txt
@@ -1,94 +1,94 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute pe command :h3
compute pe/cuda command :h3
[Syntax:]
compute ID group-ID pe keyword ... :pre
ID, group-ID are documented in "compute"_compute.html command
pe = style name of this compute command
zero or more keywords may be appended
keyword = {pair} or {bond} or {angle} or {dihedral} or {improper} or {kspace} :ul
[Examples:]
compute 1 all pe
compute molPE all pe bond angle dihedral improper :pre
[Description:]
Define a computation that calculates the potential energy of the
entire system of atoms. The specified group must be "all". See the
"compute pe/atom"_compute_pe_atom.html command if you want per-atom
energies. These per-atom values could be summed for a group of atoms
via the "compute reduce"_compute_reduce.html command.
The energy is calculated by the various pair, bond, etc potentials
defined for the simulation. If no extra keywords are listed, then the
potential energy is the sum of pair, bond, angle, dihedral, improper,
and kspace (long-range) energy. If any extra keywords are listed,
then only those components are summed to compute the potential energy.
Various fixes can contribute to the total potential energy of the
system. See the doc pages for "individual fixes"_fix.html for
details. The {thermo} option of the
"compute_modify"_compute_modify.html command determines whether these
contributions are added into the computed potential energy. If no
keywords are specified the default is {yes}. If any keywords are
specified, the default is {no}.
A compute of this style with the ID of "thermo_pe" is created when
LAMMPS starts up, as if this command were in the input script:
compute thermo_pe all pe :pre
See the "thermo_style" command for more details.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Output info:]
This compute calculates a global scalar (the potential energy). This
value can be used by any command that uses a global scalar value from
-a compute as input. See "this section"_Section_howto.html#4_15 for an
-overview of LAMMPS output options.
+a compute as input. See "this section"_Section_howto.html#howto_15
+for an overview of LAMMPS output options.
The scalar value calculated by this compute is "extensive". The
scalar value will be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute pe/atom"_compute_pe_atom.html
[Default:] none
diff --git a/doc/compute_pe_atom.html b/doc/compute_pe_atom.html
index 31d0eef2d..af5f158fc 100644
--- a/doc/compute_pe_atom.html
+++ b/doc/compute_pe_atom.html
@@ -1,87 +1,87 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute pe/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID pe/atom keyword ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>pe/atom = style name of this compute command
<LI>zero or more keywords may be appended
<LI>keyword = <I>pair</I> or <I>bond</I> or <I>angle</I> or <I>dihedral</I> or <I>improper</I>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all pe/atom
compute 1 all pe/atom pair
compute 1 all pe/atom pair bond
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that computes the per-atom potential energy for
each atom in a group. See the <A HREF = "compute_pe.html">compute pe</A> command if
you want the potential energy of the entire system.
</P>
<P>The per-atom energy is calculated by the various pair, bond, etc
potentials defined for the simulation. If no extra keywords are
listed, then the potential energy is the sum of pair, bond, angle,
dihedral, and improper energy. If any extra keywords are listed, then
only those components are summed to compute the potential energy.
</P>
<P>Note that the energy of each atom is due to its interaction with all
other atoms in the simulation, not just with other atoms in the group.
</P>
<P>For an energy contribution produced by a small set of atoms (e.g. 4
atoms in a dihedral or 3 atoms in a Tersoff 3-body interaction), that
energy is assigned in equal portions to each atom in the set.
E.g. 1/4 of the dihedral energy to each of the 4 atoms.
</P>
<P>The <A HREF = "dihedral_charmm.html">dihedral_style charmm</A> style calculates
pairwise interactions between 1-4 atoms. The energy contribution of
these terms is included in the pair energy, not the dihedral energy.
</P>
<P>As an example of per-atom potential energy compared to total potential
energy, these lines in an input script should yield the same result
in the last 2 columns of thermo output:
</P>
<PRE>compute peratom all pe/atom
compute pe all reduce sum c_peratom
thermo_style custom step temp etotal press pe c_pe
</PRE>
<P>IMPORTANT NOTE: The per-atom energy does NOT include contributions due
to long-range Coulombic interactions (via the
<A HREF = "kspace_style.html">kspace_style</A> command). It's not clear this
contribution can easily be computed. It also does not include any
Lennard-Jones tail corrections invoked by the <A HREF = "pair_modify.html">pair_modify tail
yes</A> command, since those are global contributions to
the system energy.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-<A HREF = "Section_howto.html#4_15">this section</A> for an overview of LAMMPS
+<A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS
output options.
</P>
<P>The per-atom vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_pe.html">compute pe</A>, <A HREF = "compute_stress_atom.html">compute
stress/atom</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_pe_atom.txt b/doc/compute_pe_atom.txt
index e9d879aa1..c71dceec4 100644
--- a/doc/compute_pe_atom.txt
+++ b/doc/compute_pe_atom.txt
@@ -1,82 +1,82 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute pe/atom command :h3
[Syntax:]
compute ID group-ID pe/atom keyword ... :pre
ID, group-ID are documented in "compute"_compute.html command
pe/atom = style name of this compute command
zero or more keywords may be appended
keyword = {pair} or {bond} or {angle} or {dihedral} or {improper} :ul
[Examples:]
compute 1 all pe/atom
compute 1 all pe/atom pair
compute 1 all pe/atom pair bond :pre
[Description:]
Define a computation that computes the per-atom potential energy for
each atom in a group. See the "compute pe"_compute_pe.html command if
you want the potential energy of the entire system.
The per-atom energy is calculated by the various pair, bond, etc
potentials defined for the simulation. If no extra keywords are
listed, then the potential energy is the sum of pair, bond, angle,
dihedral, and improper energy. If any extra keywords are listed, then
only those components are summed to compute the potential energy.
Note that the energy of each atom is due to its interaction with all
other atoms in the simulation, not just with other atoms in the group.
For an energy contribution produced by a small set of atoms (e.g. 4
atoms in a dihedral or 3 atoms in a Tersoff 3-body interaction), that
energy is assigned in equal portions to each atom in the set.
E.g. 1/4 of the dihedral energy to each of the 4 atoms.
The "dihedral_style charmm"_dihedral_charmm.html style calculates
pairwise interactions between 1-4 atoms. The energy contribution of
these terms is included in the pair energy, not the dihedral energy.
As an example of per-atom potential energy compared to total potential
energy, these lines in an input script should yield the same result
in the last 2 columns of thermo output:
compute peratom all pe/atom
compute pe all reduce sum c_peratom
thermo_style custom step temp etotal press pe c_pe :pre
IMPORTANT NOTE: The per-atom energy does NOT include contributions due
to long-range Coulombic interactions (via the
"kspace_style"_kspace_style.html command). It's not clear this
contribution can easily be computed. It also does not include any
Lennard-Jones tail corrections invoked by the "pair_modify tail
yes"_pair_modify.html command, since those are global contributions to
the system energy.
[Output info:]
This compute calculates a per-atom vector, which can be accessed by
any command that uses per-atom values from a compute as input. See
-"this section"_Section_howto.html#4_15 for an overview of LAMMPS
+"this section"_Section_howto.html#howto_15 for an overview of LAMMPS
output options.
The per-atom vector values will be in energy "units"_units.html.
[Restrictions:]
[Related commands:]
"compute pe"_compute_pe.html, "compute
stress/atom"_compute_stress_atom.html
[Default:] none
diff --git a/doc/compute_pressure.html b/doc/compute_pressure.html
index 9447911a9..95f7eeebc 100644
--- a/doc/compute_pressure.html
+++ b/doc/compute_pressure.html
@@ -1,135 +1,135 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute pressure command
</H3>
<H3>compute pressure/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<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
<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 myTemp
compute 1 all pressure thermo_temp 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 which include 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>The temperature and kinetic energy tensor is not calculated by this
compute, but rather by the temperature compute specified with the
command. Normally this compute 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 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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</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#4_15">this
+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
<A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp.html">compute temp</A>, <A HREF = "compute_stress_atom.html">compute
stress/atom</A>,
<A HREF = "thermo_style.html">thermo_style</A>,
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_pressure.txt b/doc/compute_pressure.txt
index f9ee30437..c8dafd229 100644
--- a/doc/compute_pressure.txt
+++ b/doc/compute_pressure.txt
@@ -1,129 +1,129 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute pressure command :h3
compute pressure/cuda command :h3
[Syntax:]
compute ID group-ID pressure temp-ID keyword ... :pre
ID, group-ID are documented in "compute"_compute.html command
pressure = style name of this compute command
temp-ID = ID of compute that calculates temperature
zero or more keywords may be appended
keyword = {ke} or {pair} or {bond} or {angle} or {dihedral} or {improper} or {kspace} or {fix} or {virial} :ul
[Examples:]
compute 1 all pressure myTemp
compute 1 all pressure thermo_temp pair bond :pre
[Description:]
Define a computation that calculates the pressure of the entire system
of atoms. The specified group must be "all". See the "compute
stress/atom"_compute_stress_atom.html command if you want per-atom
pressure (stress). These per-atom values could be summed for a group
of atoms via the "compute reduce"_compute_reduce.html command.
The pressure is computed by the formula
:c,image(Eqs/pressure.jpg)
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. "Fixes"_fix.html that impose constraints
(e.g. the "fix shake"_fix_shake.html command) also contribute to the
virial term.
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:
:c,image(Eqs/pressure_tensor.jpg)
If no extra keywords are listed, the entire equations above are
calculated which include 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 {virial} keyword
means include all terms except the kinetic energy {ke}.
The temperature and kinetic energy tensor is not calculated by this
compute, but rather by the temperature compute specified with the
command. Normally this compute 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.
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 "compute
temperature"_compute.html styles for details.
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:
compute thermo_press all pressure thermo_temp :pre
where "thermo_temp" is the ID of a similarly defined compute of style
"temp". See the "thermo_style" command for more details.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Output info:]
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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar and vector values calculated by this compute are
"intensive". The scalar and vector values will be in pressure
"units"_units.html.
[Restrictions:] none
[Related commands:]
"compute temp"_compute_temp.html, "compute
stress/atom"_compute_stress_atom.html,
"thermo_style"_thermo_style.html,
[Default:] none
diff --git a/doc/compute_property_atom.html b/doc/compute_property_atom.html
index b90cfafb0..6390d3e02 100644
--- a/doc/compute_property_atom.html
+++ b/doc/compute_property_atom.html
@@ -1,120 +1,120 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute property/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID property/atom input1 input2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>property/atom = style name of this compute command
<LI>input = one or more atom attributes
<PRE> possible attributes = id, mol, type, mass,
x, y, z, xs, ys, zs, xu, yu, zu, ix, iy, iz,
vx, vy, vz, fx, fy, fz,
q, mux, muy, muz, mu,
radius, diameter, omegax, omegay, omegaz,
angmomx, angmomy, angmomz,
shapex,shapey, shapez,
quatw, quati, quatj, quatk, tqx, tqy, tqz,
spin, eradius, ervel, erforce
</PRE>
<PRE> id = atom ID
mol = molecule ID
type = atom type
mass = atom mass
x,y,z = unscaled atom coordinates
xs,ys,zs = scaled atom coordinates
xu,yu,zu = unwrapped atom coordinates
ix,iy,iz = box image that the atom is in
vx,vy,vz = atom velocities
fx,fy,fz = forces on atoms
q = atom charge
mux,muy,muz = orientation of dipole moment of atom
mu = magnitude of dipole moment of atom
radius,diameter = radius,diameter of spherical particle
omegax,omegay,omegaz = angular velocity of extended particle
angmomx,angmomy,angmomz = angular momentum of extended particle
tqx,tqy,tqz = torque on extended particles
spin = electron spin
eradius = electron radius
ervel = electron radial velocity
erforce = electron radial force
shapex,shapey,shapez = 3 diameters of aspherical particle
quatw,quati,quatj,quatk = quaternion components for aspherical particles
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all property/atom xs vx fx mux
compute 2 all property/atom type
compute 1 all property/atom ix iy iz
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that simply stores atom attributes for each atom
in the group. This is useful so that the values can be used by other
-<A HREF = "Section_howto.html#4_15">output commands</A> that take computes as
+<A HREF = "Section_howto.html#howto_15">output commands</A> that take computes as
inputs. See for example, the <A HREF = "compute_reduce.html">compute reduce</A>,
<A HREF = "fix_ave_atom.html">fix ave/atom</A>, <A HREF = "fix_ave_histo.html">fix ave/histo</A>,
<A HREF = "fix_ave_spatial.html">fix ave/spatial</A>, and <A HREF = "variable.html">atom-style
variable</A> commands.
</P>
<P>The list of possible attributes is the same as that used by the <A HREF = "dump.html">dump
custom</A> command, which describes their meaning, with some
additional quantities that are only defined for certain <A HREF = "atom_style.html">atom
styles</A>. Basically, this list gives your input script
access to any per-atom quantity stored by LAMMPS.
</P>
<P>The values are stored in a per-atom vector or array as
discussed below. Zeroes are stored for atoms not in the specified
group.
</P>
<P>The additional quantities only accessible via this command (and not
directly via the <A HREF = "dump.html">dump custom</A> command are as follows.
</P>
<P><I>Shapex</I>, <I>shapey</I>, and <I>shapez</I> are defined for ellipsoidal particles
and define the 3d shape of each particle. <I>Quatw</I>, <I>quati</I>, <I>quatj</I>,
and <I>quatk</I> are also defined for ellipsoidal particles and store the
4-vector quaternion representing the orientation of each particle.
See the <A HREF = "set.html">set</A> command for an explanation of the quaternion
vector.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a per-atom vector or per-atom array depending
on the number of input values. If a single input is specified, a
per-atom vector is produced. If two or more inputs are specified, a
per-atom array is produced where the number of columns = the number of
inputs. The vector or array can be accessed by any command that uses
-per-atom values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+per-atom 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 vector or array values will be in whatever <A HREF = "units.html">units</A> the
corresponding attribute is in, e.g. velocity units for vx, charge
units for q, etc.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump custom</A>, <A HREF = "compute_reduce.html">compute reduce</A>, <A HREF = "fix_ave_atom.html">fix
ave/atom</A>, <A HREF = "fix_ave_spatial.html">fix ave/spatial</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_property_atom.txt b/doc/compute_property_atom.txt
index 60972bce4..bae2846f4 100644
--- a/doc/compute_property_atom.txt
+++ b/doc/compute_property_atom.txt
@@ -1,111 +1,111 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute property/atom command :h3
[Syntax:]
compute ID group-ID property/atom input1 input2 ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
property/atom = style name of this compute command :l
input = one or more atom attributes :l
possible attributes = id, mol, type, mass,
x, y, z, xs, ys, zs, xu, yu, zu, ix, iy, iz,
vx, vy, vz, fx, fy, fz,
q, mux, muy, muz, mu,
radius, diameter, omegax, omegay, omegaz,
angmomx, angmomy, angmomz,
shapex,shapey, shapez,
quatw, quati, quatj, quatk, tqx, tqy, tqz,
spin, eradius, ervel, erforce :pre
id = atom ID
mol = molecule ID
type = atom type
mass = atom mass
x,y,z = unscaled atom coordinates
xs,ys,zs = scaled atom coordinates
xu,yu,zu = unwrapped atom coordinates
ix,iy,iz = box image that the atom is in
vx,vy,vz = atom velocities
fx,fy,fz = forces on atoms
q = atom charge
mux,muy,muz = orientation of dipole moment of atom
mu = magnitude of dipole moment of atom
radius,diameter = radius,diameter of spherical particle
omegax,omegay,omegaz = angular velocity of extended particle
angmomx,angmomy,angmomz = angular momentum of extended particle
tqx,tqy,tqz = torque on extended particles
spin = electron spin
eradius = electron radius
ervel = electron radial velocity
erforce = electron radial force
shapex,shapey,shapez = 3 diameters of aspherical particle
quatw,quati,quatj,quatk = quaternion components for aspherical particles :pre
:ule
[Examples:]
compute 1 all property/atom xs vx fx mux
compute 2 all property/atom type
compute 1 all property/atom ix iy iz :pre
[Description:]
Define a computation that simply stores atom attributes for each atom
in the group. This is useful so that the values can be used by other
-"output commands"_Section_howto.html#4_15 that take computes as
+"output commands"_Section_howto.html#howto_15 that take computes as
inputs. See for example, the "compute reduce"_compute_reduce.html,
"fix ave/atom"_fix_ave_atom.html, "fix ave/histo"_fix_ave_histo.html,
"fix ave/spatial"_fix_ave_spatial.html, and "atom-style
variable"_variable.html commands.
The list of possible attributes is the same as that used by the "dump
custom"_dump.html command, which describes their meaning, with some
additional quantities that are only defined for certain "atom
styles"_atom_style.html. Basically, this list gives your input script
access to any per-atom quantity stored by LAMMPS.
The values are stored in a per-atom vector or array as
discussed below. Zeroes are stored for atoms not in the specified
group.
The additional quantities only accessible via this command (and not
directly via the "dump custom"_dump.html command are as follows.
{Shapex}, {shapey}, and {shapez} are defined for ellipsoidal particles
and define the 3d shape of each particle. {Quatw}, {quati}, {quatj},
and {quatk} are also defined for ellipsoidal particles and store the
4-vector quaternion representing the orientation of each particle.
See the "set"_set.html command for an explanation of the quaternion
vector.
[Output info:]
This compute calculates a per-atom vector or per-atom array depending
on the number of input values. If a single input is specified, a
per-atom vector is produced. If two or more inputs are specified, a
per-atom array is produced where the number of columns = the number of
inputs. The vector or array can be accessed by any command that uses
per-atom values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The vector or array values will be in whatever "units"_units.html the
corresponding attribute is in, e.g. velocity units for vx, charge
units for q, etc.
[Restrictions:] none
[Related commands:]
"dump custom"_dump.html, "compute reduce"_compute_reduce.html, "fix
ave/atom"_fix_ave_atom.html, "fix ave/spatial"_fix_ave_spatial.html
[Default:] none
diff --git a/doc/compute_property_local.html b/doc/compute_property_local.html
index 546ff6ff5..f7c1a32b1 100644
--- a/doc/compute_property_local.html
+++ b/doc/compute_property_local.html
@@ -1,137 +1,137 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute property/local command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID property/local input1 input2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>property/local = style name of this compute command
<LI>input = one or more attributes
<PRE> possible attributes = natom1 natom2
patom1 patom2
batom1 batom2 btype
aatom1 aatom2 aatom3 atype
datom1 datom2 datom3 dtype
iatom1 iatom2 iatom3 itype
</PRE>
<PRE> natom1, natom2 = IDs of 2 atoms in each pair (within neighbor cutoff)
patom1, patom2 = IDs of 2 atoms in each pair (within force cutoff)
batom1, batom2 = IDs of 2 atoms in each bond
btype = bond type of each bond
aatom1, aatom2, aatom3 = IDs of 3 atoms in each angle
atype = angle type of each angle
datom1, datom2, datom3, datom4 = IDs of 4 atoms in each dihedral
dtype = dihedral type of each dihedral
iatom1, iatom2, iatom3, iatom4 = IDs of 4 atoms in each improper
itype = improper type of each improper
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all property/local btype batom1 batom2
compute 1 all property/local atype aatom2
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that stores the specified attributes as local
-data so it can be accessed by other <A HREF = "Section_howto.html#4_15">output
-commands</A>. If the input attributes refer to
-bond information, then the number of datums generated, aggregated
+data so it can be accessed by other <A HREF = "Section_howto.html#howto_15">output
+commands</A>. If the input attributes refer
+to bond information, then the number of datums generated, aggregated
across all processors, equals the number of bonds in the system.
Ditto for pairs, angles, etc.
</P>
<P>If multiple input attributes are specified then they must all generate
the same amount of information, so that the resulting local array has
the same number of rows for each column. This means that only bond
attributes can be specified together, or angle attributes, etc. Bond
and angle attributes can not be mixed in the same compute
property/local command.
</P>
<P>If the inputs are pair attributes, the local data is generated by
looping over the pairwise neighbor list. Info about an individual
pairwise interaction will only be included if both atoms in the pair
are in the specified compute group. For <I>natom1</I> and <I>natom2</I>, all
atom pairs in the neighbor list are considered (out to the neighbor
cutoff = force cutoff + <A HREF = "neighbor.html">neighbor skin</A>). For <I>patom1</I>
and <I>patom2</I>, the distance between the atoms must be less than the
force cutoff distance for that pair to be included, as defined by the
<A HREF = "pair_style.html">pair_style</A> and <A HREF = "pair_coeff.html">pair_coeff</A>
commands.
</P>
<P>If the inputs are bond, angle, etc attributes, the local data is
generated by looping over all the atoms owned on a processor and
extracting bond, angle, etc info. For bonds, info about an individual
bond will only be included if both atoms in the bond are in the
specified compute group. Likewise for angles, dihedrals, etc.
</P>
<P>Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, output from the <A HREF = "compute_bond_local.html">compute
bond/local</A> command can be combined with bond
atom indices from this command and output by the <A HREF = "dump.html">dump
local</A> command in a consistent way.
</P>
<P>The <I>natom1</I> and <I>natom2</I>, or <I>patom1</I> and <I>patom2</I> attributes refer
to the atom IDs of the 2 atoms in each pairwise interaction computed
by the <A HREF = "pair_style.html">pair_style</A> command.
</P>
<P>IMPORTANT NOTE: For pairs, if two atoms I,J are involved in 1-2, 1-3,
1-4 interactions within the molecular topology, their pairwise
interaction may be turned off, and thus they may not appear in the
neighbor list, and will not be part of the local data created by this
command. More specifically, this may be true of I,J pairs with a
weighting factor of 0.0; pairs with a non-zero weighting factor are
included. The weighting factors for 1-2, 1-3, and 1-4 pairwise
interactions are set by the <A HREF = "special_bonds.html">special_bonds</A>
command.
</P>
<P>The <I>batom1</I> and <I>batom2</I> attributes refer to the atom IDs of the 2
atoms in each <A HREF = "bond_style.html">bond</A>. The <I>btype</I> attribute refers to
the type of the bond, from 1 to Nbtypes = # of bond types. The number
of bond types is defined in the data file read by the
<A HREF = "read_data.html">read_data</A> command. The attributes that start with
"a", "d", "i", refer to similar values for <A HREF = "angle_style.html">angles</A>,
<A HREF = "dihedral_style.html">dihedrals</A>, and <A HREF = "improper_style.html">impropers</A>.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a local vector or local array depending on the
number of input values. The length of the vector or number of rows in
the array is the number of bonds, angles, etc. If a single input is
specified, a local vector is produced. If two or more inputs are
specified, a local array is produced where the number of columns = the
number of inputs. The vector or array can be accessed by any command
-that uses local values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+that uses local 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 vector or array values will be integers that correspond to the
specified attribute.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump local</A>, <A HREF = "compute_reduce.html">compute reduce</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_property_local.txt b/doc/compute_property_local.txt
index 1f3726b43..33da51c08 100644
--- a/doc/compute_property_local.txt
+++ b/doc/compute_property_local.txt
@@ -1,128 +1,128 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute property/local command :h3
[Syntax:]
compute ID group-ID property/local input1 input2 ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
property/local = style name of this compute command :l
input = one or more attributes :l
possible attributes = natom1 natom2
patom1 patom2
batom1 batom2 btype
aatom1 aatom2 aatom3 atype
datom1 datom2 datom3 dtype
iatom1 iatom2 iatom3 itype :pre
natom1, natom2 = IDs of 2 atoms in each pair (within neighbor cutoff)
patom1, patom2 = IDs of 2 atoms in each pair (within force cutoff)
batom1, batom2 = IDs of 2 atoms in each bond
btype = bond type of each bond
aatom1, aatom2, aatom3 = IDs of 3 atoms in each angle
atype = angle type of each angle
datom1, datom2, datom3, datom4 = IDs of 4 atoms in each dihedral
dtype = dihedral type of each dihedral
iatom1, iatom2, iatom3, iatom4 = IDs of 4 atoms in each improper
itype = improper type of each improper :pre
:ule
[Examples:]
compute 1 all property/local btype batom1 batom2
compute 1 all property/local atype aatom2 :pre
[Description:]
Define a computation that stores the specified attributes as local
data so it can be accessed by other "output
-commands"_Section_howto.html#4_15. If the input attributes refer to
-bond information, then the number of datums generated, aggregated
+commands"_Section_howto.html#howto_15. If the input attributes refer
+to bond information, then the number of datums generated, aggregated
across all processors, equals the number of bonds in the system.
Ditto for pairs, angles, etc.
If multiple input attributes are specified then they must all generate
the same amount of information, so that the resulting local array has
the same number of rows for each column. This means that only bond
attributes can be specified together, or angle attributes, etc. Bond
and angle attributes can not be mixed in the same compute
property/local command.
If the inputs are pair attributes, the local data is generated by
looping over the pairwise neighbor list. Info about an individual
pairwise interaction will only be included if both atoms in the pair
are in the specified compute group. For {natom1} and {natom2}, all
atom pairs in the neighbor list are considered (out to the neighbor
cutoff = force cutoff + "neighbor skin"_neighbor.html). For {patom1}
and {patom2}, the distance between the atoms must be less than the
force cutoff distance for that pair to be included, as defined by the
"pair_style"_pair_style.html and "pair_coeff"_pair_coeff.html
commands.
If the inputs are bond, angle, etc attributes, the local data is
generated by looping over all the atoms owned on a processor and
extracting bond, angle, etc info. For bonds, info about an individual
bond will only be included if both atoms in the bond are in the
specified compute group. Likewise for angles, dihedrals, etc.
Note that as atoms migrate from processor to processor, there will be
no consistent ordering of the entries within the local vector or array
from one timestep to the next. The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, output from the "compute
bond/local"_compute_bond_local.html command can be combined with bond
atom indices from this command and output by the "dump
local"_dump.html command in a consistent way.
The {natom1} and {natom2}, or {patom1} and {patom2} attributes refer
to the atom IDs of the 2 atoms in each pairwise interaction computed
by the "pair_style"_pair_style.html command.
IMPORTANT NOTE: For pairs, if two atoms I,J are involved in 1-2, 1-3,
1-4 interactions within the molecular topology, their pairwise
interaction may be turned off, and thus they may not appear in the
neighbor list, and will not be part of the local data created by this
command. More specifically, this may be true of I,J pairs with a
weighting factor of 0.0; pairs with a non-zero weighting factor are
included. The weighting factors for 1-2, 1-3, and 1-4 pairwise
interactions are set by the "special_bonds"_special_bonds.html
command.
The {batom1} and {batom2} attributes refer to the atom IDs of the 2
atoms in each "bond"_bond_style.html. The {btype} attribute refers to
the type of the bond, from 1 to Nbtypes = # of bond types. The number
of bond types is defined in the data file read by the
"read_data"_read_data.html command. The attributes that start with
"a", "d", "i", refer to similar values for "angles"_angle_style.html,
"dihedrals"_dihedral_style.html, and "impropers"_improper_style.html.
[Output info:]
This compute calculates a local vector or local array depending on the
number of input values. The length of the vector or number of rows in
the array is the number of bonds, angles, etc. If a single input is
specified, a local vector is produced. If two or more inputs are
specified, a local array is produced where the number of columns = the
number of inputs. The vector or array can be accessed by any command
that uses local values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The vector or array values will be integers that correspond to the
specified attribute.
[Restrictions:] none
[Related commands:]
"dump local"_dump.html, "compute reduce"_compute_reduce.html
[Default:] none
diff --git a/doc/compute_property_molecule.html b/doc/compute_property_molecule.html
index fdb07af96..55cc4955a 100644
--- a/doc/compute_property_molecule.html
+++ b/doc/compute_property_molecule.html
@@ -1,77 +1,77 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute property/molecule command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID property/molecule input1 input2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>property/molecule = style name of this compute command
<LI>input = one or more attributes
<PRE> possible attributes = mol cout
mol = molecule ID
count = # of atoms in molecule
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all property/molecule mol
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that stores the specified attributes as global
-data so it can be accessed by other <A HREF = "Section_howto.html#4_15">output
-commands</A> and used in conjunction with other
-commands that generate per-molecule data, such as <A HREF = "compute_com_molecule.html">compute
+data so it can be accessed by other <A HREF = "Section_howto.html#howto_15">output
+commands</A> and used in conjunction with
+other commands that generate per-molecule data, such as <A HREF = "compute_com_molecule.html">compute
com/molecule</A> and <A HREF = "compute_msd_molecule.html">compute
msd/molecule</A>.
</P>
<P>The ordering of per-molecule quantities produced by this compute is
consistent with the ordering produced by other compute commands that
generate per-molecule datums. Conceptually, them molecule IDs will be
in ascending order for any molecule with one or more of its atoms in
the specified group.
</P>
<P>The <I>mol</I> attribute is the molecule ID. This attribute can be used to
produce molecule IDs as labels for per-molecule datums generated by
other computes or fixes when they are output to a file, e.g. by the
<A HREF = "fix_ave_time.html">fix ave/time</A> command.
</P>
<P>The <I>count</I> attribute is the number of atoms in the molecule.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global vector or global array depending on
the number of input values. The length of the vector or number of
rows in the array is the number of molecules. If a single input is
specified, a global vector is produced. If two or more inputs are
specified, a global array is produced where the number of columns =
the number of inputs. The vector or array can be accessed by any
-command that uses global values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+command that uses global 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 vector or array values will be integers that correspond to the
specified attribute.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_property_molecule.txt b/doc/compute_property_molecule.txt
index 540dab079..c2a4cb0d8 100644
--- a/doc/compute_property_molecule.txt
+++ b/doc/compute_property_molecule.txt
@@ -1,68 +1,68 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute property/molecule command :h3
[Syntax:]
compute ID group-ID property/molecule input1 input2 ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
property/molecule = style name of this compute command :l
input = one or more attributes :l
possible attributes = mol cout
mol = molecule ID
count = # of atoms in molecule :pre
:ule
[Examples:]
compute 1 all property/molecule mol :pre
[Description:]
Define a computation that stores the specified attributes as global
data so it can be accessed by other "output
-commands"_Section_howto.html#4_15 and used in conjunction with other
-commands that generate per-molecule data, such as "compute
+commands"_Section_howto.html#howto_15 and used in conjunction with
+other commands that generate per-molecule data, such as "compute
com/molecule"_compute_com_molecule.html and "compute
msd/molecule"_compute_msd_molecule.html.
The ordering of per-molecule quantities produced by this compute is
consistent with the ordering produced by other compute commands that
generate per-molecule datums. Conceptually, them molecule IDs will be
in ascending order for any molecule with one or more of its atoms in
the specified group.
The {mol} attribute is the molecule ID. This attribute can be used to
produce molecule IDs as labels for per-molecule datums generated by
other computes or fixes when they are output to a file, e.g. by the
"fix ave/time"_fix_ave_time.html command.
The {count} attribute is the number of atoms in the molecule.
[Output info:]
This compute calculates a global vector or global array depending on
the number of input values. The length of the vector or number of
rows in the array is the number of molecules. If a single input is
specified, a global vector is produced. If two or more inputs are
specified, a global array is produced where the number of columns =
the number of inputs. The vector or array can be accessed by any
command that uses global values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The vector or array values will be integers that correspond to the
specified attribute.
[Restrictions:] none
[Related commands:] none
[Default:] none
diff --git a/doc/compute_rdf.html b/doc/compute_rdf.html
index dd93bfd8f..ae66e375b 100644
--- a/doc/compute_rdf.html
+++ b/doc/compute_rdf.html
@@ -1,130 +1,130 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute rdf command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID rdf Nbin itype1 jtype1 itype2 jtype2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>rdf = style name of this compute command
<LI>Nbin = number of RDF bins
<LI>itypeN = central atom type for Nth RDF histogram (see asterisk form below)
<LI>jtypeN = distribution atom type for Nth RDF histogram (see asterisk form below)
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all rdf 100
compute 1 all rdf 100 1 1
compute 1 all rdf 100 * 3
compute 1 fluid rdf 500 1 1 1 2 2 1 2 2
compute 1 fluid rdf 500 1*3 2 5 *10
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the radial distribution function
(RDF), also called g(r), and the coordination number for a group of
particles. Both are calculated in histogram form by binning pairwise
distances into <I>Nbin</I> bins from 0.0 to the maximum force cutoff
defined by the <A HREF = "pair_style.html">pair_style</A> command. The bins are of
uniform size in radial distance. Thus a single bin encompasses a thin
shell of distances in 3d and a thin ring of distances in 2d.
</P>
<P>The <I>itypeN</I> and <I>jtypeN</I> arguments are optional. These arguments
must come in pairs. If no pairs are listed, then a single histogram
is computed for g(r) between all atom types. If one or more pairs are
listed, then a separate histogram is generated for each
<I>itype</I>,<I>jtype</I> pair.
</P>
<P>The <I>itypeN</I> and <I>jtypeN</I> settings can be specified in one of two
ways. An explicit numeric value can be used, as in the 4th example
above. Or a wild-card asterisk can be used 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>If both <I>itypeN</I> and <I>jtypeN</I> are single values, as in the 4th example
above, this means that a g(r) is computed where atoms of type <I>itypeN</I>
are the central atom, and atoms of type <I>jtypeN</I> are the distribution
atom. If either <I>itypeN</I> and <I>jtypeN</I> represent a range of values via
the wild-card asterisk, as in the 5th example above, this means that a
g(r) is computed where atoms of any of the range of types represented
by <I>itypeN</I> are the central atom, and atoms of any of the range of
types represented by <I>jtypeN</I> are the distribution atom.
</P>
<P>Pairwise distances are generated by looping over a pairwise neighbor
list, just as they would be in a <A HREF = "pair_style.html">pair_style</A>
computation. The distance between two atoms I and J is included in
a specific histogram if the following criteria are met:
</P>
<UL><LI>atoms I,J are both in the specified compute group
<LI>the distance between atoms I,J is less than the maximum force cutoff
<LI>the type of the I atom matches itypeN (one or a range of types)
<LI>the type of the J atom matches jtypeN (one or a range of types)
</UL>
<P>It is OK if a particular pairwise distance is included in more than
one individual histogram, due to the way the <I>itypeN</I> and <I>jtypeN</I>
arguments are specified.
</P>
<P>The g(r) value for a bin is calculated from the histogram count by
scaling it by the idealized number of how many counts there would be
if atoms of type <I>jtypeN</I> were uniformly distributed. Thus it
involves the count of <I>itypeN</I> atoms, the count of <I>jtypeN</I> atoms, the
volume of the entire simulation box, and the volume of the bin's thin
shell in 3d (or the area of the bin's thin ring in 2d).
</P>
<P>A coordination number coord(r) is also calculated, which is the sum of
g(r) values for all bins up to and including the current bin.
</P>
<P>The simplest way to output the results of the compute rdf calculation
to a file is to use the <A HREF = "fix_ave_time.html">fix ave/time</A> command, for
example:
</P>
<PRE>compute myRDF all rdf 50
fix 1 all ave/time 100 1 100 c_myRDF file tmp.rdf mode vector
</PRE>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global array with the number of rows =
<I>Nbins</I>, and the number of columns = 1 + 2*Npairs, where Npairs is the
number of I,J pairings specified. The first column has the bin
coordinate (center of the bin), Each successive set of 2 columns has
the g(r) and coord(r) values for a specific set of <I>itypeN</I> versus
<I>jtypeN</I> interactions, as described above. These values can be used
by any command that uses a global values from a compute as input. See
-<A HREF = "Section_howto.html#4_15">this section</A> for an overview of LAMMPS
+<A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS
output options.
</P>
<P>The array values calculated by this compute are all "intensive".
</P>
<P>The first column of array values will be in distance
<A HREF = "units.html">units</A>. The g(r) columns of array values are normalized
numbers >= 0.0. The coordination number columns of array values are
also numbers >= 0.0.
</P>
<P><B>Restrictions:</B>
</P>
<P>The RDF is not computed for distances longer than the force cutoff,
since processors (in parallel) don't know about atom coordinates for
atoms further away than that distance. If you want an RDF for larger
distances, you'll need to post-process a dump file.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_ave_time.html">fix ave/time</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_rdf.txt b/doc/compute_rdf.txt
index a4ddf137d..83e835ff3 100644
--- a/doc/compute_rdf.txt
+++ b/doc/compute_rdf.txt
@@ -1,125 +1,125 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute rdf command :h3
[Syntax:]
compute ID group-ID rdf Nbin itype1 jtype1 itype2 jtype2 ... :pre
ID, group-ID are documented in "compute"_compute.html command
rdf = style name of this compute command
Nbin = number of RDF bins
itypeN = central atom type for Nth RDF histogram (see asterisk form below)
jtypeN = distribution atom type for Nth RDF histogram (see asterisk form below) :ul
[Examples:]
compute 1 all rdf 100
compute 1 all rdf 100 1 1
compute 1 all rdf 100 * 3
compute 1 fluid rdf 500 1 1 1 2 2 1 2 2
compute 1 fluid rdf 500 1*3 2 5 *10 :pre
[Description:]
Define a computation that calculates the radial distribution function
(RDF), also called g(r), and the coordination number for a group of
particles. Both are calculated in histogram form by binning pairwise
distances into {Nbin} bins from 0.0 to the maximum force cutoff
defined by the "pair_style"_pair_style.html command. The bins are of
uniform size in radial distance. Thus a single bin encompasses a thin
shell of distances in 3d and a thin ring of distances in 2d.
The {itypeN} and {jtypeN} arguments are optional. These arguments
must come in pairs. If no pairs are listed, then a single histogram
is computed for g(r) between all atom types. If one or more pairs are
listed, then a separate histogram is generated for each
{itype},{jtype} pair.
The {itypeN} and {jtypeN} settings can be specified in one of two
ways. An explicit numeric value can be used, as in the 4th example
above. Or a wild-card asterisk can be used 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).
If both {itypeN} and {jtypeN} are single values, as in the 4th example
above, this means that a g(r) is computed where atoms of type {itypeN}
are the central atom, and atoms of type {jtypeN} are the distribution
atom. If either {itypeN} and {jtypeN} represent a range of values via
the wild-card asterisk, as in the 5th example above, this means that a
g(r) is computed where atoms of any of the range of types represented
by {itypeN} are the central atom, and atoms of any of the range of
types represented by {jtypeN} are the distribution atom.
Pairwise distances are generated by looping over a pairwise neighbor
list, just as they would be in a "pair_style"_pair_style.html
computation. The distance between two atoms I and J is included in
a specific histogram if the following criteria are met:
atoms I,J are both in the specified compute group
the distance between atoms I,J is less than the maximum force cutoff
the type of the I atom matches itypeN (one or a range of types)
the type of the J atom matches jtypeN (one or a range of types) :ul
It is OK if a particular pairwise distance is included in more than
one individual histogram, due to the way the {itypeN} and {jtypeN}
arguments are specified.
The g(r) value for a bin is calculated from the histogram count by
scaling it by the idealized number of how many counts there would be
if atoms of type {jtypeN} were uniformly distributed. Thus it
involves the count of {itypeN} atoms, the count of {jtypeN} atoms, the
volume of the entire simulation box, and the volume of the bin's thin
shell in 3d (or the area of the bin's thin ring in 2d).
A coordination number coord(r) is also calculated, which is the sum of
g(r) values for all bins up to and including the current bin.
The simplest way to output the results of the compute rdf calculation
to a file is to use the "fix ave/time"_fix_ave_time.html command, for
example:
compute myRDF all rdf 50
fix 1 all ave/time 100 1 100 c_myRDF file tmp.rdf mode vector :pre
[Output info:]
This compute calculates a global array with the number of rows =
{Nbins}, and the number of columns = 1 + 2*Npairs, where Npairs is the
number of I,J pairings specified. The first column has the bin
coordinate (center of the bin), Each successive set of 2 columns has
the g(r) and coord(r) values for a specific set of {itypeN} versus
{jtypeN} interactions, as described above. These values can be used
by any command that uses a global values from a compute as input. See
-"this section"_Section_howto.html#4_15 for an overview of LAMMPS
+"this section"_Section_howto.html#howto_15 for an overview of LAMMPS
output options.
The array values calculated by this compute are all "intensive".
The first column of array values will be in distance
"units"_units.html. The g(r) columns of array values are normalized
numbers >= 0.0. The coordination number columns of array values are
also numbers >= 0.0.
[Restrictions:]
The RDF is not computed for distances longer than the force cutoff,
since processors (in parallel) don't know about atom coordinates for
atoms further away than that distance. If you want an RDF for larger
distances, you'll need to post-process a dump file.
[Related commands:]
"fix ave/time"_fix_ave_time.html
[Default:] none
diff --git a/doc/compute_reduce.html b/doc/compute_reduce.html
index d0f6b2505..f5533307e 100644
--- a/doc/compute_reduce.html
+++ b/doc/compute_reduce.html
@@ -1,194 +1,194 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute reduce command
</H3>
<H3>compute reduce/region command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID style arg mode input1 input2 ... keyword args ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>style = <I>reduce</I> or <I>reduce/region</I>
<PRE> <I>reduce</I> arg = none
<I>reduce/region</I> arg = region-ID
region-ID = ID of region to use for choosing atoms
</PRE>
<LI>mode = <I>sum</I> or <I>min</I> or <I>max</I> or <I>ave</I>
<LI>one or more inputs can be listed
<LI>input = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[N], f_ID, f_ID[N], v_name
<PRE> x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component)
c_ID = per-atom or local vector calculated by a compute with ID
c_ID[I] = Ith column of per-atom or local array calculated by a compute with ID
f_ID = per-atom or local vector calculated by a fix with ID
f_ID[I] = Ith column of per-atom or local 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/args pairs may be appended
<LI>keyword = <I>replace</I>
<PRE> <I>replace</I> args = vec1 vec2
vec1 = reduced value from this input vector will be replaced
vec2 = replace it with vec1[N] where N is index of max/min value from vec2
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all reduce sum c_force
compute 1 all reduce/region subbox sum c_force
compute 2 all reduce min c_press<B>2</B> f_ave v_myKE
compute 3 fluid reduce max c_index<B>1</B> c_index<B>2</B> c_dist replace 1 3 replace 2 3
</PRE>
<P><B>Description:</B>
</P>
<P>Define a calculation that "reduces" one or more vector inputs into
scalar values, one per listed input. The inputs can be per-atom or
local quantities; they cannot be global quantities. Atom attributes
are per-atom quantities, <A HREF = "compute.html">computes</A> and <A HREF = "fix.html">fixes</A>
may generate any of the three kinds of quantities, and <A HREF = "variable.html">atom-style
variables</A> generate per-atom quantities. See the
<A HREF = "variable">variable</A> command and its special functions which can
perform the same operations as the compute reduce command on global
vectors.
</P>
<P>The reduction operation is specified by the <I>mode</I> setting. The <I>sum</I>
option adds the values in the vector into a global total. The <I>min</I>
or <I>max</I> options find the minimum or maximum value across all vector
values. The <I>ave</I> setting adds the vector values into a global total,
then divides by the number of values in the vector.
</P>
<P>Each listed input is operated on independently. For per-atom inputs,
the group specified with this command means only atoms within the
group contribute to the result. For per-atom inputs, if the compute
reduce/region command is used, the atoms must also currently be within
the region. Note that an input that produces per-atom quantities may
define its own group which affects the quantities it returns. For
example, if a compute is used as an input which generates a per-atom
vector, it will generate values of 0.0 for atoms that are not in the
group specified for that compute.
</P>
<P>Each listed input can be an atom attribute (position, velocity, force
component) or can be the result of a <A HREF = "compute.html">compute</A> or
<A HREF = "fix.html">fix</A> or the evaluation of an atom-style
<A HREF = "variable.html">variable</A>.
</P>
<P>The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are
self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the <A HREF = "compute_property_atom.html">compute
property/atom</A> command and then specifying
an input value from that compute.
</P>
<P>If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. Computes can generate
per-atom or local quantities. See the individual
<A HREF = "compute.html">compute</A> doc page for details. If no bracketed integer
is appended, the vector calculated by the compute is used. If a
bracketed interger is appended, the Ith column of the array calculated
by the compute is used. Users can also write code for their own
compute styles and <A HREF = "Section_modify.html">add them to LAMMPS</A>.
</P>
<P>If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. Fixes can generate per-atom
or local quantities. See the individual <A HREF = "fix.html">fix</A> doc page for
details. Note that some fixes only produce their values on certain
timesteps, which must be compatible with when compute reduce
references the values, else an error results. If no bracketed integer
is appended, the vector calculated by the fix is used. If a bracketed
integer is appended, the Ith column of the array calculated by the fix
is used. Users can also write code for their own fix style and <A HREF = "Section_modify.html">add
them to LAMMPS</A>.
</P>
<P>If a value begins with "v_", a variable name must follow which has
been previously defined in the input script. It must be an
<A HREF = "variable.html">atom-style variable</A>. Atom-style variables can
reference thermodynamic keywords and various per-atom attributes, or
invoke other computes, fixes, or variables when they are evaluated, so
this is a very general means of generating per-atom quantities to
reduce.
</P>
<HR>
<P>If the <I>replace</I> keyword is used, two indices <I>vec1</I> and <I>vec2</I> are
specified, where each index ranges from 1 to the # of input values.
The replace keyword can only be used if the <I>mode</I> is <I>min</I> or <I>max</I>.
It works as follows. A min/max is computed as usual on the <I>vec2</I>
input vector. The index N of that value within <I>vec2</I> is also stored.
Then, instead of performing a min/max on the <I>vec1</I> input vector, the
stored index is used to select the Nth element of the <I>vec1</I> vector.
</P>
<P>Thus, for example, if you wish to use this compute to find the bond
with maximum stretch, you can do it as follows:
</P>
<PRE>compute 1 all property/local batom1 batom2
compute 2 all bond/local dist
compute 3 all reduce max c_1[1] c_1[2] c_2 replace 1 3 replace 2 3
thermo_style custom step temp c_3[1] c_3[2] c_3[3]
</PRE>
<P>The first two input values in the compute reduce command are vectors
with the IDs of the 2 atoms in each bond, using the <A HREF = "compute_property_local.html">compute
property/local</A> command. The last input
value is bond distance, using the <A HREF = "compute_bond_local.html">compute
bond/local</A> command. Instead of taking the
max of the two atom ID vectors, which does not yield useful
information in this context, the <I>replace</I> keywords will extract the
atom IDs for the two atoms in the bond of maximum stretch. These atom
IDs and the bond stretch will be printed with thermodynamic output.
</P>
<HR>
<P>If a single input is specified this compute produces a global scalar
value. If multiple inputs are specified, this compute produces a
global vector of values, the length of which is equal to the number of
inputs specified.
</P>
<P>As discussed below, for <I>sum</I> mode, the value(s) produced by this
compute are all "extensive", meaning their value scales linearly with
the number of atoms involved. If normalized values are desired, this
compute can be accessed by the <A HREF = "thermo_style.html">thermo_style custom</A>
command with <A HREF = "thermo_modify.html">thermo_modify norm yes</A> set as an
option. Or it can be accessed by a <A HREF = "variable.html">variable</A> that
divides by the appropriate atom count.
</P>
<HR>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar if a single input value is
specified or a global vector of length N where N is the number of
inputs, and which can be accessed by indices 1 to N. 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#4_15">this section</A> for an
-overview of LAMMPS output options.
+compute as input. See <A HREF = "Section_howto.html#howto_15">this section</A> for
+an overview of LAMMPS output options.
</P>
<P>All the scalar or vector values calculated by this compute are
"intensive", except when the <I>sum</I> mode is used on per-atom or local
vectors, in which case the calculated values are "extensive".
</P>
<P>The scalar or vector values will be in whatever <A HREF = "units.html">units</A> the
quantities being reduced are in.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute.html">compute</A>, <A HREF = "fix.html">fix</A>, <A HREF = "variable.html">variable</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_reduce.txt b/doc/compute_reduce.txt
index 043e79fd5..135f83eef 100644
--- a/doc/compute_reduce.txt
+++ b/doc/compute_reduce.txt
@@ -1,179 +1,179 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute reduce command :h3
compute reduce/region command :h3
[Syntax:]
compute ID group-ID style arg mode input1 input2 ... keyword args ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
style = {reduce} or {reduce/region} :l
{reduce} arg = none
{reduce/region} arg = region-ID
region-ID = ID of region to use for choosing atoms :pre
mode = {sum} or {min} or {max} or {ave} :l
one or more inputs can be listed :l
input = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l
x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component)
c_ID = per-atom or local vector calculated by a compute with ID
c_ID\[I\] = Ith column of per-atom or local array calculated by a compute with ID
f_ID = per-atom or local vector calculated by a fix with ID
f_ID\[I\] = Ith column of per-atom or local array calculated by a fix with ID
v_name = per-atom vector calculated by an atom-style variable with name :pre
zero or more keyword/args pairs may be appended :l
keyword = {replace} :l
{replace} args = vec1 vec2
vec1 = reduced value from this input vector will be replaced
vec2 = replace it with vec1\[N\] where N is index of max/min value from vec2 :pre
:ule
[Examples:]
compute 1 all reduce sum c_force
compute 1 all reduce/region subbox sum c_force
compute 2 all reduce min c_press[2] f_ave v_myKE
compute 3 fluid reduce max c_index[1] c_index[2] c_dist replace 1 3 replace 2 3 :pre
[Description:]
Define a calculation that "reduces" one or more vector inputs into
scalar values, one per listed input. The inputs can be per-atom or
local quantities; they cannot be global quantities. Atom attributes
are per-atom quantities, "computes"_compute.html and "fixes"_fix.html
may generate any of the three kinds of quantities, and "atom-style
variables"_variable.html generate per-atom quantities. See the
"variable"_variable command and its special functions which can
perform the same operations as the compute reduce command on global
vectors.
The reduction operation is specified by the {mode} setting. The {sum}
option adds the values in the vector into a global total. The {min}
or {max} options find the minimum or maximum value across all vector
values. The {ave} setting adds the vector values into a global total,
then divides by the number of values in the vector.
Each listed input is operated on independently. For per-atom inputs,
the group specified with this command means only atoms within the
group contribute to the result. For per-atom inputs, if the compute
reduce/region command is used, the atoms must also currently be within
the region. Note that an input that produces per-atom quantities may
define its own group which affects the quantities it returns. For
example, if a compute is used as an input which generates a per-atom
vector, it will generate values of 0.0 for atoms that are not in the
group specified for that compute.
Each listed input can be an atom attribute (position, velocity, force
component) or can be the result of a "compute"_compute.html or
"fix"_fix.html or the evaluation of an atom-style
"variable"_variable.html.
The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are
self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the "compute
property/atom"_compute_property_atom.html command and then specifying
an input value from that compute.
If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. Computes can generate
per-atom or local quantities. See the individual
"compute"_compute.html doc page for details. If no bracketed integer
is appended, the vector calculated by the compute is used. If a
bracketed interger is appended, the Ith column of the array calculated
by the compute is used. Users can also write code for their own
compute styles and "add them to LAMMPS"_Section_modify.html.
If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. Fixes can generate per-atom
or local quantities. See the individual "fix"_fix.html doc page for
details. Note that some fixes only produce their values on certain
timesteps, which must be compatible with when compute reduce
references the values, else an error results. If no bracketed integer
is appended, the vector calculated by the fix is used. If a bracketed
integer is appended, the Ith column of the array calculated by the fix
is used. Users can also write code for their own fix style and "add
them to LAMMPS"_Section_modify.html.
If a value begins with "v_", a variable name must follow which has
been previously defined in the input script. It must be an
"atom-style variable"_variable.html. Atom-style variables can
reference thermodynamic keywords and various per-atom attributes, or
invoke other computes, fixes, or variables when they are evaluated, so
this is a very general means of generating per-atom quantities to
reduce.
:line
If the {replace} keyword is used, two indices {vec1} and {vec2} are
specified, where each index ranges from 1 to the # of input values.
The replace keyword can only be used if the {mode} is {min} or {max}.
It works as follows. A min/max is computed as usual on the {vec2}
input vector. The index N of that value within {vec2} is also stored.
Then, instead of performing a min/max on the {vec1} input vector, the
stored index is used to select the Nth element of the {vec1} vector.
Thus, for example, if you wish to use this compute to find the bond
with maximum stretch, you can do it as follows:
compute 1 all property/local batom1 batom2
compute 2 all bond/local dist
compute 3 all reduce max c_1\[1\] c_1\[2\] c_2 replace 1 3 replace 2 3
thermo_style custom step temp c_3\[1\] c_3\[2\] c_3\[3\] :pre
The first two input values in the compute reduce command are vectors
with the IDs of the 2 atoms in each bond, using the "compute
property/local"_compute_property_local.html command. The last input
value is bond distance, using the "compute
bond/local"_compute_bond_local.html command. Instead of taking the
max of the two atom ID vectors, which does not yield useful
information in this context, the {replace} keywords will extract the
atom IDs for the two atoms in the bond of maximum stretch. These atom
IDs and the bond stretch will be printed with thermodynamic output.
:line
If a single input is specified this compute produces a global scalar
value. If multiple inputs are specified, this compute produces a
global vector of values, the length of which is equal to the number of
inputs specified.
As discussed below, for {sum} mode, the value(s) produced by this
compute are all "extensive", meaning their value scales linearly with
the number of atoms involved. If normalized values are desired, this
compute can be accessed by the "thermo_style custom"_thermo_style.html
command with "thermo_modify norm yes"_thermo_modify.html set as an
option. Or it can be accessed by a "variable"_variable.html that
divides by the appropriate atom count.
:line
[Output info:]
This compute calculates a global scalar if a single input value is
specified or a global vector of length N where N is the number of
inputs, and which can be accessed by indices 1 to N. These values can
be used by any command that uses global scalar or vector values from a
-compute as input. See "this section"_Section_howto.html#4_15 for an
-overview of LAMMPS output options.
+compute as input. See "this section"_Section_howto.html#howto_15 for
+an overview of LAMMPS output options.
All the scalar or vector values calculated by this compute are
"intensive", except when the {sum} mode is used on per-atom or local
vectors, in which case the calculated values are "extensive".
The scalar or vector values will be in whatever "units"_units.html the
quantities being reduced are in.
[Restrictions:] none
[Related commands:]
"compute"_compute.html, "fix"_fix.html, "variable"_variable.html
[Default:] none
diff --git a/doc/compute_slice.html b/doc/compute_slice.html
index 0519c5be1..a48710c24 100644
--- a/doc/compute_slice.html
+++ b/doc/compute_slice.html
@@ -1,124 +1,124 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute slice command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID slice Nstart Nstop Nskip input1 input2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>slice = style name of this compute command
<LI>Nstart = starting index within input vector(s)
<LI>Nstop = stopping index within input vector(s)
<LI>Nskip = extract every Nskip elements from input vector(s)
<LI>input = c_ID, c_ID[N], f_ID, f_ID[N]
<PRE> c_ID = global vector calculated by a compute with ID
c_ID[I] = Ith column of global array calculated by a compute with ID
f_ID = global vector calculated by a fix with ID
f_ID[I] = Ith column of global array calculated by a fix with ID
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all slice 1 100 10 c_msdmol[4]
compute 1 all slice 301 400 1 c_msdmol[4]
</PRE>
<P><B>Description:</B>
</P>
<P>Define a calculation that "slices" one or more vector inputs into
smaller vectors, one per listed input. The inputs can be global
quantities; they cannot be per-atom or local quantities.
<A HREF = "compute.html">Computes</A> and <A HREF = "fix.html">fixes</A> may generate any of the
three kinds of quantities. <A HREF = "variable.html">Variables</A> do not generate
global vectors. The group specified with this command is ignored.
</P>
<P>The values extracted from the input vector(s) are determined by the
<I>Nstart</I>, <I>Nstop</I>, and <I>Nskip</I> parameters. The elements of an input
vector of length N are indexed from 1 to N. Starting at element
<I>Nstart</I>, every Mth element is extracted, where M = <I>Nskip</I>, until
element <I>Nstop</I> is reached. The extracted quantities are stored as a
vector, which is typically shorter than the input vector.
</P>
<P>Each listed input is operated on independently to produce one output
vector. Each listed input must be a global vector or column of a
global array calculated by another <A HREF = "compute.html">compute</A> or
<A HREF = "fix.html">fix</A>.
</P>
<P>If an input value begins with "c_", a compute ID must follow which has
been previously defined in the input script and which generates a
global vector or array. See the individual <A HREF = "compute.html">compute</A> doc
page for details. If no bracketed integer is appended, the vector
calculated by the compute is used. If a bracketed interger is
appended, the Ith column of the array calculated by the compute is
used. Users can also write code for their own compute styles and <A HREF = "Section_modify.html">add
them to LAMMPS</A>.
</P>
<P>If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script and which generates a global
vector or array. See the individual <A HREF = "fix.html">fix</A> doc page for
details. Note that some fixes only produce their values on certain
timesteps, which must be compatible with when compute slice references
the values, else an error results. If no bracketed integer is
appended, the vector calculated by the fix is used. If a bracketed
integer is appended, the Ith column of the array calculated by the fix
is used. Users can also write code for their own fix style and <A HREF = "Section_modify.html">add
them to LAMMPS</A>.
</P>
<P>If a single input is specified this compute produces a global vector,
even if the length of the vector is 1. If multiple inputs are
specified, then a global array of values is produced, with the number
of columns equal to the number of inputs specified.
</P>
<HR>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global vector if a single input value is
specified or a global array with N columns where N is the number of
inputs. The length of the vector or the number of rows in the array
is equal to the number of values extracted from each input vector.
These values can be used by any command that uses global vector or
-array values from a compute as input. See <A HREF = "Section_howto.html#4_15">this
+array 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 vector or array values calculated by this compute are simply
copies of values generated by computes or fixes that are input vectors
to this compute. If there is a single input vector of intensive
and/or extensive values, then each value in the vector of values
calculated by this compute will be "intensive" or "extensive",
depending on the corresponding input value. If there are multiple
input vectors, and all the values in them are intensive, then the
array values calculated by this compute are "intensive". If there are
multiple input vectors, and any value in them is extensive, then the
array values calculated by this compute are "extensive".
</P>
<P>The vector or array values will be in whatever <A HREF = "units.html">units</A> the
input quantities are in.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute.html">compute</A>, <A HREF = "fix.html">fix</A>, <A HREF = "compute_reduce.html">compute
reduce</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_slice.txt b/doc/compute_slice.txt
index 14e5e42f8..fea181dd2 100644
--- a/doc/compute_slice.txt
+++ b/doc/compute_slice.txt
@@ -1,112 +1,112 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute slice command :h3
[Syntax:]
compute ID group-ID slice Nstart Nstop Nskip input1 input2 ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
slice = style name of this compute command :l
Nstart = starting index within input vector(s) :l
Nstop = stopping index within input vector(s) :l
Nskip = extract every Nskip elements from input vector(s) :l
input = c_ID, c_ID\[N\], f_ID, f_ID\[N\] :l
c_ID = global vector calculated by a compute with ID
c_ID\[I\] = Ith column of global array calculated by a compute with ID
f_ID = global vector calculated by a fix with ID
f_ID\[I\] = Ith column of global array calculated by a fix with ID :pre
:ule
[Examples:]
compute 1 all slice 1 100 10 c_msdmol\[4\]
compute 1 all slice 301 400 1 c_msdmol\[4\] :pre
[Description:]
Define a calculation that "slices" one or more vector inputs into
smaller vectors, one per listed input. The inputs can be global
quantities; they cannot be per-atom or local quantities.
"Computes"_compute.html and "fixes"_fix.html may generate any of the
three kinds of quantities. "Variables"_variable.html do not generate
global vectors. The group specified with this command is ignored.
The values extracted from the input vector(s) are determined by the
{Nstart}, {Nstop}, and {Nskip} parameters. The elements of an input
vector of length N are indexed from 1 to N. Starting at element
{Nstart}, every Mth element is extracted, where M = {Nskip}, until
element {Nstop} is reached. The extracted quantities are stored as a
vector, which is typically shorter than the input vector.
Each listed input is operated on independently to produce one output
vector. Each listed input must be a global vector or column of a
global array calculated by another "compute"_compute.html or
"fix"_fix.html.
If an input value begins with "c_", a compute ID must follow which has
been previously defined in the input script and which generates a
global vector or array. See the individual "compute"_compute.html doc
page for details. If no bracketed integer is appended, the vector
calculated by the compute is used. If a bracketed interger is
appended, the Ith column of the array calculated by the compute is
used. Users can also write code for their own compute styles and "add
them to LAMMPS"_Section_modify.html.
If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script and which generates a global
vector or array. See the individual "fix"_fix.html doc page for
details. Note that some fixes only produce their values on certain
timesteps, which must be compatible with when compute slice references
the values, else an error results. If no bracketed integer is
appended, the vector calculated by the fix is used. If a bracketed
integer is appended, the Ith column of the array calculated by the fix
is used. Users can also write code for their own fix style and "add
them to LAMMPS"_Section_modify.html.
If a single input is specified this compute produces a global vector,
even if the length of the vector is 1. If multiple inputs are
specified, then a global array of values is produced, with the number
of columns equal to the number of inputs specified.
:line
[Output info:]
This compute calculates a global vector if a single input value is
specified or a global array with N columns where N is the number of
inputs. The length of the vector or the number of rows in the array
is equal to the number of values extracted from each input vector.
These values can be used by any command that uses global vector or
array values from a compute as input. See "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The vector or array values calculated by this compute are simply
copies of values generated by computes or fixes that are input vectors
to this compute. If there is a single input vector of intensive
and/or extensive values, then each value in the vector of values
calculated by this compute will be "intensive" or "extensive",
depending on the corresponding input value. If there are multiple
input vectors, and all the values in them are intensive, then the
array values calculated by this compute are "intensive". If there are
multiple input vectors, and any value in them is extensive, then the
array values calculated by this compute are "extensive".
The vector or array values will be in whatever "units"_units.html the
input quantities are in.
[Restrictions:] none
[Related commands:]
"compute"_compute.html, "fix"_fix.html, "compute
reduce"_compute_reduce.html
[Default:] none
diff --git a/doc/compute_stress_atom.html b/doc/compute_stress_atom.html
index c85d572fc..f39d75300 100644
--- a/doc/compute_stress_atom.html
+++ b/doc/compute_stress_atom.html
@@ -1,119 +1,119 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute stress/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID stress/atom 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>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>fix</I> or <I>virial</I>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 mobile stress/atom
compute 1 all stress/atom 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>. 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.
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>The <A HREF = "dihedral_charmm.html">dihedral_style charmm</A> style calculates
pairwise interactions between 1-4 atoms. The virial contribution of
these terms is included in the pair virial, not the dihedral virial.
</P>
<P>Note that as defined in the formula, per-atom stress is the negative
of the per-atom pressure tensor. It is also really a stress*volume
formulation, meaning the computed quantity is in units of
pressure*volume. It would need to be divided by a per-atom volume to
have units of stress (pressure), but an individual atom's volume is
not well defined or easy to compute in a deformed solid or a liquid.
Thus, if the diagonal components of the per-atom stress tensor are
summed for all atoms in the system and the sum is divided by dV, where
d = dimension and V is the volume of the system, the result should be
-P, where P is the total pressure of the system.
</P>
<P>These lines in an input script for a 3d system should yield that
result. I.e. the last 2 columns of thermo output will be the same:
</P>
<PRE>compute peratom all stress/atom
compute p all reduce sum c_peratom[1] c_peratom[2] c_peratom[3]
variable press equal -(c_p[1]+c_p[2]+c_p[3])/(3*vol)
thermo_style custom step temp etotal press v_press
</PRE>
<P>IMPORTANT NOTE: The per-atom stress does NOT include contributions due
to long-range Coulombic interactions (via the
<A HREF = "kspace_style.html">kspace_style</A> command). It's not clear this
contribution can easily be computed.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a per-atom array with 6 columns, which can be
accessed by indices 1-6 by any command that uses per-atom values from
-a compute as input. See <A HREF = "Section_howto.html#4_15">this section</A> for an
-overview of LAMMPS output options.
+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 per-atom array values will be in pressure*volume
<A HREF = "units.html">units</A> as discussed above.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_pe.html">compute pe</A>, <A HREF = "compute_pressure.html">compute pressure</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_stress_atom.txt b/doc/compute_stress_atom.txt
index d05533484..f8d073397 100644
--- a/doc/compute_stress_atom.txt
+++ b/doc/compute_stress_atom.txt
@@ -1,114 +1,114 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute stress/atom command :h3
[Syntax:]
compute ID group-ID stress/atom keyword ... :pre
ID, group-ID are documented in "compute"_compute.html command
stress/atom = style name of this compute command
zero or more keywords may be appended
keyword = {ke} or {pair} or {bond} or {angle} or {dihedral} or {improper} or {fix} or {virial} :ul
[Examples:]
compute 1 mobile stress/atom
compute 1 all stress/atom pair bond :pre
[Description:]
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 "compute
pressure"_compute_pressure.html command if you want the stress tensor
(pressure) of the entire system.
The stress tensor for atom {I} is given by the following formula,
where {a} and {b} take on values x,y,z to generate the 6 components of
the symmetric tensor:
:c,image(Eqs/stress_tensor.jpg)
The first term is a kinetic energy contribution for atom {I}. The
second term is a pairwise energy contribution where {n} loops over the
{Np} neighbors of atom {I}, {r1} and {r2} are the positions of the 2
atoms in the pairwise interaction, and {F1} and {F2} are the forces on
the 2 atoms resulting from the pairwise interaction. The third term
is a bond contribution of similar form for the {Nb} bonds which atom
{I} is part of. There are similar terms for the {Na} angle, {Nd}
dihedral, and {Ni} improper interactions atom {I} is part of.
Finally, there is a term for the {Nf} "fixes"_fix.html that apply
internal constraint forces to atom {I}. Currently, only the "fix
shake"_fix_shake.html and "fix rigid"_fix_rigid.html commands
contribute to this term.
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 "fix shake"_fix_shake.html
command.
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
{virial} keyword means include all terms except the kinetic energy
{ke}.
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.
The "dihedral_style charmm"_dihedral_charmm.html style calculates
pairwise interactions between 1-4 atoms. The virial contribution of
these terms is included in the pair virial, not the dihedral virial.
Note that as defined in the formula, per-atom stress is the negative
of the per-atom pressure tensor. It is also really a stress*volume
formulation, meaning the computed quantity is in units of
pressure*volume. It would need to be divided by a per-atom volume to
have units of stress (pressure), but an individual atom's volume is
not well defined or easy to compute in a deformed solid or a liquid.
Thus, if the diagonal components of the per-atom stress tensor are
summed for all atoms in the system and the sum is divided by dV, where
d = dimension and V is the volume of the system, the result should be
-P, where P is the total pressure of the system.
These lines in an input script for a 3d system should yield that
result. I.e. the last 2 columns of thermo output will be the same:
compute peratom all stress/atom
compute p all reduce sum c_peratom\[1\] c_peratom\[2\] c_peratom\[3\]
variable press equal -(c_p\[1\]+c_p\[2\]+c_p\[3\])/(3*vol)
thermo_style custom step temp etotal press v_press :pre
IMPORTANT NOTE: The per-atom stress does NOT include contributions due
to long-range Coulombic interactions (via the
"kspace_style"_kspace_style.html command). It's not clear this
contribution can easily be computed.
[Output info:]
This compute calculates a per-atom array with 6 columns, which can be
accessed by indices 1-6 by any command that uses per-atom values from
-a compute as input. See "this section"_Section_howto.html#4_15 for an
-overview of LAMMPS output options.
+a compute as input. See "this section"_Section_howto.html#howto_15
+for an overview of LAMMPS output options.
The per-atom array values will be in pressure*volume
"units"_units.html as discussed above.
[Restrictions:] none
[Related commands:]
"compute pe"_compute_pe.html, "compute pressure"_compute_pressure.html
[Default:] none
diff --git a/doc/compute_temp.html b/doc/compute_temp.html
index f5ddf4e3d..d93a945e1 100644
--- a/doc/compute_temp.html
+++ b/doc/compute_temp.html
@@ -1,117 +1,117 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp command
</H3>
<H3>compute temp/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all temp
compute myTemp mobile temp
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
atoms. A compute of this style can be used by any command that
computes a temperature, e.g. <A HREF = "thermo_modify.html">thermo_modify</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_nh.html">fix npt</A>, etc.
</P>
<P>The temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2),
dim = 2 or 3 = dimensionality of the simulation, N = number of atoms
in the group, k = Boltzmann constant, and T = temperature.
</P>
<P>A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
</P>
<P>The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the <I>dynamic</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command if this is not the case.
</P>
<P>This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as <A HREF = "fix_shake.html">fix shake</A> and
<A HREF = "fix_rigid.html">fix rigid</A>. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
<I>extra</I> option of the <A HREF = "compute_modify.html">compute_modify</A> command.
</P>
<P>A compute of this style with the ID of "thermo_temp" is created when
LAMMPS starts up, as if this command were in the input script:
</P>
<PRE>compute thermo_temp all temp
</PRE>
<P>See the "thermo_style" command for more details.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</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 temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp_partial.html">compute temp/partial</A>, <A HREF = "compute_temp_region.html">compute
temp/region</A>, <A HREF = "compute_pressure.html">compute
pressure</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_temp.txt b/doc/compute_temp.txt
index 1898016f0..3ead16aca 100644
--- a/doc/compute_temp.txt
+++ b/doc/compute_temp.txt
@@ -1,111 +1,111 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp command :h3
compute temp/cuda command :h3
[Syntax:]
compute ID group-ID temp :pre
ID, group-ID are documented in "compute"_compute.html command
temp = style name of this compute command :ul
[Examples:]
compute 1 all temp
compute myTemp mobile temp :pre
[Description:]
Define a computation that calculates the temperature of a group of
atoms. A compute of this style can be used by any command that
computes a temperature, e.g. "thermo_modify"_thermo_modify.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix npt"_fix_nh.html, etc.
The temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2),
dim = 2 or 3 = dimensionality of the simulation, N = number of atoms
in the group, k = Boltzmann constant, and T = temperature.
A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the {dynamic} option of the
"compute_modify"_compute_modify.html command if this is not the case.
This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as "fix shake"_fix_shake.html and
"fix rigid"_fix_rigid.html. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
{extra} option of the "compute_modify"_compute_modify.html command.
A compute of this style with the ID of "thermo_temp" is created when
LAMMPS starts up, as if this command were in the input script:
compute thermo_temp all temp :pre
See the "thermo_style" command for more details.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute temp/partial"_compute_temp_partial.html, "compute
temp/region"_compute_temp_region.html, "compute
pressure"_compute_pressure.html
[Default:] none
diff --git a/doc/compute_temp_asphere.html b/doc/compute_temp_asphere.html
index daaad528a..64815209b 100644
--- a/doc/compute_temp_asphere.html
+++ b/doc/compute_temp_asphere.html
@@ -1,158 +1,158 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/asphere command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/asphere keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/asphere = style name of this compute command
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>bias</I> or <I>dof</I>
<PRE> <I>bias</I> value = bias-ID<I>uniform</I> or <I>gaussian</I>
bias-ID = ID of a temperature compute that removes a velocity bias
<I>dof</I> value = <I>all</I> or <I>rotate</I>
all = compute temperature of translational and rotational degrees of freedom
rotate = compute temperature of just rotational degrees of freedom
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all temp/asphere
compute myTemp mobile temp/asphere bias tempCOM
compute myTemp mobile temp/asphere dof rotate
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
aspherical particles, including a contribution from both their
translational and rotational kinetic energy. This differs from the
usual <A HREF = "compute_temp.html">compute temp</A> command, which assumes point
particles with only translational kinetic energy.
</P>
<P>Only finite-size particles (aspherical or spherical) can be included
in the group. For 3d finite-size particles, each has 6 degrees of
freedom (3 translational, 3 rotational). For 2d finite-size
particles, each has 3 degrees of freedom (2 translational, 1
rotational).
</P>
<P>IMPORTANT NOTE: This choice for degrees of freedom (dof) assumes that
all finite-size aspherical or spherical particles in your model will
freely rotate, sampling all their rotational dof. It is possible to
use a combination of interaction potentials and fixes that induce no
torque or otherwise constrain some of all of your particles so that
this is not the case. Then there are less dof and you should use the
<A HREF = "compute_modify.html">compute_modify extra</A> command to adjust the dof
accordingly.
</P>
<P>For example, an aspherical particle with all three of its shape
parameters the same is a sphere. If it does not rotate, then it
should have 3 dof instead of 6 in 3d (or 2 instead of 3 in 2d). A
uniaxial aspherical particle has two of its three shape parameters the
same. If it does not rotate around the axis perpendicular to its
circular cross section, then it should have 5 dof instead of 6 in 3d.
</P>
<P>The translational kinetic energy is computed the same as is described
by the <A HREF = "compute_temp.html">compute temp</A> command. The rotational
kinetic energy is computed as 1/2 I w^2, where I is the inertia tensor
for the aspherical particle and w is its angular velocity, which is
computed from its angular momentum.
</P>
<P>IMPORTANT NOTE: For <A HREF = "dimension.html">2d models</A>, particles are treated
as ellipsoids, not ellipses, meaning their moments of inertia will be
the same as in 3d.
</P>
<P>A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute. The formula for the components of the
tensor is the same as the above formula, except that v^2 and w^2 are
replaced by vx*vy and wx*wy for the xy component, and the appropriate
elements of the inertia tensor are used. The 6 components of the
vector are ordered xx, yy, zz, xy, xz, yz.
</P>
<P>The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the <I>dynamic</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command if this is not the case.
</P>
<P>This compute subtracts out translational degrees-of-freedom due to
fixes that constrain molecular motion, such as <A HREF = "fix_shake.html">fix
shake</A> and <A HREF = "fix_rigid.html">fix rigid</A>. This means the
temperature of groups of atoms that include these constraints will be
computed correctly. If needed, the subtracted degrees-of-freedom can
be altered using the <I>extra</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</P>
<HR>
<P>The keyword/value option pairs are used in the following ways.
</P>
<P>For the <I>bias</I> keyword, <I>bias-ID</I> refers to the ID of a temperature
compute that removes a "bias" velocity from each atom. This allows
compute temp/sphere to compute its thermal temperature after the
translational kinetic energy components have been altered in a
prescribed way, e.g. to remove a velocity profile. Thermostats that
use this compute will work with this bias term. See the doc pages for
individual computes that calculate a temperature and the doc pages for
fixes that perform thermostatting for more details.
</P>
<P>For the <I>dof</I> keyword, a setting of <I>all</I> calculates a temperature
that includes both translational and rotational degrees of freedom. A
setting of <I>rotate</I> calculates a temperature that includes only
rotational degrees of freedom.
</P>
<HR>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector values are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This compute is part of the "asphere" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>This compute requires that atoms store angular momementum and a
quaternion as defined by the <A HREF = "atom_style.html">atom_style ellipsoid</A>
command.
</P>
<P>All particles in the group must be finite-size. They cannot be point
particles, but they can be aspherical or spherical as defined by their
shape attribute.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp.html">compute temp</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_temp_asphere.txt b/doc/compute_temp_asphere.txt
index cdd887098..3be406ffb 100755
--- a/doc/compute_temp_asphere.txt
+++ b/doc/compute_temp_asphere.txt
@@ -1,148 +1,148 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/asphere command :h3
[Syntax:]
compute ID group-ID temp/asphere keyword value ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
temp/asphere = style name of this compute command :l
zero or more keyword/value pairs may be appended :l
keyword = {bias} or {dof} :l
{bias} value = bias-ID{uniform} or {gaussian}
bias-ID = ID of a temperature compute that removes a velocity bias
{dof} value = {all} or {rotate}
all = compute temperature of translational and rotational degrees of freedom
rotate = compute temperature of just rotational degrees of freedom :pre
:ule
[Examples:]
compute 1 all temp/asphere
compute myTemp mobile temp/asphere bias tempCOM
compute myTemp mobile temp/asphere dof rotate :pre
[Description:]
Define a computation that calculates the temperature of a group of
aspherical particles, including a contribution from both their
translational and rotational kinetic energy. This differs from the
usual "compute temp"_compute_temp.html command, which assumes point
particles with only translational kinetic energy.
Only finite-size particles (aspherical or spherical) can be included
in the group. For 3d finite-size particles, each has 6 degrees of
freedom (3 translational, 3 rotational). For 2d finite-size
particles, each has 3 degrees of freedom (2 translational, 1
rotational).
IMPORTANT NOTE: This choice for degrees of freedom (dof) assumes that
all finite-size aspherical or spherical particles in your model will
freely rotate, sampling all their rotational dof. It is possible to
use a combination of interaction potentials and fixes that induce no
torque or otherwise constrain some of all of your particles so that
this is not the case. Then there are less dof and you should use the
"compute_modify extra"_compute_modify.html command to adjust the dof
accordingly.
For example, an aspherical particle with all three of its shape
parameters the same is a sphere. If it does not rotate, then it
should have 3 dof instead of 6 in 3d (or 2 instead of 3 in 2d). A
uniaxial aspherical particle has two of its three shape parameters the
same. If it does not rotate around the axis perpendicular to its
circular cross section, then it should have 5 dof instead of 6 in 3d.
The translational kinetic energy is computed the same as is described
by the "compute temp"_compute_temp.html command. The rotational
kinetic energy is computed as 1/2 I w^2, where I is the inertia tensor
for the aspherical particle and w is its angular velocity, which is
computed from its angular momentum.
IMPORTANT NOTE: For "2d models"_dimension.html, particles are treated
as ellipsoids, not ellipses, meaning their moments of inertia will be
the same as in 3d.
A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute. The formula for the components of the
tensor is the same as the above formula, except that v^2 and w^2 are
replaced by vx*vy and wx*wy for the xy component, and the appropriate
elements of the inertia tensor are used. The 6 components of the
vector are ordered xx, yy, zz, xy, xz, yz.
The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the {dynamic} option of the
"compute_modify"_compute_modify.html command if this is not the case.
This compute subtracts out translational degrees-of-freedom due to
fixes that constrain molecular motion, such as "fix
shake"_fix_shake.html and "fix rigid"_fix_rigid.html. This means the
temperature of groups of atoms that include these constraints will be
computed correctly. If needed, the subtracted degrees-of-freedom can
be altered using the {extra} option of the
"compute_modify"_compute_modify.html command.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
:line
The keyword/value option pairs are used in the following ways.
For the {bias} keyword, {bias-ID} refers to the ID of a temperature
compute that removes a "bias" velocity from each atom. This allows
compute temp/sphere to compute its thermal temperature after the
translational kinetic energy components have been altered in a
prescribed way, e.g. to remove a velocity profile. Thermostats that
use this compute will work with this bias term. See the doc pages for
individual computes that calculate a temperature and the doc pages for
fixes that perform thermostatting for more details.
For the {dof} keyword, a setting of {all} calculates a temperature
that includes both translational and rotational degrees of freedom. A
setting of {rotate} calculates a temperature that includes only
rotational degrees of freedom.
:line
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:]
This compute is part of the "asphere" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
This compute requires that atoms store angular momementum and a
quaternion as defined by the "atom_style ellipsoid"_atom_style.html
command.
All particles in the group must be finite-size. They cannot be point
particles, but they can be aspherical or spherical as defined by their
shape attribute.
[Related commands:]
"compute temp"_compute_temp.html
[Default:] none
diff --git a/doc/compute_temp_com.html b/doc/compute_temp_com.html
index d55c85a07..5635c606d 100644
--- a/doc/compute_temp_com.html
+++ b/doc/compute_temp_com.html
@@ -1,98 +1,98 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/com command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/com
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/com = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all temp/com
compute myTemp mobile temp/com
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
atoms, after subtracting out the center-of-mass velocity of the group.
This is useful if the group is expected to have a non-zero net
velocity for some reason. A compute of this style can be used by any
command that computes a temperature,
e.g. <A HREF = "thermo_modify.html">thermo_modify</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_nh.html">fix npt</A>, etc.
</P>
<P>After the center-of-mass velocity has been subtracted from each atom,
the temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2),
dim = 2 or 3 = dimensionality of the simulation, N = number of atoms
in the group, k = Boltzmann constant, and T = temperature.
</P>
<P>A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
</P>
<P>The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the <I>dynamic</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command if this is not the case.
</P>
<P>The removal of the center-of-mass velocity by this fix is essentially
computing the temperature after a "bias" has been removed from the
velocity of the atoms. If this compute is used with a fix command
that performs thermostatting then this bias will be subtracted from
each atom, thermostatting of the remaining thermal velocity will be
performed, and the bias will be added back in. Thermostatting fixes
that work in this way include <A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_temp_berendsen.html">fix
temp/berendsen</A>, and <A HREF = "fix_langevin.html">fix
langevin</A>.
</P>
<P>This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as <A HREF = "fix_shake.html">fix shake</A> and
<A HREF = "fix_rigid.html">fix rigid</A>. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
<I>extra</I> option of the <A HREF = "compute_modify.html">compute_modify</A> command.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector values are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp.html">compute temp</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_temp_com.txt b/doc/compute_temp_com.txt
index 80cc4ea73..c7cc5ec4e 100644
--- a/doc/compute_temp_com.txt
+++ b/doc/compute_temp_com.txt
@@ -1,93 +1,93 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/com command :h3
[Syntax:]
compute ID group-ID temp/com :pre
ID, group-ID are documented in "compute"_compute.html command
temp/com = style name of this compute command :ul
[Examples:]
compute 1 all temp/com
compute myTemp mobile temp/com :pre
[Description:]
Define a computation that calculates the temperature of a group of
atoms, after subtracting out the center-of-mass velocity of the group.
This is useful if the group is expected to have a non-zero net
velocity for some reason. A compute of this style can be used by any
command that computes a temperature,
e.g. "thermo_modify"_thermo_modify.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix npt"_fix_nh.html, etc.
After the center-of-mass velocity has been subtracted from each atom,
the temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2),
dim = 2 or 3 = dimensionality of the simulation, N = number of atoms
in the group, k = Boltzmann constant, and T = temperature.
A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the {dynamic} option of the
"compute_modify"_compute_modify.html command if this is not the case.
The removal of the center-of-mass velocity by this fix is essentially
computing the temperature after a "bias" has been removed from the
velocity of the atoms. If this compute is used with a fix command
that performs thermostatting then this bias will be subtracted from
each atom, thermostatting of the remaining thermal velocity will be
performed, and the bias will be added back in. Thermostatting fixes
that work in this way include "fix nvt"_fix_nh.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix
temp/berendsen"_fix_temp_berendsen.html, and "fix
langevin"_fix_langevin.html.
This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as "fix shake"_fix_shake.html and
"fix rigid"_fix_rigid.html. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
{extra} option of the "compute_modify"_compute_modify.html command.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute temp"_compute_temp.html
[Default:] none
diff --git a/doc/compute_temp_deform.html b/doc/compute_temp_deform.html
index 31ba8d677..def9a1218 100644
--- a/doc/compute_temp_deform.html
+++ b/doc/compute_temp_deform.html
@@ -1,124 +1,124 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/deform command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/deform
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/deform = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute myTemp all temp/deform
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
atoms, after subtracting out a streaming velocity induced by the
simulation box changing size and/or shape, for example in a
non-equilibrium MD (NEMD) simulation. The size/shape change is
induced by use of the <A HREF = "fix_deform.html">fix deform</A> command. A compute
of this style is created by the <A HREF = "fix_nvt_sllod.html">fix nvt/sllod</A>
command to compute the thermal temperature of atoms for thermostatting
purposes. A compute of this style can also be used by any command
that computes a temperature, e.g. <A HREF = "thermo_modify.html">thermo_modify</A>,
<A HREF = "fix_temp_rescale.html">fix temp/rescale</A>, <A HREF = "fix_nh.html">fix npt</A>, etc.
</P>
<P>The deformation fix changes the box size and/or shape over time, so
each atom in the simulation box can be thought of as having a
"streaming" velocity. For example, if the box is being sheared in x,
relative to y, then atoms at the bottom of the box (low y) have a
small x velocity, while atoms at the top of the box (hi y) have a
large x velocity. This position-dependent streaming velocity is
subtracted from each atom's actual velocity to yield a thermal
velocity which is used to compute the temperature.
</P>
<P>IMPORTANT NOTE: <A HREF = "fix_deform.html">Fix deform</A> has an option for
remapping either atom coordinates or velocities to the changing
simulation box. When using this compute in conjunction with a
deforming box, fix deform should NOT remap atom positions, but rather
should let atoms respond to the changing box by adjusting their own
velocities (or let <A HREF = "fix_deform.html">fix deform</A> remap the atom
velocities, see it's remap option). If fix deform does remap atom
positions, then they appear to move with the box but their velocity is
not changed, and thus they do NOT have the streaming velocity assumed
by this compute. LAMMPS will warn you if fix deform is defined and
its remap setting is not consistent with this compute.
</P>
<P>After the streaming velocity has been subtracted from each atom, the
temperature is calculated by the formula KE = dim/2 N k T, where KE =
total kinetic energy of the group of atoms (sum of 1/2 m v^2), dim = 2
or 3 = dimensionality of the simulation, N = number of atoms in the
group, k = Boltzmann constant, and T = temperature. Note that v in
the kinetic energy formula is the atom's thermal velocity.
</P>
<P>A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
</P>
<P>The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the <I>dynamic</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command if this is not the case.
</P>
<P>The removal of the box deformation velocity component by this fix is
essentially computing the temperature after a "bias" has been removed
from the velocity of the atoms. If this compute is used with a fix
command that performs thermostatting then this bias will be subtracted
from each atom, thermostatting of the remaining thermal velocity will
be performed, and the bias will be added back in. Thermostatting
fixes that work in this way include <A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_temp_berendsen.html">fix
temp/berendsen</A>, and <A HREF = "fix_langevin.html">fix
langevin</A>.
</P>
<P>This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as <A HREF = "fix_shake.html">fix shake</A> and
<A HREF = "fix_rigid.html">fix rigid</A>. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
<I>extra</I> option of the <A HREF = "compute_modify.html">compute_modify</A> command.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector values are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp_ramp.html">compute temp/ramp</A>, <A HREF = "compute_temp_profile.html">compute
temp/profile</A>, <A HREF = "fix_deform.html">fix deform</A>,
<A HREF = "fix_nvt_sllod.html">fix nvt/sllod</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_temp_deform.txt b/doc/compute_temp_deform.txt
index 26703f1d0..02b7ca3c2 100644
--- a/doc/compute_temp_deform.txt
+++ b/doc/compute_temp_deform.txt
@@ -1,119 +1,119 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/deform command :h3
[Syntax:]
compute ID group-ID temp/deform :pre
ID, group-ID are documented in "compute"_compute.html command
temp/deform = style name of this compute command :ul
[Examples:]
compute myTemp all temp/deform :pre
[Description:]
Define a computation that calculates the temperature of a group of
atoms, after subtracting out a streaming velocity induced by the
simulation box changing size and/or shape, for example in a
non-equilibrium MD (NEMD) simulation. The size/shape change is
induced by use of the "fix deform"_fix_deform.html command. A compute
of this style is created by the "fix nvt/sllod"_fix_nvt_sllod.html
command to compute the thermal temperature of atoms for thermostatting
purposes. A compute of this style can also be used by any command
that computes a temperature, e.g. "thermo_modify"_thermo_modify.html,
"fix temp/rescale"_fix_temp_rescale.html, "fix npt"_fix_nh.html, etc.
The deformation fix changes the box size and/or shape over time, so
each atom in the simulation box can be thought of as having a
"streaming" velocity. For example, if the box is being sheared in x,
relative to y, then atoms at the bottom of the box (low y) have a
small x velocity, while atoms at the top of the box (hi y) have a
large x velocity. This position-dependent streaming velocity is
subtracted from each atom's actual velocity to yield a thermal
velocity which is used to compute the temperature.
IMPORTANT NOTE: "Fix deform"_fix_deform.html has an option for
remapping either atom coordinates or velocities to the changing
simulation box. When using this compute in conjunction with a
deforming box, fix deform should NOT remap atom positions, but rather
should let atoms respond to the changing box by adjusting their own
velocities (or let "fix deform"_fix_deform.html remap the atom
velocities, see it's remap option). If fix deform does remap atom
positions, then they appear to move with the box but their velocity is
not changed, and thus they do NOT have the streaming velocity assumed
by this compute. LAMMPS will warn you if fix deform is defined and
its remap setting is not consistent with this compute.
After the streaming velocity has been subtracted from each atom, the
temperature is calculated by the formula KE = dim/2 N k T, where KE =
total kinetic energy of the group of atoms (sum of 1/2 m v^2), dim = 2
or 3 = dimensionality of the simulation, N = number of atoms in the
group, k = Boltzmann constant, and T = temperature. Note that v in
the kinetic energy formula is the atom's thermal velocity.
A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the {dynamic} option of the
"compute_modify"_compute_modify.html command if this is not the case.
The removal of the box deformation velocity component by this fix is
essentially computing the temperature after a "bias" has been removed
from the velocity of the atoms. If this compute is used with a fix
command that performs thermostatting then this bias will be subtracted
from each atom, thermostatting of the remaining thermal velocity will
be performed, and the bias will be added back in. Thermostatting
fixes that work in this way include "fix nvt"_fix_nh.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix
temp/berendsen"_fix_temp_berendsen.html, and "fix
langevin"_fix_langevin.html.
This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as "fix shake"_fix_shake.html and
"fix rigid"_fix_rigid.html. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
{extra} option of the "compute_modify"_compute_modify.html command.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute temp/ramp"_compute_temp_ramp.html, "compute
temp/profile"_compute_temp_profile.html, "fix deform"_fix_deform.html,
"fix nvt/sllod"_fix_nvt_sllod.html
[Default:] none
diff --git a/doc/compute_temp_deform_eff.html b/doc/compute_temp_deform_eff.html
index 90dcd7c76..d36649219 100644
--- a/doc/compute_temp_deform_eff.html
+++ b/doc/compute_temp_deform_eff.html
@@ -1,78 +1,78 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/deform/eff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/deform/eff
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/deform/eff = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute myTemp all temp/deform/eff
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
nuclei and electrons in the <A HREF = "pair_eff.html">electron force field</A>
model, after subtracting out a streaming velocity induced by the
simulation box changing size and/or shape, for example in a
non-equilibrium MD (NEMD) simulation. The size/shape change is
induced by use of the <A HREF = "fix_deform_eff.html">fix deform/eff</A> command. A
compute of this style is created by the <A HREF = "fix_nvt_sllod_eff.html">fix
nvt/sllod/eff</A> command to compute the thermal
temperature of atoms for thermostatting purposes. A compute of this
style can also be used by any command that computes a temperature,
e.g. <A HREF = "thermo_modify.html">thermo_modify</A>, <A HREF = "fix_nh.html">fix npt/eff</A>,
etc.
</P>
<P>The calculation performed by this compute is exactly like that
described by the <A HREF = "compute_temp_deform.html">compute temp/deform</A>
command, except that the formula for the temperature includes the
radial electron velocity contributions, as discussed by the <A HREF = "compute_temp_eff.html">compute
temp/eff</A> command. Note that only the
translational degrees of freedom for each nuclei or electron are
affected by the streaming velocity adjustment. The radial velocity
component of the electrons is not affected.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector values are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This compute 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#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp_ramp.html">compute temp/ramp</A>, <A HREF = "fix_deform_eff.html">fix
deform/eff</A>, <A HREF = "fix_nvt_sllod_eff.html">fix
nvt/sllod/eff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_temp_deform_eff.txt b/doc/compute_temp_deform_eff.txt
index 4ae48a79f..3a0497e5b 100644
--- a/doc/compute_temp_deform_eff.txt
+++ b/doc/compute_temp_deform_eff.txt
@@ -1,73 +1,73 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/deform/eff command :h3
[Syntax:]
compute ID group-ID temp/deform/eff :pre
ID, group-ID are documented in "compute"_compute.html command
temp/deform/eff = style name of this compute command :ul
[Examples:]
compute myTemp all temp/deform/eff :pre
[Description:]
Define a computation that calculates the temperature of a group of
nuclei and electrons in the "electron force field"_pair_eff.html
model, after subtracting out a streaming velocity induced by the
simulation box changing size and/or shape, for example in a
non-equilibrium MD (NEMD) simulation. The size/shape change is
induced by use of the "fix deform/eff"_fix_deform_eff.html command. A
compute of this style is created by the "fix
nvt/sllod/eff"_fix_nvt_sllod_eff.html command to compute the thermal
temperature of atoms for thermostatting purposes. A compute of this
style can also be used by any command that computes a temperature,
e.g. "thermo_modify"_thermo_modify.html, "fix npt/eff"_fix_nh.html,
etc.
The calculation performed by this compute is exactly like that
described by the "compute temp/deform"_compute_temp_deform.html
command, except that the formula for the temperature includes the
radial electron velocity contributions, as discussed by the "compute
temp/eff"_compute_temp_eff.html command. Note that only the
translational degrees of freedom for each nuclei or electron are
affected by the streaming velocity adjustment. The radial velocity
component of the electrons is not affected.
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:]
This compute is part of the "user-eff" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"compute temp/ramp"_compute_temp_ramp.html, "fix
deform/eff"_fix_deform_eff.html, "fix
nvt/sllod/eff"_fix_nvt_sllod_eff.html
[Default:] none
diff --git a/doc/compute_temp_eff.html b/doc/compute_temp_eff.html
index 466ed3bd4..bdb8a4ee7 100644
--- a/doc/compute_temp_eff.html
+++ b/doc/compute_temp_eff.html
@@ -1,100 +1,100 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/eff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/eff
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/eff = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all temp/eff
compute myTemp mobile temp/eff
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
nuclei and electrons in the <A HREF = "pair_eff.html">electron force field</A>
model. A compute of this style can be used by commands that compute a
temperature, e.g. <A HREF = "thermo_modify.html">thermo_modify</A>, <A HREF = "fix_npt_eff.html">fix
npt/eff</A>, etc.
</P>
<P>The temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2 for
nuclei and sum of 1/2 (m v^2 + 3/4 m s^2) for electrons, where s
includes the radial electron velocity contributions), dim = 2 or 3 =
dimensionality of the simulation, N = number of atoms (only total
number of nuclei in the eFF (see the <A HREF = "pair_style.html">pair_eff</A>
command) in the group, k = Boltzmann constant, and T = temperature.
This expression is summed over all nuclear and electronic degrees of
freedom, essentially by setting the kinetic contribution to the heat
capacity to 3/2k (where only nuclei contribute). This subtlety is
valid for temperatures well below the Fermi temperature, which for
densities two to five times the density of liquid H2 ranges from
86,000 to 170,000 K.
</P>
<P>IMPORTANT NOTE: For eFF models, in order to override the default
temperature reported by LAMMPS in the thermodynamic quantities
reported via the <A HREF = "thermo.html">thermo</A> command, the user should apply a
<A HREF = "thermo_modify.html">thermo_modify</A> command, as shown in the following
example:
</P>
<PRE>compute effTemp all temp/eff
thermo_style custom step etotal pe ke temp press
thermo_modify temp effTemp
</PRE>
<P>A 6-component kinetic energy tensor is also calculated by this compute
for use in the computation of a pressure tensor. The formula for the
components of the tensor is the same as the above formula, except that
v^2 is replaced by vx * vy for the xy component, etc. For the eFF,
again, the radial electronic velocities are also considered.
</P>
<P>The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the <I>dynamic</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command if this is not the case.
</P>
<P>This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as <A HREF = "fix_shake.html">fix shake</A> and
<A HREF = "fix_rigid.html">fix rigid</A>. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
<I>extra</I> option of the <A HREF = "compute_modify.html">compute_modify</A> command.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</P>
<P><B>Output info:</B>
</P>
<P>The scalar value calculated by this compute is "intensive", meaning it
is independent of the number of atoms in the simulation. The vector
values are "extensive", meaning they scale with the number of atoms in
the simulation.
</P>
<P><B>Restrictions:</B>
</P>
<P>This compute 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#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp_partial.html">compute temp/partial</A>, <A HREF = "compute_temp_region.html">compute
temp/region</A>, <A HREF = "compute_pressure.html">compute
pressure</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_temp_eff.txt b/doc/compute_temp_eff.txt
index cb9b274df..a83ee8b61 100644
--- a/doc/compute_temp_eff.txt
+++ b/doc/compute_temp_eff.txt
@@ -1,95 +1,95 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/eff command :h3
[Syntax:]
compute ID group-ID temp/eff :pre
ID, group-ID are documented in "compute"_compute.html command
temp/eff = style name of this compute command :ul
[Examples:]
compute 1 all temp/eff
compute myTemp mobile temp/eff :pre
[Description:]
Define a computation that calculates the temperature of a group of
nuclei and electrons in the "electron force field"_pair_eff.html
model. A compute of this style can be used by commands that compute a
temperature, e.g. "thermo_modify"_thermo_modify.html, "fix
npt/eff"_fix_npt_eff.html, etc.
The temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2 for
nuclei and sum of 1/2 (m v^2 + 3/4 m s^2) for electrons, where s
includes the radial electron velocity contributions), dim = 2 or 3 =
dimensionality of the simulation, N = number of atoms (only total
number of nuclei in the eFF (see the "pair_eff"_pair_style.html
command) in the group, k = Boltzmann constant, and T = temperature.
This expression is summed over all nuclear and electronic degrees of
freedom, essentially by setting the kinetic contribution to the heat
capacity to 3/2k (where only nuclei contribute). This subtlety is
valid for temperatures well below the Fermi temperature, which for
densities two to five times the density of liquid H2 ranges from
86,000 to 170,000 K.
IMPORTANT NOTE: For eFF models, in order to override the default
temperature reported by LAMMPS in the thermodynamic quantities
reported via the "thermo"_thermo.html command, the user should apply a
"thermo_modify"_thermo_modify.html command, as shown in the following
example:
compute effTemp all temp/eff
thermo_style custom step etotal pe ke temp press
thermo_modify temp effTemp :pre
A 6-component kinetic energy tensor is also calculated by this compute
for use in the computation of a pressure tensor. The formula for the
components of the tensor is the same as the above formula, except that
v^2 is replaced by vx * vy for the xy component, etc. For the eFF,
again, the radial electronic velocities are also considered.
The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the {dynamic} option of the
"compute_modify"_compute_modify.html command if this is not the case.
This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as "fix shake"_fix_shake.html and
"fix rigid"_fix_rigid.html. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
{extra} option of the "compute_modify"_compute_modify.html command.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
[Output info:]
The scalar value calculated by this compute is "intensive", meaning it
is independent of the number of atoms in the simulation. The vector
values are "extensive", meaning they scale with the number of atoms in
the simulation.
[Restrictions:]
This compute is part of the "user-eff" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"compute temp/partial"_compute_temp_partial.html, "compute
temp/region"_compute_temp_region.html, "compute
pressure"_compute_pressure.html
[Default:] none
diff --git a/doc/compute_temp_partial.html b/doc/compute_temp_partial.html
index 55c2a57bd..62529fcfb 100644
--- a/doc/compute_temp_partial.html
+++ b/doc/compute_temp_partial.html
@@ -1,125 +1,125 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/partial command
</H3>
<H3>compute temp/partial/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/partial xflag yflag zflag
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/partial = style name of this compute command
<LI>xflag,yflag,zflag = 0/1 for whether to exclude/include this dimension
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute newT flow temp/partial 1 1 0
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
atoms, after excluding one or more velocity components. A compute of
this style can be used by any command that computes a temperature,
e.g. <A HREF = "thermo_modify.html">thermo_modify</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_nh.html">fix npt</A>, etc.
</P>
<P>The temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2),
dim = dimensionality of the simulation, N = number of atoms in the
group, k = Boltzmann constant, and T = temperature. The calculation
of KE excludes the x, y, or z dimensions if xflag, yflag, or zflag =
0. The dim parameter is adjusted to give the correct number of
degrees of freedom.
</P>
<P>A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the calculation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
</P>
<P>The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the <I>dynamic</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command if this is not the case.
</P>
<P>The removal of velocity components by this fix is essentially
computing the temperature after a "bias" has been removed from the
velocity of the atoms. If this compute is used with a fix command
that performs thermostatting then this bias will be subtracted from
each atom, thermostatting of the remaining thermal velocity will be
performed, and the bias will be added back in. Thermostatting fixes
that work in this way include <A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_temp_berendsen.html">fix
temp/berendsen</A>, and <A HREF = "fix_langevin.html">fix
langevin</A>.
</P>
<P>This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as <A HREF = "fix_shake.html">fix shake</A> and
<A HREF = "fix_rigid.html">fix rigid</A>. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
<I>extra</I> option of the <A HREF = "compute_modify.html">compute_modify</A> command.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</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 temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector values are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp.html">compute temp</A>, <A HREF = "compute_temp_region.html">compute
temp/region</A>, <A HREF = "compute_pressure.html">compute
pressure</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_temp_partial.txt b/doc/compute_temp_partial.txt
index f4b01f03e..1d81bd29c 100644
--- a/doc/compute_temp_partial.txt
+++ b/doc/compute_temp_partial.txt
@@ -1,119 +1,119 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/partial command :h3
compute temp/partial/cuda command :h3
[Syntax:]
compute ID group-ID temp/partial xflag yflag zflag :pre
ID, group-ID are documented in "compute"_compute.html command
temp/partial = style name of this compute command
xflag,yflag,zflag = 0/1 for whether to exclude/include this dimension :ul
[Examples:]
compute newT flow temp/partial 1 1 0 :pre
[Description:]
Define a computation that calculates the temperature of a group of
atoms, after excluding one or more velocity components. A compute of
this style can be used by any command that computes a temperature,
e.g. "thermo_modify"_thermo_modify.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix npt"_fix_nh.html, etc.
The temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2),
dim = dimensionality of the simulation, N = number of atoms in the
group, k = Boltzmann constant, and T = temperature. The calculation
of KE excludes the x, y, or z dimensions if xflag, yflag, or zflag =
0. The dim parameter is adjusted to give the correct number of
degrees of freedom.
A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the calculation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the {dynamic} option of the
"compute_modify"_compute_modify.html command if this is not the case.
The removal of velocity components by this fix is essentially
computing the temperature after a "bias" has been removed from the
velocity of the atoms. If this compute is used with a fix command
that performs thermostatting then this bias will be subtracted from
each atom, thermostatting of the remaining thermal velocity will be
performed, and the bias will be added back in. Thermostatting fixes
that work in this way include "fix nvt"_fix_nh.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix
temp/berendsen"_fix_temp_berendsen.html, and "fix
langevin"_fix_langevin.html.
This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as "fix shake"_fix_shake.html and
"fix rigid"_fix_rigid.html. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
{extra} option of the "compute_modify"_compute_modify.html command.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute temp"_compute_temp.html, "compute
temp/region"_compute_temp_region.html, "compute
pressure"_compute_pressure.html
[Default:] none
diff --git a/doc/compute_temp_profile.html b/doc/compute_temp_profile.html
index 242674a00..52a9f67df 100644
--- a/doc/compute_temp_profile.html
+++ b/doc/compute_temp_profile.html
@@ -1,155 +1,155 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/profile command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/profile xflag yflag zflag binstyle args
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/profile = style name of this compute command
<LI>xflag,yflag,zflag = 0/1 for whether to exclude/include this dimension
<LI>binstyle = <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>xyz</I>
<PRE> <I>x</I> arg = Nx
<I>y</I> arg = Ny
<I>z</I> arg = Nz
<I>xy</I> args = Nx Ny
<I>yz</I> args = Ny Nz
<I>xz</I> args = Nx Nz
<I>xyz</I> args = Nx Ny Nz
Nx,Ny,Nz = number of velocity bins in x,y,z dimensions
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute myTemp flow temp/profile 1 1 1 x 10
compute myTemp flow temp/profile 0 1 1 xyz 20 20 20
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
atoms, after subtracting out a spatially-averaged velocity field,
before computing the kinetic energy. This can be useful for
thermostatting a collection of atoms undergoing a complex flow,
e.g. via a profile-unbiased thermostat (PUT) as described in
<A HREF = "#Evans">(Evans)</A>. A compute of this style can be used by any command
that computes a temperature, e.g. <A HREF = "thermo_modify.html">thermo_modify</A>,
<A HREF = "fix_temp_rescale.html">fix temp/rescale</A>, <A HREF = "fix_nh.html">fix npt</A>, etc.
</P>
<P>The <I>xflag</I>, <I>yflag</I>, <I>zflag</I> settings determine which components of
average velocity are subtracted out.
</P>
<P>The <I>binstyle</I> setting and its <I>Nx</I>, <I>Ny</I>, <I>Nz</I> arguments determine
how bins are setup to perform spatial averaging. "Bins" can be 1d
slabs, 2d pencils, or 3d bricks depending on which <I>binstyle</I> is used.
The simulation box is partitioned conceptually into <I>Nx</I> by <I>Ny</I> by
<I>Nz</I> bins. Depending on the <I>binstyle</I>, you may only specify one or
two of these values; the others are effectively set to 1 (no binning
in that dimension). For non-orthogonal (triclinic) simulation boxes,
the bins are "tilted" slabs or pencils or bricks that are parallel to
the tilted faces of the box. See the <A HREF = "region.html">region prism</A>
command for a discussion of the geometry of tilted boxes in LAMMPS.
</P>
<P>When a temperature is computed, the velocity for the set of atoms that
are both in the compute group and in the same spatial bin is summed to
compute an average velocity for the bin. This bias velocity is then
subtracted from the velocities of individual atoms in the bin to yield
a thermal velocity for each atom. Note that if there is only one
atom in the bin, it's thermal velocity will thus be 0.0.
</P>
<P>After the spatially-averaged velocity field has been subtracted from
each atom, the temperature is calculated by the formula KE = dim/2 N k
T, where KE = total kinetic energy of the group of atoms (sum of 1/2 m
v^2), dim = 2 or 3 = dimensionality of the simulation, N = number of
atoms in the group, k = Boltzmann constant, and T = temperature.
</P>
<P>A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
</P>
<P>The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the <I>dynamic</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command if this is not the case.
</P>
<P>The removal of the spatially-averaged velocity field by this fix is
essentially computing the temperature after a "bias" has been removed
from the velocity of the atoms. If this compute is used with a fix
command that performs thermostatting then this bias will be subtracted
from each atom, thermostatting of the remaining thermal velocity will
be performed, and the bias will be added back in. Thermostatting
fixes that work in this way include <A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_temp_berendsen.html">fix
temp/berendsen</A>, and <A HREF = "fix_langevin.html">fix
langevin</A>.
</P>
<P>This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as <A HREF = "fix_shake.html">fix shake</A> and
<A HREF = "fix_rigid.html">fix rigid</A>. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
<I>extra</I> option of the <A HREF = "compute_modify.html">compute_modify</A> command.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting. Using this compute in conjunction with a
thermostatting fix, as explained there, will effectively implement a
profile-unbiased thermostat (PUT), as described in <A HREF = "#Evans">(Evans)</A>.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector values are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>You should not use too large a velocity-binning grid, especially in
3d. In the current implementation, the binned velocity averages are
summed across all processors, so this will be inefficient if the grid
is too large, and the operation is performed every timestep, as it
will be for most thermostats.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp.html">compute temp</A>, <A HREF = "compute_temp_ramp.html">compute
temp/ramp</A>, <A HREF = "compute_temp_deform.html">compute
temp/deform</A>, <A HREF = "compute_pressure.html">compute
pressure</A>
</P>
<P><B>Default:</B>
</P>
<P>The option default is units = lattice.
</P>
<HR>
<A NAME = "Evans"></A>
<P><B>(Evans)</B> Evans and Morriss, Phys Rev Lett, 56, 2172-2175 (1986).
</P>
</HTML>
diff --git a/doc/compute_temp_profile.txt b/doc/compute_temp_profile.txt
index bf2d92128..8eaae6948 100644
--- a/doc/compute_temp_profile.txt
+++ b/doc/compute_temp_profile.txt
@@ -1,144 +1,144 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/profile command :h3
[Syntax:]
compute ID group-ID temp/profile xflag yflag zflag binstyle args :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
temp/profile = style name of this compute command :l
xflag,yflag,zflag = 0/1 for whether to exclude/include this dimension :l
binstyle = {x} or {y} or {z} or {xy} or {yz} or {xz} or {xyz} :l
{x} arg = Nx
{y} arg = Ny
{z} arg = Nz
{xy} args = Nx Ny
{yz} args = Ny Nz
{xz} args = Nx Nz
{xyz} args = Nx Ny Nz
Nx,Ny,Nz = number of velocity bins in x,y,z dimensions :pre
:ule
[Examples:]
compute myTemp flow temp/profile 1 1 1 x 10
compute myTemp flow temp/profile 0 1 1 xyz 20 20 20 :pre
[Description:]
Define a computation that calculates the temperature of a group of
atoms, after subtracting out a spatially-averaged velocity field,
before computing the kinetic energy. This can be useful for
thermostatting a collection of atoms undergoing a complex flow,
e.g. via a profile-unbiased thermostat (PUT) as described in
"(Evans)"_#Evans. A compute of this style can be used by any command
that computes a temperature, e.g. "thermo_modify"_thermo_modify.html,
"fix temp/rescale"_fix_temp_rescale.html, "fix npt"_fix_nh.html, etc.
The {xflag}, {yflag}, {zflag} settings determine which components of
average velocity are subtracted out.
The {binstyle} setting and its {Nx}, {Ny}, {Nz} arguments determine
how bins are setup to perform spatial averaging. "Bins" can be 1d
slabs, 2d pencils, or 3d bricks depending on which {binstyle} is used.
The simulation box is partitioned conceptually into {Nx} by {Ny} by
{Nz} bins. Depending on the {binstyle}, you may only specify one or
two of these values; the others are effectively set to 1 (no binning
in that dimension). For non-orthogonal (triclinic) simulation boxes,
the bins are "tilted" slabs or pencils or bricks that are parallel to
the tilted faces of the box. See the "region prism"_region.html
command for a discussion of the geometry of tilted boxes in LAMMPS.
When a temperature is computed, the velocity for the set of atoms that
are both in the compute group and in the same spatial bin is summed to
compute an average velocity for the bin. This bias velocity is then
subtracted from the velocities of individual atoms in the bin to yield
a thermal velocity for each atom. Note that if there is only one
atom in the bin, it's thermal velocity will thus be 0.0.
After the spatially-averaged velocity field has been subtracted from
each atom, the temperature is calculated by the formula KE = dim/2 N k
T, where KE = total kinetic energy of the group of atoms (sum of 1/2 m
v^2), dim = 2 or 3 = dimensionality of the simulation, N = number of
atoms in the group, k = Boltzmann constant, and T = temperature.
A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the {dynamic} option of the
"compute_modify"_compute_modify.html command if this is not the case.
The removal of the spatially-averaged velocity field by this fix is
essentially computing the temperature after a "bias" has been removed
from the velocity of the atoms. If this compute is used with a fix
command that performs thermostatting then this bias will be subtracted
from each atom, thermostatting of the remaining thermal velocity will
be performed, and the bias will be added back in. Thermostatting
fixes that work in this way include "fix nvt"_fix_nh.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix
temp/berendsen"_fix_temp_berendsen.html, and "fix
langevin"_fix_langevin.html.
This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as "fix shake"_fix_shake.html and
"fix rigid"_fix_rigid.html. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
{extra} option of the "compute_modify"_compute_modify.html command.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting. Using this compute in conjunction with a
thermostatting fix, as explained there, will effectively implement a
profile-unbiased thermostat (PUT), as described in "(Evans)"_#Evans.
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:]
You should not use too large a velocity-binning grid, especially in
3d. In the current implementation, the binned velocity averages are
summed across all processors, so this will be inefficient if the grid
is too large, and the operation is performed every timestep, as it
will be for most thermostats.
[Related commands:]
"compute temp"_compute_temp.html, "compute
temp/ramp"_compute_temp_ramp.html, "compute
temp/deform"_compute_temp_deform.html, "compute
pressure"_compute_pressure.html
[Default:]
The option default is units = lattice.
:line
:link(Evans)
[(Evans)] Evans and Morriss, Phys Rev Lett, 56, 2172-2175 (1986).
diff --git a/doc/compute_temp_ramp.html b/doc/compute_temp_ramp.html
index fa8b6b0ec..686ad9cd6 100644
--- a/doc/compute_temp_ramp.html
+++ b/doc/compute_temp_ramp.html
@@ -1,122 +1,122 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/ramp command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/ramp vdim vlo vhi dim clo chi keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/ramp = style name of this compute command
<LI>vdim = <I>vx</I> or <I>vy</I> or <I>vz</I>
<LI>vlo,vhi = subtract velocities between vlo and vhi (velocity units)
<LI>dim = <I>x</I> or <I>y</I> or <I>z</I>
<LI>clo,chi = lower and upper bound of domain to subtract from (distance units)
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>units</I>
</UL>
<PRE> <I>units</I> value = <I>lattice</I> or <I>box</I>
</PRE>
<P><B>Examples:</B>
</P>
<PRE>compute 2nd middle temp/ramp vx 0 8 y 2 12 units lattice
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
atoms, after subtracting out an ramped velocity profile before
computing the kinetic energy. A compute of this style can be used by
any command that computes a temperature,
e.g. <A HREF = "thermo_modify.html">thermo_modify</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_nh.html">fix npt</A>, etc.
</P>
<P>The meaning of the arguments for this command which define the
velocity ramp are the same as for the <A HREF = "velocity.html">velocity ramp</A>
command which was presumably used to impose the velocity.
</P>
<P>After the ramp velocity has been subtracted from the specified
dimension for each atom, the temperature is calculated by the formula
KE = dim/2 N k T, where KE = total kinetic energy of the group of
atoms (sum of 1/2 m v^2), dim = 2 or 3 = dimensionality of the
simulation, N = number of atoms in the group, k = Boltzmann constant,
and T = temperature.
</P>
<P>The <I>units</I> keyword determines the meaning of the distance units used
for coordinates (c1,c2) and velocities (vlo,vhi). 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; e.g. velocity =
lattice spacings / tau. The <A HREF = "lattice.html">lattice</A> command must have
been previously used to define the lattice spacing.
</P>
<P>A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
</P>
<P>The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the <I>dynamic</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command if this is not the case.
</P>
<P>The removal of the ramped velocity component by this fix is
essentially computing the temperature after a "bias" has been removed
from the velocity of the atoms. If this compute is used with a fix
command that performs thermostatting then this bias will be subtracted
from each atom, thermostatting of the remaining thermal velocity will
be performed, and the bias will be added back in. Thermostatting
fixes that work in this way include <A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_temp_berendsen.html">fix
temp/berendsen</A>, and <A HREF = "fix_langevin.html">fix
langevin</A>.
</P>
<P>This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as <A HREF = "fix_shake.html">fix shake</A> and
<A HREF = "fix_rigid.html">fix rigid</A>. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
<I>extra</I> option of the <A HREF = "compute_modify.html">compute_modify</A> command.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector values are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp.html">compute temp</A>, <A HREF = "compute_temp_profile.html">compute
temp/profie</A>, <A HREF = "compute_temp_deform.html">compute
temp/deform</A>, <A HREF = "compute_pressure.html">compute
pressure</A>
</P>
<P><B>Default:</B>
</P>
<P>The option default is units = lattice.
</P>
</HTML>
diff --git a/doc/compute_temp_ramp.txt b/doc/compute_temp_ramp.txt
index 4f1ccc596..bc9283469 100644
--- a/doc/compute_temp_ramp.txt
+++ b/doc/compute_temp_ramp.txt
@@ -1,116 +1,116 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/ramp command :h3
[Syntax:]
compute ID group-ID temp/ramp vdim vlo vhi dim clo chi keyword value ... :pre
ID, group-ID are documented in "compute"_compute.html command
temp/ramp = style name of this compute command
vdim = {vx} or {vy} or {vz}
vlo,vhi = subtract velocities between vlo and vhi (velocity units)
dim = {x} or {y} or {z}
clo,chi = lower and upper bound of domain to subtract from (distance units)
zero or more keyword/value pairs may be appended
keyword = {units} :ul
{units} value = {lattice} or {box} :pre
[Examples:]
compute 2nd middle temp/ramp vx 0 8 y 2 12 units lattice :pre
[Description:]
Define a computation that calculates the temperature of a group of
atoms, after subtracting out an ramped velocity profile before
computing the kinetic energy. A compute of this style can be used by
any command that computes a temperature,
e.g. "thermo_modify"_thermo_modify.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix npt"_fix_nh.html, etc.
The meaning of the arguments for this command which define the
velocity ramp are the same as for the "velocity ramp"_velocity.html
command which was presumably used to impose the velocity.
After the ramp velocity has been subtracted from the specified
dimension for each atom, the temperature is calculated by the formula
KE = dim/2 N k T, where KE = total kinetic energy of the group of
atoms (sum of 1/2 m v^2), dim = 2 or 3 = dimensionality of the
simulation, N = number of atoms in the group, k = Boltzmann constant,
and T = temperature.
The {units} keyword determines the meaning of the distance units used
for coordinates (c1,c2) and velocities (vlo,vhi). A {box} value
selects standard distance units as defined by the "units"_units.html
command, e.g. Angstroms for units = real or metal. A {lattice} value
means the distance units are in lattice spacings; e.g. velocity =
lattice spacings / tau. The "lattice"_lattice.html command must have
been previously used to define the lattice spacing.
A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the {dynamic} option of the
"compute_modify"_compute_modify.html command if this is not the case.
The removal of the ramped velocity component by this fix is
essentially computing the temperature after a "bias" has been removed
from the velocity of the atoms. If this compute is used with a fix
command that performs thermostatting then this bias will be subtracted
from each atom, thermostatting of the remaining thermal velocity will
be performed, and the bias will be added back in. Thermostatting
fixes that work in this way include "fix nvt"_fix_nh.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix
temp/berendsen"_fix_temp_berendsen.html, and "fix
langevin"_fix_langevin.html.
This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as "fix shake"_fix_shake.html and
"fix rigid"_fix_rigid.html. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
{extra} option of the "compute_modify"_compute_modify.html command.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute temp"_compute_temp.html, "compute
temp/profie"_compute_temp_profile.html, "compute
temp/deform"_compute_temp_deform.html, "compute
pressure"_compute_pressure.html
[Default:]
The option default is units = lattice.
diff --git a/doc/compute_temp_region.html b/doc/compute_temp_region.html
index 260dd408b..62f57caca 100644
--- a/doc/compute_temp_region.html
+++ b/doc/compute_temp_region.html
@@ -1,110 +1,110 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/region command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/region region-ID
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/region = style name of this compute command
<LI>region-ID = ID of region to use for choosing atoms
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute mine flow temp/region boundary
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
atoms in a geometric region. This can be useful for thermostatting
one portion of the simulation box. E.g. a McDLT simulation where one
side is cooled, and the other side is heated. A compute of this style
can be used by any command that computes a temperature,
e.g. <A HREF = "thermo_modify.html">thermo_modify</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, etc.
</P>
<P>Note that a <I>region</I>-style temperature can be used to thermostat with
<A HREF = "fix_temp_rescale.html">fix temp/rescale</A> or <A HREF = "fix_langevin.html">fix
langevin</A>, but should probably not be used with
Nose/Hoover style fixes (<A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_nh.html">fix
npt</A>, or <A HREF = "fix_nh.html">fix nph</A>), if the
degrees-of-freedom included in the computed T varies with time.
</P>
<P>The temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2),
dim = 2 or 3 = dimensionality of the simulation, N = number of atoms
in both the group and region, k = Boltzmann constant, and T =
temperature.
</P>
<P>A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
</P>
<P>The number of atoms contributing to the temperature is compute each
time the temperature is evaluated since it is assumed atoms can
enter/leave the region. Thus there is no need to use the <I>dynamic</I>
option of the <A HREF = "compute_modify.html">compute_modify</A> command for this
compute style.
</P>
<P>The removal of atoms outside the region by this fix is essentially
computing the temperature after a "bias" has been removed, which in
this case is the velocity of any atoms outside the region. If this
compute is used with a fix command that performs thermostatting then
this bias will be subtracted from each atom, thermostatting of the
remaining thermal velocity will be performed, and the bias will be
added back in. Thermostatting fixes that work in this way include
<A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_temp_rescale.html">fix temp/rescale</A>, <A HREF = "fix_temp_berendsen.html">fix
temp/berendsen</A>, and <A HREF = "fix_langevin.html">fix
langevin</A>. This means any of the thermostatting
fixes can operate on a geometric region of atoms, as defined by this
compute.
</P>
<P>Unlike other compute styles that calculate temperature, this compute
does NOT currently subtract out degrees-of-freedom due to fixes that
constrain molecular motion, such as <A HREF = "fix_shake.html">fix shake</A> and
<A HREF = "fix_rigid.html">fix rigid</A>. If needed the subtracted
degrees-of-freedom can be altered using the <I>extra</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector values are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp.html">compute temp</A>, <A HREF = "compute_pressure.html">compute
pressure</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_temp_region.txt b/doc/compute_temp_region.txt
index 0733eb7a4..c617eeb7a 100644
--- a/doc/compute_temp_region.txt
+++ b/doc/compute_temp_region.txt
@@ -1,105 +1,105 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/region command :h3
[Syntax:]
compute ID group-ID temp/region region-ID :pre
ID, group-ID are documented in "compute"_compute.html command
temp/region = style name of this compute command
region-ID = ID of region to use for choosing atoms :ul
[Examples:]
compute mine flow temp/region boundary :pre
[Description:]
Define a computation that calculates the temperature of a group of
atoms in a geometric region. This can be useful for thermostatting
one portion of the simulation box. E.g. a McDLT simulation where one
side is cooled, and the other side is heated. A compute of this style
can be used by any command that computes a temperature,
e.g. "thermo_modify"_thermo_modify.html, "fix
temp/rescale"_fix_temp_rescale.html, etc.
Note that a {region}-style temperature can be used to thermostat with
"fix temp/rescale"_fix_temp_rescale.html or "fix
langevin"_fix_langevin.html, but should probably not be used with
Nose/Hoover style fixes ("fix nvt"_fix_nh.html, "fix
npt"_fix_nh.html, or "fix nph"_fix_nh.html), if the
degrees-of-freedom included in the computed T varies with time.
The temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2),
dim = 2 or 3 = dimensionality of the simulation, N = number of atoms
in both the group and region, k = Boltzmann constant, and T =
temperature.
A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
The number of atoms contributing to the temperature is compute each
time the temperature is evaluated since it is assumed atoms can
enter/leave the region. Thus there is no need to use the {dynamic}
option of the "compute_modify"_compute_modify.html command for this
compute style.
The removal of atoms outside the region by this fix is essentially
computing the temperature after a "bias" has been removed, which in
this case is the velocity of any atoms outside the region. If this
compute is used with a fix command that performs thermostatting then
this bias will be subtracted from each atom, thermostatting of the
remaining thermal velocity will be performed, and the bias will be
added back in. Thermostatting fixes that work in this way include
"fix nvt"_fix_nh.html, "fix temp/rescale"_fix_temp_rescale.html, "fix
temp/berendsen"_fix_temp_berendsen.html, and "fix
langevin"_fix_langevin.html. This means any of the thermostatting
fixes can operate on a geometric region of atoms, as defined by this
compute.
Unlike other compute styles that calculate temperature, this compute
does NOT currently subtract out degrees-of-freedom due to fixes that
constrain molecular motion, such as "fix shake"_fix_shake.html and
"fix rigid"_fix_rigid.html. If needed the subtracted
degrees-of-freedom can be altered using the {extra} option of the
"compute_modify"_compute_modify.html command.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"compute temp"_compute_temp.html, "compute
pressure"_compute_pressure.html
[Default:] none
diff --git a/doc/compute_temp_region_eff.html b/doc/compute_temp_region_eff.html
index a4d7d37b3..6bb12a428 100644
--- a/doc/compute_temp_region_eff.html
+++ b/doc/compute_temp_region_eff.html
@@ -1,69 +1,69 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/region/eff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/region/eff region-ID
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/region/eff = style name of this compute command
<LI>region-ID = ID of region to use for choosing atoms
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute mine flow temp/region/eff boundary
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
nuclei and electrons in the <A HREF = "pair_eff.html">electron force field</A>
model, within a geometric region using the electron force field. A
compute of this style can be used by commands that compute a
temperature, e.g. <A HREF = "thermo_modify.html">thermo_modify</A>.
</P>
<P>The operation of this compute is exactly like that described by the
<A HREF = "compute_temp_region.html">compute temp/region</A> command, except that
the formula for the temperature itself includes the radial electron
velocity contributions, as discussed by the <A HREF = "compute_temp_eff.html">compute
temp/eff</A> command.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector values are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This compute 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#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp_region.html">compute temp/region</A>, <A HREF = "compute_temp_eff.html">compute
temp/eff</A>, <A HREF = "compute_pressure.html">compute
pressure</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_temp_region_eff.txt b/doc/compute_temp_region_eff.txt
index 72585eb69..7231f9862 100644
--- a/doc/compute_temp_region_eff.txt
+++ b/doc/compute_temp_region_eff.txt
@@ -1,64 +1,64 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/region/eff command :h3
[Syntax:]
compute ID group-ID temp/region/eff region-ID :pre
ID, group-ID are documented in "compute"_compute.html command
temp/region/eff = style name of this compute command
region-ID = ID of region to use for choosing atoms :ul
[Examples:]
compute mine flow temp/region/eff boundary :pre
[Description:]
Define a computation that calculates the temperature of a group of
nuclei and electrons in the "electron force field"_pair_eff.html
model, within a geometric region using the electron force field. A
compute of this style can be used by commands that compute a
temperature, e.g. "thermo_modify"_thermo_modify.html.
The operation of this compute is exactly like that described by the
"compute temp/region"_compute_temp_region.html command, except that
the formula for the temperature itself includes the radial electron
velocity contributions, as discussed by the "compute
temp/eff"_compute_temp_eff.html command.
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:]
This compute is part of the "user-eff" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"compute temp/region"_compute_temp_region.html, "compute
temp/eff"_compute_temp_eff.html, "compute
pressure"_compute_pressure.html
[Default:] none
diff --git a/doc/compute_temp_rotate.html b/doc/compute_temp_rotate.html
index af0e10ce6..389fa20ce 100644
--- a/doc/compute_temp_rotate.html
+++ b/doc/compute_temp_rotate.html
@@ -1,101 +1,101 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/rotate command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/rotate
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/rotate = style name of this compute command
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute Tbead bead temp/rotate
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
atoms, after subtracting out the center-of-mass velocity and angular velocity of the group.
This is useful if the group is expected to have a non-zero net
velocity and/or global rotation motion for some reason. A compute of this style can be used by any
command that computes a temperature,
e.g. <A HREF = "thermo_modify.html">thermo_modify</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_nh.html">fix npt</A>, etc.
</P>
<P>After the center-of-mass velocity and angular velocity has been subtracted from each atom,
the temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2),
dim = 2 or 3 = dimensionality of the simulation, N = number of atoms
in the group, k = Boltzmann constant, and T = temperature.
</P>
<P>A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
</P>
<P>The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the <I>dynamic</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command if this is not the case.
</P>
<P>The removal of the center-of-mass velocity and angular velocity by this fix is essentially
computing the temperature after a "bias" has been removed from the
velocity of the atoms. If this compute is used with a fix command
that performs thermostatting then this bias will be subtracted from
each atom, thermostatting of the remaining thermal velocity will be
performed, and the bias will be added back in. Thermostatting fixes
that work in this way include <A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_temp_berendsen.html">fix
temp/berendsen</A>, and <A HREF = "fix_langevin.html">fix
langevin</A>.
</P>
<P>This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as <A HREF = "fix_shake.html">fix shake</A> and
<A HREF = "fix_rigid.html">fix rigid</A>. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
<I>extra</I> option of the <A HREF = "compute_modify.html">compute_modify</A> command.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector values are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This compute is part of the "user-misc" package. It is only enabled
-if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp.html">compute temp</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/compute_temp_rotate.txt b/doc/compute_temp_rotate.txt
index ab38031c2..13acc2a97 100644
--- a/doc/compute_temp_rotate.txt
+++ b/doc/compute_temp_rotate.txt
@@ -1,96 +1,96 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/rotate command :h3
[Syntax:]
compute ID group-ID temp/rotate :pre
ID, group-ID are documented in "compute"_compute.html command
temp/rotate = style name of this compute command :ul
[Examples:]
compute Tbead bead temp/rotate :pre
[Description:]
Define a computation that calculates the temperature of a group of
atoms, after subtracting out the center-of-mass velocity and angular velocity of the group.
This is useful if the group is expected to have a non-zero net
velocity and/or global rotation motion for some reason. A compute of this style can be used by any
command that computes a temperature,
e.g. "thermo_modify"_thermo_modify.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix npt"_fix_nh.html, etc.
After the center-of-mass velocity and angular velocity has been subtracted from each atom,
the temperature is calculated by the formula KE = dim/2 N k T, where
KE = total kinetic energy of the group of atoms (sum of 1/2 m v^2),
dim = 2 or 3 = dimensionality of the simulation, N = number of atoms
in the group, k = Boltzmann constant, and T = temperature.
A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute for use in the computation of a pressure
tensor. The formula for the components of the tensor is the same as
the above formula, except that v^2 is replaced by vx*vy for the xy
component, etc. The 6 components of the vector are ordered xx, yy,
zz, xy, xz, yz.
The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the {dynamic} option of the
"compute_modify"_compute_modify.html command if this is not the case.
The removal of the center-of-mass velocity and angular velocity by this fix is essentially
computing the temperature after a "bias" has been removed from the
velocity of the atoms. If this compute is used with a fix command
that performs thermostatting then this bias will be subtracted from
each atom, thermostatting of the remaining thermal velocity will be
performed, and the bias will be added back in. Thermostatting fixes
that work in this way include "fix nvt"_fix_nh.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix
temp/berendsen"_fix_temp_berendsen.html, and "fix
langevin"_fix_langevin.html.
This compute subtracts out degrees-of-freedom due to fixes that
constrain molecular motion, such as "fix shake"_fix_shake.html and
"fix rigid"_fix_rigid.html. This means the temperature of groups of
atoms that include these constraints will be computed correctly. If
needed, the subtracted degrees-of-freedom can be altered using the
{extra} option of the "compute_modify"_compute_modify.html command.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:]
This compute is part of the "user-misc" package. It is only enabled
if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"compute temp"_compute_temp.html
[Default:] none
diff --git a/doc/compute_temp_sphere.html b/doc/compute_temp_sphere.html
index 23e18d16b..923dab504 100644
--- a/doc/compute_temp_sphere.html
+++ b/doc/compute_temp_sphere.html
@@ -1,147 +1,147 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute temp/sphere command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID temp/sphere keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>temp/sphere = style name of this compute command
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>bias</I> or <I>dof</I>
<PRE> <I>bias</I> value = bias-ID<I>uniform</I> or <I>gaussian</I>
bias-ID = ID of a temperature compute that removes a velocity bias
<I>dof</I> value = <I>all</I> or <I>rotate</I>
all = compute temperature of translational and rotational degrees of freedom
rotate = compute temperature of just rotational degrees of freedom
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all temp/sphere
compute myTemp mobile temp/sphere bias tempCOM
compute myTemp mobile temp/sphere dof rotate
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the temperature of a group of
spherical particles, including a contribution from both their
translational and rotational kinetic energy. This differs from the
usual <A HREF = "compute_temp.html">compute temp</A> command, which assumes point
particles with only translational kinetic energy.
</P>
<P>Both point and finite-size particles can be included in the group.
Point particles do not rotate, so they have only 3 translational
degrees of freedom. For 3d spherical particles, each has 6 degrees of
freedom (3 translational, 3 rotational). For 2d spherical particles,
each has 3 degrees of freedom (2 translational, 1 rotational).
</P>
<P>IMPORTANT NOTE: This choice for degrees of freedom (dof) assumes that
all finite-size spherical particles in your model will freely rotate,
sampling all their rotational dof. It is possible to use a
combination of interaction potentials and fixes that induce no torque
or otherwise constrain some of all of your particles so that this is
not the case. Then there are less dof and you should use the
<A HREF = "compute_modify.html">compute_modify extra</A> command to adjust the dof
accordingly.
</P>
<P>The translational kinetic energy is computed the same as is described
by the <A HREF = "compute_temp.html">compute temp</A> command. The rotational
kinetic energy is computed as 1/2 I w^2, where I is the moment of
inertia for a sphere and w is the particle's angular velocity.
</P>
<P>IMPORTANT NOTE: For <A HREF = "dimension.html">2d models</A>, particles are treated
as spheres, not disks, meaning their moment of inertia will be the
same as in 3d.
</P>
<P>A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute. The formula for the components of the
tensor is the same as the above formulas, except that v^2 and w^2 are
replaced by vx*vy and wx*wy for the xy component. The 6 components of
the vector are ordered xx, yy, zz, xy, xz, yz.
</P>
<P>The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the <I>dynamic</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command if this is not the case.
</P>
<P>This compute subtracts out translational degrees-of-freedom due to
fixes that constrain molecular motion, such as <A HREF = "fix_shake.html">fix
shake</A> and <A HREF = "fix_rigid.html">fix rigid</A>. This means the
temperature of groups of atoms that include these constraints will be
computed correctly. If needed, the subtracted degrees-of-freedom can
be altered using the <I>extra</I> option of the
<A HREF = "compute_modify.html">compute_modify</A> command.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</P>
<HR>
<P>The keyword/value option pairs are used in the following ways.
</P>
<P>For the <I>bias</I> keyword, <I>bias-ID</I> refers to the ID of a temperature
compute that removes a "bias" velocity from each atom. This allows
compute temp/sphere to compute its thermal temperature after the
translational kinetic energy components have been altered in a
prescribed way, e.g. to remove a velocity profile. Thermostats that
use this compute will work with this bias term. See the doc pages for
individual computes that calculate a temperature and the doc pages for
fixes that perform thermostatting for more details.
</P>
<P>For the <I>dof</I> keyword, a setting of <I>all</I> calculates a temperature
that includes both translational and rotational degrees of freedom. A
setting of <I>rotate</I> calculates a temperature that includes only
rotational degrees of freedom.
</P>
<HR>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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#4_15">this
+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 value calculated by this compute is "intensive". The
vector values are "extensive".
</P>
<P>The scalar value will be in temperature <A HREF = "units.html">units</A>. The
vector values will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This fix requires that atoms store torque and angular velocity (omega)
and a radius as defined by the <A HREF = "atom_style.html">atom_style sphere</A>
command.
</P>
<P>All particles in the group must be finite-size spheres, or point
particles with radius = 0.0.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp.html">compute temp</A>, <A HREF = "compute_temp.html">compute
temp/asphere</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are no bias and dof = all.
</P>
</HTML>
diff --git a/doc/compute_temp_sphere.txt b/doc/compute_temp_sphere.txt
index 16d1fcc76..24885e237 100755
--- a/doc/compute_temp_sphere.txt
+++ b/doc/compute_temp_sphere.txt
@@ -1,137 +1,137 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute temp/sphere command :h3
[Syntax:]
compute ID group-ID temp/sphere keyword value ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
temp/sphere = style name of this compute command :l
zero or more keyword/value pairs may be appended :l
keyword = {bias} or {dof} :l
{bias} value = bias-ID{uniform} or {gaussian}
bias-ID = ID of a temperature compute that removes a velocity bias
{dof} value = {all} or {rotate}
all = compute temperature of translational and rotational degrees of freedom
rotate = compute temperature of just rotational degrees of freedom :pre
:ule
[Examples:]
compute 1 all temp/sphere
compute myTemp mobile temp/sphere bias tempCOM
compute myTemp mobile temp/sphere dof rotate :pre
[Description:]
Define a computation that calculates the temperature of a group of
spherical particles, including a contribution from both their
translational and rotational kinetic energy. This differs from the
usual "compute temp"_compute_temp.html command, which assumes point
particles with only translational kinetic energy.
Both point and finite-size particles can be included in the group.
Point particles do not rotate, so they have only 3 translational
degrees of freedom. For 3d spherical particles, each has 6 degrees of
freedom (3 translational, 3 rotational). For 2d spherical particles,
each has 3 degrees of freedom (2 translational, 1 rotational).
IMPORTANT NOTE: This choice for degrees of freedom (dof) assumes that
all finite-size spherical particles in your model will freely rotate,
sampling all their rotational dof. It is possible to use a
combination of interaction potentials and fixes that induce no torque
or otherwise constrain some of all of your particles so that this is
not the case. Then there are less dof and you should use the
"compute_modify extra"_compute_modify.html command to adjust the dof
accordingly.
The translational kinetic energy is computed the same as is described
by the "compute temp"_compute_temp.html command. The rotational
kinetic energy is computed as 1/2 I w^2, where I is the moment of
inertia for a sphere and w is the particle's angular velocity.
IMPORTANT NOTE: For "2d models"_dimension.html, particles are treated
as spheres, not disks, meaning their moment of inertia will be the
same as in 3d.
A kinetic energy tensor, stored as a 6-element vector, is also
calculated by this compute. The formula for the components of the
tensor is the same as the above formulas, except that v^2 and w^2 are
replaced by vx*vy and wx*wy for the xy component. The 6 components of
the vector are ordered xx, yy, zz, xy, xz, yz.
The number of atoms contributing to the temperature is assumed to be
constant for the duration of the run; use the {dynamic} option of the
"compute_modify"_compute_modify.html command if this is not the case.
This compute subtracts out translational degrees-of-freedom due to
fixes that constrain molecular motion, such as "fix
shake"_fix_shake.html and "fix rigid"_fix_rigid.html. This means the
temperature of groups of atoms that include these constraints will be
computed correctly. If needed, the subtracted degrees-of-freedom can
be altered using the {extra} option of the
"compute_modify"_compute_modify.html command.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
:line
The keyword/value option pairs are used in the following ways.
For the {bias} keyword, {bias-ID} refers to the ID of a temperature
compute that removes a "bias" velocity from each atom. This allows
compute temp/sphere to compute its thermal temperature after the
translational kinetic energy components have been altered in a
prescribed way, e.g. to remove a velocity profile. Thermostats that
use this compute will work with this bias term. See the doc pages for
individual computes that calculate a temperature and the doc pages for
fixes that perform thermostatting for more details.
For the {dof} keyword, a setting of {all} calculates a temperature
that includes both translational and rotational degrees of freedom. A
setting of {rotate} calculates a temperature that includes only
rotational degrees of freedom.
:line
[Output info:]
This compute calculates a global scalar (the temperature) and a global
vector of length 6 (KE 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 "this
-section"_Section_howto.html#4_15 for an overview of LAMMPS output
+section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The scalar value calculated by this compute is "intensive". The
vector values are "extensive".
The scalar value will be in temperature "units"_units.html. The
vector values will be in energy "units"_units.html.
[Restrictions:]
This fix requires that atoms store torque and angular velocity (omega)
and a radius as defined by the "atom_style sphere"_atom_style.html
command.
All particles in the group must be finite-size spheres, or point
particles with radius = 0.0.
[Related commands:]
"compute temp"_compute_temp.html, "compute
temp/asphere"_compute_temp.html
[Default:]
The option defaults are no bias and dof = all.
diff --git a/doc/compute_ti.html b/doc/compute_ti.html
index 404f33e82..4e997fb1c 100644
--- a/doc/compute_ti.html
+++ b/doc/compute_ti.html
@@ -1,124 +1,124 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute ti command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group ti keyword args ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>ti = style name of this compute command
<LI>one or more attribute/arg pairs may be appended
<LI>keyword = pair style (lj/cut, gauss, born, etc) or <I>tail</I> or <I>kspace</I>
<PRE> pair style args = v_name1 v_name2
v_name1 = variable with name1 that is energy scale factor and function of lambda
v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda
<I>tail</I> args = v_name1 v_name2
v_name1 = variable with name1 that is energy tail correction scale factor and function of lambda
v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda
<I>kspace</I> args = v_name1 v_name2
v_name1 = variable with name1 that is K-Space scale factor and function of lambda
v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>compute 1 all ti lj/cut v_lj v_dlj coul/long v_c v_dc kspace v_ks v_dks
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates the derivative of the interaction
potential with respect to <I>lambda</I>, the coupling parameter used in a
thermodynamic integration. This derivative can be used to infer a
free energy difference resulting from an alchemical simulation, as
described in <A HREF = "#Eike">Eike</A>.
</P>
<P>Typically this compute will be used in conjunction with the <A HREF = "fix_adapt.html">fix
adapt</A> command which can perform alchemical
transformations by adusting the strength of an interaction potential
as a simulation runs, as defined by one or more
<A HREF = "pair_style.html">pair_style</A> or <A HREF = "kspace_style.html">kspace_style</A>
commands. This scaling is done via a prefactor on the energy, forces,
virial calculated by the pair or K-Space style. The prefactor is
often a function of a <I>lambda</I> parameter which may be adjusted from 0
to 1 (or vice versa) over the course of a <A HREF = "run.html">run</A>. The
time-dependent adjustment is what the <A HREF = "fix_adapt.html">fix adapt</A>
command does.
</P>
<P>Assume that the unscaled energy of a pair_style or kspace_style is
given by U. Then the scaled energy is
</P>
<PRE>Us = f(lambda) U
</PRE>
<P>where f() is some function of lambda. What this compute calculates is
</P>
<PRE>dUs / d(lambda) = U df(lambda)/dlambda = Us / f(lambda) df(lambda)/dlambda
</PRE>
<P>which is the derivative of the system's scaled potential energy Us
with respect to <I>lambda</I>.
</P>
<P>To do this calculation, you provide two functions, as <A HREF = "variable.html">equal-style
variables</A>. The first is specified as <I>v_name1</I>, where
<I>name1</I> is the name of the variable, and is f(lambda) in the notation
above. The second is specified as <I>v_name2</I>, where <I>name2</I> is the
name of the variable, and is df(lambda) / dlambda in the notation
above. I.e. it is the analytic derivative of f() with respect to
lambda. Note that the <I>name1</I> variable is also typically given as an
argument to the <A HREF = "fix_adapt.html">fix adapt</A> command.
</P>
<P>An alchemical simulation may use several pair potentials together,
invoked via the <A HREF = "pair_hybrid.html">pair_style hybrid or hybrid/overlay</A>
command. The total dUs/dlambda for the overall system is calculated
as the sum of each contributing term as listed by the keywords in the
compute ti command. Individual pair potentials can be listed, which
will be sub-styles in the hybrid case. You can also include a K-space
term via the <I>kspace</I> keyword. You can also include a pairwise
long-range tail correction to the energy via the <I>tail</I> keyword.
</P>
<P>For each term you can specify a different (or the same) scale factor
by the two variables that you list. Again, these will typically
correspond toe the scale factors applied to these various potentials
and the K-Space contribution via the <A HREF = "fix_adapt.html">fix_adapt</A>
command.
</P>
<P>More details about the exact functional forms for the computation of
du/dl can be found in the paper by <A HREF = "#Eike">Eike</A>.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global scalar, namely dUs/dlambda. This
value can be used by any command that uses a global scalar value from
-a compute as input. See <A HREF = "Section_howto.html#4_15">this section</A> for an
-overview of LAMMPS output options.
+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 value calculated by this compute is "extensive".
</P>
<P>The scalar value will be in energy <A HREF = "units.html">units</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_adapt.html">fix adapt</A>
</P>
<P><B>Default:</B> none
</P>
<A NAME = "Eike"></A>
<P><B>(Eike)</B> Eike and Maginn, Journal of Chemical Physics, 124, 164503 (2006).
</P>
</HTML>
diff --git a/doc/compute_ti.txt b/doc/compute_ti.txt
index 39078cbd2..1d8041ae9 100644
--- a/doc/compute_ti.txt
+++ b/doc/compute_ti.txt
@@ -1,113 +1,113 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute ti command :h3
[Syntax:]
compute ID group ti keyword args ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
ti = style name of this compute command :l
one or more attribute/arg pairs may be appended :l
keyword = pair style (lj/cut, gauss, born, etc) or {tail} or {kspace} :l
pair style args = v_name1 v_name2
v_name1 = variable with name1 that is energy scale factor and function of lambda
v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda
{tail} args = v_name1 v_name2
v_name1 = variable with name1 that is energy tail correction scale factor and function of lambda
v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda
{kspace} args = v_name1 v_name2
v_name1 = variable with name1 that is K-Space scale factor and function of lambda
v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda :pre
:ule
[Examples:]
compute 1 all ti lj/cut v_lj v_dlj coul/long v_c v_dc kspace v_ks v_dks :pre
[Description:]
Define a computation that calculates the derivative of the interaction
potential with respect to {lambda}, the coupling parameter used in a
thermodynamic integration. This derivative can be used to infer a
free energy difference resulting from an alchemical simulation, as
described in "Eike"_#Eike.
Typically this compute will be used in conjunction with the "fix
adapt"_fix_adapt.html command which can perform alchemical
transformations by adusting the strength of an interaction potential
as a simulation runs, as defined by one or more
"pair_style"_pair_style.html or "kspace_style"_kspace_style.html
commands. This scaling is done via a prefactor on the energy, forces,
virial calculated by the pair or K-Space style. The prefactor is
often a function of a {lambda} parameter which may be adjusted from 0
to 1 (or vice versa) over the course of a "run"_run.html. The
time-dependent adjustment is what the "fix adapt"_fix_adapt.html
command does.
Assume that the unscaled energy of a pair_style or kspace_style is
given by U. Then the scaled energy is
Us = f(lambda) U :pre
where f() is some function of lambda. What this compute calculates is
dUs / d(lambda) = U df(lambda)/dlambda = Us / f(lambda) df(lambda)/dlambda :pre
which is the derivative of the system's scaled potential energy Us
with respect to {lambda}.
To do this calculation, you provide two functions, as "equal-style
variables"_variable.html. The first is specified as {v_name1}, where
{name1} is the name of the variable, and is f(lambda) in the notation
above. The second is specified as {v_name2}, where {name2} is the
name of the variable, and is df(lambda) / dlambda in the notation
above. I.e. it is the analytic derivative of f() with respect to
lambda. Note that the {name1} variable is also typically given as an
argument to the "fix adapt"_fix_adapt.html command.
An alchemical simulation may use several pair potentials together,
invoked via the "pair_style hybrid or hybrid/overlay"_pair_hybrid.html
command. The total dUs/dlambda for the overall system is calculated
as the sum of each contributing term as listed by the keywords in the
compute ti command. Individual pair potentials can be listed, which
will be sub-styles in the hybrid case. You can also include a K-space
term via the {kspace} keyword. You can also include a pairwise
long-range tail correction to the energy via the {tail} keyword.
For each term you can specify a different (or the same) scale factor
by the two variables that you list. Again, these will typically
correspond toe the scale factors applied to these various potentials
and the K-Space contribution via the "fix_adapt"_fix_adapt.html
command.
More details about the exact functional forms for the computation of
du/dl can be found in the paper by "Eike"_#Eike.
[Output info:]
This compute calculates a global scalar, namely dUs/dlambda. This
value can be used by any command that uses a global scalar value from
-a compute as input. See "this section"_Section_howto.html#4_15 for an
-overview of LAMMPS output options.
+a compute as input. See "this section"_Section_howto.html#howto_15
+for an overview of LAMMPS output options.
The scalar value calculated by this compute is "extensive".
The scalar value will be in energy "units"_units.html.
[Restrictions:] none
[Related commands:]
"fix adapt"_fix_adapt.html
[Default:] none
:link(Eike)
[(Eike)] Eike and Maginn, Journal of Chemical Physics, 124, 164503 (2006).
diff --git a/doc/create_box.html b/doc/create_box.html
index a4c2a918b..974af9ee3 100644
--- a/doc/create_box.html
+++ b/doc/create_box.html
@@ -1,98 +1,98 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>create_box command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>create_box N region-ID
</PRE>
<UL><LI>N = # of atom types to use in this simulation
<LI>region-ID = ID of region to use as simulation domain
</UL>
<P><B>Examples:</B>
</P>
<PRE>create_box 2 mybox
</PRE>
<P><B>Description:</B>
</P>
<P>This command creates a simulation box based on the specified region.
Thus a <A HREF = "region.html">region</A> command must first be used to define a
geometric domain.
</P>
<P>The argument N is the number of atom types that will be used in the
simulation.
</P>
<P>If the region is not of style <I>prism</I>, then LAMMPS encloses the region
(block, sphere, etc) with an axis-aligned orthogonal bounding box
which becomes the simulation domain.
</P>
<P>If the region is of style <I>prism</I>, LAMMPS creates a non-orthogonal
simulation domain shaped as a parallelepiped with triclinic symmetry.
As defined by the <A HREF = "region.html">region prism</A> command, the
parallelepiped has its "origin" at (xlo,ylo,zlo) and is defined by 3
edge vectors starting from the origin given by A = (xhi-xlo,0,0); B =
(xy,yhi-ylo,0); C = (xz,yz,zhi-zlo). <I>Xy,xz,yz</I> can be 0.0 or
positive or negative values and are called "tilt factors" because they
are the amount of displacement applied to faces of an originally
orthogonal box to transform it into the parallelipiped.
</P>
<P>A <I>prism</I> region used with the create_box command must have tilt
factors (xy,xz,yz) that do not skew the box more than half the
distance of the parallel box length. For example, if xlo = 2 and xhi
= 12, then the x box length is 10 and the xy tilt factor must be
between -5 and 5. Similarly, both xz and yz must be between
-(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is not a limitation,
since if the maximum tilt factor is 5 (as in this example), then
configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all
geometrically equivalent.
</P>
-<P>See <A HREF = "Section_howto.html#4_12">this section</A> of the doc pages for a
+<P>See <A HREF = "Section_howto.html#howto_12">this section</A> of the doc pages for a
geometric description of triclinic boxes, as defined by LAMMPS, and
how to transform these parameters to and from other commonly used
triclinic representations.
</P>
<P>When a prism region is used, the simulation domain must be periodic in
any dimensions with a non-zero tilt factor, as defined by the
<A HREF = "boundary.html">boundary</A> command. I.e. if the xy tilt factor is
non-zero, then both the x and y dimensions must be periodic.
Similarly, x and z must be periodic if xz is non-zero and y and z must
be periodic if yz is non-zero. Also note that if your simulation will
tilt the box, e.g. via the <A HREF = "fix_deform.html">fix deform</A> command, the
simulation box must be defined as triclinic, even if the tilt factors
are initially 0.0.
</P>
<P>IMPORTANT NOTE: If the system is non-periodic (in a dimension), then
you should not make the lo/hi box dimensions (as defined in your
<A HREF = "region.html">region</A> command) radically smaller/larger than the extent
of the atoms you eventually plan to create, e.g. via the
<A HREF = "create_atoms.html">create_atoms</A> command. For example, if your atoms
extend from 0 to 50, you should not specify the box bounds as -10000
and 10000. This is because LAMMPS uses the specified box size to
layout the 3d grid of processors. A huge (mostly empty) box will be
sub-optimal for performance when using "fixed" boundary conditions
(see the <A HREF = "boundary.html">boundary</A> command). When using "shrink-wrap"
boundary conditions (see the <A HREF = "boundary.html">boundary</A> command), a huge
(mostly empty) box may cause a parallel simulation to lose atoms the
first time that LAMMPS shrink-wraps the box around the atoms.
</P>
<P><B>Restrictions:</B>
</P>
<P>An <A HREF = "atom_style.html">atom_style</A> and <A HREF = "region.html">region</A> must have
been previously defined to use this command.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "create_atoms.html">create_atoms</A>, <A HREF = "region.html">region</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/create_box.txt b/doc/create_box.txt
index 3576b815f..247486503 100644
--- a/doc/create_box.txt
+++ b/doc/create_box.txt
@@ -1,93 +1,93 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
create_box command :h3
[Syntax:]
create_box N region-ID :pre
N = # of atom types to use in this simulation
region-ID = ID of region to use as simulation domain :ul
[Examples:]
create_box 2 mybox :pre
[Description:]
This command creates a simulation box based on the specified region.
Thus a "region"_region.html command must first be used to define a
geometric domain.
The argument N is the number of atom types that will be used in the
simulation.
If the region is not of style {prism}, then LAMMPS encloses the region
(block, sphere, etc) with an axis-aligned orthogonal bounding box
which becomes the simulation domain.
If the region is of style {prism}, LAMMPS creates a non-orthogonal
simulation domain shaped as a parallelepiped with triclinic symmetry.
As defined by the "region prism"_region.html command, the
parallelepiped has its "origin" at (xlo,ylo,zlo) and is defined by 3
edge vectors starting from the origin given by A = (xhi-xlo,0,0); B =
(xy,yhi-ylo,0); C = (xz,yz,zhi-zlo). {Xy,xz,yz} can be 0.0 or
positive or negative values and are called "tilt factors" because they
are the amount of displacement applied to faces of an originally
orthogonal box to transform it into the parallelipiped.
A {prism} region used with the create_box command must have tilt
factors (xy,xz,yz) that do not skew the box more than half the
distance of the parallel box length. For example, if xlo = 2 and xhi
= 12, then the x box length is 10 and the xy tilt factor must be
between -5 and 5. Similarly, both xz and yz must be between
-(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is not a limitation,
since if the maximum tilt factor is 5 (as in this example), then
configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all
geometrically equivalent.
-See "this section"_Section_howto.html#4_12 of the doc pages for a
+See "this section"_Section_howto.html#howto_12 of the doc pages for a
geometric description of triclinic boxes, as defined by LAMMPS, and
how to transform these parameters to and from other commonly used
triclinic representations.
When a prism region is used, the simulation domain must be periodic in
any dimensions with a non-zero tilt factor, as defined by the
"boundary"_boundary.html command. I.e. if the xy tilt factor is
non-zero, then both the x and y dimensions must be periodic.
Similarly, x and z must be periodic if xz is non-zero and y and z must
be periodic if yz is non-zero. Also note that if your simulation will
tilt the box, e.g. via the "fix deform"_fix_deform.html command, the
simulation box must be defined as triclinic, even if the tilt factors
are initially 0.0.
IMPORTANT NOTE: If the system is non-periodic (in a dimension), then
you should not make the lo/hi box dimensions (as defined in your
"region"_region.html command) radically smaller/larger than the extent
of the atoms you eventually plan to create, e.g. via the
"create_atoms"_create_atoms.html command. For example, if your atoms
extend from 0 to 50, you should not specify the box bounds as -10000
and 10000. This is because LAMMPS uses the specified box size to
layout the 3d grid of processors. A huge (mostly empty) box will be
sub-optimal for performance when using "fixed" boundary conditions
(see the "boundary"_boundary.html command). When using "shrink-wrap"
boundary conditions (see the "boundary"_boundary.html command), a huge
(mostly empty) box may cause a parallel simulation to lose atoms the
first time that LAMMPS shrink-wraps the box around the atoms.
[Restrictions:]
An "atom_style"_atom_style.html and "region"_region.html must have
been previously defined to use this command.
[Related commands:]
"create_atoms"_create_atoms.html, "region"_region.html
[Default:] none
diff --git a/doc/dihedral_charmm.html b/doc/dihedral_charmm.html
index 8030eab9e..e8b8ca58a 100644
--- a/doc/dihedral_charmm.html
+++ b/doc/dihedral_charmm.html
@@ -1,94 +1,94 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dihedral_style charmm command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dihedral_style charmm
</PRE>
<P><B>Examples:</B>
</P>
<PRE>dihedral_style charmm
dihedral_coeff 1 120.0 1 60 0.5
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>charmm</I> dihedral style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/dihedral_charmm.jpg">
</CENTER>
<P>See <A HREF = "#MacKerell">(MacKerell)</A> for a description of the CHARMM force
field. This dihedral style can also be used for the AMBER force field
(see comment on weighting factors below). See <A HREF = "#Cornell">(Cornell)</A>
for a description of the AMBER force field.
</P>
<P>The following coefficients must be defined for each dihedral type via the
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command as in the example 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:
</P>
<UL><LI>K (energy)
<LI>n (integer >= 0)
<LI>d (integer value of degrees)
<LI>weighting factor (0.0 to 1.0)
</UL>
<P>The weighting factor is applied to pairwise interaction between the
1st and 4th atoms in the dihedral, which are computed by a CHARMM
<A HREF = "pair_charmm.html">pair_style</A> with epsilon and sigma values specified
with a <A HREF = "pair_charmm.html">pair_coeff</A> command. Note that this
weighting factor is unrelated to the weighting factor specified by the
<A HREF = "special_bonds.html">special bonds</A> command which applies to all 1-4
interactions in the system.
</P>
<P>For CHARMM force fields, the special_bonds 1-4 weighting factor should
be set to 0.0. This is because the pair styles that contain "charmm"
(e.g. <A HREF = "pair_charmm.html">pair_style lj/charmm/coul/long</A>) define extra
1-4 interaction coefficients that are used by this dihedral style to
compute those interactions explicitly. This means that if any of the
weighting factors defined as dihedral coefficients (4th coeff above)
are non-zero, then you must use a charmm pair style. Note that if you
do not set the special_bonds 1-4 weighting factor to 0.0 (which is the
default) then 1-4 interactions in dihedrals will be computed twice,
once by the pair routine and once by the dihedral routine, which is
probably not what you want.
</P>
<P>For AMBER force fields, the special_bonds 1-4 weighting factor should
be set to the AMBER defaults (1/2 and 5/6) and all the dihedral
weighting factors (4th coeff above) should be set to 0.0. In this
case, you can use any pair style you wish, since the dihedral does not
need any 1-4 information.
</P>
<P><B>Restrictions:</B>
</P>
<P>This dihedral style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dihedral_coeff.html">dihedral_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Cornell"></A>
<P><B>(Cornell)</B> Cornell, Cieplak, Bayly, Gould, Merz, Ferguson,
Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
</P>
<A NAME = "MacKerell"></A>
<P><B>(MacKerell)</B> MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
Fischer, Gao, Guo, Ha, et al, J Phys Chem B, 102, 3586 (1998).
</P>
</HTML>
diff --git a/doc/dihedral_charmm.txt b/doc/dihedral_charmm.txt
index d164f369c..e28adab34 100644
--- a/doc/dihedral_charmm.txt
+++ b/doc/dihedral_charmm.txt
@@ -1,87 +1,87 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dihedral_style charmm command :h3
[Syntax:]
dihedral_style charmm :pre
[Examples:]
dihedral_style charmm
dihedral_coeff 1 120.0 1 60 0.5 :pre
[Description:]
The {charmm} dihedral style uses the potential
:c,image(Eqs/dihedral_charmm.jpg)
See "(MacKerell)"_#MacKerell for a description of the CHARMM force
field. This dihedral style can also be used for the AMBER force field
(see comment on weighting factors below). See "(Cornell)"_#Cornell
for a description of the AMBER force field.
The following coefficients must be defined for each dihedral type via the
"dihedral_coeff"_dihedral_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K (energy)
n (integer >= 0)
d (integer value of degrees)
weighting factor (0.0 to 1.0) :ul
The weighting factor is applied to pairwise interaction between the
1st and 4th atoms in the dihedral, which are computed by a CHARMM
"pair_style"_pair_charmm.html with epsilon and sigma values specified
with a "pair_coeff"_pair_charmm.html command. Note that this
weighting factor is unrelated to the weighting factor specified by the
"special bonds"_special_bonds.html command which applies to all 1-4
interactions in the system.
For CHARMM force fields, the special_bonds 1-4 weighting factor should
be set to 0.0. This is because the pair styles that contain "charmm"
(e.g. "pair_style lj/charmm/coul/long"_pair_charmm.html) define extra
1-4 interaction coefficients that are used by this dihedral style to
compute those interactions explicitly. This means that if any of the
weighting factors defined as dihedral coefficients (4th coeff above)
are non-zero, then you must use a charmm pair style. Note that if you
do not set the special_bonds 1-4 weighting factor to 0.0 (which is the
default) then 1-4 interactions in dihedrals will be computed twice,
once by the pair routine and once by the dihedral routine, which is
probably not what you want.
For AMBER force fields, the special_bonds 1-4 weighting factor should
be set to the AMBER defaults (1/2 and 5/6) and all the dihedral
weighting factors (4th coeff above) should be set to 0.0. In this
case, you can use any pair style you wish, since the dihedral does not
need any 1-4 information.
[Restrictions:]
This dihedral style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"dihedral_coeff"_dihedral_coeff.html
[Default:] none
:line
:link(Cornell)
[(Cornell)] Cornell, Cieplak, Bayly, Gould, Merz, Ferguson,
Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).
:link(MacKerell)
[(MacKerell)] MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
Fischer, Gao, Guo, Ha, et al, J Phys Chem B, 102, 3586 (1998).
diff --git a/doc/dihedral_class2.html b/doc/dihedral_class2.html
index 6da37c9a2..5b55f4e39 100644
--- a/doc/dihedral_class2.html
+++ b/doc/dihedral_class2.html
@@ -1,158 +1,158 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dihedral_style class2 command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dihedral_style class2
</PRE>
<P><B>Examples:</B>
</P>
<PRE>dihedral_style class2
dihedral_coeff 1 100 75 100 70 80 60
dihedral_coeff * mbt 3.5945 0.1704 -0.5490 1.5228
dihedral_coeff * ebt 0.3417 0.3264 -0.9036 0.1368 0.0 -0.8080 1.0119 1.1010
dihedral_coeff 2 at 0.0 -0.1850 -0.7963 -2.0220 0.0 -0.3991 110.2453 105.1270
dihedral_coeff * aat -13.5271 110.2453 105.1270
dihedral_coeff * bb13 0.0 1.0119 1.1010
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>class2</I> dihedral style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/dihedral_class2.jpg">
</CENTER>
<P>where Ed is the dihedral term, Embt is a middle-bond-torsion term,
Eebt is an end-bond-torsion term, Eat is an angle-torsion term, Eaat
is an angle-angle-torsion term, and Ebb13 is a bond-bond-13 term.
</P>
<P>Theta1 and theta2 are equilibrium angles and r1 r2 r3 are equilibrium
bond lengths.
</P>
<P>See <A HREF = "#Sun">(Sun)</A> for a description of the COMPASS class2 force field.
</P>
<P>Coefficients for the Ed, Embt, Eebt, Eat, Eaat, and Ebb13 formulas
must be defined for each dihedral type via the
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command as in the example 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.
</P>
<P>These are the 6 coefficients for the Ed formula:
</P>
<UL><LI>K1 (energy)
<LI>phi1 (degrees)
<LI>K2 (energy)
<LI>phi2 (degrees)
<LI>K3 (energy)
<LI>phi3 (degrees)
</UL>
<P>For the Embt formula, each line in a
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command in the input script lists
5 coefficients, the first of which is "mbt" to indicate they are
MiddleBondTorsion coefficients. In a data file, these coefficients
should be listed under a "MiddleBondTorsion Coeffs" heading and you
must leave out the "mbt", i.e. only list 4 coefficients after the
dihedral type.
</P>
<UL><LI>mbt
<LI>A1 (energy/distance)
<LI>A2 (energy/distance)
<LI>A3 (energy/distance)
<LI>r2 (distance)
</UL>
<P>For the Eebt formula, each line in a
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command in the input script lists
9 coefficients, the first of which is "ebt" to indicate they are
EndBondTorsion coefficients. In a data file, these coefficients
should be listed under a "EndBondTorsion Coeffs" heading and you must
leave out the "ebt", i.e. only list 8 coefficients after the dihedral
type.
</P>
<UL><LI>ebt
<LI>B1 (energy/distance)
<LI>B2 (energy/distance)
<LI>B3 (energy/distance)
<LI>C1 (energy/distance)
<LI>C2 (energy/distance)
<LI>C3 (energy/distance)
<LI>r1 (distance)
<LI>r3 (distance)
</UL>
<P>For the Eat formula, each line in a
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command in the input script lists
9 coefficients, the first of which is "at" to indicate they are
AngleTorsion coefficients. In a data file, these coefficients should
be listed under a "AngleTorsion Coeffs" heading and you must leave out
the "at", i.e. only list 8 coefficients after the dihedral type.
</P>
<UL><LI>at
<LI>D1 (energy/radian)
<LI>D2 (energy/radian)
<LI>D3 (energy/radian)
<LI>E1 (energy/radian)
<LI>E2 (energy/radian)
<LI>E3 (energy/radian)
<LI>theta1 (degrees)
<LI>theta2 (degrees)
</UL>
<P>Theta1 and theta2 are specified in degrees, but LAMMPS converts them
to radians internally; hence the units of D and E are in
energy/radian.
</P>
<P>For the Eaat formula, each line in a
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command in the input script lists
4 coefficients, the first of which is "aat" to indicate they are
AngleAngleTorsion coefficients. In a data file, these coefficients
should be listed under a "AngleAngleTorsion Coeffs" heading and you
must leave out the "aat", i.e. only list 3 coefficients after the
dihedral type.
</P>
<UL><LI>aat
<LI>M (energy/radian^2)
<LI>theta1 (degrees)
<LI>theta2 (degrees)
</UL>
<P>Theta1 and theta2 are specified in degrees, but LAMMPS converts them
to radians internally; hence the units of M are in energy/radian^2.
</P>
<P>For the Ebb13 formula, each line in a
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command in the input script lists
4 coefficients, the first of which is "bb13" to indicate they are
BondBond13 coefficients. In a data file, these coefficients should be
listed under a "BondBond13 Coeffs" heading and you must leave out the
"bb13", i.e. only list 3 coefficients after the dihedral type.
</P>
<UL><LI>bb13
<LI>N (energy/distance^2)
<LI>r1 (distance)
<LI>r3 (distance)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This dihedral style can only be used if LAMMPS was built with the
-"class2" package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+"class2" package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A>
section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dihedral_coeff.html">dihedral_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Sun"></A>
<P><B>(Sun)</B> Sun, J Phys Chem B 102, 7338-7364 (1998).
</P>
</HTML>
diff --git a/doc/dihedral_class2.txt b/doc/dihedral_class2.txt
index 141112823..ea9fa52cf 100644
--- a/doc/dihedral_class2.txt
+++ b/doc/dihedral_class2.txt
@@ -1,152 +1,152 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dihedral_style class2 command :h3
[Syntax:]
dihedral_style class2 :pre
[Examples:]
dihedral_style class2
dihedral_coeff 1 100 75 100 70 80 60
dihedral_coeff * mbt 3.5945 0.1704 -0.5490 1.5228
dihedral_coeff * ebt 0.3417 0.3264 -0.9036 0.1368 0.0 -0.8080 1.0119 1.1010
dihedral_coeff 2 at 0.0 -0.1850 -0.7963 -2.0220 0.0 -0.3991 110.2453 105.1270
dihedral_coeff * aat -13.5271 110.2453 105.1270
dihedral_coeff * bb13 0.0 1.0119 1.1010 :pre
[Description:]
The {class2} dihedral style uses the potential
:c,image(Eqs/dihedral_class2.jpg)
where Ed is the dihedral term, Embt is a middle-bond-torsion term,
Eebt is an end-bond-torsion term, Eat is an angle-torsion term, Eaat
is an angle-angle-torsion term, and Ebb13 is a bond-bond-13 term.
Theta1 and theta2 are equilibrium angles and r1 r2 r3 are equilibrium
bond lengths.
See "(Sun)"_#Sun for a description of the COMPASS class2 force field.
Coefficients for the Ed, Embt, Eebt, Eat, Eaat, and Ebb13 formulas
must be defined for each dihedral type via the
"dihedral_coeff"_dihedral_coeff.html command as in the example above,
or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands.
These are the 6 coefficients for the Ed formula:
K1 (energy)
phi1 (degrees)
K2 (energy)
phi2 (degrees)
K3 (energy)
phi3 (degrees) :ul
For the Embt formula, each line in a
"dihedral_coeff"_dihedral_coeff.html command in the input script lists
5 coefficients, the first of which is "mbt" to indicate they are
MiddleBondTorsion coefficients. In a data file, these coefficients
should be listed under a "MiddleBondTorsion Coeffs" heading and you
must leave out the "mbt", i.e. only list 4 coefficients after the
dihedral type.
mbt
A1 (energy/distance)
A2 (energy/distance)
A3 (energy/distance)
r2 (distance) :ul
For the Eebt formula, each line in a
"dihedral_coeff"_dihedral_coeff.html command in the input script lists
9 coefficients, the first of which is "ebt" to indicate they are
EndBondTorsion coefficients. In a data file, these coefficients
should be listed under a "EndBondTorsion Coeffs" heading and you must
leave out the "ebt", i.e. only list 8 coefficients after the dihedral
type.
ebt
B1 (energy/distance)
B2 (energy/distance)
B3 (energy/distance)
C1 (energy/distance)
C2 (energy/distance)
C3 (energy/distance)
r1 (distance)
r3 (distance) :ul
For the Eat formula, each line in a
"dihedral_coeff"_dihedral_coeff.html command in the input script lists
9 coefficients, the first of which is "at" to indicate they are
AngleTorsion coefficients. In a data file, these coefficients should
be listed under a "AngleTorsion Coeffs" heading and you must leave out
the "at", i.e. only list 8 coefficients after the dihedral type.
at
D1 (energy/radian)
D2 (energy/radian)
D3 (energy/radian)
E1 (energy/radian)
E2 (energy/radian)
E3 (energy/radian)
theta1 (degrees)
theta2 (degrees) :ul
Theta1 and theta2 are specified in degrees, but LAMMPS converts them
to radians internally; hence the units of D and E are in
energy/radian.
For the Eaat formula, each line in a
"dihedral_coeff"_dihedral_coeff.html command in the input script lists
4 coefficients, the first of which is "aat" to indicate they are
AngleAngleTorsion coefficients. In a data file, these coefficients
should be listed under a "AngleAngleTorsion Coeffs" heading and you
must leave out the "aat", i.e. only list 3 coefficients after the
dihedral type.
aat
M (energy/radian^2)
theta1 (degrees)
theta2 (degrees) :ul
Theta1 and theta2 are specified in degrees, but LAMMPS converts them
to radians internally; hence the units of M are in energy/radian^2.
For the Ebb13 formula, each line in a
"dihedral_coeff"_dihedral_coeff.html command in the input script lists
4 coefficients, the first of which is "bb13" to indicate they are
BondBond13 coefficients. In a data file, these coefficients should be
listed under a "BondBond13 Coeffs" heading and you must leave out the
"bb13", i.e. only list 3 coefficients after the dihedral type.
bb13
N (energy/distance^2)
r1 (distance)
r3 (distance) :ul
[Restrictions:]
This dihedral style can only be used if LAMMPS was built with the
-"class2" package. See the "Making LAMMPS"_Section_start.html#2_3
+"class2" package. See the "Making LAMMPS"_Section_start.html#start_3
section for more info on packages.
[Related commands:]
"dihedral_coeff"_dihedral_coeff.html
[Default:] none
:line
:link(Sun)
[(Sun)] Sun, J Phys Chem B 102, 7338-7364 (1998).
diff --git a/doc/dihedral_coeff.html b/doc/dihedral_coeff.html
index 26021e3a6..9159ee5b2 100644
--- a/doc/dihedral_coeff.html
+++ b/doc/dihedral_coeff.html
@@ -1,104 +1,104 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dihedral_coeff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dihedral_coeff N args
</PRE>
<UL><LI>N = dihedral type (see asterisk form below)
<LI>args = coefficients for one or more dihedral types
</UL>
<P><B>Examples:</B>
</P>
<PRE>dihedral_coeff 1 80.0 1 3
dihedral_coeff * 80.0 1 3 0.5
dihedral_coeff 2* 80.0 1 3 0.5
</PRE>
<P><B>Description:</B>
</P>
<HR>
<P>Specify the dihedral force field coefficients for one or more dihedral types.
The number and meaning of the coefficients depends on the dihedral style.
Dihedral coefficients can also be set in the data file read by the
<A HREF = "read_data.html">read_data</A> command or in a restart file.
</P>
<P>N can be specified in one of two ways. An explicit numeric value can
be used, as in the 1st example above. Or a wild-card asterisk can be
used to set the coefficients for multiple dihedral types. This takes the
form "*" or "*n" or "n*" or "m*n". If N = the number of dihedral 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>Note that using a dihedral_coeff command can override a previous setting
for the same dihedral type. For example, these commands set the coeffs
for all dihedral types, then overwrite the coeffs for just dihedral type 2:
</P>
<PRE>dihedral_coeff * 80.0 1 3
dihedral_coeff 2 200.0 1 3
</PRE>
<P>A line in a data file that specifies dihedral coefficients uses the exact
same format as the arguments of the dihedral_coeff command in an input
script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example,
under the "Dihedral Coeffs" section of a data file, the line that
corresponds to the 1st example above would be listed as
</P>
<PRE>1 80.0 1 3
</PRE>
<P>The <A HREF = "dihedral_class2.html">dihedral_style class2</A> is an exception to
this rule, in that an additional argument is used in the input script
to allow specification of the cross-term coefficients. See its doc
page for details.
</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>
<UL><LI><A HREF = "dihedral_none.html">dihedral_style none</A> - turn off dihedral interactions
<LI><A HREF = "dihedral_hybrid.html">dihedral_style hybrid</A> - define multiple styles of dihedral interactions
</UL>
<UL><LI><A HREF = "dihedral_charmm.html">dihedral_style charmm</A> - CHARMM dihedral
<LI><A HREF = "dihedral_class2.html">dihedral_style class2</A> - COMPASS (class 2) dihedral
<LI><A HREF = "dihedral_harmonic.html">dihedral_style harmonic</A> - harmonic dihedral
<LI><A HREF = "dihedral_helix.html">dihedral_style helix</A> - helix dihedral
<LI><A HREF = "dihedral_multi_harmonic.html">dihedral_style multi/harmonic</A> - multi-harmonic dihedral
<LI><A HREF = "dihedral_opls.html">dihedral_style opls</A> - OPLS dihedral
</UL>
<P>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 <A HREF = "Section_commands.html#3_5">this
+the individual styles are given in the dihedral section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command must come after the simulation box is defined by 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>A dihedral style must be defined before any dihedral coefficients are
set, either in the input script or in a data file.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dihedral_style.html">dihedral_style</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/dihedral_coeff.txt b/doc/dihedral_coeff.txt
index e66ac90b7..21228218f 100644
--- a/doc/dihedral_coeff.txt
+++ b/doc/dihedral_coeff.txt
@@ -1,99 +1,99 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dihedral_coeff command :h3
[Syntax:]
dihedral_coeff N args :pre
N = dihedral type (see asterisk form below)
args = coefficients for one or more dihedral types :ul
[Examples:]
dihedral_coeff 1 80.0 1 3
dihedral_coeff * 80.0 1 3 0.5
dihedral_coeff 2* 80.0 1 3 0.5 :pre
[Description:]
:line
Specify the dihedral force field coefficients for one or more dihedral types.
The number and meaning of the coefficients depends on the dihedral style.
Dihedral coefficients can also be set in the data file read by the
"read_data"_read_data.html command or in a restart file.
N can be specified in one of two ways. An explicit numeric value can
be used, as in the 1st example above. Or a wild-card asterisk can be
used to set the coefficients for multiple dihedral types. This takes the
form "*" or "*n" or "n*" or "m*n". If N = the number of dihedral 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).
Note that using a dihedral_coeff command can override a previous setting
for the same dihedral type. For example, these commands set the coeffs
for all dihedral types, then overwrite the coeffs for just dihedral type 2:
dihedral_coeff * 80.0 1 3
dihedral_coeff 2 200.0 1 3 :pre
A line in a data file that specifies dihedral coefficients uses the exact
same format as the arguments of the dihedral_coeff command in an input
script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example,
under the "Dihedral Coeffs" section of a data file, the line that
corresponds to the 1st example above would be listed as
1 80.0 1 3 :pre
The "dihedral_style class2"_dihedral_class2.html is an exception to
this rule, in that an additional argument is used in the input script
to allow specification of the cross-term coefficients. See its doc
page for details.
:line
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 "dihedral_coeff"_dihedral_coeff.html command:
"dihedral_style none"_dihedral_none.html - turn off dihedral interactions
"dihedral_style hybrid"_dihedral_hybrid.html - define multiple styles of dihedral interactions :ul
"dihedral_style charmm"_dihedral_charmm.html - CHARMM dihedral
"dihedral_style class2"_dihedral_class2.html - COMPASS (class 2) dihedral
"dihedral_style harmonic"_dihedral_harmonic.html - harmonic dihedral
"dihedral_style helix"_dihedral_helix.html - helix dihedral
"dihedral_style multi/harmonic"_dihedral_multi_harmonic.html - multi-harmonic dihedral
"dihedral_style opls"_dihedral_opls.html - OPLS dihedral :ul
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 "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
:line
[Restrictions:]
This command must come after the simulation box is defined by a
"read_data"_read_data.html, "read_restart"_read_restart.html, or
"create_box"_create_box.html command.
A dihedral style must be defined before any dihedral coefficients are
set, either in the input script or in a data file.
[Related commands:]
"dihedral_style"_dihedral_style.html
[Default:] none
diff --git a/doc/dihedral_cosine_shift_exp.html b/doc/dihedral_cosine_shift_exp.html
index 73f830c3b..5062bb6f2 100644
--- a/doc/dihedral_cosine_shift_exp.html
+++ b/doc/dihedral_cosine_shift_exp.html
@@ -1,65 +1,65 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dihedral_style cosine/shift/exp command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dihedral_style cosine/shift/exp
</PRE>
<P><B>Examples:</B>
</P>
<PRE>dihedral_style cosine/shift/exp
dihedral_coeff 1 10.0 45.0 2.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>cosine/shift/exp</I> dihedral style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/dihedral_cosine_shift_exp.jpg">
</CENTER>
<P>where Umin, theta, and a are defined for each dihedral type.
</P>
<P>The potential is bounded between [-Umin:0] and the minimum is located
at the angle theta0. The a parameter can be both positive or negative
and is used to control the spring constant at the equilibrium.
</P>
<P>The spring constant is given by k=a exp(a) Umin/ [2 (Exp(a)-1)].
For a>3 k/Umin = a/2 to better than 5% relative error. For negative
values of the a parameter, the spring constant is essentially zero,
and anharmonic terms takes over. The potential is furthermore well
behaved in the limit a->0, where it has been implemented to linear
order in a for a < 0.001.
</P>
<P>The following coefficients must be defined for each dihedral type via
the <A HREF = "dihedral_coeff.html">dihedral_coeff</A> command as in the example
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:
</P>
<UL><LI>umin (energy)
<LI>theta (angle)
<LI>A (real number)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This dihedral style can only be used if LAMMPS was built with the
-"user-misc" package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
-section for more info on packages.
+"user-misc" package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dihedral_coeff.html">dihedral_coeff</A>,
<A HREF = "angle_cosineshiftexp.html">angle_cosineshiftexp</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/dihedral_cosine_shift_exp.txt b/doc/dihedral_cosine_shift_exp.txt
index ee01c29e9..f4e94263f 100644
--- a/doc/dihedral_cosine_shift_exp.txt
+++ b/doc/dihedral_cosine_shift_exp.txt
@@ -1,60 +1,60 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dihedral_style cosine/shift/exp command :h3
[Syntax:]
dihedral_style cosine/shift/exp :pre
[Examples:]
dihedral_style cosine/shift/exp
dihedral_coeff 1 10.0 45.0 2.0 :pre
[Description:]
The {cosine/shift/exp} dihedral style uses the potential
:c,image(Eqs/dihedral_cosine_shift_exp.jpg)
where Umin, theta, and a are defined for each dihedral type.
The potential is bounded between \[-Umin:0\] and the minimum is located
at the angle theta0. The a parameter can be both positive or negative
and is used to control the spring constant at the equilibrium.
The spring constant is given by k=a exp(a) Umin/ \[2 (Exp(a)-1)\].
For a>3 k/Umin = a/2 to better than 5% relative error. For negative
values of the a parameter, the spring constant is essentially zero,
and anharmonic terms takes over. The potential is furthermore well
behaved in the limit a->0, where it has been implemented to linear
order in a for a < 0.001.
The following coefficients must be defined for each dihedral type via
the "dihedral_coeff"_dihedral_coeff.html command as in the example
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
umin (energy)
theta (angle)
A (real number) :ul
[Restrictions:]
This dihedral style can only be used if LAMMPS was built with the
-"user-misc" package. See the "Making LAMMPS"_Section_start.html#2_3
-section for more info on packages.
+"user-misc" package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"dihedral_coeff"_dihedral_coeff.html,
"angle_cosineshiftexp"_angle_cosineshiftexp.html
[Default:] none
diff --git a/doc/dihedral_harmonic.html b/doc/dihedral_harmonic.html
index b7313e970..eb1b760ee 100644
--- a/doc/dihedral_harmonic.html
+++ b/doc/dihedral_harmonic.html
@@ -1,50 +1,50 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dihedral_style harmonic command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dihedral_style harmonic
</PRE>
<P><B>Examples:</B>
</P>
<PRE>dihedral_style harmonic
dihedral_coeff 1 80.0 1 2
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>harmonic</I> dihedral style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/dihedral_harmonic.jpg">
</CENTER>
<P>The following coefficients must be defined for each dihedral type via the
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command as in the example 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:
</P>
<UL><LI>K (energy)
<LI>d (+1 or -1)
<LI>n (integer >= 0)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This dihedral style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dihedral_coeff.html">dihedral_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/dihedral_harmonic.txt b/doc/dihedral_harmonic.txt
index 6e9c5dee0..99452498a 100644
--- a/doc/dihedral_harmonic.txt
+++ b/doc/dihedral_harmonic.txt
@@ -1,45 +1,45 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dihedral_style harmonic command :h3
[Syntax:]
dihedral_style harmonic :pre
[Examples:]
dihedral_style harmonic
dihedral_coeff 1 80.0 1 2 :pre
[Description:]
The {harmonic} dihedral style uses the potential
:c,image(Eqs/dihedral_harmonic.jpg)
The following coefficients must be defined for each dihedral type via the
"dihedral_coeff"_dihedral_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K (energy)
d (+1 or -1)
n (integer >= 0) :ul
[Restrictions:]
This dihedral style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"dihedral_coeff"_dihedral_coeff.html
[Default:] none
diff --git a/doc/dihedral_helix.html b/doc/dihedral_helix.html
index 0a0e9c766..403625c6c 100644
--- a/doc/dihedral_helix.html
+++ b/doc/dihedral_helix.html
@@ -1,64 +1,64 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dihedral_style helix command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dihedral_style helix
</PRE>
<P><B>Examples:</B>
</P>
<PRE>dihedral_style helix
dihedral_coeff 1 80.0 100.0 40.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>helix</I> dihedral style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/dihedral_helix.jpg">
</CENTER>
<P>This coarse-grain dihedral potential is described in <A HREF = "#Guo">(Guo)</A>.
For dihedral angles in the helical region, the energy function is
represented by a standard potential consisting of three minima, one
corresponding to the trans (t) state and the other to gauche states
(g+ and g-). The paper describes how the A,B,C parameters are chosen
so as to balance secondary (largely driven by local interactions) and
tertiary structure (driven by long-range interactions).
</P>
<P>The following coefficients must be defined for each dihedral type via the
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command as in the example 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:
</P>
<UL><LI>A (energy)
<LI>B (energy)
<LI>C (energy)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This dihedral style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dihedral_coeff.html">dihedral_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Guo"></A>
<P><B>(Guo)</B> Guo and Thirumalai, Journal of Molecular Biology, 263, 323-43 (1996).
</P>
</HTML>
diff --git a/doc/dihedral_helix.txt b/doc/dihedral_helix.txt
index f68d66e6f..122092498 100644
--- a/doc/dihedral_helix.txt
+++ b/doc/dihedral_helix.txt
@@ -1,58 +1,58 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dihedral_style helix command :h3
[Syntax:]
dihedral_style helix :pre
[Examples:]
dihedral_style helix
dihedral_coeff 1 80.0 100.0 40.0 :pre
[Description:]
The {helix} dihedral style uses the potential
:c,image(Eqs/dihedral_helix.jpg)
This coarse-grain dihedral potential is described in "(Guo)"_#Guo.
For dihedral angles in the helical region, the energy function is
represented by a standard potential consisting of three minima, one
corresponding to the trans (t) state and the other to gauche states
(g+ and g-). The paper describes how the A,B,C parameters are chosen
so as to balance secondary (largely driven by local interactions) and
tertiary structure (driven by long-range interactions).
The following coefficients must be defined for each dihedral type via the
"dihedral_coeff"_dihedral_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
A (energy)
B (energy)
C (energy) :ul
[Restrictions:]
This dihedral style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"dihedral_coeff"_dihedral_coeff.html
[Default:] none
:line
:link(Guo)
[(Guo)] Guo and Thirumalai, Journal of Molecular Biology, 263, 323-43 (1996).
diff --git a/doc/dihedral_hybrid.html b/doc/dihedral_hybrid.html
index d831cbcec..673240052 100644
--- a/doc/dihedral_hybrid.html
+++ b/doc/dihedral_hybrid.html
@@ -1,95 +1,95 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dihedral_style hybrid command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dihedral_style hybrid style1 style2 ...
</PRE>
<UL><LI>style1,style2 = list of one or more dihedral styles
</UL>
<P><B>Examples:</B>
</P>
<PRE>dihedral_style hybrid harmonic helix
dihedral_coeff 1 harmonic 6.0 1 3
dihedral_coeff 2* helix 10 10 10
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>hybrid</I> style enables the use of multiple dihedral styles in one
simulation. An dihedral style is assigned to each dihedral type. For
example, dihedrals in a polymer flow (of dihedral type 1) could be
computed with a <I>harmonic</I> potential and dihedrals in the wall
boundary (of dihedral type 2) could be computed with a <I>helix</I>
potential. The assignment of dihedral type to style is made via the
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command or in the data file.
</P>
<P>In the dihedral_coeff commands, the name of a dihedral style must be
added after the dihedral type, with the remaining coefficients being
those appropriate to that style. In the example above, the 2
dihedral_coeff commands set dihedrals of dihedral type 1 to be
computed with a <I>harmonic</I> potential with coefficients 6.0, 1, 3 for
K, d, n. All other dihedral types (2-N) are computed with a <I>helix</I>
potential with coefficients 10, 10, 10 for A, B, C.
</P>
<P>If dihedral coefficients are specified in the data file read via the
<A HREF = "read_data.html">read_data</A> command, then the same rule applies.
E.g. "harmonic" or "helix", must be added after the dihedral type, for
each line in the "Dihedral Coeffs" section, e.g.
</P>
<PRE>Dihedral Coeffs
</PRE>
<PRE>1 harmonic 6.0 1 3
2 helix 10 10 10
...
</PRE>
<P>If <I>class2</I> is one of the dihedral hybrid styles, the same rule holds
for specifying additional AngleTorsion (and EndBondTorsion, etc)
coefficients either via the input script or in the data file.
I.e. <I>class2</I> must be added to each line after the dihedral type. For
lines in the AngleTorsion (or EndBondTorsion, etc) section of the data
file for dihedral types that are not <I>class2</I>, you must use an
dihedral style of <I>skip</I> as a placeholder, e.g.
</P>
<PRE>AngleTorsion Coeffs
</PRE>
<PRE>1 skip
2 class2 1.0 1.0 1.0 3.0 3.0 3.0 30.0 50.0
...
</PRE>
<P>Note that it is not necessary to use the dihedral style <I>skip</I> in the
input script, since AngleTorsion (or EndBondTorsion, etc) coefficients
need not be specified at all for dihedral types that are not <I>class2</I>.
</P>
<P>A dihedral style of <I>none</I> with no additional coefficients can be used
in place of a dihedral style, either in a input script dihedral_coeff
command or in the data file, if you desire to turn off interactions
for specific dihedral types.
</P>
<P><B>Restrictions:</B>
</P>
<P>This dihedral style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P>Unlike other dihedral styles, the hybrid dihedral style does not store
dihedral coefficient info for individual sub-styles in a <A HREF = "restart.html">binary
restart files</A>. Thus when retarting a simulation from a
restart file, you need to re-specify dihedral_coeff commands.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dihedral_coeff.html">dihedral_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/dihedral_hybrid.txt b/doc/dihedral_hybrid.txt
index e356224c2..74a2ef1b9 100644
--- a/doc/dihedral_hybrid.txt
+++ b/doc/dihedral_hybrid.txt
@@ -1,90 +1,90 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dihedral_style hybrid command :h3
[Syntax:]
dihedral_style hybrid style1 style2 ... :pre
style1,style2 = list of one or more dihedral styles :ul
[Examples:]
dihedral_style hybrid harmonic helix
dihedral_coeff 1 harmonic 6.0 1 3
dihedral_coeff 2* helix 10 10 10 :pre
[Description:]
The {hybrid} style enables the use of multiple dihedral styles in one
simulation. An dihedral style is assigned to each dihedral type. For
example, dihedrals in a polymer flow (of dihedral type 1) could be
computed with a {harmonic} potential and dihedrals in the wall
boundary (of dihedral type 2) could be computed with a {helix}
potential. The assignment of dihedral type to style is made via the
"dihedral_coeff"_dihedral_coeff.html command or in the data file.
In the dihedral_coeff commands, the name of a dihedral style must be
added after the dihedral type, with the remaining coefficients being
those appropriate to that style. In the example above, the 2
dihedral_coeff commands set dihedrals of dihedral type 1 to be
computed with a {harmonic} potential with coefficients 6.0, 1, 3 for
K, d, n. All other dihedral types (2-N) are computed with a {helix}
potential with coefficients 10, 10, 10 for A, B, C.
If dihedral coefficients are specified in the data file read via the
"read_data"_read_data.html command, then the same rule applies.
E.g. "harmonic" or "helix", must be added after the dihedral type, for
each line in the "Dihedral Coeffs" section, e.g.
Dihedral Coeffs :pre
1 harmonic 6.0 1 3
2 helix 10 10 10
... :pre
If {class2} is one of the dihedral hybrid styles, the same rule holds
for specifying additional AngleTorsion (and EndBondTorsion, etc)
coefficients either via the input script or in the data file.
I.e. {class2} must be added to each line after the dihedral type. For
lines in the AngleTorsion (or EndBondTorsion, etc) section of the data
file for dihedral types that are not {class2}, you must use an
dihedral style of {skip} as a placeholder, e.g.
AngleTorsion Coeffs :pre
1 skip
2 class2 1.0 1.0 1.0 3.0 3.0 3.0 30.0 50.0
... :pre
Note that it is not necessary to use the dihedral style {skip} in the
input script, since AngleTorsion (or EndBondTorsion, etc) coefficients
need not be specified at all for dihedral types that are not {class2}.
A dihedral style of {none} with no additional coefficients can be used
in place of a dihedral style, either in a input script dihedral_coeff
command or in the data file, if you desire to turn off interactions
for specific dihedral types.
[Restrictions:]
This dihedral style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
Unlike other dihedral styles, the hybrid dihedral style does not store
dihedral coefficient info for individual sub-styles in a "binary
restart files"_restart.html. Thus when retarting a simulation from a
restart file, you need to re-specify dihedral_coeff commands.
[Related commands:]
"dihedral_coeff"_dihedral_coeff.html
[Default:] none
diff --git a/doc/dihedral_multi_harmonic.html b/doc/dihedral_multi_harmonic.html
index 03dcd350b..0cff3cab2 100644
--- a/doc/dihedral_multi_harmonic.html
+++ b/doc/dihedral_multi_harmonic.html
@@ -1,52 +1,52 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dihedral_style multi/harmonic command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dihedral_style multi/harmonic
</PRE>
<P><B>Examples:</B>
</P>
<PRE>dihedral_style multi/harmonic
dihedral_coeff 1 20 20 20 20 20
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>multi/harmonic</I> dihedral style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/dihedral_multi_harmonic.jpg">
</CENTER>
<P>The following coefficients must be defined for each dihedral type via the
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command as in the example 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:
</P>
<UL><LI>A1 (energy)
<LI>A2 (energy)
<LI>A3 (energy)
<LI>A4 (energy)
<LI>A5 (energy)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This dihedral style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dihedral_coeff.html">dihedral_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/dihedral_multi_harmonic.txt b/doc/dihedral_multi_harmonic.txt
index 4c71dbc3c..e5c9c2939 100644
--- a/doc/dihedral_multi_harmonic.txt
+++ b/doc/dihedral_multi_harmonic.txt
@@ -1,47 +1,47 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dihedral_style multi/harmonic command :h3
[Syntax:]
dihedral_style multi/harmonic :pre
[Examples:]
dihedral_style multi/harmonic
dihedral_coeff 1 20 20 20 20 20 :pre
[Description:]
The {multi/harmonic} dihedral style uses the potential
:c,image(Eqs/dihedral_multi_harmonic.jpg)
The following coefficients must be defined for each dihedral type via the
"dihedral_coeff"_dihedral_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
A1 (energy)
A2 (energy)
A3 (energy)
A4 (energy)
A5 (energy) :ul
[Restrictions:]
This dihedral style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"dihedral_coeff"_dihedral_coeff.html
[Default:] none
diff --git a/doc/dihedral_opls.html b/doc/dihedral_opls.html
index 6861fb600..098a8fed8 100644
--- a/doc/dihedral_opls.html
+++ b/doc/dihedral_opls.html
@@ -1,62 +1,62 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dihedral_style opls command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dihedral_style opls
</PRE>
<P><B>Examples:</B>
</P>
<PRE>dihedral_style opls
dihedral_coeff 1 90.0 90.0 90.0 70.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>opls</I> dihedral style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/dihedral_opls.jpg">
</CENTER>
<P>Note that the usual 1/2 factor is not included in the K values.
</P>
<P>This dihedral potential is used in the OPLS force field and is
described in <A HREF = "#Watkins">(Watkins)</A>.
</P>
<P>The following coefficients must be defined for each dihedral type via the
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command as in the example 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:
</P>
<UL><LI>K1 (energy)
<LI>K2 (energy)
<LI>K3 (energy)
<LI>K4 (energy)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This dihedral style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dihedral_coeff.html">dihedral_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Watkins"></A>
<P><B>(Watkins)</B> Watkins and Jorgensen, J Phys Chem A, 105, 4118-4125 (2001).
</P>
</HTML>
diff --git a/doc/dihedral_opls.txt b/doc/dihedral_opls.txt
index 67c08e654..048e1f363 100644
--- a/doc/dihedral_opls.txt
+++ b/doc/dihedral_opls.txt
@@ -1,56 +1,56 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dihedral_style opls command :h3
[Syntax:]
dihedral_style opls :pre
[Examples:]
dihedral_style opls
dihedral_coeff 1 90.0 90.0 90.0 70.0 :pre
[Description:]
The {opls} dihedral style uses the potential
:c,image(Eqs/dihedral_opls.jpg)
Note that the usual 1/2 factor is not included in the K values.
This dihedral potential is used in the OPLS force field and is
described in "(Watkins)"_#Watkins.
The following coefficients must be defined for each dihedral type via the
"dihedral_coeff"_dihedral_coeff.html command as in the example above, or in
the data file or restart files read by the "read_data"_read_data.html
or "read_restart"_read_restart.html commands:
K1 (energy)
K2 (energy)
K3 (energy)
K4 (energy) :ul
[Restrictions:]
This dihedral style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"dihedral_coeff"_dihedral_coeff.html
[Default:] none
:line
:link(Watkins)
[(Watkins)] Watkins and Jorgensen, J Phys Chem A, 105, 4118-4125 (2001).
diff --git a/doc/dihedral_style.html b/doc/dihedral_style.html
index f13b8d2ab..654f0f81e 100644
--- a/doc/dihedral_style.html
+++ b/doc/dihedral_style.html
@@ -1,115 +1,115 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dihedral_style command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dihedral_style style
</PRE>
<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.
</P>
<P>Here are some important points to take note of when defining the
LAMMPS dihedral coefficients in the formulas that follow so that they
are compatible with other force fields:
</P>
<UL><LI>The LAMMPS convention is that the trans position = 180 degrees, while
in some force fields trans = 0 degrees.
<LI>Some force fields reverse the sign convention on <I>d</I>.
<LI>Some force fields divide/multiply <I>K</I> by the number of multiple
torsions that contain the j-k bond in an i-j-k-l torsion.
<LI>Some force fields let <I>n</I> be positive or negative which corresponds to
<I>d</I> = 1 or -1 for the harmonic style.
</UL>
<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>
<UL><LI><A HREF = "dihedral_none.html">dihedral_style none</A> - turn off dihedral interactions
<LI><A HREF = "dihedral_hybrid.html">dihedral_style hybrid</A> - define multiple styles of dihedral interactions
</UL>
<UL><LI><A HREF = "dihedral_charmm.html">dihedral_style charmm</A> - CHARMM dihedral
<LI><A HREF = "dihedral_class2.html">dihedral_style class2</A> - COMPASS (class 2) dihedral
<LI><A HREF = "dihedral_harmonic.html">dihedral_style harmonic</A> - harmonic dihedral
<LI><A HREF = "dihedral_helix.html">dihedral_style helix</A> - helix dihedral
<LI><A HREF = "dihedral_multi_harmonic.html">dihedral_style multi/harmonic</A> - multi-harmonic dihedral
<LI><A HREF = "dihedral_opls.html">dihedral_style opls</A> - OPLS dihedral
</UL>
<P>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 <A HREF = "Section_commands.html#3_5">this
+the individual styles are given in the dihedral section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>Dihedral styles can only be set for atom styles that allow dihedrals
to be defined.
</P>
<P>Most dihedral styles are part of the "molecular" package. They are
-only enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
-LAMMPS</A> section for more info on packages. The
-doc pages for individual dihedral potentials tell if it is part of a
-package.
+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 on packages.
+The doc pages for individual dihedral potentials tell if it is part of
+a package.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dihedral_coeff.html">dihedral_coeff</A>
</P>
<P><B>Default:</B>
</P>
<P>dihedral_style none
</P>
</HTML>
diff --git a/doc/dihedral_style.txt b/doc/dihedral_style.txt
index a4b9896bb..82c2123de 100644
--- a/doc/dihedral_style.txt
+++ b/doc/dihedral_style.txt
@@ -1,111 +1,111 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dihedral_style command :h3
[Syntax:]
dihedral_style style :pre
style = {none} or {hybrid} or {charmm} or {class2} or {harmonic} or {helix} or \
{multi/harmonic} or {opls} :ul
[Examples:]
dihedral_style harmonic
dihedral_style multi/harmonic
dihedral_style hybrid harmonic charmm :pre
[Description:]
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
"read_data"_read_data.html or "read_restart"_read_restart.html command
from a data or restart file.
Hybrid models where dihedrals are computed using different dihedral
potentials can be setup using the {hybrid} dihedral style.
The coefficients associated with a dihedral style can be specified in
a data or restart file or via the "dihedral_coeff"_dihedral_coeff.html
command.
All dihedral potentials store their coefficient data in binary restart
files which means dihedral_style and
"dihedral_coeff"_dihedral_coeff.html commands do not need to be
re-specified in an input script that restarts a simulation. See the
"read_restart"_read_restart.html command for details on how to do
this. The one exception is that dihedral_style {hybrid} only stores
the list of sub-styles in the restart file; dihedral coefficients need
to be re-specified.
IMPORTANT NOTE: When both a dihedral and pair style is defined, the
"special_bonds"_special_bonds.html command often needs to be used to
turn off (or weight) the pairwise interaction that would otherwise
exist between 4 bonded atoms.
In the formulas listed for each dihedral style, {phi} is the torsional
angle defined by the quadruplet of atoms.
Here are some important points to take note of when defining the
LAMMPS dihedral coefficients in the formulas that follow so that they
are compatible with other force fields:
The LAMMPS convention is that the trans position = 180 degrees, while
in some force fields trans = 0 degrees. :ulb,l
Some force fields reverse the sign convention on {d}. :l
Some force fields divide/multiply {K} by the number of multiple
torsions that contain the j-k bond in an i-j-k-l torsion. :l
Some force fields let {n} be positive or negative which corresponds to
{d} = 1 or -1 for the harmonic style. :ule,l
:line
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 "dihedral_coeff"_dihedral_coeff.html command:
"dihedral_style none"_dihedral_none.html - turn off dihedral interactions
"dihedral_style hybrid"_dihedral_hybrid.html - define multiple styles of dihedral interactions :ul
"dihedral_style charmm"_dihedral_charmm.html - CHARMM dihedral
"dihedral_style class2"_dihedral_class2.html - COMPASS (class 2) dihedral
"dihedral_style harmonic"_dihedral_harmonic.html - harmonic dihedral
"dihedral_style helix"_dihedral_helix.html - helix dihedral
"dihedral_style multi/harmonic"_dihedral_multi_harmonic.html - multi-harmonic dihedral
"dihedral_style opls"_dihedral_opls.html - OPLS dihedral :ul
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 "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
:line
[Restrictions:]
Dihedral styles can only be set for atom styles that allow dihedrals
to be defined.
Most dihedral styles are part of the "molecular" package. They are
only enabled if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages. The
-doc pages for individual dihedral potentials tell if it is part of a
-package.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
+The doc pages for individual dihedral potentials tell if it is part of
+a package.
[Related commands:]
"dihedral_coeff"_dihedral_coeff.html
[Default:]
dihedral_style none
diff --git a/doc/dump.html b/doc/dump.html
index 6f9c2c462..7e599ea3c 100644
--- a/doc/dump.html
+++ b/doc/dump.html
@@ -1,539 +1,540 @@
<HTML>
<CENTER> <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dump command
</H3>
<H3><A HREF = "dump_image.html">dump image</A> command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dump ID group-ID style N file args
</PRE>
<UL><LI>ID = user-assigned name for the dump
<LI>group-ID = ID of the group of atoms to be dumped
<LI>style = <I>atom</I> or <I>cfg</I> or <I>dcd</I> or <I>xtc</I> or <I>xyz</I> or <I>image</I> or <I>local</I> or <I>custom</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>cfg</I> args = same as <I>custom</I> args, see below
<I>dcd</I> args = none
<I>xtc</I> args = none
<I>xyz</I> args = none
</PRE>
<PRE> <I>image</I> args = discussed on <A HREF = "dump_image.html">dump image</A> doc page
</PRE>
<PRE> <I>local</I> args = list of local attributes
possible attributes = index, c_ID, c_ID[N], f_ID, f_ID[N]
index = enumeration of local values
c_ID = local vector calculated by a compute with ID
c_ID[N] = Nth column of local array calculated by a compute with ID
f_ID = local vector calculated by a fix with ID
f_ID[N] = Nth column of local array calculated by a fix with ID
</PRE>
<PRE> <I>custom</I> args = list of atom attributes
possible attributes = id, mol, type, element, mass,
x, y, z, xs, ys, zs, xu, yu, zu,
xsu, ysu, zsu, ix, iy, iz,
vx, vy, vz, fx, fy, fz,
q, mux, muy, muz, mu,
radius, diameter, omegax, omegay, omegaz,
angmomx, angmomy, angmomz, tqx, tqy, tqz,
spin, eradius, ervel, erforce,
c_ID, c_ID[N], f_ID, f_ID[N], v_name
</PRE>
<PRE> id = atom ID
mol = molecule ID
type = atom type
element = name of atom element, as defined by <A HREF = "dump_modify.html">dump_modify</A> command
mass = atom mass
x,y,z = unscaled atom coordinates
xs,ys,zs = scaled atom coordinates
xu,yu,zu = unwrapped atom coordinates
xsu,ysu,zsu = scaled unwrapped atom coordinates
ix,iy,iz = box image that the atom is in
vx,vy,vz = atom velocities
fx,fy,fz = forces on atoms
q = atom charge
mux,muy,muz = orientation of dipole moment of atom
mu = magnitude of dipole moment of atom
radius,diameter = radius,diameter of spherical particle
omegax,omegay,omegaz = angular velocity of extended particle
angmomx,angmomy,angmomz = angular momentum of extended particle
tqx,tqy,tqz = torque on extended particles
spin = electron spin
eradius = electron radius
ervel = electron radial velocity
erforce = electron radial force
c_ID = per-atom vector calculated by a compute with ID
c_ID[N] = Nth column of per-atom array calculated by a compute with ID
f_ID = per-atom vector calculated by a fix with ID
f_ID[N] = Nth 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>
</UL>
<P><B>Examples:</B>
</P>
<PRE>dump myDump all atom 100 dump.atom
dump 2 subgroup atom 50 dump.run.bin
dump 4a all custom 100 dump.myforce.* id type x y vx fx
dump 4b flow custom 100 dump.%.myforce id type c_myF[3] v_ke
dump 2 inner cfg 10 dump.snap.*.cfg id type xs ys zs vx vy vz
dump snap all cfg 100 dump.config.*.cfg id type xs ys zs id type c_Stress<B>2</B>
dump 1 all xtc 1000 file.xtc
dump e_data all custom 100 dump.eff id type x y z spin eradius fx fy fz eforce
</PRE>
<P><B>Description:</B>
</P>
<P>Dump a snapshot of atom quantities to one or more files every N
timesteps in one of several styles. The <I>image</I> style is the
exception; it creates a JPG or PPM image file of the atom
configuration every N timesteps, as discussed on the <A HREF = "dump_image.html">dump
image</A> doc page.
</P>
<P>Only information for atoms in the specified group is dumped. The
<A HREF = "dump_modify.html">dump_modify thresh and region</A> commands can also
alter what atoms are included. Not all styles support all these
options; see details below.
</P>
<P>As described below, the filename determines the kind of output (text
or binary or gzipped, one big file or one per timestep, one big file
or one per processor).
</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>IMPORTANT NOTE: Unless the <A HREF = "dump_modify.html">dump_modify sort</A> option
is invoked, the lines of atom information written to dump files
(typically one line per atom) will be in an indeterminate order for
each snapshot. This is even true when running on a single processor,
if the <A HREF = "atom_modify.html">atom_modify sort</A> option is on, which it is
by default. In this case atoms are re-ordered periodically during a
simulation, due to spatial sorting. It is also true when running in
parallel, because data for a single snapshot is collected from
multiple processors.
</P>
<P>For the <I>atom</I>, <I>custom</I>, <I>cfg</I>, and <I>local</I> styles, sorting is off by
default. For the <I>dcd</I>, <I>xtc</I>, and <I>xyz</I> styles, sorting by atom ID
is on by default. See the <A HREF = "dump_modify.html">dump_modify</A> doc page for
details.
</P>
<HR>
<P>The <I>style</I> keyword determines what atom quantities are written to the
file and in what format. Settings made via the
<A HREF = "dump_modify.html">dump_modify</A> command can also alter the format of
individual values and the file itself.
</P>
<P>The <I>atom</I>, <I>local</I>, and <I>custom</I> styles create files in a simple text
format that is self-explanatory when viewing a dump file. Many of the
LAMMPS <A HREF = "Section_tools.html">post-processing tools</A>, including
<A HREF = "http://www.sandia.gov/~sjplimp/pizza.html">Pizza.py</A>, work with
this format.
</P>
<P>For post-processing purposes the <I>atom</I> and <I>custom</I> text files are
self-describing in the following sense.
</P>
<P>The dimensions of the simulation box are included in each snapshot.
For an orthogonal simulation box this information is is formatted as:
</P>
<PRE>ITEM: BOX BOUNDS xx yy zz
xlo xhi
ylo yhi
zlo zhi
</PRE>
<P>where xlo,xhi are the maximum extents of the simulation box in the
x-dimension, and similarly for y and z. The "xx yy zz" represent 6
characters that encode the style of boundary for each of the 6
simulation box boundaries (xlo,xhi and ylo,yhi and zlo,zhi). Each of
the 6 characters is either p = periodic, f = fixed, s = shrink wrap,
or m = shrink wrapped with a minimum value. See the
<A HREF = "doc/boundary.html">boundary</A> command for details.
</P>
<P>For triclinic simulation boxes (non-orthogonal), an orthogonal
bounding box which encloses the triclinic simulation box is output,
along with the 3 tilt factors (xy, xz, yz) of the triclinic box,
formatted as follows:
</P>
<PRE>ITEM: BOX BOUNDS xy xz yz xx yy zz
xlo_bound xhi_bound xy
ylo_bound yhi_bound xz
zlo_bound zhi_bound yz
</PRE>
<P>The presence of the text "xy xz yz" in the ITEM line indicates that
the 3 tilt factors will be included on each of the 3 following lines.
This bounding box is convenient for many visualization programs. The
meaning of the 6 character flags for "xx yy zz" is the same as above.
</P>
<P>Note that the first two numbers on each line are now xlo_bound instead
-of xlo, etc, since they repesent a bounding box. See <A HREF = "Section_howto.html#4_12">this
+of xlo, etc, since they repesent a bounding box. See <A HREF = "Section_howto.html#howto_12">this
section</A> of the doc pages for a geometric
description of triclinic boxes, as defined by LAMMPS, simple formulas
for how the 6 bounding box extents (xlo_bound,xhi_bound,etc) are
calculated from the triclinic parameters, and how to transform those
parameters to and from other commonly used triclinic representations.
</P>
<P>The "ITEM: ATOMS" line in each snapshot lists column descriptors for
the per-atom lines that follow. For example, the descriptors would be
"id type xs ys zs" for the default <I>atom</I> style, and would be the atom
attributes you specify in the dump command for the <I>custom</I> style.
</P>
<P>For style <I>atom</I>, atom coordinates are written to the file, along with
the atom ID and atom type. By default, atom coords are written in a
scaled format (from 0 to 1). I.e. an x value of 0.25 means the atom
is at a location 1/4 of the distance from xlo to xhi of the box
boundaries. The format can be changed to unscaled coords via the
<A HREF = "dump_modify.html">dump_modify</A> settings. Image flags can also be
added for each atom via dump_modify.
</P>
<P>Style <I>custom</I> allows you to specify a list of atom attributes to be
written to the dump file for each atom. Possible attributes are
listed above and will appear in the order specified. You cannot
specify a quantity that is not defined for a particular simulation -
such as <I>q</I> for atom style <I>bond</I>, since that atom style doesn't
assign charges. Dumps occur at the very end of a timestep, so atom
attributes will include effects due to fixes that are applied during
the timestep. An explanation of the possible dump custom attributes
is given below.
</P>
<P>For style <I>local</I>, local output generated by <A HREF = "compute.html">computes</A>
and <A HREF = "fix.html">fixes</A> is used to gnerate lines of output that is
written to the dump file. This local data is typically calculated by
each processor based on the atoms it owns, but there may be zero or
more entities per atom, e.g. a list of bond distances. An explanation
of the possible dump local attributes is given below. Note that by
using input from the <A HREF = "compute_property_local.html">compute
property/local</A> command with dump local,
it is possible to generate information on bonds, angles, etc that can
be cut and pasted directly into a data file read by the
<A HREF = "read_data.html">read_data</A> command.
</P>
<P>Style <I>cfg</I> has the same command syntax as style <I>custom</I> and writes
extended CFG format files, as used by the
<A HREF = "http://mt.seas.upenn.edu/Archive/Graphics/A">AtomEye</A> visualization
package. Since the extended CFG format uses a single snapshot of the
system per file, a wildcard "*" must be included in the filename, as
discussed below. The list of atom attributes for style <I>cfg</I> must
begin with either "id type xs ys zs" or "id type xsu ysu zsu" or
since these quantities are needed to
write the CFG files in the appropriate format (though the "id" and
"type" fields do not appear explicitly in the file). Any remaining
attributes will be stored as "auxiliary properties" in the CFG files.
Note that you will typically want to use the <A HREF = "dump_modify.html">dump_modify
element</A> command with CFG-formatted files, to
associate element names with atom types, so that AtomEye can render
atoms appropriately. When unwrapped coordinates <I>xsu</I>, <I>ysu</I>, and <I>zsu</I>
are requested, the nominal AtomEye periodic cell dimensions are expanded
by a large factor UNWRAPEXPAND = 10.0, which ensures atoms that are
displayed correctly for up to UNWRAPEXPAND/2 periodic boundary crossings
in any direction.
Beyond this, AtomEye will rewrap the unwrapped coordinates.
The expansion causes the atoms to be drawn farther
away from the viewer, but it is easy to zoom the atoms closer, and
the interatomic distances are unaffected.
</P>
<P>The <I>dcd</I> style writes DCD files, a standard atomic trajectory format
used by the CHARMM, NAMD, and XPlor molecular dynamics packages. DCD
files are binary and thus may not be portable to different machines.
The number of atoms per snapshot cannot change with the <I>dcd</I> style.
The <I>unwrap</I> option of the <A HREF = "dump_modify.html">dump_modify</A> command
allows DCD 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>
<P>The <I>xtc</I> style writes XTC files, a compressed trajectory format used
by the GROMACS molecular dynamics package, and described
<A HREF = "http://manual.gromacs.org/current/online/xtc.html">here</A>.
The precision used in XTC files can be adjusted via the
<A HREF = "dump_modify.html">dump_modify</A> command. The default value of 1000
means that coordinates are stored to 1/1000 nanometer accuracy. XTC
files are portable binary files written in the NFS XDR data format,
so that any machine which supports XDR should be able to read them.
The number of atoms per snapshot cannot change with the <I>xtc</I> style.
The <I>unwrap</I> option of the <A HREF = "dump_modify.html">dump_modify</A> command allows
XTC coordinates to 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>
<P>The <I>xyz</I> style writes XYZ files, which is a simple text-based
coordinate format that many codes can read.
</P>
<P>Note that DCD, XTC, and XYZ formatted files can be read directly by
<A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD</A> (a popular molecular viewing
program). See <A HREF = "Section_tools.html#vmd">this section</A> of the manual and
the tools/lmp2vmd/README.txt file for more information about support
in VMD for reading and visualizing LAMMPS dump files.
</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 <A HREF = "dump_modify.html">dump_modify every</A> command (not allowed
for <I>dcd</I> style).
</P>
<P>The specified filename determines how the dump file(s) is written.
The default is to write one large text file, which is opened when the
dump command is invoked and closed when an <A HREF = "undump.html">undump</A>
command is used or when LAMMPS exits. For the <I>dcd</I> and <I>xtc</I> styles,
this is a single large binary file.
</P>
<P>Dump filenames can contain two wildcard characters. If a "*"
character appears in the filename, then one file per snapshot is
written and the "*" character is replaced with the timestep value.
For example, tmp.dump.* becomes tmp.dump.0, tmp.dump.10000,
tmp.dump.20000, etc. This option is not available for the <I>dcd</I> and
<I>xtc</I> styles. Note that the <A HREF = "dump_modify.html">dump_modify pad</A>
command can be used to insure all timestep numbers are the same length
(e.g. 00010), which can make it easier to read a series of dump files
in order by some post-processing tools.
</P>
<P>If a "%" character appears in the filename, then one file is written
for each processor and the "%" character is replaced with the
processor ID from 0 to P-1. For example, tmp.dump.% becomes
tmp.dump.0, tmp.dump.1, ... tmp.dump.P-1, etc. This creates smaller
files and can be a fast mode of output on parallel machines that
support parallel I/O for output. This option is not available for the
<I>dcd</I>, <I>xtc</I>, and <I>xyz</I> styles.
</P>
<P>Note that the "*" and "%" characters can be used together to produce a
large number of small dump files!
</P>
<P>If the filename ends with ".bin", the dump file (or files, if "*" or
"%" is also used) is written in binary format. A binary dump file
will be about the same size as a text version, but will typically
write out much faster. Of course, when post-processing, you will need
to convert it back to text format (see the <A HREF = "Section_tools.html#binary">binary2txt
tool</A>) or write your own code to read the
binary file. The format of the binary file can be understood by
looking at the tools/binary2txt.cpp file. This option is only
available for the <I>atom</I> and <I>custom</I> styles.
</P>
<P>If the filename ends with ".gz", the dump file (or files, if "*" or "%"
is also used) is written in gzipped format. A gzipped dump file will
be about 3x smaller than the text version, but will also take longer
to write. This option is not available for the <I>dcd</I> and <I>xtc</I>
styles.
</P>
<HR>
<P>This section explains the local attributes that can be specified as
part of the <I>local</I> style.
</P>
<P>The <I>index</I> attribute can be used to generate an index number from 1
to N for each line written into the dump file, where N is the total
number of local datums from all processors, or lines of output that
will appear in the snapshot. Note that because data from different
processors depend on what atoms they currently own, and atoms migrate
between processor, there is no guarantee that the same index will be
used for the same info (e.g. a particular bond) in successive
snapshots.
</P>
<P>The <I>c_ID</I> and <I>c_ID[N]</I> attributes allow local vectors or arrays
calculated by a <A HREF = "compute.html">compute</A> to be output. The ID in the
attribute should be replaced by the actual ID of the compute that has
been defined previously in the input script. See the
<A HREF = "compute.html">compute</A> command for details. There are computes for
calculating local information such as indices, types, and energies for
bonds and angles.
</P>
<P>Note that computes which calculate global or per-atom quantities, as
opposed to local quantities, cannot be output in a dump local command.
Instead, global quantities can be output by the <A HREF = "thermo_style.html">thermo_style
custom</A> command, and per-atom quantities can be
output by the dump custom command.
</P>
<P>If <I>c_ID</I> is used as a attribute, then the local vector calculated by
the compute is printed. If <I>c_ID[N]</I> is used, then N must be in the
range from 1-M, which will print the Nth column of the M-length local
array calculated by the compute.
</P>
<P>The <I>f_ID</I> and <I>f_ID[N]</I> attributes allow local vectors or arrays
calculated by a <A HREF = "fix.html">fix</A> to be output. The ID in the attribute
should be replaced by the actual ID of the fix that has been defined
previously in the input script.
</P>
<P>If <I>f_ID</I> is used as a attribute, then the local vector calculated by
the fix is printed. If <I>f_ID[N]</I> is used, then N must be in the
range from 1-M, which will print the Nth column of the M-length local
array calculated by the fix.
</P>
<HR>
<P>This section explains the atom attributes that can be specified as
part of the <I>custom</I> and <I>cfg</I> styles.
</P>
<P>The <I>id</I>, <I>mol</I>, <I>type</I>, <I>element</I>, <I>mass</I>, <I>vx</I>, <I>vy</I>, <I>vz</I>, <I>fx</I>, <I>fy</I>,
<I>fz</I>, <I>q</I> attributes are self-explanatory.
</P>
<P><I>Id</I> is the atom ID. <I>Mol</I> is the molecule ID, included in the data
file for molecular systems. <I>Type</I> is the atom type. <I>Element</I> is
typically the chemical name of an element, which you must assign to
each type via the <A HREF = "dump_modify.html">dump_modify element</A> command.
More generally, it can be any string you wish to associated with an
atom type. <I>Mass</I> is the atom mass. <I>Vx</I>, <I>vy</I>, <I>vz</I>, <I>fx</I>, <I>fy</I>,
<I>fz</I>, and <I>q</I> are components of atom velocity and force and atomic
charge.
</P>
<P>There are several options for outputting atom coordinates. The <I>x</I>,
<I>y</I>, <I>z</I> attributes write atom coordinates "unscaled", in the
appropriate distance <A HREF = "units.html">units</A> (Angstroms, sigma, etc). Use
<I>xs</I>, <I>ys</I>, <I>zs</I> if you want the coordinates "scaled" to the box size,
so that each value is 0.0 to 1.0. If the simulation box is triclinic
(tilted), then all atom coords will still be between 0.0 and 1.0. Use
<I>xu</I>, <I>yu</I>, <I>zu</I> if you want the coordinates "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 using <I>xu</I>, <I>yu</I>, <I>zu</I> means that the
coordinate values may be far outside the box bounds printed with the
snapshot. Using <I>xsu</I>, <I>ysu</I>, <I>zsu</I> is similar to using <I>xu</I>, <I>yu</I>, <I>zu</I>,
except that the unwrapped coordinates are scaled by the box size. Atoms
that have passed through a periodic boundary will have the corresponding
cooordinate increased or decreased by 1.0.
</P>
<P>The image flags can be printed directly using the <I>ix</I>,
<I>iy</I>, <I>iz</I> attributes. The <A HREF = "dump_modify.html">dump_modify</A> command
describes in more detail what is meant by scaled vs unscaled
coordinates and the image flags.
</P>
<P>The <I>mux</I>, <I>muy</I>, <I>muz</I> attributes are specific to dipolar systems
defined with an atom style of <I>dipole</I>. They give the orientation of
the atom's point dipole moment. The <I>mu</I> attribute gives the
magnitude of the atom's dipole moment.
</P>
<P>The <I>radius</I> and <I>diameter</I> attributes are specific to extended
spherical particles that have a finite size, such as those defined
with an atom style of <I>sphere</I>.
</P>
<P>The <I>omegax</I>, <I>omegay</I>, and <I>omegaz</I> attributes are specific to
extended spherical or aspherical particles that have an angular
velocity. Only certain atom styles, such as <I>sphere</I> define this
quantity.
</P>
<P>The <I>angmomx</I>, <I>angmomy</I>, and <I>angmomz</I> attributes are specific to
extended aspherical particles that have an angular momentum. Only
the <I>ellipsoid</I> atom style defines this quantity.
</P>
<P>The <I>tqx</I>, <I>tqy</I>, <I>tqz</I> attributes are for extended spherical or
aspherical particles that can sustain a rotational torque due
to interactions with other particles.
</P>
<P>The <I>spin</I>, <I>eradius</I>, <I>ervel</I>, and <I>erforce</I> attributes are for
particles that represent nuclei and electrons modeled with the
electronic force field (EFF). See <A HREF = "atom_style.html">atom_style
electron</A> and <A HREF = "pair_eff.html">pair_style eff</A> for more
details.
</P>
<P>The <I>c_ID</I> and <I>c_ID[N]</I> attributes allow per-atom vectors or arrays
calculated by a <A HREF = "compute.html">compute</A> to be output. The ID in the
attribute should be replaced by the actual ID of the compute that has
been defined previously in the input script. See the
<A HREF = "compute.html">compute</A> command for details. There are computes for
calculating the per-atom energy, stress, centro-symmetry parameter,
and coordination number of individual atoms.
</P>
<P>Note that computes which calculate global or local quantities, as
opposed to per-atom quantities, cannot be output in a dump custom
command. Instead, global quantities can be output by the
<A HREF = "thermo_style.html">thermo_style custom</A> command, and local quantities
can be output by the dump local command.
</P>
<P>If <I>c_ID</I> is used as a attribute, then the per-atom vector calculated
by the compute is printed. If <I>c_ID[N]</I> is used, then N must be in
the range from 1-M, which will print the Nth column of the M-length
per-atom array calculated by the compute.
</P>
<P>The <I>f_ID</I> and <I>f_ID[N]</I> attributes allow vector or array per-atom
quantities calculated by a <A HREF = "fix.html">fix</A> to be output. The ID in the
attribute should be replaced by the actual ID of the fix that has been
defined previously in the input script. The <A HREF = "fix_ave_atom.html">fix
ave/atom</A> command is one that calculates per-atom
quantities. Since it can time-average per-atom quantities produced by
any <A HREF = "compute.html">compute</A>, <A HREF = "fix.html">fix</A>, or atom-style
<A HREF = "variable.html">variable</A>, this allows those time-averaged results to
be written to a dump file.
</P>
<P>If <I>f_ID</I> is used as a attribute, then the per-atom vector calculated
by the fix is printed. If <I>f_ID[N]</I> is used, then N must be in the
range from 1-M, which will print the Nth column of the M-length
per-atom array calculated by the fix.
</P>
<P>The <I>v_name</I> attribute allows per-atom vectors calculated by a
<A HREF = "variable.html">variable</A> to be output. The name in the attribute
should be replaced by the actual name of the variable that has been
defined previously in the input script. Only an atom-style variable
can be referenced, since it is the only style that generates per-atom
values. Variables of style <I>atom</I> can reference individual atom
attributes, per-atom atom attributes, thermodynamic keywords, or
invoke other computes, fixes, or variables when they are evaluated, so
this is a very general means of creating quantities to output to a
dump file.
</P>
<P>See <A HREF = "Section_modify.html">this section</A> of the manual for information
on how to add new compute and fix styles to LAMMPS to calculate
per-atom quantities which could then be output into dump files.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>To write gzipped dump files, you must compile LAMMPS with the
--DLAMMPS_GZIP option - see the <A HREF = "Section_start.html#2_2">Making LAMMPS</A>
-section of the documentation.
+-DLAMMPS_GZIP option - see the <A HREF = "Section_start.html#start_2">Making
+LAMMPS</A> section of the documentation.
</P>
<P>The <I>xtc</I> style is part of the "xtc" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
-LAMMPS</A> section for more info. This is because
-some machines may not support the low-level XDR data format that XTC
-files are written with, which will result in a compile-time error when
-a low-level include file is not found. Putting this style in a package
-makes it easy to exclude from a LAMMPS build for those machines.
-However, the XTC package also includes two compatibility header files
-and associated functions, which should be a suitable substitute on
-machines that do not have the appropriate native header files. This
-option can be invoked at build time by adding -DLAMMPS_XDR to the
-CCFLAGS variable in the appropriate low-level Makefile,
-e.g. src/MAKE/Makefile.foo. This compatibility mode has been tested
-successfully on Cray XT3/XT4/XT5 and IBM BlueGene/L machines and
-should also work on IBM BG/P, and Windows XP/Vista/7 machines.
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info. This is
+because some machines may not support the low-level XDR data format
+that XTC files are written with, which will result in a compile-time
+error when a low-level include file is not found. Putting this style
+in a package makes it easy to exclude from a LAMMPS build for those
+machines. However, the XTC package also includes two compatibility
+header files and associated functions, which should be a suitable
+substitute on machines that do not have the appropriate native header
+files. This option can be invoked at build time by adding
+-DLAMMPS_XDR to the CCFLAGS variable in the appropriate low-level
+Makefile, e.g. src/MAKE/Makefile.foo. This compatibility mode has
+been tested successfully on Cray XT3/XT4/XT5 and IBM BlueGene/L
+machines and should also work on IBM BG/P, and Windows XP/Vista/7
+machines.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump_image.html">dump image</A>, <A HREF = "dump_modify.html">dump_modify</A>,
<A HREF = "undump.html">undump</A>
</P>
<P><B>Default:</B>
</P>
<P>The defaults for the image style are listed on the <A HREF = "dump_image.html">dump
image</A> doc page.
</P>
</HTML>
diff --git a/doc/dump.txt b/doc/dump.txt
index 02f10b1d1..96b3126b4 100644
--- a/doc/dump.txt
+++ b/doc/dump.txt
@@ -1,526 +1,527 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dump command :h3
"dump image"_dump_image.html command :h3
[Syntax:]
dump ID group-ID style N file args :pre
ID = user-assigned name for the dump :ulb,l
group-ID = ID of the group of atoms to be dumped :l
style = {atom} or {cfg} or {dcd} or {xtc} or {xyz} or {image} or {local} or {custom} :l
N = dump every this many timesteps :l
file = name of file to write dump info to :l
args = list of arguments for a particular style :l
{atom} args = none
{cfg} args = same as {custom} args, see below
{dcd} args = none
{xtc} args = none
{xyz} args = none :pre
{image} args = discussed on "dump image"_dump_image.html doc page :pre
{local} args = list of local attributes
possible attributes = index, c_ID, c_ID\[N\], f_ID, f_ID\[N\]
index = enumeration of local values
c_ID = local vector calculated by a compute with ID
c_ID\[N\] = Nth column of local array calculated by a compute with ID
f_ID = local vector calculated by a fix with ID
f_ID\[N\] = Nth column of local array calculated by a fix with ID :pre
{custom} args = list of atom attributes
possible attributes = id, mol, type, element, mass,
x, y, z, xs, ys, zs, xu, yu, zu,
xsu, ysu, zsu, ix, iy, iz,
vx, vy, vz, fx, fy, fz,
q, mux, muy, muz, mu,
radius, diameter, omegax, omegay, omegaz,
angmomx, angmomy, angmomz, tqx, tqy, tqz,
spin, eradius, ervel, erforce,
c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :pre
id = atom ID
mol = molecule ID
type = atom type
element = name of atom element, as defined by "dump_modify"_dump_modify.html command
mass = atom mass
x,y,z = unscaled atom coordinates
xs,ys,zs = scaled atom coordinates
xu,yu,zu = unwrapped atom coordinates
xsu,ysu,zsu = scaled unwrapped atom coordinates
ix,iy,iz = box image that the atom is in
vx,vy,vz = atom velocities
fx,fy,fz = forces on atoms
q = atom charge
mux,muy,muz = orientation of dipole moment of atom
mu = magnitude of dipole moment of atom
radius,diameter = radius,diameter of spherical particle
omegax,omegay,omegaz = angular velocity of extended particle
angmomx,angmomy,angmomz = angular momentum of extended particle
tqx,tqy,tqz = torque on extended particles
spin = electron spin
eradius = electron radius
ervel = electron radial velocity
erforce = electron radial force
c_ID = per-atom vector calculated by a compute with ID
c_ID\[N\] = Nth column of per-atom array calculated by a compute with ID
f_ID = per-atom vector calculated by a fix with ID
f_ID\[N\] = Nth 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
:ule
[Examples:]
dump myDump all atom 100 dump.atom
dump 2 subgroup atom 50 dump.run.bin
dump 4a all custom 100 dump.myforce.* id type x y vx fx
dump 4b flow custom 100 dump.%.myforce id type c_myF\[3\] v_ke
dump 2 inner cfg 10 dump.snap.*.cfg id type xs ys zs vx vy vz
dump snap all cfg 100 dump.config.*.cfg id type xs ys zs id type c_Stress[2]
dump 1 all xtc 1000 file.xtc
dump e_data all custom 100 dump.eff id type x y z spin eradius fx fy fz eforce :pre
[Description:]
Dump a snapshot of atom quantities to one or more files every N
timesteps in one of several styles. The {image} style is the
exception; it creates a JPG or PPM image file of the atom
configuration every N timesteps, as discussed on the "dump
image"_dump_image.html doc page.
Only information for atoms in the specified group is dumped. The
"dump_modify thresh and region"_dump_modify.html commands can also
alter what atoms are included. Not all styles support all these
options; see details below.
As described below, the filename determines the kind of output (text
or binary or gzipped, one big file or one per timestep, one big file
or one per processor).
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.
IMPORTANT NOTE: Unless the "dump_modify sort"_dump_modify.html option
is invoked, the lines of atom information written to dump files
(typically one line per atom) will be in an indeterminate order for
each snapshot. This is even true when running on a single processor,
if the "atom_modify sort"_atom_modify.html option is on, which it is
by default. In this case atoms are re-ordered periodically during a
simulation, due to spatial sorting. It is also true when running in
parallel, because data for a single snapshot is collected from
multiple processors.
For the {atom}, {custom}, {cfg}, and {local} styles, sorting is off by
default. For the {dcd}, {xtc}, and {xyz} styles, sorting by atom ID
is on by default. See the "dump_modify"_dump_modify.html doc page for
details.
:line
The {style} keyword determines what atom quantities are written to the
file and in what format. Settings made via the
"dump_modify"_dump_modify.html command can also alter the format of
individual values and the file itself.
The {atom}, {local}, and {custom} styles create files in a simple text
format that is self-explanatory when viewing a dump file. Many of the
LAMMPS "post-processing tools"_Section_tools.html, including
"Pizza.py"_http://www.sandia.gov/~sjplimp/pizza.html, work with
this format.
For post-processing purposes the {atom} and {custom} text files are
self-describing in the following sense.
The dimensions of the simulation box are included in each snapshot.
For an orthogonal simulation box this information is is formatted as:
ITEM: BOX BOUNDS xx yy zz
xlo xhi
ylo yhi
zlo zhi :pre
where xlo,xhi are the maximum extents of the simulation box in the
x-dimension, and similarly for y and z. The "xx yy zz" represent 6
characters that encode the style of boundary for each of the 6
simulation box boundaries (xlo,xhi and ylo,yhi and zlo,zhi). Each of
the 6 characters is either p = periodic, f = fixed, s = shrink wrap,
or m = shrink wrapped with a minimum value. See the
"boundary"_doc/boundary.html command for details.
For triclinic simulation boxes (non-orthogonal), an orthogonal
bounding box which encloses the triclinic simulation box is output,
along with the 3 tilt factors (xy, xz, yz) of the triclinic box,
formatted as follows:
ITEM: BOX BOUNDS xy xz yz xx yy zz
xlo_bound xhi_bound xy
ylo_bound yhi_bound xz
zlo_bound zhi_bound yz :pre
The presence of the text "xy xz yz" in the ITEM line indicates that
the 3 tilt factors will be included on each of the 3 following lines.
This bounding box is convenient for many visualization programs. The
meaning of the 6 character flags for "xx yy zz" is the same as above.
Note that the first two numbers on each line are now xlo_bound instead
of xlo, etc, since they repesent a bounding box. See "this
-section"_Section_howto.html#4_12 of the doc pages for a geometric
+section"_Section_howto.html#howto_12 of the doc pages for a geometric
description of triclinic boxes, as defined by LAMMPS, simple formulas
for how the 6 bounding box extents (xlo_bound,xhi_bound,etc) are
calculated from the triclinic parameters, and how to transform those
parameters to and from other commonly used triclinic representations.
The "ITEM: ATOMS" line in each snapshot lists column descriptors for
the per-atom lines that follow. For example, the descriptors would be
"id type xs ys zs" for the default {atom} style, and would be the atom
attributes you specify in the dump command for the {custom} style.
For style {atom}, atom coordinates are written to the file, along with
the atom ID and atom type. By default, atom coords are written in a
scaled format (from 0 to 1). I.e. an x value of 0.25 means the atom
is at a location 1/4 of the distance from xlo to xhi of the box
boundaries. The format can be changed to unscaled coords via the
"dump_modify"_dump_modify.html settings. Image flags can also be
added for each atom via dump_modify.
Style {custom} allows you to specify a list of atom attributes to be
written to the dump file for each atom. Possible attributes are
listed above and will appear in the order specified. You cannot
specify a quantity that is not defined for a particular simulation -
such as {q} for atom style {bond}, since that atom style doesn't
assign charges. Dumps occur at the very end of a timestep, so atom
attributes will include effects due to fixes that are applied during
the timestep. An explanation of the possible dump custom attributes
is given below.
For style {local}, local output generated by "computes"_compute.html
and "fixes"_fix.html is used to gnerate lines of output that is
written to the dump file. This local data is typically calculated by
each processor based on the atoms it owns, but there may be zero or
more entities per atom, e.g. a list of bond distances. An explanation
of the possible dump local attributes is given below. Note that by
using input from the "compute
property/local"_compute_property_local.html command with dump local,
it is possible to generate information on bonds, angles, etc that can
be cut and pasted directly into a data file read by the
"read_data"_read_data.html command.
Style {cfg} has the same command syntax as style {custom} and writes
extended CFG format files, as used by the
"AtomEye"_http://mt.seas.upenn.edu/Archive/Graphics/A visualization
package. Since the extended CFG format uses a single snapshot of the
system per file, a wildcard "*" must be included in the filename, as
discussed below. The list of atom attributes for style {cfg} must
begin with either "id type xs ys zs" or "id type xsu ysu zsu" or
since these quantities are needed to
write the CFG files in the appropriate format (though the "id" and
"type" fields do not appear explicitly in the file). Any remaining
attributes will be stored as "auxiliary properties" in the CFG files.
Note that you will typically want to use the "dump_modify
element"_dump_modify.html command with CFG-formatted files, to
associate element names with atom types, so that AtomEye can render
atoms appropriately. When unwrapped coordinates {xsu}, {ysu}, and {zsu}
are requested, the nominal AtomEye periodic cell dimensions are expanded
by a large factor UNWRAPEXPAND = 10.0, which ensures atoms that are
displayed correctly for up to UNWRAPEXPAND/2 periodic boundary crossings
in any direction.
Beyond this, AtomEye will rewrap the unwrapped coordinates.
The expansion causes the atoms to be drawn farther
away from the viewer, but it is easy to zoom the atoms closer, and
the interatomic distances are unaffected.
The {dcd} style writes DCD files, a standard atomic trajectory format
used by the CHARMM, NAMD, and XPlor molecular dynamics packages. DCD
files are binary and thus may not be portable to different machines.
The number of atoms per snapshot cannot change with the {dcd} style.
The {unwrap} option of the "dump_modify"_dump_modify.html command
allows DCD 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.
The {xtc} style writes XTC files, a compressed trajectory format used
by the GROMACS molecular dynamics package, and described
"here"_http://manual.gromacs.org/current/online/xtc.html.
The precision used in XTC files can be adjusted via the
"dump_modify"_dump_modify.html command. The default value of 1000
means that coordinates are stored to 1/1000 nanometer accuracy. XTC
files are portable binary files written in the NFS XDR data format,
so that any machine which supports XDR should be able to read them.
The number of atoms per snapshot cannot change with the {xtc} style.
The {unwrap} option of the "dump_modify"_dump_modify.html command allows
XTC coordinates to 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.
The {xyz} style writes XYZ files, which is a simple text-based
coordinate format that many codes can read.
Note that DCD, XTC, and XYZ formatted files can be read directly by
"VMD"_http://www.ks.uiuc.edu/Research/vmd (a popular molecular viewing
program). See "this section"_Section_tools.html#vmd of the manual and
the tools/lmp2vmd/README.txt file for more information about support
in VMD for reading and visualizing LAMMPS dump files.
:line
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 "dump_modify first"_dump_modify.html 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 "dump_modify every"_dump_modify.html command (not allowed
for {dcd} style).
The specified filename determines how the dump file(s) is written.
The default is to write one large text file, which is opened when the
dump command is invoked and closed when an "undump"_undump.html
command is used or when LAMMPS exits. For the {dcd} and {xtc} styles,
this is a single large binary file.
Dump filenames can contain two wildcard characters. If a "*"
character appears in the filename, then one file per snapshot is
written and the "*" character is replaced with the timestep value.
For example, tmp.dump.* becomes tmp.dump.0, tmp.dump.10000,
tmp.dump.20000, etc. This option is not available for the {dcd} and
{xtc} styles. Note that the "dump_modify pad"_dump_modify.html
command can be used to insure all timestep numbers are the same length
(e.g. 00010), which can make it easier to read a series of dump files
in order by some post-processing tools.
If a "%" character appears in the filename, then one file is written
for each processor and the "%" character is replaced with the
processor ID from 0 to P-1. For example, tmp.dump.% becomes
tmp.dump.0, tmp.dump.1, ... tmp.dump.P-1, etc. This creates smaller
files and can be a fast mode of output on parallel machines that
support parallel I/O for output. This option is not available for the
{dcd}, {xtc}, and {xyz} styles.
Note that the "*" and "%" characters can be used together to produce a
large number of small dump files!
If the filename ends with ".bin", the dump file (or files, if "*" or
"%" is also used) is written in binary format. A binary dump file
will be about the same size as a text version, but will typically
write out much faster. Of course, when post-processing, you will need
to convert it back to text format (see the "binary2txt
tool"_Section_tools.html#binary) or write your own code to read the
binary file. The format of the binary file can be understood by
looking at the tools/binary2txt.cpp file. This option is only
available for the {atom} and {custom} styles.
If the filename ends with ".gz", the dump file (or files, if "*" or "%"
is also used) is written in gzipped format. A gzipped dump file will
be about 3x smaller than the text version, but will also take longer
to write. This option is not available for the {dcd} and {xtc}
styles.
:line
This section explains the local attributes that can be specified as
part of the {local} style.
The {index} attribute can be used to generate an index number from 1
to N for each line written into the dump file, where N is the total
number of local datums from all processors, or lines of output that
will appear in the snapshot. Note that because data from different
processors depend on what atoms they currently own, and atoms migrate
between processor, there is no guarantee that the same index will be
used for the same info (e.g. a particular bond) in successive
snapshots.
The {c_ID} and {c_ID\[N\]} attributes allow local vectors or arrays
calculated by a "compute"_compute.html to be output. The ID in the
attribute should be replaced by the actual ID of the compute that has
been defined previously in the input script. See the
"compute"_compute.html command for details. There are computes for
calculating local information such as indices, types, and energies for
bonds and angles.
Note that computes which calculate global or per-atom quantities, as
opposed to local quantities, cannot be output in a dump local command.
Instead, global quantities can be output by the "thermo_style
custom"_thermo_style.html command, and per-atom quantities can be
output by the dump custom command.
If {c_ID} is used as a attribute, then the local vector calculated by
the compute is printed. If {c_ID\[N\]} is used, then N must be in the
range from 1-M, which will print the Nth column of the M-length local
array calculated by the compute.
The {f_ID} and {f_ID\[N\]} attributes allow local vectors or arrays
calculated by a "fix"_fix.html to be output. The ID in the attribute
should be replaced by the actual ID of the fix that has been defined
previously in the input script.
If {f_ID} is used as a attribute, then the local vector calculated by
the fix is printed. If {f_ID\[N\]} is used, then N must be in the
range from 1-M, which will print the Nth column of the M-length local
array calculated by the fix.
:line
This section explains the atom attributes that can be specified as
part of the {custom} and {cfg} styles.
The {id}, {mol}, {type}, {element}, {mass}, {vx}, {vy}, {vz}, {fx}, {fy},
{fz}, {q} attributes are self-explanatory.
{Id} is the atom ID. {Mol} is the molecule ID, included in the data
file for molecular systems. {Type} is the atom type. {Element} is
typically the chemical name of an element, which you must assign to
each type via the "dump_modify element"_dump_modify.html command.
More generally, it can be any string you wish to associated with an
atom type. {Mass} is the atom mass. {Vx}, {vy}, {vz}, {fx}, {fy},
{fz}, and {q} are components of atom velocity and force and atomic
charge.
There are several options for outputting atom coordinates. The {x},
{y}, {z} attributes write atom coordinates "unscaled", in the
appropriate distance "units"_units.html (Angstroms, sigma, etc). Use
{xs}, {ys}, {zs} if you want the coordinates "scaled" to the box size,
so that each value is 0.0 to 1.0. If the simulation box is triclinic
(tilted), then all atom coords will still be between 0.0 and 1.0. Use
{xu}, {yu}, {zu} if you want the coordinates "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 using {xu}, {yu}, {zu} means that the
coordinate values may be far outside the box bounds printed with the
snapshot. Using {xsu}, {ysu}, {zsu} is similar to using {xu}, {yu}, {zu},
except that the unwrapped coordinates are scaled by the box size. Atoms
that have passed through a periodic boundary will have the corresponding
cooordinate increased or decreased by 1.0.
The image flags can be printed directly using the {ix},
{iy}, {iz} attributes. The "dump_modify"_dump_modify.html command
describes in more detail what is meant by scaled vs unscaled
coordinates and the image flags.
The {mux}, {muy}, {muz} attributes are specific to dipolar systems
defined with an atom style of {dipole}. They give the orientation of
the atom's point dipole moment. The {mu} attribute gives the
magnitude of the atom's dipole moment.
The {radius} and {diameter} attributes are specific to extended
spherical particles that have a finite size, such as those defined
with an atom style of {sphere}.
The {omegax}, {omegay}, and {omegaz} attributes are specific to
extended spherical or aspherical particles that have an angular
velocity. Only certain atom styles, such as {sphere} define this
quantity.
The {angmomx}, {angmomy}, and {angmomz} attributes are specific to
extended aspherical particles that have an angular momentum. Only
the {ellipsoid} atom style defines this quantity.
The {tqx}, {tqy}, {tqz} attributes are for extended spherical or
aspherical particles that can sustain a rotational torque due
to interactions with other particles.
The {spin}, {eradius}, {ervel}, and {erforce} attributes are for
particles that represent nuclei and electrons modeled with the
electronic force field (EFF). See "atom_style
electron"_atom_style.html and "pair_style eff"_pair_eff.html for more
details.
The {c_ID} and {c_ID\[N\]} attributes allow per-atom vectors or arrays
calculated by a "compute"_compute.html to be output. The ID in the
attribute should be replaced by the actual ID of the compute that has
been defined previously in the input script. See the
"compute"_compute.html command for details. There are computes for
calculating the per-atom energy, stress, centro-symmetry parameter,
and coordination number of individual atoms.
Note that computes which calculate global or local quantities, as
opposed to per-atom quantities, cannot be output in a dump custom
command. Instead, global quantities can be output by the
"thermo_style custom"_thermo_style.html command, and local quantities
can be output by the dump local command.
If {c_ID} is used as a attribute, then the per-atom vector calculated
by the compute is printed. If {c_ID\[N\]} is used, then N must be in
the range from 1-M, which will print the Nth column of the M-length
per-atom array calculated by the compute.
The {f_ID} and {f_ID\[N\]} attributes allow vector or array per-atom
quantities calculated by a "fix"_fix.html to be output. The ID in the
attribute should be replaced by the actual ID of the fix that has been
defined previously in the input script. The "fix
ave/atom"_fix_ave_atom.html command is one that calculates per-atom
quantities. Since it can time-average per-atom quantities produced by
any "compute"_compute.html, "fix"_fix.html, or atom-style
"variable"_variable.html, this allows those time-averaged results to
be written to a dump file.
If {f_ID} is used as a attribute, then the per-atom vector calculated
by the fix is printed. If {f_ID\[N\]} is used, then N must be in the
range from 1-M, which will print the Nth column of the M-length
per-atom array calculated by the fix.
The {v_name} attribute allows per-atom vectors calculated by a
"variable"_variable.html to be output. The name in the attribute
should be replaced by the actual name of the variable that has been
defined previously in the input script. Only an atom-style variable
can be referenced, since it is the only style that generates per-atom
values. Variables of style {atom} can reference individual atom
attributes, per-atom atom attributes, thermodynamic keywords, or
invoke other computes, fixes, or variables when they are evaluated, so
this is a very general means of creating quantities to output to a
dump file.
See "this section"_Section_modify.html of the manual for information
on how to add new compute and fix styles to LAMMPS to calculate
per-atom quantities which could then be output into dump files.
:line
[Restrictions:]
To write gzipped dump files, you must compile LAMMPS with the
--DLAMMPS_GZIP option - see the "Making LAMMPS"_Section_start.html#2_2
-section of the documentation.
+-DLAMMPS_GZIP option - see the "Making
+LAMMPS"_Section_start.html#start_2 section of the documentation.
The {xtc} style is part of the "xtc" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info. This is because
-some machines may not support the low-level XDR data format that XTC
-files are written with, which will result in a compile-time error when
-a low-level include file is not found. Putting this style in a package
-makes it easy to exclude from a LAMMPS build for those machines.
-However, the XTC package also includes two compatibility header files
-and associated functions, which should be a suitable substitute on
-machines that do not have the appropriate native header files. This
-option can be invoked at build time by adding -DLAMMPS_XDR to the
-CCFLAGS variable in the appropriate low-level Makefile,
-e.g. src/MAKE/Makefile.foo. This compatibility mode has been tested
-successfully on Cray XT3/XT4/XT5 and IBM BlueGene/L machines and
-should also work on IBM BG/P, and Windows XP/Vista/7 machines.
+LAMMPS"_Section_start.html#start_3 section for more info. This is
+because some machines may not support the low-level XDR data format
+that XTC files are written with, which will result in a compile-time
+error when a low-level include file is not found. Putting this style
+in a package makes it easy to exclude from a LAMMPS build for those
+machines. However, the XTC package also includes two compatibility
+header files and associated functions, which should be a suitable
+substitute on machines that do not have the appropriate native header
+files. This option can be invoked at build time by adding
+-DLAMMPS_XDR to the CCFLAGS variable in the appropriate low-level
+Makefile, e.g. src/MAKE/Makefile.foo. This compatibility mode has
+been tested successfully on Cray XT3/XT4/XT5 and IBM BlueGene/L
+machines and should also work on IBM BG/P, and Windows XP/Vista/7
+machines.
[Related commands:]
"dump image"_dump_image.html, "dump_modify"_dump_modify.html,
"undump"_undump.html
[Default:]
The defaults for the image style are listed on the "dump
image"_dump_image.html doc page.
diff --git a/doc/dump_image.html b/doc/dump_image.html
index ab2cda6df..65eda7079 100644
--- a/doc/dump_image.html
+++ b/doc/dump_image.html
@@ -1,455 +1,455 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>dump image command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>dump ID group-ID image 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>image = 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>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
width = width of image in # of pixels
height = height of image in # of pixels
<I>view</I> values = theta phi = view of simulation box
theta = view angle from +z axis (degrees)
phi = azimuthal view angle (degrees)
theta or phi can be a variable (see below)
<I>center</I> values = flag Cx Cy Cz = center point of image
flag = "s" for static, "d" for dynamic
Cx,Cy,Cz = center point of image as fraction of box dimension (0.5 = center of box)
Cx,Cy,Cz can be variables (see below)
<I>up</I> values = Ux Uy Uz = direction that is "up" in image
Ux,Uy,Uz = components of up vector
Ux,Uy,Uz can be variables (see below)
<I>zoom</I> value = zfactor = size that simulation box appears in image
zfactor = scale image size by factor > 1 to enlarge, factor < 1 to shrink
zfactor can be a variable (see below)
<I>persp</I> value = pfactor = amount of "perspective" in image
pfactor = amount of perspective (0 = none, < 1 = some, > 1 = highly skewed)
pfactor can be a variable (see below)
<I>box</I> values = yes/no diam = draw outline of simulation box
yes/no = do or do not draw simulation box lines
diam = diameter of box lines as fraction of shortest box length
<I>axes</I> values = yes/no length diam = draw xyz axes
yes/no = do or do not draw xyz axes lines next to simulation box
length = length of axes lines as fraction of respective box lengths
diam = diameter of axes lines as fraction of shortest box length
<I>shiny</I> value = sfactor = shinyness of spheres and cylinders
sfactor = shinyness of spheres and cylinders from 0.0 to 1.0
<I>ssao</I> value = yes/no seed dfactor = SSAO depth shading
yes/no = turn depth shading on/off
seed = random # seed (positive integer)
dfactor = strength of shading from 0.0 to 1.0
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>dump myDump all image 100 dump.*.jpg type type
</PRE>
<P><B>Description:</B>
</P>
<P>Dump a high-quality ray-traced image of the atom configuration every N
timesteps as either a JPG or PPM file. A series of such images can
easily be converted into an animated movie of your simulation; see
further details below. Other dump styles store snapshots of numerical
data asociated with atoms in various formats, as discussed on the
<A HREF = "dump.html">dump</A> doc page.
</P>
<P>Here are two sample images, rendered as 1024x1024 JPG files. Click to
see the full-size images:
</P>
<DIV ALIGN=center>
<A HREF = "JPG/dump1.jpg"><IMG SRC = "JPG/dump1_small.jpg"></A>
<A HREF = "JPG/dump2.jpg"><IMG SRC = "JPG/dump2_small.jpg"></A>
</DIV>
<P>Only atoms in the specified group are rendered in the image. The
<A HREF = "dump_modify.html">dump_modify region and thresh</A> commands can also
alter what atoms are included in the image.
</P>
<P>The filename suffix determines whether a JPG or PPM file is created.
If the suffix is ".jpg" or ".jpeg", then a JPG file is created, else a
PPM file is created, which is a text-based format. To write out JPG
-files, you must build LAMMPS with a JPEG library. See <A HREF = "Section_start.html#2_2_4">this
-section</A> of the manual for instructions on
-how to do this.
+files, you must build LAMMPS with a JPEG library. See <A HREF = "Section_start.html#start_2_4">this
+section</A> of the manual for instructions
+on how to do this.
</P>
<P>IMPORTANT NOTE: Because periodic boundary conditions are enforced only
on timesteps when neighbor lists are rebuilt, the coordinates of an
atom in the image may be slightly outside the simulation box.
</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 <A HREF = "dump_modify.html">dump_modify every</A> command.
</P>
<P>Dump image filenames must contain a wildcard character "*", so that
one image file per snapshot is written. The "*" character is replaced
with the timestep value. For example, tmp.dump.*.jpg becomes
tmp.dump.0.jpg, tmp.dump.10000.jpg, tmp.dump.20000.jpg, etc. Note
that the <A HREF = "dump_modify.html">dump_modify pad</A> command can be used to
insure all timestep numbers are the same length (e.g. 00010), which
can make it easier to convert a series of images into a movie in the
correct ordering.
</P>
<HR>
<P>The <I>color</I> and <I>diameter</I> settings determine the color and size of
atoms rendered in the image. They can be any atom attribute defined
for the <A HREF = "dump.html">dump custom</A> command, including <I>type</I> and
<I>element</I>. This includes per-atom quantities calculated by a
<A HREF = "compute.html">compute</A>, <A HREF = "fix.html">fix</A>, or <A HREF = "variable.html">variable</A>,
which are prefixed by "c_", "f_", or "v_" respectively. Note that the
<I>diameter</I> setting can be overridden with a numeric value by the
optional <I>adiam</I> keyword, in which case you can specify the <I>diameter</I>
setting with any valid atom attribute.
</P>
<P>If <I>type</I> is specified for the <I>color</I> setting, then the color of each
atom is determined by its atom type. By default the mapping of types
to colors is as follows:
</P>
<UL><LI>type 1 = red
<LI>type 2 = green
<LI>type 3 = blue
<LI>type 4 = yellow
<LI>type 5 = aqua
<LI>type 6 = cyan
</UL>
<P>and repeats itself for types > 6. This mapping can be changed by the
<A HREF = "dump_modify.html">dump_modify acolor</A> command.
</P>
<P>If <I>type</I> is specified for the <I>diameter</I> setting then the diameter of
each atom is determined by its atom type. By default all types have
diameter 1.0. This mapping can be changed by the <A HREF = "dump_modify.html">dump_modify
adiam</A> command.
</P>
<P>If <I>element</I> is specified for the <I>color</I> and/or <I>diameter</I> setting,
then the color and/or diameter of each atom is determined by which
element it is, which in turn is specified by the element-to-type
mapping specified by the "dump_modify element" command. By default
every atom type is C (carbon). Every element has a color and diameter
associated with it, which is the same as the colors and sizes used by
the <A HREF = "http://mt.seas.upenn.edu/Archive/Graphics/A">AtomEye</A> visualization package.
</P>
<P>If other atom attributes are used for the <I>color</I> or <I>diameter</I>
settings, they are interpreted in the following way.
</P>
<P>If "vx", for example, is used as the <I>color</I> setting, then the color
of the atom will depend on the x-component of its velocity. The
association of a per-atom value with a specific color is determined by
a "color map", which can be specified via the
<A HREF = "dump_modify.html">dump_modify</A> command. The basic idea is that the
atom-attribute will be within a range of values, and every value
within the range is mapped to a specific color. Depending on how the
color map is defined, that mapping can take place via interpolation so
that a value of -3.2 is halfway between "red" and "blue", or
discretely so that the value of -3.2 is "orange".
</P>
<P>If "vx", for example, is used as the <I>diameter</I> setting, then the atom
will be rendered using the x-component of its velocity as the
diameter. If the per-atom value <= 0.0, them the atom will not be
drawn. Note that finite-size spherical particles, as defined by
<A HREF = "atom_style.html">atom_style sphere</A> define a per-particle radius or
diameter, which can be used as the <I>diameter</I> setting.
</P>
<HR>
<P>The various kewords listed above control how the image is rendered.
As listed below, all of the keywords have defaults, most of which you
will likely not need to change. The <A HREF = "dump_modify.html">dump modify</A>
also has options specific to the dump image style, particularly for
assigning colors to atoms, bonds, and other image features.
</P>
<HR>
<P>The <I>adiam</I> keyword allows you to override the <I>diameter</I> setting to a
per-atom attribute with a specified numeric value. All atoms will be
drawn with that diameter, e.g. 1.5, which is in whatever distance
<A HREF = "units.html">units</A> the input script defines, e.g. Angstroms.
</P>
<P>The <I>atom</I> keyword allow you to turn off the drawing of all atoms,
if the specified value is <I>no</I>.
</P>
<P>The <I>bond</I> keyword allows to you to alter how bonds are drawn. A bond
is only drawn if both atoms in the bond are being drawn due to being
in the specified group and due to other selection criteria
(e.g. region, threshhold settings of the
<A HREF = "dump_modify.html">dump_modify</A> command). By default, bonds are drawn
if they are defined in the input data file as read by the
<A HREF = "read_data.html">read_data</A> command. Using <I>none</I> for both the bond
<I>color</I> and <I>width</I> value will turn off the drawing of all bonds.
</P>
<P>If <I>atom</I> is specified for the bond <I>color</I> value, then each bond is
drawn in 2 halves, with the color of each half being the color of the
atom at that end of the bond.
</P>
<P>If <I>type</I> is specified for the <I>color</I> value, then the color of each
bond is determined by its bond type. By default the mapping of bond
types to colors is as follows:
</P>
<UL><LI>type 1 = red
<LI>type 2 = green
<LI>type 3 = blue
<LI>type 4 = yellow
<LI>type 5 = aqua
<LI>type 6 = cyan
</UL>
<P>and repeats itself for bond types > 6. This mapping can be changed by
the <A HREF = "dump_modify.html">dump_modify bcolor</A> command.
</P>
<P>The bond <I>width</I> value can be a numeric value or <I>atom</I> or <I>type</I> (or
<I>none</I> as indicated above).
</P>
<P>If a numeric value is specified, then all bonds will be drawn as
cylinders with that diameter, e.g. 1.0, which is in whatever distance
<A HREF = "units.html">units</A> the input script defines, e.g. Angstroms.
</P>
<P>If <I>atom</I> is specified for the <I>width</I> value, then each bond
will be drawn with a width corresponding to the minimum diameter
of the 2 atoms in the bond.
</P>
<P>If <I>type</I> is specified for the <I>width</I> value then the diameter of each
bond is determined by its bond type. By default all types have
diameter 0.5. This mapping can be changed by the <A HREF = "dump_modify.html">dump_modify
bdiam</A> command.
</P>
<HR>
<P>The <I>size</I> keyword sets the width and height of the created images,
i.e. the number of pixels in each direction.
</P>
<HR>
<P>The <I>view</I>, <I>center</I>, <I>up</I>, <I>zoom</I>, and <I>persp</I> values determine how
3d simulation space is mapped to the 2d plane of the image. Basically
they control how the simulation box appears in the image.
</P>
<P>All of the <I>view</I>, <I>center</I>, <I>up</I>, <I>zoom</I>, and <I>persp</I> values can be
specified as numeric quantities, whose meaning is explained below.
Any of them can also be specified as an <A HREF = "variable.html">equal-style
variable</A>, by using v_name as the value, where "name" is
the variable name. In this case the variable will be evaluated on the
timestep each image is created to create a new value. If the
equal-style variable is time-dependent, this is a means of changing
the way the simulation box appears from image to image, effectively
doing a pan or fly-by view of your simulation.
</P>
<P>The <I>view</I> keyword determines the viewpoint from which the simulation
box is viewed, looking towards the <I>center</I> point. The <I>theta</I> value
is the vertical angle from the +z axis, and must be an angle from 0 to
180 degrees. The <I>phi</I> value is an azimuthal angle around the z axis
and can be positive or negative. A value of 0.0 is a view along the
+x axis, towards the <I>center</I> point. If <I>theta</I> or <I>phi</I> are
specified via variables, then the variable values should be in
degrees.
</P>
<P>The <I>center</I> keyword determines the point in simulation space that
will be at the center of the image. <I>Cx</I>, <I>Cy</I>, and <I>Cz</I> are
speficied as fractions of the box dimensions, so that (0.5,0.5,0.5) is
the center of the simulation box. These values do not have to be
between 0.0 and 1.0, if you want the simulation box to be offset from
the center of the image. Note, however, that if you choose strange
values for <I>Cx</I>, <I>Cy</I>, or <I>Cz</I> you may get a blank image. Internally,
<I>Cx</I>, <I>Cy</I>, and <I>Cz</I> are converted into a point in simulation space.
If <I>flag</I> is set to "s" for static, then this conversion is done once,
at the time the dump command is issued. If <I>flag</I> is set to "d" for
dynamic then the conversion is performed every time a new image is
created. If the box size or shape is changing, this will adjust the
center point in simulation space.
</P>
<P>The <I>up</I> keyword determines what direction in simulation space will be
"up" in the image. Internally it is stored as a vector that is in the
plane perpendicular to the view vector implied by the <I>theta</I> and
<I>pni</I> values, and which is also in the plane defined by the view
vector and user-specified up vector. Thus this internal vector is
computed from the user-specified <I>up</I> vector as
</P>
<PRE>up_internal = view cross (up cross view)
</PRE>
<P>This means the only restriction on the specified <I>up</I> vector is that
it cannot be parallel to the <I>view</I> vector, implied by the <I>theta</I> and
<I>phi</I> values.
</P>
<P>The <I>zoom</I> keyword scales the size of the simulation box as it appears
in the image. The default <I>zfactor</I> value of 1 should display an
image mostly filled by the atoms in the simulation box. A <I>zfactor</I> >
1 will make the simulation box larger; a <I>zfactor</I> < 1 will make it
smaller. <I>Zfactor</I> must be a value > 0.0.
</P>
<P>The <I>persp</I> keyword determines how much depth perspective is present
in the image. Depth perspective makes lines that are parallel in
simulation space appear non-parallel in the image. A <I>pfactor</I> value
of 0.0 means that parallel lines will meet at infininty (1.0/pfactor),
which is an orthographic rendering with no persepctive. A <I>pfactor</I>
value between 0.0 and 1.0 will introduce more perspective. A <I>pfactor</I>
value > 1 will create a highly skewed image with a large amount of
perspective.
</P>
<P>IMPORTANT NOTE: The <I>persp</I> keyword is not yet supported as an option.
</P>
<HR>
<P>The <I>box</I> keyword determines how the simulation box boundaries are
rendered as thin cylinders in the image. If <I>no</I> is set, then the box
boundaries are not drawn and the <I>diam</I> setting is ignored. If <I>yes</I>
is set, the 12 edges of the box are drawn, with a diameter that is a
fraction of the shortest box length in x,y,z (for 3d) or x,y (for 2d).
The color of the box boundaries can be set with the <A HREF = "dump_modify.html">dump_modify
boxcolor</A> command.
</P>
<P>The <I>axes</I> keyword determines how the coordinate axes are rendered as
thin cylinders in the image. If <I>no</I> is set, then the axes are not
drawn and the <I>length</I> and <I>diam</I> settings are ignored. If <I>yes</I> is
set, 3 thin cylinders are drawn to represent the x,y,z axes in colors
red,green,blue. The origin of these cylinders will be offset from the
lower left corner of the box by 10%. The <I>length</I> setting determines
how long the cylinders will be as a fraction of the respective box
lengths. The <I>diam</I> setting determines their thickness as a fraction
of the shortest box length in x,y,z (for 3d) or x,y (for 2d).
</P>
<HR>
<P>The <I>shiny</I> keyword determines how shiny the objects rendered in the
image will appear. The <I>sfactor</I> value must be a value 0.0 <=
<I>sfactor</I> <= 1.0, where <I>sfactor</I> = 1 is a highly reflective surface
and <I>sfactor</I> = 0 is a rough non-shiny surface.
</P>
<P>The <I>ssao</I> keyword turns on/off a screen space ambient occlusion
(SSAO) model for depth shading. If <I>yes</I> is set, then atoms further
away from the viewer are darkened via a randomized process, which is
perceived as depth. The calculation of this effect can increase the
cost of computing the image by roughly 2x. The strength of the effect
can be scaled by the <I>dfactor</I> parameter. If <I>no</I> is set, no depth
shading is performed.
</P>
<HR>
<P>A series of JPG or PPM images can be converted into a movie file and
then played as a movie using commonly available tools.
</P>
<P>Convert JPG or PPM files into an animated GIF or MPEG or other movie
file:
</P>
<UL><LI>a) Use the ImageMagick convert program.
<PRE>% convert *.jpg foo.gif
% convert *.ppm foo.mpg
</PRE>
<LI>b) Use QuickTime.
<P>Select "Open Image Sequence" under the File menu
Load the images into QuickTime to animate them
Select "Export" under the File menu
Save the movie as a QuickTime movie (*.mov) or in another format
</P>
<LI>c) Windows-based tool.
</UL>
<P>If someone tells us how to do this via a common Windows-based tool,
we'll post the instructions here.
</P>
<P>Play the movie:
</P>
<UL><LI>a) Use your browser to view an animated GIF movie.
<P>Select "Open File" under the File menu
Load the animated GIF file
</P>
<LI>b) Use the freely available mplayer tool to view an MPEG movie.
<PRE>% mplayer foo.mpg
</PRE>
<LI>c) Use the <A HREF = "http://www.sandia.gov/~sjplimp/pizza.html">Pizza.py</A>
<A HREF = "http://www.sandia.gov/~sjplimp/pizza/doc/animate.html">animate tool</A>,
which works directly on a series of image files.
<PRE>a = animate("foo*.jpg")
</PRE>
<LI>d) QuickTime and other Windows-based media players can
obviously play movie files directly.
</UL>
<HR>
<P>See <A HREF = "Section_modify.html">this section</A> of the manual for information
on how to add new compute and fix styles to LAMMPS to calculate
per-atom quantities which could then be output into dump files.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>To write JPG images, you must use a -DLAMMPS_JPEG switch when building
-LAMMPS and link with a JPEG library. See the <A HREF = "Section_start.html#2_2_4">Making
+LAMMPS and link with a JPEG library. See the <A HREF = "Section_start.html#start_2_4">Making
LAMMPS</A> section of the documentation for
details.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump</A>, <A HREF = "dump_modify.html">dump_modify</A>, <A HREF = "undump.html">undump</A>
</P>
<P><B>Default:</B>
</P>
<P>The defaults for the keywords are as follows:
</P>
<UL><LI>adiam = not specified (use diameter setting)
<LI>atom = yes
<LI>bond = none none (if no bonds in system)
<LI>bond = atom 0.5 (if bonds in system)
<LI>size = 512 512
<LI>view = 60 30 (for 3d)
<LI>view = 0 0 (for 2d)
<LI>center = s 0.5 0.5 0.5
<LI>up = 0 0 1 (for 3d)
<LI>up = 0 1 0 (for 2d)
<LI>zoom = 1.0
<LI>persp = 0.0
<LI>box = yes 0.02
<LI>axes = no 0.0 0.0
<LI>shiny = 1.0
<LI>ssao = no
</UL>
</HTML>
diff --git a/doc/dump_image.txt b/doc/dump_image.txt
index 66cba606b..08a74c6de 100644
--- a/doc/dump_image.txt
+++ b/doc/dump_image.txt
@@ -1,439 +1,439 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
dump image command :h3
[Syntax:]
dump ID group-ID image N file color diameter keyword value ... :pre
ID = user-assigned name for the dump :ulb,l
group-ID = ID of the group of atoms to be imaged :l
image = style of dump command (other styles {atom} or {cfg} or {dcd} or {xtc} or {xyz} or {local} or {custom} are discussed on the "dump"_dump.html doc page) :l
N = dump every this many timesteps :l
file = name of file to write image to :l
color = atom attribute that determines color of each atom :l
diameter = atom attribute that determines size of each atom :l
zero or more keyword/value pairs may be appended :l
keyword = {adiam} or {atom} or {bond} or {size} or {view} or {center} or {up} or {zoom} or {persp} or {box} or {axes} or {shiny} or {ssao} :l
{adiam} value = number = numeric value for atom diameter (distance units)
{atom} = yes/no = do or do not draw atoms
{bond} values = color width = color and width of bonds
color = {atom} or {type} or {none}
width = number or {atom} or {type} or {none}
number = numeric value for bond width (distance units)
{size} values = width height = size of images
width = width of image in # of pixels
height = height of image in # of pixels
{view} values = theta phi = view of simulation box
theta = view angle from +z axis (degrees)
phi = azimuthal view angle (degrees)
theta or phi can be a variable (see below)
{center} values = flag Cx Cy Cz = center point of image
flag = "s" for static, "d" for dynamic
Cx,Cy,Cz = center point of image as fraction of box dimension (0.5 = center of box)
Cx,Cy,Cz can be variables (see below)
{up} values = Ux Uy Uz = direction that is "up" in image
Ux,Uy,Uz = components of up vector
Ux,Uy,Uz can be variables (see below)
{zoom} value = zfactor = size that simulation box appears in image
zfactor = scale image size by factor > 1 to enlarge, factor < 1 to shrink
zfactor can be a variable (see below)
{persp} value = pfactor = amount of "perspective" in image
pfactor = amount of perspective (0 = none, < 1 = some, > 1 = highly skewed)
pfactor can be a variable (see below)
{box} values = yes/no diam = draw outline of simulation box
yes/no = do or do not draw simulation box lines
diam = diameter of box lines as fraction of shortest box length
{axes} values = yes/no length diam = draw xyz axes
yes/no = do or do not draw xyz axes lines next to simulation box
length = length of axes lines as fraction of respective box lengths
diam = diameter of axes lines as fraction of shortest box length
{shiny} value = sfactor = shinyness of spheres and cylinders
sfactor = shinyness of spheres and cylinders from 0.0 to 1.0
{ssao} value = yes/no seed dfactor = SSAO depth shading
yes/no = turn depth shading on/off
seed = random # seed (positive integer)
dfactor = strength of shading from 0.0 to 1.0 :pre
:ule
[Examples:]
dump myDump all image 100 dump.*.jpg type type :pre
[Description:]
Dump a high-quality ray-traced image of the atom configuration every N
timesteps as either a JPG or PPM file. A series of such images can
easily be converted into an animated movie of your simulation; see
further details below. Other dump styles store snapshots of numerical
data asociated with atoms in various formats, as discussed on the
"dump"_dump.html doc page.
Here are two sample images, rendered as 1024x1024 JPG files. Click to
see the full-size images:
<DIV ALIGN=center>
:image(JPG/dump1_small.jpg,JPG/dump1.jpg)
:image(JPG/dump2_small.jpg,JPG/dump2.jpg)
</DIV>
Only atoms in the specified group are rendered in the image. The
"dump_modify region and thresh"_dump_modify.html commands can also
alter what atoms are included in the image.
The filename suffix determines whether a JPG or PPM file is created.
If the suffix is ".jpg" or ".jpeg", then a JPG file is created, else a
PPM file is created, which is a text-based format. To write out JPG
files, you must build LAMMPS with a JPEG library. See "this
-section"_Section_start.html#2_2_4 of the manual for instructions on
-how to do this.
+section"_Section_start.html#start_2_4 of the manual for instructions
+on how to do this.
IMPORTANT NOTE: Because periodic boundary conditions are enforced only
on timesteps when neighbor lists are rebuilt, the coordinates of an
atom in the image may be slightly outside the simulation box.
:line
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 "dump_modify first"_dump_modify.html 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 "dump_modify every"_dump_modify.html command.
Dump image filenames must contain a wildcard character "*", so that
one image file per snapshot is written. The "*" character is replaced
with the timestep value. For example, tmp.dump.*.jpg becomes
tmp.dump.0.jpg, tmp.dump.10000.jpg, tmp.dump.20000.jpg, etc. Note
that the "dump_modify pad"_dump_modify.html command can be used to
insure all timestep numbers are the same length (e.g. 00010), which
can make it easier to convert a series of images into a movie in the
correct ordering.
:line
The {color} and {diameter} settings determine the color and size of
atoms rendered in the image. They can be any atom attribute defined
for the "dump custom"_dump.html command, including {type} and
{element}. This includes per-atom quantities calculated by a
"compute"_compute.html, "fix"_fix.html, or "variable"_variable.html,
which are prefixed by "c_", "f_", or "v_" respectively. Note that the
{diameter} setting can be overridden with a numeric value by the
optional {adiam} keyword, in which case you can specify the {diameter}
setting with any valid atom attribute.
If {type} is specified for the {color} setting, then the color of each
atom is determined by its atom type. By default the mapping of types
to colors is as follows:
type 1 = red
type 2 = green
type 3 = blue
type 4 = yellow
type 5 = aqua
type 6 = cyan :ul
and repeats itself for types > 6. This mapping can be changed by the
"dump_modify acolor"_dump_modify.html command.
If {type} is specified for the {diameter} setting then the diameter of
each atom is determined by its atom type. By default all types have
diameter 1.0. This mapping can be changed by the "dump_modify
adiam"_dump_modify.html command.
If {element} is specified for the {color} and/or {diameter} setting,
then the color and/or diameter of each atom is determined by which
element it is, which in turn is specified by the element-to-type
mapping specified by the "dump_modify element" command. By default
every atom type is C (carbon). Every element has a color and diameter
associated with it, which is the same as the colors and sizes used by
the "AtomEye"_atomeye visualization package.
:link(atomeye,http://mt.seas.upenn.edu/Archive/Graphics/A)
If other atom attributes are used for the {color} or {diameter}
settings, they are interpreted in the following way.
If "vx", for example, is used as the {color} setting, then the color
of the atom will depend on the x-component of its velocity. The
association of a per-atom value with a specific color is determined by
a "color map", which can be specified via the
"dump_modify"_dump_modify.html command. The basic idea is that the
atom-attribute will be within a range of values, and every value
within the range is mapped to a specific color. Depending on how the
color map is defined, that mapping can take place via interpolation so
that a value of -3.2 is halfway between "red" and "blue", or
discretely so that the value of -3.2 is "orange".
If "vx", for example, is used as the {diameter} setting, then the atom
will be rendered using the x-component of its velocity as the
diameter. If the per-atom value <= 0.0, them the atom will not be
drawn. Note that finite-size spherical particles, as defined by
"atom_style sphere"_atom_style.html define a per-particle radius or
diameter, which can be used as the {diameter} setting.
:line
The various kewords listed above control how the image is rendered.
As listed below, all of the keywords have defaults, most of which you
will likely not need to change. The "dump modify"_dump_modify.html
also has options specific to the dump image style, particularly for
assigning colors to atoms, bonds, and other image features.
:line
The {adiam} keyword allows you to override the {diameter} setting to a
per-atom attribute with a specified numeric value. All atoms will be
drawn with that diameter, e.g. 1.5, which is in whatever distance
"units"_units.html the input script defines, e.g. Angstroms.
The {atom} keyword allow you to turn off the drawing of all atoms,
if the specified value is {no}.
The {bond} keyword allows to you to alter how bonds are drawn. A bond
is only drawn if both atoms in the bond are being drawn due to being
in the specified group and due to other selection criteria
(e.g. region, threshhold settings of the
"dump_modify"_dump_modify.html command). By default, bonds are drawn
if they are defined in the input data file as read by the
"read_data"_read_data.html command. Using {none} for both the bond
{color} and {width} value will turn off the drawing of all bonds.
If {atom} is specified for the bond {color} value, then each bond is
drawn in 2 halves, with the color of each half being the color of the
atom at that end of the bond.
If {type} is specified for the {color} value, then the color of each
bond is determined by its bond type. By default the mapping of bond
types to colors is as follows:
type 1 = red
type 2 = green
type 3 = blue
type 4 = yellow
type 5 = aqua
type 6 = cyan :ul
and repeats itself for bond types > 6. This mapping can be changed by
the "dump_modify bcolor"_dump_modify.html command.
The bond {width} value can be a numeric value or {atom} or {type} (or
{none} as indicated above).
If a numeric value is specified, then all bonds will be drawn as
cylinders with that diameter, e.g. 1.0, which is in whatever distance
"units"_units.html the input script defines, e.g. Angstroms.
If {atom} is specified for the {width} value, then each bond
will be drawn with a width corresponding to the minimum diameter
of the 2 atoms in the bond.
If {type} is specified for the {width} value then the diameter of each
bond is determined by its bond type. By default all types have
diameter 0.5. This mapping can be changed by the "dump_modify
bdiam"_dump_modify.html command.
:line
The {size} keyword sets the width and height of the created images,
i.e. the number of pixels in each direction.
:line
The {view}, {center}, {up}, {zoom}, and {persp} values determine how
3d simulation space is mapped to the 2d plane of the image. Basically
they control how the simulation box appears in the image.
All of the {view}, {center}, {up}, {zoom}, and {persp} values can be
specified as numeric quantities, whose meaning is explained below.
Any of them can also be specified as an "equal-style
variable"_variable.html, by using v_name as the value, where "name" is
the variable name. In this case the variable will be evaluated on the
timestep each image is created to create a new value. If the
equal-style variable is time-dependent, this is a means of changing
the way the simulation box appears from image to image, effectively
doing a pan or fly-by view of your simulation.
The {view} keyword determines the viewpoint from which the simulation
box is viewed, looking towards the {center} point. The {theta} value
is the vertical angle from the +z axis, and must be an angle from 0 to
180 degrees. The {phi} value is an azimuthal angle around the z axis
and can be positive or negative. A value of 0.0 is a view along the
+x axis, towards the {center} point. If {theta} or {phi} are
specified via variables, then the variable values should be in
degrees.
The {center} keyword determines the point in simulation space that
will be at the center of the image. {Cx}, {Cy}, and {Cz} are
speficied as fractions of the box dimensions, so that (0.5,0.5,0.5) is
the center of the simulation box. These values do not have to be
between 0.0 and 1.0, if you want the simulation box to be offset from
the center of the image. Note, however, that if you choose strange
values for {Cx}, {Cy}, or {Cz} you may get a blank image. Internally,
{Cx}, {Cy}, and {Cz} are converted into a point in simulation space.
If {flag} is set to "s" for static, then this conversion is done once,
at the time the dump command is issued. If {flag} is set to "d" for
dynamic then the conversion is performed every time a new image is
created. If the box size or shape is changing, this will adjust the
center point in simulation space.
The {up} keyword determines what direction in simulation space will be
"up" in the image. Internally it is stored as a vector that is in the
plane perpendicular to the view vector implied by the {theta} and
{pni} values, and which is also in the plane defined by the view
vector and user-specified up vector. Thus this internal vector is
computed from the user-specified {up} vector as
up_internal = view cross (up cross view) :pre
This means the only restriction on the specified {up} vector is that
it cannot be parallel to the {view} vector, implied by the {theta} and
{phi} values.
The {zoom} keyword scales the size of the simulation box as it appears
in the image. The default {zfactor} value of 1 should display an
image mostly filled by the atoms in the simulation box. A {zfactor} >
1 will make the simulation box larger; a {zfactor} < 1 will make it
smaller. {Zfactor} must be a value > 0.0.
The {persp} keyword determines how much depth perspective is present
in the image. Depth perspective makes lines that are parallel in
simulation space appear non-parallel in the image. A {pfactor} value
of 0.0 means that parallel lines will meet at infininty (1.0/pfactor),
which is an orthographic rendering with no persepctive. A {pfactor}
value between 0.0 and 1.0 will introduce more perspective. A {pfactor}
value > 1 will create a highly skewed image with a large amount of
perspective.
IMPORTANT NOTE: The {persp} keyword is not yet supported as an option.
:line
The {box} keyword determines how the simulation box boundaries are
rendered as thin cylinders in the image. If {no} is set, then the box
boundaries are not drawn and the {diam} setting is ignored. If {yes}
is set, the 12 edges of the box are drawn, with a diameter that is a
fraction of the shortest box length in x,y,z (for 3d) or x,y (for 2d).
The color of the box boundaries can be set with the "dump_modify
boxcolor"_dump_modify.html command.
The {axes} keyword determines how the coordinate axes are rendered as
thin cylinders in the image. If {no} is set, then the axes are not
drawn and the {length} and {diam} settings are ignored. If {yes} is
set, 3 thin cylinders are drawn to represent the x,y,z axes in colors
red,green,blue. The origin of these cylinders will be offset from the
lower left corner of the box by 10%. The {length} setting determines
how long the cylinders will be as a fraction of the respective box
lengths. The {diam} setting determines their thickness as a fraction
of the shortest box length in x,y,z (for 3d) or x,y (for 2d).
:line
The {shiny} keyword determines how shiny the objects rendered in the
image will appear. The {sfactor} value must be a value 0.0 <=
{sfactor} <= 1.0, where {sfactor} = 1 is a highly reflective surface
and {sfactor} = 0 is a rough non-shiny surface.
The {ssao} keyword turns on/off a screen space ambient occlusion
(SSAO) model for depth shading. If {yes} is set, then atoms further
away from the viewer are darkened via a randomized process, which is
perceived as depth. The calculation of this effect can increase the
cost of computing the image by roughly 2x. The strength of the effect
can be scaled by the {dfactor} parameter. If {no} is set, no depth
shading is performed.
:line
A series of JPG or PPM images can be converted into a movie file and
then played as a movie using commonly available tools.
Convert JPG or PPM files into an animated GIF or MPEG or other movie
file:
a) Use the ImageMagick convert program. :ulb,l
% convert *.jpg foo.gif
% convert *.ppm foo.mpg :pre
b) Use QuickTime. :l
Select "Open Image Sequence" under the File menu
Load the images into QuickTime to animate them
Select "Export" under the File menu
Save the movie as a QuickTime movie (*.mov) or in another format
c) Windows-based tool. :ule,l
If someone tells us how to do this via a common Windows-based tool,
we'll post the instructions here.
Play the movie:
a) Use your browser to view an animated GIF movie. :ulb,l
Select "Open File" under the File menu
Load the animated GIF file
b) Use the freely available mplayer tool to view an MPEG movie. :l
% mplayer foo.mpg :pre
c) Use the "Pizza.py"_http://www.sandia.gov/~sjplimp/pizza.html
"animate tool"_http://www.sandia.gov/~sjplimp/pizza/doc/animate.html,
which works directly on a series of image files. :l
a = animate("foo*.jpg") :pre
d) QuickTime and other Windows-based media players can
obviously play movie files directly. :ule,l
:line
See "this section"_Section_modify.html of the manual for information
on how to add new compute and fix styles to LAMMPS to calculate
per-atom quantities which could then be output into dump files.
:line
[Restrictions:]
To write JPG images, you must use a -DLAMMPS_JPEG switch when building
LAMMPS and link with a JPEG library. See the "Making
-LAMMPS"_Section_start.html#2_2_4 section of the documentation for
+LAMMPS"_Section_start.html#start_2_4 section of the documentation for
details.
[Related commands:]
"dump"_dump.html, "dump_modify"_dump_modify.html, "undump"_undump.html
[Default:]
The defaults for the keywords are as follows:
adiam = not specified (use diameter setting)
atom = yes
bond = none none (if no bonds in system)
bond = atom 0.5 (if bonds in system)
size = 512 512
view = 60 30 (for 3d)
view = 0 0 (for 2d)
center = s 0.5 0.5 0.5
up = 0 0 1 (for 3d)
up = 0 1 0 (for 2d)
zoom = 1.0
persp = 0.0
box = yes 0.02
axes = no 0.0 0.0
shiny = 1.0
ssao = no :ul
diff --git a/doc/echo.html b/doc/echo.html
index fa7900967..46068aa83 100644
--- a/doc/echo.html
+++ b/doc/echo.html
@@ -1,43 +1,43 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>echo command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>echo style
</PRE>
<UL><LI>style = <I>none</I> or <I>screen</I> or <I>log</I> or <I>both</I>
</UL>
<P><B>Examples:</B>
</P>
<PRE>echo both
echo log
</PRE>
<P><B>Description:</B>
</P>
<P>This command determines whether LAMMPS echoes each input script
command to the screen and/or log file as it is read and processed. If
an input script has errors, it can be useful to look at echoed output
to see the last command processed.
</P>
-<P>The <A HREF = "Section_start.html#2_4">command-line switch</A> -echo can be used in
-place of this command.
+<P>The <A HREF = "Section_start.html#start_4">command-line switch</A> -echo can be used
+in place of this command.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B>
</P>
<PRE>echo log
</PRE>
</HTML>
diff --git a/doc/echo.txt b/doc/echo.txt
index 17fca167e..eeac802ae 100644
--- a/doc/echo.txt
+++ b/doc/echo.txt
@@ -1,38 +1,38 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
echo command :h3
[Syntax:]
echo style :pre
style = {none} or {screen} or {log} or {both} :ul
[Examples:]
echo both
echo log :pre
[Description:]
This command determines whether LAMMPS echoes each input script
command to the screen and/or log file as it is read and processed. If
an input script has errors, it can be useful to look at echoed output
to see the last command processed.
-The "command-line switch"_Section_start.html#2_4 -echo can be used in
-place of this command.
+The "command-line switch"_Section_start.html#start_4 -echo can be used
+in place of this command.
[Restrictions:] none
[Related commands:] none
[Default:]
echo log :pre
diff --git a/doc/fix.html b/doc/fix.html
index 51d33fc88..239e0ae19 100644
--- a/doc/fix.html
+++ b/doc/fix.html
@@ -1,264 +1,266 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID style args
</PRE>
<UL><LI>ID = user-assigned name for the fix
<LI>group-ID = ID of the group of atoms to apply the fix to
<LI>style = one of a long list of possible style names (see below)
<LI>args = arguments used by a particular style
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all nve
fix 3 all nvt temp 300.0 300.0 0.01
fix mine top setforce 0.0 NULL 0.0
</PRE>
<P><B>Description:</B>
</P>
<P>Set a fix that will be applied to a group of atoms. In LAMMPS, a
"fix" is any operation that is applied to the system during
timestepping or minimization. Examples include updating of atom
positions and velocities due to time integration, controlling
temperature, applying constraint forces to atoms, enforcing boundary
conditions, computing diagnostics, etc. There are dozens of fixes
defined in LAMMPS and new ones can be added; see <A HREF = "Section_modify.html">this
section</A> for a discussion.
</P>
<P>Fixes perform their operations at different stages of the timestep.
If 2 or more fixes operate at the same stage of the timestep, they are
invoked in the order they were specified in the input script.
</P>
<P>The ID of a fix can only contain alphanumeric characters and
underscores.
</P>
<P>Fixes can be deleted with the <A HREF = "unfix.html">unfix</A> command.
</P>
<P>IMPORTANT NOTE: The <A HREF = "unfix.html">unfix</A> command is the only way to turn
off a fix; simply specifying a new fix with a similar style will not
turn off the first one. This is especially important to realize for
integration fixes. For example, using a <A HREF = "fix_nve.html">fix nve</A>
command for a second run after using a <A HREF = "fix_nh.html">fix nvt</A> command
for the first run, will not cancel out the NVT time integration
invoked by the "fix nvt" command. Thus two time integrators would be
in place!
</P>
<P>If you specify a new fix with the same ID and style as an existing
fix, the old fix is deleted and the new one is created (presumably
with new settings). This is the same as if an "unfix" command were
first performed on the old fix, except that the new fix is kept in the
same order relative to the existing fixes as the old one originally
was. Note that this operation also wipes out any additional changes
made to the old fix via the <A HREF = "fix_modify.html">fix_modify</A> command.
</P>
<P>The <A HREF = "fix_modify.html">fix modify</A> command allows settings for some
fixes to be reset. See the doc page for individual fixes for details.
</P>
<P>Some fixes store an internal "state" which is written to binary
restart files via the <A HREF = "restart.html">restart</A> or
<A HREF = "write_restart.html">write_restart</A> commands. This allows the fix to
continue on with its calculations in a restarted simulation. 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. See the doc pages
for individual fixes for info on which ones can be restarted.
</P>
<HR>
<P>Some fixes calculate one of three styles of quantities: global,
per-atom, or local, which can be used by other commands or output as
described below. A global quantity is one or more system-wide values,
e.g. the energy of a wall interacting with particles. A per-atom
quantity is one or more values per atom, e.g. the displacement vector
for each atom since time 0. Per-atom values are set to 0.0 for atoms
not in the specified fix group. Local quantities are calculated by
each processor based on the atoms it owns, but there may be zero or
more per atoms.
</P>
<P>Note that a single fix may produces either global or per-atom or local
quantities (or none at all), but never more than one of these.
</P>
<P>Global, per-atom, and local quantities each come in three kinds: a
single scalar value, a vector of values, or a 2d array of values. The
doc page for each fix describes the style and kind of values it
produces, e.g. a per-atom vector. Some fixes produce more than one
kind of a single style, e.g. a global scalar and a global vector.
</P>
<P>When a fix quantity is accessed, as in many of the output commands
discussed below, it can be referenced via the following bracket
notation, where ID is the ID of the fix:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >f_ID </TD><TD > entire scalar, vector, or array</TD></TR>
<TR><TD >f_ID[I] </TD><TD > one element of vector, one column of array</TD></TR>
<TR><TD >f_ID[I][J] </TD><TD > one element of array
</TD></TR></TABLE></DIV>
<P>In other words, using one bracket reduces the dimension of the
quantity once (vector -> scalar, array -> vector). Using two brackets
reduces the dimension twice (array -> scalar). Thus a command that
uses scalar fix values as input can also process elements of a vector
or array.
</P>
<P>Note that commands and <A HREF = "variable.html">variables</A> which use fix
quantities typically do not allow for all kinds, e.g. a command may
require a vector of values, not a scalar. This means there is no
ambiguity about referring to a fix quantity as f_ID even if it
produces, for example, both a scalar and vector. The doc pages for
various commands explain the details.
</P>
<HR>
<P>In LAMMPS, the values generated by a fix can be used in several ways:
</P>
<UL><LI>Global values can be output via the <A HREF = "thermo_style.html">thermo_style
custom</A> or <A HREF = "fix_ave_time.html">fix ave/time</A> command.
Or the values can be referenced in a <A HREF = "variable.html">variable equal</A> or
<A HREF = "variable.html">variable atom</A> command.
<LI>Per-atom values can be output via the <A HREF = "dump.html">dump custom</A> command
or the <A HREF = "fix_ave_spatial.html">fix ave/spatial</A> command. Or they can be
time-averaged via the <A HREF = "fix_ave_atom.html">fix ave/atom</A> command or
reduced by the <A HREF = "compute_reduce.html">compute reduce</A> command. Or the
per-atom values can be referenced in an <A HREF = "variable.html">atom-style
variable</A>.
<LI>Local values can be reduced by the <A HREF = "compute_reduce.html">compute
reduce</A> command, or histogrammed by the <A HREF = "fix_ave_histo.html">fix
ave/histo</A> command.
</UL>
-<P>See this <A HREF = "Section_howto.html#4_15">howto section</A> for a summary of
+<P>See this <A HREF = "Section_howto.html#howto_15">howto section</A> for a summary of
various LAMMPS output options, many of which involve fixes.
</P>
<P>The results of fixes that calculate global quantities can be either
"intensive" or "extensive" values. Intensive means the value is
independent of the number of atoms in the simulation,
e.g. temperature. Extensive means the value scales with the number of
atoms in the simulation, e.g. total rotational kinetic energy.
<A HREF = "thermo_style.html">Thermodynamic output</A> will normalize extensive
values by the number of atoms in the system, depending on the
"thermo_modify norm" setting. It will not normalize intensive values.
If a fix value is accessed in another way, e.g. by a
<A HREF = "variable.html">variable</A>, you may want to know whether it is an
intensive or extensive value. See the doc page for individual fixes
for further info.
</P>
<HR>
<P>Each fix style has its own documentation page which describes its
arguments and what it does, as listed below. Here is an alphabetic
list of fix styles available in LAMMPS:
</P>
<UL><LI><A HREF = "fix_adapt.html">adapt</A> - change a simulation parameter over time
<LI><A HREF = "fix_addforce.html">addforce</A> - add a force to each atom
<LI><A HREF = "fix_aveforce.html">aveforce</A> - add an averaged force to each atom
<LI><A HREF = "fix_ave_atom.html">ave/atom</A> - compute per-atom time-averaged quantities
<LI><A HREF = "fix_ave_atom.html">ave/histo</A> - compute/output time-averaged histograms
<LI><A HREF = "fix_ave_spatial.html">ave/spatial</A> - compute/output time-averaged per-atom quantities by layer
<LI><A HREF = "fix_ave_time.html">ave/time</A> - compute/output global time-averaged quantities
<LI><A HREF = "fix_bond_break.html">bond/break</A> - break bonds on the fly
<LI><A HREF = "fix_bond_create.html">bond/create</A> - create bonds on the fly
<LI><A HREF = "fix_bond_swap.html">bond/swap</A> - Monte Carlo bond swapping
<LI><A HREF = "fix_box_relax.html">box/relax</A> - relax box size during energy minimization
<LI><A HREF = "fix_deform.html">deform</A> - change the simulation box size/shape
<LI><A HREF = "fix_deposit.html">deposit</A> - add new atoms above a surface
<LI><A HREF = "fix_drag.html">drag</A> - drag atoms towards a defined coordinate
<LI><A HREF = "fix_dt_reset.html">dt/reset</A> - reset the timestep based on velocity, forces
<LI><A HREF = "fix_efield.html">efield</A> - impose electric field on system
<LI><A HREF = "fix_enforce2d.html">enforce2d</A> - zero out z-dimension velocity and force
<LI><A HREF = "fix_evaporate.html">evaporate</A> - remove atoms from simulation periodically
<LI><A HREF = "fix_external.html">external</A> - callback to an external driver program
<LI><A HREF = "fix_freeze.html">freeze</A> - freeze atoms in a granular simulation
<LI><A HREF = "fix_gravity.html">gravity</A> - add gravity to atoms in a granular simulation
+<LI><A HREF = "fix_gcmc.html">gcmc</A> - grand canonical insertions/deletions
<LI><A HREF = "fix_heat.html">heat</A> - add/subtract momentum-conserving heat
<LI><A HREF = "fix_indent.html">indent</A> - impose force due to an indenter
<LI><A HREF = "fix_langevin.html">langevin</A> - Langevin temperature control
<LI><A HREF = "fix_lineforce.html">lineforce</A> - constrain atoms to move in a line
<LI><A HREF = "fix_momentum.html">momentum</A> - zero the linear and/or angular momentum of a group of atoms
<LI><A HREF = "fix_move.html">move</A> - move atoms in a prescribed fashion
<LI><A HREF = "fix_msst.html">msst</A> - multi-scale shock technique (MSST) integration
<LI><A HREF = "fix_neb.html">neb</A> - nudged elastic band (NEB) spring forces
<LI><A HREF = "fix_nh.html">nph</A> - constant NPH time integration via Nose/Hoover
<LI><A HREF = "fix_nph_asphere.html">nph/asphere</A> - NPH for aspherical particles
<LI><A HREF = "fix_nph_sphere.html">nph/sphere</A> - NPH for spherical particles
<LI><A HREF = "fix_nh.html">npt</A> - constant NPT time integration via Nose/Hoover
<LI><A HREF = "fix_npt_asphere.html">npt/asphere</A> - NPT for aspherical particles
<LI><A HREF = "fix_npt_sphere.html">npt/sphere</A> - NPT for spherical particles
<LI><A HREF = "fix_nve.html">nve</A> - constant NVE time integration
<LI><A HREF = "fix_nve_asphere.html">nve/asphere</A> - NVT for aspherical particles
<LI><A HREF = "fix_nve_limit.html">nve/limit</A> - NVE with limited step length
<LI><A HREF = "fix_nve_noforce.html">nve/noforce</A> - NVE without forces (v only)
<LI><A HREF = "fix_nve_sphere.html">nve/sphere</A> - NVT for spherical particles
<LI><A HREF = "fix_nh.html">nvt</A> - constant NVT time integration via Nose/Hoover
<LI><A HREF = "fix_nvt_asphere.html">nvt/asphere</A> - NVT for aspherical particles
<LI><A HREF = "fix_nvt_sllod.html">nvt/sllod</A> - NVT for NEMD with SLLOD equations
<LI><A HREF = "fix_nvt_sphere.html">nvt/sphere</A> - NVT for spherical particles
<LI><A HREF = "fix_orient_fcc.html">orient/fcc</A> - add grain boundary migration force
<LI><A HREF = "fix_planeforce.html">planeforce</A> - constrain atoms to move in a plane
<LI><A HREF = "fix_poems.html">poems</A> - constrain clusters of atoms to move as coupled rigid bodies
<LI><A HREF = "fix_pour.html">pour</A> - pour new atoms into a granular simulation domain
<LI><A HREF = "fix_press_berendsen.html">press/berendsen</A> - pressure control by Berendsen barostat
<LI><A HREF = "fix_print.html">print</A> - print text and variables during a simulation
<LI><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/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_setforce.html">setforce</A> - set the force on each atom
<LI><A HREF = "fix_shake.html">shake</A> - SHAKE constraints on bonds and/or angles
<LI><A HREF = "fix_spring.html">spring</A> - apply harmonic spring force to group of atoms
<LI><A HREF = "fix_spring_rg.html">spring/rg</A> - spring on radius of gyration of group of atoms
<LI><A HREF = "fix_spring_self.html">spring/self</A> - spring from each atom to its origin
<LI><A HREF = "fix_srd.html">srd</A> - stochastic rotation dynamics (SRD)
<LI><A HREF = "fix_store_force.html">store/force</A> - store force on each atom
<LI><A HREF = "fix_store_state.html">store/state</A> - store attributes for each atom
<LI><A HREF = "fix_temp_berendsen.html">temp/berendsen</A> - temperature control by Berendsen thermostat
<LI><A HREF = "fix_temp_rescale.html">temp/rescale</A> - temperature control by velocity rescaling
<LI><A HREF = "fix_thermal_conductivity.html">thermal/conductivity</A> - Muller-Plathe kinetic energy exchange for thermal conductivity calculation
<LI><A HREF = "fix_tmd.html">tmd</A> - guide a group of atoms to a new configuration
<LI><A HREF = "fix_ttm.html">ttm</A> - two-temperature model for electronic/atomic coupling
<LI><A HREF = "fix_viscosity.html">viscosity</A> - Muller-Plathe momentum exchange for viscosity calculation
<LI><A HREF = "fix_viscous.html">viscous</A> - viscous damping for granular simulations
<LI><A HREF = "fix_wall.html">wall/colloid</A> - Lennard-Jones wall interacting with finite-size particles
<LI><A HREF = "fix_wall_gran.html">wall/gran</A> - frictional wall(s) for granular simulations
<LI><A HREF = "fix_wall.html">wall/harmonic</A> - harmonic spring wall
<LI><A HREF = "fix_wall.html">wall/lj126</A> - Lennard-Jones 12-6 wall
<LI><A HREF = "fix_wall.html">wall/lj93</A> - Lennard-Jones 9-3 wall
<LI><A HREF = "fix_wall_reflect.html">wall/reflect</A> - reflecting wall(s)
<LI><A HREF = "fix_wall_region.html">wall/region</A> - use region surface as wall
<LI><A HREF = "fix_wall_srd.html">wall/srd</A> - slip/no-slip wall for SRD particles
</UL>
<P>There are also additional fix 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 fix section of <A HREF = "Section_commands.html#3_5">this
+the individual styles are given in the fix section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<P>There are also additional accelerated fix styles included in the
LAMMPS distribution for faster performance on CPUs and GPUs. The list
of these with links to the individual styles are given in the pair
-section of <A HREF = "Section_commands.html#3_5">this page</A>.
+section of <A HREF = "Section_commands.html#cmd_5">this page</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>Some fix styles are part of specific packages. They are only enabled
-if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
-LAMMPS</A> section for more info on packages. The
-doc pages for individual fixes tell if it is part of a package.
+if LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info on packages.
+The doc pages for individual fixes tell if it is part of a package.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "unfix.html">unfix</A>, <A HREF = "fix_modify.html">fix_modify</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix.txt b/doc/fix.txt
index 4ab287ea7..23a478c49 100644
--- a/doc/fix.txt
+++ b/doc/fix.txt
@@ -1,269 +1,271 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix command :h3
[Syntax:]
fix ID group-ID style args :pre
ID = user-assigned name for the fix
group-ID = ID of the group of atoms to apply the fix to
style = one of a long list of possible style names (see below)
args = arguments used by a particular style :ul
[Examples:]
fix 1 all nve
fix 3 all nvt temp 300.0 300.0 0.01
fix mine top setforce 0.0 NULL 0.0 :pre
[Description:]
Set a fix that will be applied to a group of atoms. In LAMMPS, a
"fix" is any operation that is applied to the system during
timestepping or minimization. Examples include updating of atom
positions and velocities due to time integration, controlling
temperature, applying constraint forces to atoms, enforcing boundary
conditions, computing diagnostics, etc. There are dozens of fixes
defined in LAMMPS and new ones can be added; see "this
section"_Section_modify.html for a discussion.
Fixes perform their operations at different stages of the timestep.
If 2 or more fixes operate at the same stage of the timestep, they are
invoked in the order they were specified in the input script.
The ID of a fix can only contain alphanumeric characters and
underscores.
Fixes can be deleted with the "unfix"_unfix.html command.
IMPORTANT NOTE: The "unfix"_unfix.html command is the only way to turn
off a fix; simply specifying a new fix with a similar style will not
turn off the first one. This is especially important to realize for
integration fixes. For example, using a "fix nve"_fix_nve.html
command for a second run after using a "fix nvt"_fix_nh.html command
for the first run, will not cancel out the NVT time integration
invoked by the "fix nvt" command. Thus two time integrators would be
in place!
If you specify a new fix with the same ID and style as an existing
fix, the old fix is deleted and the new one is created (presumably
with new settings). This is the same as if an "unfix" command were
first performed on the old fix, except that the new fix is kept in the
same order relative to the existing fixes as the old one originally
was. Note that this operation also wipes out any additional changes
made to the old fix via the "fix_modify"_fix_modify.html command.
The "fix modify"_fix_modify.html command allows settings for some
fixes to be reset. See the doc page for individual fixes for details.
Some fixes store an internal "state" which is written to binary
restart files via the "restart"_restart.html or
"write_restart"_write_restart.html commands. This allows the fix to
continue on with its calculations in a restarted simulation. See the
"read_restart"_read_restart.html command for info on how to re-specify
a fix in an input script that reads a restart file. See the doc pages
for individual fixes for info on which ones can be restarted.
:line
Some fixes calculate one of three styles of quantities: global,
per-atom, or local, which can be used by other commands or output as
described below. A global quantity is one or more system-wide values,
e.g. the energy of a wall interacting with particles. A per-atom
quantity is one or more values per atom, e.g. the displacement vector
for each atom since time 0. Per-atom values are set to 0.0 for atoms
not in the specified fix group. Local quantities are calculated by
each processor based on the atoms it owns, but there may be zero or
more per atoms.
Note that a single fix may produces either global or per-atom or local
quantities (or none at all), but never more than one of these.
Global, per-atom, and local quantities each come in three kinds: a
single scalar value, a vector of values, or a 2d array of values. The
doc page for each fix describes the style and kind of values it
produces, e.g. a per-atom vector. Some fixes produce more than one
kind of a single style, e.g. a global scalar and a global vector.
When a fix quantity is accessed, as in many of the output commands
discussed below, it can be referenced via the following bracket
notation, where ID is the ID of the fix:
f_ID | entire scalar, vector, or array
f_ID\[I\] | one element of vector, one column of array
f_ID\[I\]\[J\] | one element of array :tb(s=|)
In other words, using one bracket reduces the dimension of the
quantity once (vector -> scalar, array -> vector). Using two brackets
reduces the dimension twice (array -> scalar). Thus a command that
uses scalar fix values as input can also process elements of a vector
or array.
Note that commands and "variables"_variable.html which use fix
quantities typically do not allow for all kinds, e.g. a command may
require a vector of values, not a scalar. This means there is no
ambiguity about referring to a fix quantity as f_ID even if it
produces, for example, both a scalar and vector. The doc pages for
various commands explain the details.
:line
In LAMMPS, the values generated by a fix can be used in several ways:
Global values can be output via the "thermo_style
custom"_thermo_style.html or "fix ave/time"_fix_ave_time.html command.
Or the values can be referenced in a "variable equal"_variable.html or
"variable atom"_variable.html command. :ulb,l
Per-atom values can be output via the "dump custom"_dump.html command
or the "fix ave/spatial"_fix_ave_spatial.html command. Or they can be
time-averaged via the "fix ave/atom"_fix_ave_atom.html command or
reduced by the "compute reduce"_compute_reduce.html command. Or the
per-atom values can be referenced in an "atom-style
variable"_variable.html. :l
Local values can be reduced by the "compute
reduce"_compute_reduce.html command, or histogrammed by the "fix
ave/histo"_fix_ave_histo.html command. :l,ule
-See this "howto section"_Section_howto.html#4_15 for a summary of
+See this "howto section"_Section_howto.html#howto_15 for a summary of
various LAMMPS output options, many of which involve fixes.
The results of fixes that calculate global quantities can be either
"intensive" or "extensive" values. Intensive means the value is
independent of the number of atoms in the simulation,
e.g. temperature. Extensive means the value scales with the number of
atoms in the simulation, e.g. total rotational kinetic energy.
"Thermodynamic output"_thermo_style.html will normalize extensive
values by the number of atoms in the system, depending on the
"thermo_modify norm" setting. It will not normalize intensive values.
If a fix value is accessed in another way, e.g. by a
"variable"_variable.html, you may want to know whether it is an
intensive or extensive value. See the doc page for individual fixes
for further info.
:line
Each fix style has its own documentation page which describes its
arguments and what it does, as listed below. Here is an alphabetic
list of fix styles available in LAMMPS:
"adapt"_fix_adapt.html - change a simulation parameter over time
"addforce"_fix_addforce.html - add a force to each atom
"aveforce"_fix_aveforce.html - add an averaged force to each atom
"ave/atom"_fix_ave_atom.html - compute per-atom time-averaged quantities
"ave/histo"_fix_ave_atom.html - compute/output time-averaged histograms
"ave/spatial"_fix_ave_spatial.html - compute/output time-averaged per-atom quantities by layer
"ave/time"_fix_ave_time.html - compute/output global time-averaged quantities
"bond/break"_fix_bond_break.html - break bonds on the fly
"bond/create"_fix_bond_create.html - create bonds on the fly
"bond/swap"_fix_bond_swap.html - Monte Carlo bond swapping
"box/relax"_fix_box_relax.html - relax box size during energy minimization
"deform"_fix_deform.html - change the simulation box size/shape
"deposit"_fix_deposit.html - add new atoms above a surface
"drag"_fix_drag.html - drag atoms towards a defined coordinate
"dt/reset"_fix_dt_reset.html - reset the timestep based on velocity, forces
"efield"_fix_efield.html - impose electric field on system
"enforce2d"_fix_enforce2d.html - zero out z-dimension velocity and force
"evaporate"_fix_evaporate.html - remove atoms from simulation periodically
"external"_fix_external.html - callback to an external driver program
"freeze"_fix_freeze.html - freeze atoms in a granular simulation
"gravity"_fix_gravity.html - add gravity to atoms in a granular simulation
+"gcmc"_fix_gcmc.html - grand canonical insertions/deletions
"heat"_fix_heat.html - add/subtract momentum-conserving heat
"indent"_fix_indent.html - impose force due to an indenter
"langevin"_fix_langevin.html - Langevin temperature control
"lineforce"_fix_lineforce.html - constrain atoms to move in a line
"momentum"_fix_momentum.html - zero the linear and/or angular momentum of a group of atoms
"move"_fix_move.html - move atoms in a prescribed fashion
"msst"_fix_msst.html - multi-scale shock technique (MSST) integration
"neb"_fix_neb.html - nudged elastic band (NEB) spring forces
"nph"_fix_nh.html - constant NPH time integration via Nose/Hoover
"nph/asphere"_fix_nph_asphere.html - NPH for aspherical particles
"nph/sphere"_fix_nph_sphere.html - NPH for spherical particles
"npt"_fix_nh.html - constant NPT time integration via Nose/Hoover
"npt/asphere"_fix_npt_asphere.html - NPT for aspherical particles
"npt/sphere"_fix_npt_sphere.html - NPT for spherical particles
"nve"_fix_nve.html - constant NVE time integration
"nve/asphere"_fix_nve_asphere.html - NVT for aspherical particles
"nve/limit"_fix_nve_limit.html - NVE with limited step length
"nve/noforce"_fix_nve_noforce.html - NVE without forces (v only)
"nve/sphere"_fix_nve_sphere.html - NVT for spherical particles
"nvt"_fix_nh.html - constant NVT time integration via Nose/Hoover
"nvt/asphere"_fix_nvt_asphere.html - NVT for aspherical particles
"nvt/sllod"_fix_nvt_sllod.html - NVT for NEMD with SLLOD equations
"nvt/sphere"_fix_nvt_sphere.html - NVT for spherical particles
"orient/fcc"_fix_orient_fcc.html - add grain boundary migration force
"planeforce"_fix_planeforce.html - constrain atoms to move in a plane
"poems"_fix_poems.html - constrain clusters of atoms to move \
as coupled rigid bodies
"pour"_fix_pour.html - pour new atoms into a granular simulation domain
"press/berendsen"_fix_press_berendsen.html - pressure control by \
Berendsen barostat
"print"_fix_print.html - print text and variables during a simulation
"reax/bonds"_fix_reax_bonds.html - write out ReaxFF bond information \
"recenter"_fix_recenter.html - constrain the center-of-mass position \
of a group of atoms
+"restrain"_fix_restrain.html - constrain a bond, angle, dihedral
"rigid"_fix_rigid.html - constrain one or more clusters of atoms to \
move as a rigid body with NVE integration
"rigid/nve"_fix_rigid.html - constrain one or more clusters of atoms to \
move as a rigid body with alternate NVE integration
"rigid/nvt"_fix_rigid.html - constrain one or more clusters of atoms to \
move as a rigid body with NVT integration
"setforce"_fix_setforce.html - set the force on each atom
"shake"_fix_shake.html - SHAKE constraints on bonds and/or angles
"spring"_fix_spring.html - apply harmonic spring force to group of atoms
"spring/rg"_fix_spring_rg.html - spring on radius of gyration of \
group of atoms
"spring/self"_fix_spring_self.html - spring from each atom to its origin
"srd"_fix_srd.html - stochastic rotation dynamics (SRD)
"store/force"_fix_store_force.html - store force on each atom
"store/state"_fix_store_state.html - store attributes for each atom
"temp/berendsen"_fix_temp_berendsen.html - temperature control by \
Berendsen thermostat
"temp/rescale"_fix_temp_rescale.html - temperature control by \
velocity rescaling
"thermal/conductivity"_fix_thermal_conductivity.html - Muller-Plathe kinetic energy exchange for \
thermal conductivity calculation
"tmd"_fix_tmd.html - guide a group of atoms to a new configuration
"ttm"_fix_ttm.html - two-temperature model for electronic/atomic coupling
"viscosity"_fix_viscosity.html - Muller-Plathe momentum exchange for \
viscosity calculation
"viscous"_fix_viscous.html - viscous damping for granular simulations
"wall/colloid"_fix_wall.html - Lennard-Jones wall interacting with finite-size particles
"wall/gran"_fix_wall_gran.html - frictional wall(s) for granular simulations
"wall/harmonic"_fix_wall.html - harmonic spring wall
"wall/lj126"_fix_wall.html - Lennard-Jones 12-6 wall
"wall/lj93"_fix_wall.html - Lennard-Jones 9-3 wall
"wall/reflect"_fix_wall_reflect.html - reflecting wall(s)
"wall/region"_fix_wall_region.html - use region surface as wall
"wall/srd"_fix_wall_srd.html - slip/no-slip wall for SRD particles :ul
There are also additional fix 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 fix section of "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
There are also additional accelerated fix styles included in the
LAMMPS distribution for faster performance on CPUs and GPUs. The list
of these with links to the individual styles are given in the pair
-section of "this page"_Section_commands.html#3_5.
+section of "this page"_Section_commands.html#cmd_5.
[Restrictions:]
Some fix styles are part of specific packages. They are only enabled
if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages. The
-doc pages for individual fixes tell if it is part of a package.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
+The doc pages for individual fixes tell if it is part of a package.
[Related commands:]
"unfix"_unfix.html, "fix_modify"_fix_modify.html
[Default:] none
diff --git a/doc/fix_adapt.html b/doc/fix_adapt.html
index 810a1c26d..3d6c1a343 100644
--- a/doc/fix_adapt.html
+++ b/doc/fix_adapt.html
@@ -1,251 +1,251 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix adapt command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID adapt N attribute args ... keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>adapt = style name of this fix command
<LI>N = adapt simulation settings every this many timesteps
<LI>one or more attribute/arg pairs may be appended
<LI>attribute = <I>pair</I> or <I>kspace</I> or <I>atom</I>
<PRE> <I>pair</I> args = pstyle pparam I J v_name
pstyle = pair style name, e.g. lj/cut
pparam = parameter to adapt over time
I,J = type pair(s) to set parameter for
v_name = variable with name that calculates value of pparam
<I>kspace</I> arg = v_name
v_name = variable with name that calculates scale factor on K-space terms
<I>atom</I> args = aparam v_name
aparam = parameter to adapt over time
v_name = variable with name that calculates value of aparam
</PRE>
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>scale</I> or <I>reset</I>
<PRE> <I>scale</I> value = <I>no</I> or <I>yes</I>
<I>no</I> = the variable value is the new setting
<I>yes</I> = the variable value multiplies the original setting
</PRE>
<PRE> <I>reset</I> value = <I>no</I> or <I>yes</I>
<I>no</I> = values will remain altered at the end of a run
<I>yes</I> = reset altered values to their original values at the end of a run
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all adapt 1 pair soft a 1 1 v_prefactor
fix 1 all adapt 1 pair soft a 2* 3 v_prefactor
fix 1 all adapt 1 pair lj/cut epsilon * * v_scale1 coul/cut scale 3 3 v_scale2 scale yes reset yes
fix 1 all adapt 10 atom diameter v_size
</PRE>
<P><B>Description:</B>
</P>
<P>Change or adapt one or more specific simulation attributes or settings
over time as a simulation runs. Pair potential and K-space and atom
attributes which can be varied by this fix are discussed below. Many
other fixes can also be used to time-vary simulation parameters,
e.g. the "fix deform" command will change the simulation box
size/shape and the "fix move" command will change atom positions and
velocities in a prescribed manner.
</P>
<P>If <I>N</I> is specified as 0, the specified attributes are only changed
once, before the simulation begins. This is all that is needed if the
associated variables are not time-dependent. If <I>N</I> > 0, then changes
are made every <I>N</I> steps during the simulation, presumably with a
variable that is time-dependent.
</P>
<P>Depending on the value of the <I>reset</I> keyword, attributes changed by
this fix will or will not be reset back to their original values at
the end of a simulation. Even if <I>reset</I> is specified as <I>yes</I>, a
restart file written during a simulation will contain the modified
settings.
</P>
<P>IMPORTANT NOTE: Currently, only the <I>pair</I> and <I>kspace</I> params
are resettable. <I>Atom</I> attributes are not. This will be
added at some point.
</P>
<P>If the <I>scale</I> keyword is set to <I>no</I>, then the value the parameter is
set to will be whatever the variable generates. If the <I>scale</I>
keyword is set to <I>yes</I>, then the value of the altered parameter will
be the initial value of that parameter multiplied by whatever the
variable generates. I.e. the variable is now a "scale factor" applied
in (presumably) a time-varying fashion to the parameter. Internally,
the parameters themselves are actually altered; make sure you use the
<I>reset yes</I> option if you want the parameters to be restored to their
initial values after the run.
</P>
<HR>
<P>The <I>pair</I> keyword enables various parameters of potentials defined by
the <A HREF = "pair_style.html">pair_style</A> command to be changed, if the pair
style supports it. Note that the <A HREF = "pair_style.html">pair_style</A> and
<A HREF = "pair_coeff.html">pair_coeff</A> commands must be used in the usual manner
to specify these parameters initially; the fix adapt command simply
overrides the parameters.
</P>
<P>The <I>pstyle</I> argument is the name of the pair style. If <A HREF = "pair_hybrid.html">pair_style
hybrid or hybrid/overlay</A> is used, <I>pstyle</I> should be
a sub-style name. For example, <I>pstyle</I> could be specified as "soft"
or "lubricate". The <I>pparam</I> argument is the name of the parameter to
change. This is the current list of pair styles and parameters that
can be varied by this fix. See the doc pages for individual pair
styles and their energy formulas for the meaning of these parameters:
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD ><A HREF = "pair_born.html">born</A></TD><TD > a,b,c</TD><TD > type pairs</TD></TR>
<TR><TD ><A HREF = "pair_buck.html">buck</A></TD><TD > a,c</TD><TD > type pairs</TD></TR>
<TR><TD ><A HREF = "pair_coul.html">coul/cut</A></TD><TD > scale</TD><TD > type pairs</TD></TR>
<TR><TD ><A HREF = "pair_coul.html">coul/debye</A></TD><TD > scale</TD><TD > type pairs</TD></TR>
<TR><TD ><A HREF = "pair_coul.html">coul/long</A></TD><TD > scale</TD><TD > type pairs</TD></TR>
<TR><TD ><A HREF = "pair_lj.html">lj/cut</A></TD><TD > epsilon</TD><TD > type pairs</TD></TR>
<TR><TD ><A HREF = "pair_lj.html">lj/cut/opt</A></TD><TD > epsilon</TD><TD > type pairs</TD></TR>
<TR><TD ><A HREF = "pair_lubricate.html">lubricate</A></TD><TD > mu</TD><TD > global</TD></TR>
<TR><TD ><A HREF = "pair_gauss.html">gauss</A></TD><TD > a</TD><TD > type pairs</TD></TR>
<TR><TD ><A HREF = "pair_soft.html">soft</A></TD><TD > a</TD><TD > type pairs
</TD></TR></TABLE></DIV>
<P>IMPORTANT NOTE: It is easy to add new potentials and their parameters
to this list. All it typically takes is adding an extract() method to
the pair_*.cpp file associated with the potential.
</P>
<P>Some parameters are global settings for the pair style, e.g. the
viscosity setting "mu" for <A HREF = "pair_lubricate.html">pair_style lubricate</A>.
Other parameters apply to atom type pairs within the pair style,
e.g. the prefactor "a" for <A HREF = "pair_soft.html">pair_style soft</A>.
</P>
<P>Note that for many of the potentials, the parameter that can be varied
is effectively a prefactor on the entire energy expression for the
potential, e.g. the lj/cut epsilon. The parameters listed as "scale"
are exactly that, since the energy expression for the
<A HREF = "pair_coul.html">coul/cut</A> potential (for example) has no labeled
prefactor in its formula. To apply an effective prefactor to some
potentials, multiple parameters need to be altered. For example, the
<A HREF = "pair_buck.html">Buckingham potential</A> needs both the A and C terms
altered together. To scale the Buckingham potential, you should thus
list the pair style twice, once for A and once for C.
</P>
<P>If a type pair parameter is specified, the <I>I</I> and <I>J</I> settings should
be specified to indicate which type pairs to apply it to. If a global
parameter is specified, the <I>I</I> and <I>J</I> settings still need to be
specified, but are ignored.
</P>
<P>Similar to the <A HREF = "pair_coeff.html">pair_coeff command</A>, I and J can be
specified in one of two ways. Explicit numeric values can be used for
each, as in the 1st example above. I <= J is required. LAMMPS sets
the coefficients for the symmetric J,I interaction to the same values.
</P>
<P>A wild-card asterisk can be used in place of or in conjunction with
the I,J arguments to set the coefficients for multiple pairs 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). Note that only type pairs with I <= J are considered; if
asterisks imply type pairs where J < I, they are ignored.
</P>
<P>IMPROTANT NOTE: If <A HREF = "pair_hybrid.html">pair_style hybrid or
hybrid/overlay</A> is being used, then the <I>pstyle</I> will
be a sub-style name. You must specify I,J arguments that correspond
to type pair values defined (via the <A HREF = "doc/pair_coeff.html">pair_coeff</A>
command) for that sub-style.
</P>
<P>The <I>v_name</I> argument for keyword <I>pair</I> is the name of an
<A HREF = "variable.html">equal-style variable</A> which will be evaluated each time
this fix is invoked to set the parameter to a new value. It should be
specified as v_name, where name is the variable name. Equal-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. Thus it is
easy to specify parameters that change as a function of time or span
consecutive runs in a continuous fashion. For the latter, see the
<I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command and the
<I>elaplong</I> keyword of <A HREF = "thermo_style.html">thermo_style custom</A> for
details.
</P>
<P>For example, these commands would change the prefactor coefficient of
the <A HREF = "pair_soft.html">pair_style soft</A> potential from 10.0 to 30.0 in a
linear fashion over the course of a simulation:
</P>
<PRE>variable prefactor equal ramp(10,30)
fix 1 all adapt 1 pair soft a * * v_prefactor
</PRE>
<HR>
<P>The <I>kspace</I> keyword used the specified variable as a scale factor on
the energy, forces, virial calculated by whatever K-Space solver is
defined by the <A HREF = "kspace_style.html">kspace_style</A> command. If the
variable has a value of 1.0, then the solver is unaltered.
</P>
<P>The <I>kspace</I> keyword works this way whether the <I>scale</I> keyword
is set to <I>no</I> or <I>yes</I>.
</P>
<HR>
<P>The <I>atom</I> keyword enables various atom properties to be changed. The
<I>aparam</I> argument is the name of the parameter to change. This is the
current list of atom parameters that can be varied by this fix:
</P>
<UL><LI>diameter = diameter of particle
</UL>
<P>The <I>v_name</I> argument of the <I>atom</I> keyword is the name of an
<A HREF = "variable.html">equal-style variable</A> which will be evaluated each time
this fix is invoked to set the parameter to a new value. It should be
specified as v_name, where name is the variable name. See the
discussion above describing the formulas associated with equal-style
variables. The new value is assigned to the corresponding attribute
for all atoms in the fix group.
</P>
<P>If the atom parameter is <I>diameter</I> and per-atom density and per-atom
mass are defined for particles (e.g. <A HREF = "atom_style.html">atom_style
granular</A>), then the mass of each particle is also
changed when the diameter changes (density is assumed to stay
constant).
</P>
<P>For example, these commands would shrink the diameter of all granular
particles in the "center" group from 1.0 to 0.1 in a linear fashion
over the course of a 1000-step simulation:
</P>
<PRE>variable size equal ramp(1.0,0.1)
fix 1 center adapt 10 atom diameter v_size
</PRE>
<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>. 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#4_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.
+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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_ti.html">compute ti</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are scale = no, reset = no.
</P>
</HTML>
diff --git a/doc/fix_adapt.txt b/doc/fix_adapt.txt
index c9f625d05..04e383f2c 100644
--- a/doc/fix_adapt.txt
+++ b/doc/fix_adapt.txt
@@ -1,234 +1,234 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix adapt command :h3
[Syntax:]
fix ID group-ID adapt N attribute args ... keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
adapt = style name of this fix command :l
N = adapt simulation settings every this many timesteps :l
one or more attribute/arg pairs may be appended :l
attribute = {pair} or {kspace} or {atom} :l
{pair} args = pstyle pparam I J v_name
pstyle = pair style name, e.g. lj/cut
pparam = parameter to adapt over time
I,J = type pair(s) to set parameter for
v_name = variable with name that calculates value of pparam
{kspace} arg = v_name
v_name = variable with name that calculates scale factor on K-space terms
{atom} args = aparam v_name
aparam = parameter to adapt over time
v_name = variable with name that calculates value of aparam :pre
zero or more keyword/value pairs may be appended :l
keyword = {scale} or {reset} :l
{scale} value = {no} or {yes}
{no} = the variable value is the new setting
{yes} = the variable value multiplies the original setting :pre
{reset} value = {no} or {yes}
{no} = values will remain altered at the end of a run
{yes} = reset altered values to their original values at the end of a run :pre
:ule
[Examples:]
fix 1 all adapt 1 pair soft a 1 1 v_prefactor
fix 1 all adapt 1 pair soft a 2* 3 v_prefactor
fix 1 all adapt 1 pair lj/cut epsilon * * v_scale1 coul/cut scale 3 3 v_scale2 scale yes reset yes
fix 1 all adapt 10 atom diameter v_size :pre
[Description:]
Change or adapt one or more specific simulation attributes or settings
over time as a simulation runs. Pair potential and K-space and atom
attributes which can be varied by this fix are discussed below. Many
other fixes can also be used to time-vary simulation parameters,
e.g. the "fix deform" command will change the simulation box
size/shape and the "fix move" command will change atom positions and
velocities in a prescribed manner.
If {N} is specified as 0, the specified attributes are only changed
once, before the simulation begins. This is all that is needed if the
associated variables are not time-dependent. If {N} > 0, then changes
are made every {N} steps during the simulation, presumably with a
variable that is time-dependent.
Depending on the value of the {reset} keyword, attributes changed by
this fix will or will not be reset back to their original values at
the end of a simulation. Even if {reset} is specified as {yes}, a
restart file written during a simulation will contain the modified
settings.
IMPORTANT NOTE: Currently, only the {pair} and {kspace} params
are resettable. {Atom} attributes are not. This will be
added at some point.
If the {scale} keyword is set to {no}, then the value the parameter is
set to will be whatever the variable generates. If the {scale}
keyword is set to {yes}, then the value of the altered parameter will
be the initial value of that parameter multiplied by whatever the
variable generates. I.e. the variable is now a "scale factor" applied
in (presumably) a time-varying fashion to the parameter. Internally,
the parameters themselves are actually altered; make sure you use the
{reset yes} option if you want the parameters to be restored to their
initial values after the run.
:line
The {pair} keyword enables various parameters of potentials defined by
the "pair_style"_pair_style.html command to be changed, if the pair
style supports it. Note that the "pair_style"_pair_style.html and
"pair_coeff"_pair_coeff.html commands must be used in the usual manner
to specify these parameters initially; the fix adapt command simply
overrides the parameters.
The {pstyle} argument is the name of the pair style. If "pair_style
hybrid or hybrid/overlay"_pair_hybrid.html is used, {pstyle} should be
a sub-style name. For example, {pstyle} could be specified as "soft"
or "lubricate". The {pparam} argument is the name of the parameter to
change. This is the current list of pair styles and parameters that
can be varied by this fix. See the doc pages for individual pair
styles and their energy formulas for the meaning of these parameters:
"born"_pair_born.html: a,b,c: type pairs:
"buck"_pair_buck.html: a,c: type pairs:
"coul/cut"_pair_coul.html: scale: type pairs:
"coul/debye"_pair_coul.html: scale: type pairs:
"coul/long"_pair_coul.html: scale: type pairs:
"lj/cut"_pair_lj.html: epsilon: type pairs:
"lj/cut/opt"_pair_lj.html: epsilon: type pairs:
"lubricate"_pair_lubricate.html: mu: global:
"gauss"_pair_gauss.html: a: type pairs:
"soft"_pair_soft.html: a: type pairs :tb(c=3,s=:)
IMPORTANT NOTE: It is easy to add new potentials and their parameters
to this list. All it typically takes is adding an extract() method to
the pair_*.cpp file associated with the potential.
Some parameters are global settings for the pair style, e.g. the
viscosity setting "mu" for "pair_style lubricate"_pair_lubricate.html.
Other parameters apply to atom type pairs within the pair style,
e.g. the prefactor "a" for "pair_style soft"_pair_soft.html.
Note that for many of the potentials, the parameter that can be varied
is effectively a prefactor on the entire energy expression for the
potential, e.g. the lj/cut epsilon. The parameters listed as "scale"
are exactly that, since the energy expression for the
"coul/cut"_pair_coul.html potential (for example) has no labeled
prefactor in its formula. To apply an effective prefactor to some
potentials, multiple parameters need to be altered. For example, the
"Buckingham potential"_pair_buck.html needs both the A and C terms
altered together. To scale the Buckingham potential, you should thus
list the pair style twice, once for A and once for C.
If a type pair parameter is specified, the {I} and {J} settings should
be specified to indicate which type pairs to apply it to. If a global
parameter is specified, the {I} and {J} settings still need to be
specified, but are ignored.
Similar to the "pair_coeff command"_pair_coeff.html, I and J can be
specified in one of two ways. Explicit numeric values can be used for
each, as in the 1st example above. I <= J is required. LAMMPS sets
the coefficients for the symmetric J,I interaction to the same values.
A wild-card asterisk can be used in place of or in conjunction with
the I,J arguments to set the coefficients for multiple pairs 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). Note that only type pairs with I <= J are considered; if
asterisks imply type pairs where J < I, they are ignored.
IMPROTANT NOTE: If "pair_style hybrid or
hybrid/overlay"_pair_hybrid.html is being used, then the {pstyle} will
be a sub-style name. You must specify I,J arguments that correspond
to type pair values defined (via the "pair_coeff"_doc/pair_coeff.html
command) for that sub-style.
The {v_name} argument for keyword {pair} is the name of an
"equal-style variable"_variable.html which will be evaluated each time
this fix is invoked to set the parameter to a new value. It should be
specified as v_name, where name is the variable name. Equal-style
variables can specify formulas with various mathematical functions,
and include "thermo_style"_thermo_style.html command keywords for the
simulation box parameters and timestep and elapsed time. Thus it is
easy to specify parameters that change as a function of time or span
consecutive runs in a continuous fashion. For the latter, see the
{start} and {stop} keywords of the "run"_run.html command and the
{elaplong} keyword of "thermo_style custom"_thermo_style.html for
details.
For example, these commands would change the prefactor coefficient of
the "pair_style soft"_pair_soft.html potential from 10.0 to 30.0 in a
linear fashion over the course of a simulation:
variable prefactor equal ramp(10,30)
fix 1 all adapt 1 pair soft a * * v_prefactor :pre
:line
The {kspace} keyword used the specified variable as a scale factor on
the energy, forces, virial calculated by whatever K-Space solver is
defined by the "kspace_style"_kspace_style.html command. If the
variable has a value of 1.0, then the solver is unaltered.
The {kspace} keyword works this way whether the {scale} keyword
is set to {no} or {yes}.
:line
The {atom} keyword enables various atom properties to be changed. The
{aparam} argument is the name of the parameter to change. This is the
current list of atom parameters that can be varied by this fix:
diameter = diameter of particle :ul
The {v_name} argument of the {atom} keyword is the name of an
"equal-style variable"_variable.html which will be evaluated each time
this fix is invoked to set the parameter to a new value. It should be
specified as v_name, where name is the variable name. See the
discussion above describing the formulas associated with equal-style
variables. The new value is assigned to the corresponding attribute
for all atoms in the fix group.
If the atom parameter is {diameter} and per-atom density and per-atom
mass are defined for particles (e.g. "atom_style
granular"_atom_style.html), then the mass of each particle is also
changed when the diameter changes (density is assumed to stay
constant).
For example, these commands would shrink the diameter of all granular
particles in the "center" group from 1.0 to 0.1 in a linear fashion
over the course of a 1000-step simulation:
variable size equal ramp(1.0,0.1)
fix 1 center adapt 10 atom diameter v_size :pre
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"compute ti"_compute_ti.html
[Default:]
The option defaults are scale = no, reset = no.
diff --git a/doc/fix_addforce.html b/doc/fix_addforce.html
index 16b334264..2e5455418 100644
--- a/doc/fix_addforce.html
+++ b/doc/fix_addforce.html
@@ -1,176 +1,176 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix addforce command
</H3>
<H3>fix addforce/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID addforce fx fy fz keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>addforce = style name of this fix command
<LI>fx,fy,fz = force component values (force units)
<LI>any of fx,fy,fz can be a variable (see below)
<LI>zero or more keyword/value pairs may be appended to args
<LI>keyword = <I>region</I> or <I>energy</I>
<PRE> <I>region</I> value = region-ID
region-ID = ID of region atoms must be in to have added force
<I>energy</I> value = v_name
v_name = variable with name that calculates the potential energy of each atom in the added force field
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix kick flow addforce 1.0 0.0 0.0
fix kick flow addforce 1.0 0.0 v_oscillate
fix ff boundary addforce 0.0 0.0 v_push energy v_espace
</PRE>
<P><B>Description:</B>
</P>
<P>Add fx,fy,fz to the corresponding component of force for each atom in
the group. This command can be used to give an additional push to
atoms in a simulation, such as for a simulation of Poiseuille flow in
a channel.
</P>
<P>Any of the 3 quantities defining the force components can be specified
as an equal-style or atom-style <A HREF = "variable.html">variable</A>, namely <I>fx</I>,
<I>fy</I>, <I>fz</I>. 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 each timestep, and its value used to determine the
force component.
</P>
<P>Equal-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. Thus it is easy to specify a time-dependent force field.
</P>
<P>Atom-style variables can specify the same formulas as equal-style
variables but can also include per-atom values, such as atom
coordinates. Thus it is easy to specify a spatially-dependent force
field with optional time-dependence as well.
</P>
<P>If the <I>region</I> keyword is used, the atom must also be in the
specified geometric <A HREF = "region.html">region</A> in order to have force added
to it.
</P>
<HR>
<P>Adding a force to atoms implies a change in their potential energy as
they move due to the applied force field. For dynamics via the "run"
command, this energy can be optionally added to the system's potential
energy for thermodynamic output (see below). For energy minimization
via the "minimize" command, this energy must be added to the system's
potential energy to formulate a self-consistent minimization problem
(see below).
</P>
<P>The <I>energy</I> keyword is not allowed if the added force is a constant
vector F = (fx,fy,fz), with all components defined as numeric
constants and not as variables. This is because LAMMPS can compute
the energy for each atom directly as E = -x dot F = -(x*fx + y*fy +
z*fz), so that -Grad(E) = F.
</P>
<P>The <I>energy</I> keyword is optional if the added force is defined with
one or more variables, and if you are performing dynamics via the
<A HREF = "run.html">run</A> command. If the keyword is not used, LAMMPS will set
the energy to 0.0, which is typically fine for dynamics.
</P>
<P>The <I>energy</I> keyword is required if the added force is defined with
one or more variables, and you are performing energy minimization via
the "minimize" command. The keyword specifies the name of an
atom-style <A HREF = "variable.html">variable</A> which is used to compute the
energy of each atom as function of its position. Like variables used
for <I>fx</I>, <I>fy</I>, <I>fz</I>, the energy variable is specified as v_name,
where name is the variable name.
</P>
<P>Note that when the <I>energy</I> keyword is used during an energy
minimization, you must insure that the formula defined for the
atom-style <A HREF = "variable.html">variable</A> is consistent with the force
variable formulas, i.e. that -Grad(E) = F. For example, if the force
were a spring-like F = kx, then the energy formula should be E =
-0.5kx^2. If you don't do this correctly, the minimization will not
converge properly.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the potential "energy" inferred by the added force to the
system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>. This is a fictitious quantity but is
needed so that the <A HREF = "minimize.html">minimize</A> command can include the
forces added by this fix in a consistent manner. I.e. there is a
decrease in potential energy when atoms move in the direction of the
added force.
</P>
<P>This fix computes a global scalar and a global 3-vector of forces,
-which can be accessed by various <A HREF = "Section_howto.html#4_15">output
-commands</A>. The scalar is the potential energy
-discussed above. The vector is the total force on the group of atoms
-before the forces on individual atoms are changed by the fix. The
-scalar and vector values calculated by this fix are "extensive".
+which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. The scalar is the potential
+energy discussed above. The vector is the total force on the group of
+atoms before the forces on individual atoms are changed by the fix.
+The scalar and vector values calculated by this fix are "extensive".
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command. You should not
specify force components with a variable that has time-dependence for
use with a minimizer, since the minimizer increments the timestep as
the iteration count during the minimization.
</P>
<P>IMPORTANT NOTE: If you want the fictitious potential energy associated
with the added forces to be included in the total potential energy of
the system (the quantity being minimized), you MUST enable the
<A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option for this fix.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_setforce.html">fix setforce</A>, <A HREF = "fix_aveforce.html">fix aveforce</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_addforce.txt b/doc/fix_addforce.txt
index 9faa42981..3dc0b740b 100644
--- a/doc/fix_addforce.txt
+++ b/doc/fix_addforce.txt
@@ -1,163 +1,163 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix addforce command :h3
fix addforce/cuda command :h3
[Syntax:]
fix ID group-ID addforce fx fy fz keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
addforce = style name of this fix command :l
fx,fy,fz = force component values (force units) :l
any of fx,fy,fz can be a variable (see below) :l
zero or more keyword/value pairs may be appended to args :l
keyword = {region} or {energy} :l
{region} value = region-ID
region-ID = ID of region atoms must be in to have added force
{energy} value = v_name
v_name = variable with name that calculates the potential energy of each atom in the added force field :pre
:ule
[Examples:]
fix kick flow addforce 1.0 0.0 0.0
fix kick flow addforce 1.0 0.0 v_oscillate
fix ff boundary addforce 0.0 0.0 v_push energy v_espace :pre
[Description:]
Add fx,fy,fz to the corresponding component of force for each atom in
the group. This command can be used to give an additional push to
atoms in a simulation, such as for a simulation of Poiseuille flow in
a channel.
Any of the 3 quantities defining the force components can be specified
as an equal-style or atom-style "variable"_variable.html, namely {fx},
{fy}, {fz}. 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 each timestep, and its value used to determine the
force component.
Equal-style variables can specify formulas with various mathematical
functions, and include "thermo_style"_thermo_style.html command
keywords for the simulation box parameters and timestep and elapsed
time. Thus it is easy to specify a time-dependent force field.
Atom-style variables can specify the same formulas as equal-style
variables but can also include per-atom values, such as atom
coordinates. Thus it is easy to specify a spatially-dependent force
field with optional time-dependence as well.
If the {region} keyword is used, the atom must also be in the
specified geometric "region"_region.html in order to have force added
to it.
:line
Adding a force to atoms implies a change in their potential energy as
they move due to the applied force field. For dynamics via the "run"
command, this energy can be optionally added to the system's potential
energy for thermodynamic output (see below). For energy minimization
via the "minimize" command, this energy must be added to the system's
potential energy to formulate a self-consistent minimization problem
(see below).
The {energy} keyword is not allowed if the added force is a constant
vector F = (fx,fy,fz), with all components defined as numeric
constants and not as variables. This is because LAMMPS can compute
the energy for each atom directly as E = -x dot F = -(x*fx + y*fy +
z*fz), so that -Grad(E) = F.
The {energy} keyword is optional if the added force is defined with
one or more variables, and if you are performing dynamics via the
"run"_run.html command. If the keyword is not used, LAMMPS will set
the energy to 0.0, which is typically fine for dynamics.
The {energy} keyword is required if the added force is defined with
one or more variables, and you are performing energy minimization via
the "minimize" command. The keyword specifies the name of an
atom-style "variable"_variable.html which is used to compute the
energy of each atom as function of its position. Like variables used
for {fx}, {fy}, {fz}, the energy variable is specified as v_name,
where name is the variable name.
Note that when the {energy} keyword is used during an energy
minimization, you must insure that the formula defined for the
atom-style "variable"_variable.html is consistent with the force
variable formulas, i.e. that -Grad(E) = F. For example, if the force
were a spring-like F = kx, then the energy formula should be E =
-0.5kx^2. If you don't do this correctly, the minimization will not
converge properly.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the potential "energy" inferred by the added force to the
system's potential energy as part of "thermodynamic
output"_thermo_style.html. This is a fictitious quantity but is
needed so that the "minimize"_minimize.html command can include the
forces added by this fix in a consistent manner. I.e. there is a
decrease in potential energy when atoms move in the direction of the
added force.
This fix computes a global scalar and a global 3-vector of forces,
which can be accessed by various "output
-commands"_Section_howto.html#4_15. The scalar is the potential energy
-discussed above. The vector is the total force on the group of atoms
-before the forces on individual atoms are changed by the fix. The
-scalar and vector values calculated by this fix are "extensive".
+commands"_Section_howto.html#howto_15. The scalar is the potential
+energy discussed above. The vector is the total force on the group of
+atoms before the forces on individual atoms are changed by the fix.
+The scalar and vector values calculated by this fix are "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command. You should not
specify force components with a variable that has time-dependence for
use with a minimizer, since the minimizer increments the timestep as
the iteration count during the minimization.
IMPORTANT NOTE: If you want the fictitious potential energy associated
with the added forces to be included in the total potential energy of
the system (the quantity being minimized), you MUST enable the
"fix_modify"_fix_modify.html {energy} option for this fix.
[Restrictions:] none
[Related commands:]
"fix setforce"_fix_setforce.html, "fix aveforce"_fix_aveforce.html
[Default:] none
diff --git a/doc/fix_addtorque.html b/doc/fix_addtorque.html
index bb85b93db..5db501ff5 100644
--- a/doc/fix_addtorque.html
+++ b/doc/fix_addtorque.html
@@ -1,102 +1,102 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix addtorque command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID addtorque Tx Ty Tz
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>addtorque = style name of this fix command
<LI>Tx,Ty,Tz = torque component values (torque units)
<LI>any of Tx,Ty,Tz can be a variable (see below)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix kick bead addtorque 2.0 3.0 5.0
fix kick bead addtorque 0.0 0.0 v_oscillate
</PRE>
<P><B>Description:</B>
</P>
<P>Add a set of forces to each atom in
the group such that:
</P>
<UL><LI>the components of the total torque applied on the group (around its
center of mass) are Tx,Ty,Tz
<LI>the group would move as a rigid body in the absence of other
forces.
</UL>
<P>This command can be used to drive a group of atoms into rotation.
</P>
<P>Any of the 3 quantities defining the torque components can be specified
as an equal-style <A HREF = "variable.html">variable</A>, namely <I>Tx</I>,
<I>Ty</I>, <I>Tz</I>. 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 each timestep, and its value used to determine the
torque component.
</P>
<P>Equal-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. Thus it is easy to specify a time-dependent torque.
</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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the potential "energy" inferred by the added forces to the
system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>. This is a fictitious quantity but is
needed so that the <A HREF = "minimize.html">minimize</A> command can include the
forces added by this fix in a consistent manner. I.e. there is a
decrease in potential energy when atoms move in the direction of the
added forces.
</P>
-<P>This fix computes a global scalar and a global 3-vector,
-which can be accessed by various <A HREF = "Section_howto.html#4_15">output
-commands</A>. The scalar is the potential energy
-discussed above. The vector is the total torque on the group of atoms
-before the forces on individual atoms are changed by the fix. The
-scalar and vector values calculated by this fix are "extensive".
+<P>This fix computes a global scalar and a global 3-vector, which can be
+accessed by various <A HREF = "Section_howto.html#howto_15">output commands</A>.
+The scalar is the potential energy discussed above. The vector is the
+total torque on the group of atoms before the forces on individual
+atoms are changed by the fix. The scalar and vector values calculated
+by this fix are "extensive".
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command. You should not
specify force components with a variable that has time-dependence for
use with a minimizer, since the minimizer increments the timestep as
the iteration count during the minimization.
</P>
<P><B>Restrictions:</B>
</P>
<P>This fix is part of the "user-misc" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_addforce.html">fix addforce</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_addtorque.txt b/doc/fix_addtorque.txt
index c0d2741b5..9e8b82f73 100644
--- a/doc/fix_addtorque.txt
+++ b/doc/fix_addtorque.txt
@@ -1,93 +1,93 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix addtorque command :h3
[Syntax:]
fix ID group-ID addtorque Tx Ty Tz :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
addtorque = style name of this fix command :l
Tx,Ty,Tz = torque component values (torque units) :l
any of Tx,Ty,Tz can be a variable (see below) :l
:ule
[Examples:]
fix kick bead addtorque 2.0 3.0 5.0
fix kick bead addtorque 0.0 0.0 v_oscillate :pre
[Description:]
Add a set of forces to each atom in
the group such that:
the components of the total torque applied on the group (around its
center of mass) are Tx,Ty,Tz :ulb,l
the group would move as a rigid body in the absence of other
forces. :l,ule
This command can be used to drive a group of atoms into rotation.
Any of the 3 quantities defining the torque components can be specified
as an equal-style "variable"_variable.html, namely {Tx},
{Ty}, {Tz}. 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 each timestep, and its value used to determine the
torque component.
Equal-style variables can specify formulas with various mathematical
functions, and include "thermo_style"_thermo_style.html command
keywords for the simulation box parameters and timestep and elapsed
time. Thus it is easy to specify a time-dependent torque.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the potential "energy" inferred by the added forces to the
system's potential energy as part of "thermodynamic
output"_thermo_style.html. This is a fictitious quantity but is
needed so that the "minimize"_minimize.html command can include the
forces added by this fix in a consistent manner. I.e. there is a
decrease in potential energy when atoms move in the direction of the
added forces.
-This fix computes a global scalar and a global 3-vector,
-which can be accessed by various "output
-commands"_Section_howto.html#4_15. The scalar is the potential energy
-discussed above. The vector is the total torque on the group of atoms
-before the forces on individual atoms are changed by the fix. The
-scalar and vector values calculated by this fix are "extensive".
+This fix computes a global scalar and a global 3-vector, which can be
+accessed by various "output commands"_Section_howto.html#howto_15.
+The scalar is the potential energy discussed above. The vector is the
+total torque on the group of atoms before the forces on individual
+atoms are changed by the fix. The scalar and vector values calculated
+by this fix are "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command. You should not
specify force components with a variable that has time-dependence for
use with a minimizer, since the minimizer increments the timestep as
the iteration count during the minimization.
[Restrictions:]
This fix is part of the "user-misc" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"fix addforce"_fix_addforce.html
[Default:] none
diff --git a/doc/fix_atc.html b/doc/fix_atc.html
index 83c320740..7e37dd198 100644
--- a/doc/fix_atc.html
+++ b/doc/fix_atc.html
@@ -1,239 +1,239 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix atc command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID groupID atc type paramfile
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>atc = style name of this fix command
<LI>type = <I>thermal</I> or <I>two_temperature</I> or <I>hardy</I>
<PRE> <I>thermal</I> = thermal coupling with field: temperature
<I>two_temperature</I> = electron-phonon coupling with field, temperature and electron_temperature
<I>hardy</I> = Hardy on-the-fly post-processing
</PRE>
<LI>paramfile = file with material parameters (not specified for <I>hardy</I> type)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix AtC atc_atoms atc thermal Ar_thermal.dat
fix AtC atc_atoms atc transfer hardy
</PRE>
<P><B>Description:</B>
</P>
<P>This fix creates a coupled finite element (FE) and molecular dynamics
(MD) simulation and/or an on-the-fly estimation of continuum fields,
where a FE mesh is specified and overlaps the particles, something
like this:
</P>
<CENTER><IMG SRC = "JPG/atc_nanotube.jpg">
</CENTER>
<P>Interscale operators are defined that construct continuum fields from
atomic data. Coupled simulations use FE projection approximated on a
discrete field. Currently, coupling is restricted to thermal physics.
The Hardy module can use either FE projection or integration Kernels
evaluated at mesh points.
</P>
<P>Coupling methods enable appropriate corrections to the atomic data to
be made based on the FE field. For example, a Gaussian isokinetic
thermostat can apply heat sources to the atoms that varies in space on
the same scale as the FE element size. Meshes are not created
automatically and must be specified on LAMMPS regions with prescribed
element sizes.
</P>
<P>Coupling and post-processing can be combined in the same simulations
using separate fix atc commands.
</P>
<P>Note that mesh computations and storage run in serial (not
parallelized) so performance will degrade when large element counts
are used.
</P>
<P>For detailed exposition of the theory and algorithms implemented in
this fix, please see the papers <A HREF = "#Wagner">here</A> and <A HREF = "#Zimmerman">here</A>.
Please refer to the standard finite element (FE) texts, such as <A HREF = "#Hughes">this
book</A>, for the basics of FE simulation.
</P>
<HR>
<P><I>Thermal</I> and <I>two_temperature</I> (coupling) types use a Verlet
time-integration algorithm. The <I>hardy</I> type does not contain its own
time-integrator and must be used with a separate fix that does contain
one, e.g. <A HREF = "fix_nve.html">fix nve</A>, <A HREF = "fix_nh.html">fix nvt</A>, etc.
</P>
<P>A set of example input files with the attendant material files are
included in the examples/USER/atc directory of the LAMMPS
distribution.
</P>
<P>An extensive set of additional documentation pages for the options
turned on via the <A HREF = "fix_modify.html">fix_modify</A> command for this fix
are inlcluded in the doc/USER/atc directory of the LAMMPS
distribution. Individual doc pages are listed and linked to below.
</P>
<P>The following commands are typical of a coupling problem:
</P>
<PRE> # ... 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 fem create mesh 12 2 2 mdRegion f p p
</PRE>
<PRE> # specify the control method for the type of coupling
# physics control_type
fix_modify AtC transfer thermal control flux
</PRE>
<PRE> # specify the initial values for the empirical field "temperature"
# field node_group value
fix_modify AtC transfer initial temperature all 30.0
</PRE>
<PRE> # create an output stream for nodal fields
# filename output_frequency
fix_modify AtC transfer output atc_fe_output 100
</PRE>
<PRE> run 1000
</PRE>
<P>The following commands are typical of a post-processing (Hardy) problem:
</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> # 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 fem create mesh 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
fix_modify AtC transfer fields none
</PRE>
<PRE> # add mass density, potential energy density, stress and temperature
fix_modify AtC transfer fields add density energy stress temperature
</PRE>
<PRE> # create an output stream for nodal fields
# filename output_frequency
fix_modify AtC transfer output nvtFE 100 text
</PRE>
<PRE> run 1000
</PRE>
<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#4_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>
+<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 "user-atc" package. It is only enabled if
LAMMPS was built with that package, which also requires the ATC
-library be built and linked with LAMMPS. See the <A HREF = "Section_start.html#2_3">Making
+library be built and linked with LAMMPS. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<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>
<P>fix_modify commands for setup:
</P>
<UL><LI><A HREF = "USER/atc/man_fem_mesh.html">fix_modify AtC fem create mesh</A>
<LI><A HREF = "USER/atc/man_mesh_nodeset.html">fix_modify AtC mesh create_nodeset</A>
<LI><A HREF = "USER/atc/man_mesh_faceset.html">fix_modify AtC mesh create_faceset</A>
<LI><A HREF = "USER/atc/man_mesh_elemset.html">fix_modify AtC mesh create_elementset</A>
<LI><A HREF = "USER/atc/man_transfer_internal.html">fix_modify AtC transfer internal</A>
<LI><A HREF = "USER/atc/man_transfer_boundary.html">fix_modify AtC transfer boundary</A>
<LI><A HREF = "USER/atc/man_internal_quadrature.html">fix_modify AtC transfer internal_quadrature</A>
<LI><A HREF = "USER/atc/man_time_integration.html">fix_modify AtC transfer pmfc</A>
<LI><A HREF = "USER/atc/man_electron_integration.html">fix_modify AtC extrinsic electron_integration</A>
</UL>
<P>fix_modify commands for boundary and initial conditions:
</P>
<UL><LI><A HREF = "USER/atc/man_initial.html">fix_modify AtC transfer initial</A>
<LI><A HREF = "USER/atc/man_fix_nodes.html">fix_modify AtC transfer fix</A>
<LI><A HREF = "USER/atc/man_unfix_nodes.html">fix_modify AtC transfer unfix</A>
<LI><A HREF = "USER/atc/man_fix_flux.html">fix_modify AtC transfer fix_flux</A>
<LI><A HREF = "USER/atc/man_unfix_flux.html">fix_modify AtC transferunfix_flux</A>
<LI><A HREF = "USER/atc/man_source.html">fix_modify AtC transfer source</A>
<LI><A HREF = "USER/atc/man_remove_source.html">fix_modify AtC transfer remove_source</A>
</UL>
<P>fix_modify commands for control and filtering:
</P>
<UL><LI><A HREF = "USER/atc/man_thermal_control.html">fix_modify AtC transfer thermal control</A>
<LI><A HREF = "USER/atc/man_time_filter.html">fix_modify AtC transfer filter</A>
<LI><A HREF = "USER/atc/man_filter_scale.html">fix_modify AtC transfer filter scale</A>
<LI><A HREF = "USER/atc/man_equilibrium_start.html">fix_modify AtC transfer equilibrium_start</A>
<LI><A HREF = "USER/atc/man_extrinsic_exchange.html">fix_modify AtC extrinsic exchange</A>
</UL>
<P>fix_modify commands for output:
</P>
<UL><LI><A HREF = "USER/atc/man_transfer_output.html">fix_modify AtC transfer output</A>
<LI><A HREF = "USER/atc/man_transfer_atomic_output.html">fix_modify AtC transfer atomic_output</A>
<LI><A HREF = "USER/atc/man_mesh_output.html">fix_modify AtC mesh output</A>
<LI><A HREF = "USER/atc/man_write_restart.html">fix_modify AtC transfer write_restart</A>
<LI><A HREF = "USER/atc/man_read_restart.html">fix_modify AtC transfer read_restart</A>
</UL>
<P>fix_modify commands for post-processing:
</P>
<UL><LI><A HREF = "USER/atc/man_hardy_fields.html">fix_modify AtC transfer fields</A>
<LI><A HREF = "USER/atc/man_hardy_gradients.html">fix_modify AtC transfer gradients</A>
<LI><A HREF = "USER/atc/man_hardy_rates.html">fix_modify AtC transfer rates</A>
<LI><A HREF = "USER/atc/man_hardy_computes.html">fix_modify AtC transfer computes</A>
<LI><A HREF = "USER/atc/man_hardy_set.html">fix_modify AtC set</A>
<LI><A HREF = "USER/atc/man_hardy_on_the_fly.html">fix_modify AtC transfer on_the_fly</A>
<LI><A HREF = "USER/atc/man_boundary_integral.html">fix_modify AtC boundary_integral</A>
<LI><A HREF = "USER/atc/man_contour_integral.html">fix_modify AtC contour_integral</A>
</UL>
<P>miscellaneous fix_modify commands:
</P>
<UL><LI><A HREF = "USER/atc/man_atom_element_map.html">fix_modify AtC transfer atom_element_map</A>
<LI><A HREF = "USER/atc/man_neighbor_reset_frequency.html">fix_modify AtC transfer neighbor_reset_frequency</A>
</UL>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Wagner"></A>
<P><B>(Wagner)</B> Wagner, Jones, Templeton, Parks, Special Issue of
Computer Methods and Applied Mechanics, 197, 3351-3365 (2008).
</P>
<A NAME = "Zimmerman"></A>
<P><B>(Zimmerman)</B> Zimmerman, Webb, Hoyt, Jones, Klein, Bammann, Special
Issue of Modelling and Simulation in Materials Science and
Engineering, 12, S319 (2004).
</P>
<A NAME = "Hughes"></A>
<P><B>(Hughes)</B> T.J.R Hughes, "The Finite Element Method," Dover (2003).
</P>
</HTML>
diff --git a/doc/fix_atc.txt b/doc/fix_atc.txt
index 48a1c34c2..d7ad329dd 100644
--- a/doc/fix_atc.txt
+++ b/doc/fix_atc.txt
@@ -1,227 +1,227 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix atc command :h3
[Syntax:]
fix ID groupID atc type paramfile :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
atc = style name of this fix command :l
type = {thermal} or {two_temperature} or {hardy} :l
{thermal} = thermal coupling with field: temperature
{two_temperature} = electron-phonon coupling with field, temperature and electron_temperature
{hardy} = Hardy on-the-fly post-processing :pre
paramfile = file with material parameters (not specified for {hardy} type) :l,ule
[Examples:]
fix AtC atc_atoms atc thermal Ar_thermal.dat
fix AtC atc_atoms atc transfer hardy :pre
[Description:]
This fix creates a coupled finite element (FE) and molecular dynamics
(MD) simulation and/or an on-the-fly estimation of continuum fields,
where a FE mesh is specified and overlaps the particles, something
like this:
:c,image(JPG/atc_nanotube.jpg)
Interscale operators are defined that construct continuum fields from
atomic data. Coupled simulations use FE projection approximated on a
discrete field. Currently, coupling is restricted to thermal physics.
The Hardy module can use either FE projection or integration Kernels
evaluated at mesh points.
Coupling methods enable appropriate corrections to the atomic data to
be made based on the FE field. For example, a Gaussian isokinetic
thermostat can apply heat sources to the atoms that varies in space on
the same scale as the FE element size. Meshes are not created
automatically and must be specified on LAMMPS regions with prescribed
element sizes.
Coupling and post-processing can be combined in the same simulations
using separate fix atc commands.
Note that mesh computations and storage run in serial (not
parallelized) so performance will degrade when large element counts
are used.
For detailed exposition of the theory and algorithms implemented in
this fix, please see the papers "here"_#Wagner and "here"_#Zimmerman.
Please refer to the standard finite element (FE) texts, such as "this
book"_#Hughes, for the basics of FE simulation.
:line
{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. "fix nve"_fix_nve.html, "fix nvt"_fix_nh.html, etc.
A set of example input files with the attendant material files are
included in the examples/USER/atc directory of the LAMMPS
distribution.
An extensive set of additional documentation pages for the options
turned on via the "fix_modify"_fix_modify.html command for this fix
are inlcluded in the doc/USER/atc directory of the LAMMPS
distribution. Individual doc pages are listed and linked to below.
The following commands are typical of a coupling problem:
# ... commands to create and initialize the MD system :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
# create a uniform 12 x 2 x 2 mesh that covers region contain the group
# nx ny nz region periodicity
fix_modify AtC fem create mesh 12 2 2 mdRegion f p p :pre
# specify the control method for the type of coupling
# physics control_type
fix_modify AtC transfer thermal control flux :pre
# specify the initial values for the empirical field "temperature"
# field node_group value
fix_modify AtC transfer initial temperature all 30.0 :pre
# create an output stream for nodal fields
# filename output_frequency
fix_modify AtC transfer output atc_fe_output 100 :pre
run 1000 :pre
The following commands are typical of a post-processing (Hardy) problem:
# ... commands to create and initialize the MD system :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
# 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 fem create mesh 1 1 1 box p p p :pre
# change from default lagrangian map to eulerian
# refreshed every 100 steps
fix_modify AtC atom_element_map eulerian 100 :pre
# start with no field defined
fix_modify AtC transfer fields none :pre
# add mass density, potential energy density, stress and temperature
fix_modify AtC transfer fields add density energy stress temperature :pre
# create an output stream for nodal fields
# filename output_frequency
fix_modify AtC transfer output nvtFE 100 text :pre
run 1000 :pre
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. The "fix_modify"_fix_modify.html 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
-"output commands"_Section_howto.html#4_15. No parameter of this fix
-can be used with the {start/stop} keywords of the "run"_run.html
+"output commands"_Section_howto.html#howto_15. No parameter of this
+fix can be used with the {start/stop} keywords of the "run"_run.html
command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
This fix is part of the "user-atc" package. It is only enabled if
LAMMPS was built with that package, which also requires the ATC
library be built and linked with LAMMPS. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
After specifying this fix in your input script, several other
"fix_modify"_fix_modify.html commands are used to setup the problem,
e.g. define the finite element mesh and prescribe initial and boundary
conditions.
fix_modify commands for setup:
"fix_modify AtC fem create mesh"_USER/atc/man_fem_mesh.html
"fix_modify AtC mesh create_nodeset"_USER/atc/man_mesh_nodeset.html
"fix_modify AtC mesh create_faceset"_USER/atc/man_mesh_faceset.html
"fix_modify AtC mesh create_elementset"_USER/atc/man_mesh_elemset.html
"fix_modify AtC transfer internal"_USER/atc/man_transfer_internal.html
"fix_modify AtC transfer boundary"_USER/atc/man_transfer_boundary.html
"fix_modify AtC transfer internal_quadrature"_USER/atc/man_internal_quadrature.html
"fix_modify AtC transfer pmfc"_USER/atc/man_time_integration.html
"fix_modify AtC extrinsic electron_integration"_USER/atc/man_electron_integration.html :ul
fix_modify commands for boundary and initial conditions:
"fix_modify AtC transfer initial"_USER/atc/man_initial.html
"fix_modify AtC transfer fix"_USER/atc/man_fix_nodes.html
"fix_modify AtC transfer unfix"_USER/atc/man_unfix_nodes.html
"fix_modify AtC transfer fix_flux"_USER/atc/man_fix_flux.html
"fix_modify AtC transferunfix_flux"_USER/atc/man_unfix_flux.html
"fix_modify AtC transfer source"_USER/atc/man_source.html
"fix_modify AtC transfer remove_source"_USER/atc/man_remove_source.html :ul
fix_modify commands for control and filtering:
"fix_modify AtC transfer thermal control"_USER/atc/man_thermal_control.html
"fix_modify AtC transfer filter"_USER/atc/man_time_filter.html
"fix_modify AtC transfer filter scale"_USER/atc/man_filter_scale.html
"fix_modify AtC transfer equilibrium_start"_USER/atc/man_equilibrium_start.html
"fix_modify AtC extrinsic exchange"_USER/atc/man_extrinsic_exchange.html :ul
fix_modify commands for output:
"fix_modify AtC transfer output"_USER/atc/man_transfer_output.html
"fix_modify AtC transfer atomic_output"_USER/atc/man_transfer_atomic_output.html
"fix_modify AtC mesh output"_USER/atc/man_mesh_output.html
"fix_modify AtC transfer write_restart"_USER/atc/man_write_restart.html
"fix_modify AtC transfer read_restart"_USER/atc/man_read_restart.html :ul
fix_modify commands for post-processing:
"fix_modify AtC transfer fields"_USER/atc/man_hardy_fields.html
"fix_modify AtC transfer gradients"_USER/atc/man_hardy_gradients.html
"fix_modify AtC transfer rates"_USER/atc/man_hardy_rates.html
"fix_modify AtC transfer computes"_USER/atc/man_hardy_computes.html
"fix_modify AtC set"_USER/atc/man_hardy_set.html
"fix_modify AtC transfer on_the_fly"_USER/atc/man_hardy_on_the_fly.html
"fix_modify AtC boundary_integral"_USER/atc/man_boundary_integral.html
"fix_modify AtC contour_integral"_USER/atc/man_contour_integral.html :ul
miscellaneous fix_modify commands:
"fix_modify AtC transfer atom_element_map"_USER/atc/man_atom_element_map.html
"fix_modify AtC transfer neighbor_reset_frequency"_USER/atc/man_neighbor_reset_frequency.html :ul
[Default:] none
:line
:link(Wagner)
[(Wagner)] Wagner, Jones, Templeton, Parks, Special Issue of
Computer Methods and Applied Mechanics, 197, 3351-3365 (2008).
:link(Zimmerman)
[(Zimmerman)] Zimmerman, Webb, Hoyt, Jones, Klein, Bammann, Special
Issue of Modelling and Simulation in Materials Science and
Engineering, 12, S319 (2004).
:link(Hughes)
[(Hughes)] T.J.R Hughes, "The Finite Element Method," Dover (2003).
diff --git a/doc/fix_ave_atom.html b/doc/fix_ave_atom.html
index d8a0cbc74..ea961b1fd 100644
--- a/doc/fix_ave_atom.html
+++ b/doc/fix_ave_atom.html
@@ -1,156 +1,156 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix ave/atom command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID ave/atom Nevery Nrepeat Nfreq value1 value2 ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>ave/atom = 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
one or more input values can be listed
<LI>value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[i], f_ID, f_ID[i], v_name
<PRE> x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component)
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>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all ave/atom 1 100 100 vx vy vz
fix 1 all ave/atom 10 20 1000 c_my_stress<B>1</B>
</PRE>
<P><B>Description:</B>
</P>
<P>Use one or more per-atom vectors as inputs every few timesteps, and
average them atom by atom over longer timescales. The resulting
-per-atom averages can be used by other <A HREF = "Section_howto.html#4_15">output
+per-atom averages can be used by other <A HREF = "Section_howto.html#howto_15">output
commands</A> such as the <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A> or <A HREF = "dump.html">dump custom</A> commands.
</P>
<P>The group specified with the command means only atoms within the group
have their averages computed. Results are set to 0.0 for atoms not in
the group.
</P>
<P>Each input value can be an atom attribute (position, velocity, force
component) or can be the result of a <A HREF = "compute.html">compute</A> or
<A HREF = "fix.html">fix</A> or the evaluation of an atom-style
<A HREF = "variable.html">variable</A>. In the latter cases, the compute, fix, or
variable must produce a per-atom vector, not a global quantity or
local quantity. If you wish to time-average global quantities from a
compute, fix, or variable, then see the <A HREF = "fix_ave_time.html">fix
ave/time</A> command.
</P>
<P><A HREF = "compute.html">Computes</A> that produce per-atom vectors or arrays are
those which have the word <I>atom</I> in their style name. See the doc
pages for individual <A HREF = "fix.html">fixes</A> to determine which ones produce
per-atom vectors or arrays. <A HREF = "variable.html">Variables</A> of style <I>atom</I>
are the only ones that can be used with this fix since they produce
per-atom vectors.
</P>
<P>Each per-atom value of each input vector is averaged independently.
</P>
<HR>
<P>The <I>Nevery</I>, <I>Nrepeat</I>, and <I>Nfreq</I> arguments specify on what
timesteps the input values will be used in order to contribute to the
average. The final averaged quantities are generated on timesteps
that are a multiple of <I>Nfreq</I>. The average is over <I>Nrepeat</I>
quantities, computed in the preceding portion of the simulation every
<I>Nevery</I> timesteps. <I>Nfreq</I> must be a multiple of <I>Nevery</I> and
<I>Nevery</I> must be non-zero even if <I>Nrepeat</I> is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nfreq >
(Nrepeat-1)*Nevery is required.
</P>
<P>For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc.
</P>
<HR>
<P>The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are
self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the <A HREF = "compute_property_atom.html">compute
property/atom</A> command and then specifying
an input value from that compute.
</P>
<P>If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. If no bracketed term is
appended, the per-atom vector calculated by the compute is used. If a
bracketed term containing an index I is appended, the Ith column of
the per-atom array calculated by the compute is used. Users can also
write code for their own compute styles and <A HREF = "Section_modify.html">add them to
LAMMPS</A>.
</P>
<P>If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. If no bracketed term is
appended, the per-atom vector calculated by the fix is used. If a
bracketed term containing an index I is appended, the Ith column of
the per-atom array calculated by the fix is used. Note that some
fixes only produce their values on certain timesteps, which must be
compatible with <I>Nevery</I>, else an error will result. Users can also
write code for their own fix styles and <A HREF = "Section_modify.html">add them to
LAMMPS</A>.
</P>
<P>If a value begins with "v_", a variable name must follow which has
been previously defined in the input script as an <A HREF = "variable.html">atom-style
variable</A> Variables of style <I>atom</I> can reference
thermodynamic keywords, or invoke other computes, fixes, or variables
when they are evaluated, so this is a very general means of generating
per-atom quantities to time average.
</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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix. No global scalar or vector quantities are
-stored by this fix for access by various <A HREF = "Section_howto.html#4_15">output
+stored by this fix for access by various <A HREF = "Section_howto.html#howto_15">output
commands</A>.
</P>
<P>This fix produces a per-atom vector or array which can be accessed by
-various <A HREF = "Section_howto.html#4_15">output commands</A>. A vector is
+various <A HREF = "Section_howto.html#howto_15">output commands</A>. A vector is
produced if only a single quantity is averaged by this fix. If two or
more quantities are averaged, then an array of values is produced.
The per-atom values can only be accessed on timesteps that are
multiples of <I>Nfreq</I> since that is when averaging is performed.
</P>
<P>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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute.html">compute</A>, <A HREF = "fix_ave_histo.html">fix ave/histo</A>, <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A>, <A HREF = "fix_ave_time.html">fix ave/time</A>,
<A HREF = "variable.html">variable</A>,
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_ave_atom.txt b/doc/fix_ave_atom.txt
index 095a8b4c1..67810b4b1 100644
--- a/doc/fix_ave_atom.txt
+++ b/doc/fix_ave_atom.txt
@@ -1,144 +1,144 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix ave/atom command :h3
[Syntax:]
fix ID group-ID ave/atom Nevery Nrepeat Nfreq value1 value2 ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
ave/atom = style name of this fix command :l
Nevery = use input values every this many timesteps :l
Nrepeat = # of times to use input values for calculating averages :l
Nfreq = calculate averages every this many timesteps
one or more input values can be listed :l
value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID\[i\], f_ID, f_ID\[i\], v_name :l
x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component)
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
:ule
[Examples:]
fix 1 all ave/atom 1 100 100 vx vy vz
fix 1 all ave/atom 10 20 1000 c_my_stress[1] :pre
[Description:]
Use one or more per-atom vectors as inputs every few timesteps, and
average them atom by atom over longer timescales. The resulting
per-atom averages can be used by other "output
-commands"_Section_howto.html#4_15 such as the "fix
+commands"_Section_howto.html#howto_15 such as the "fix
ave/spatial"_fix_ave_spatial.html or "dump custom"_dump.html commands.
The group specified with the command means only atoms within the group
have their averages computed. Results are set to 0.0 for atoms not in
the group.
Each input value can be an atom attribute (position, velocity, force
component) or can be the result of a "compute"_compute.html or
"fix"_fix.html or the evaluation of an atom-style
"variable"_variable.html. In the latter cases, the compute, fix, or
variable must produce a per-atom vector, not a global quantity or
local quantity. If you wish to time-average global quantities from a
compute, fix, or variable, then see the "fix
ave/time"_fix_ave_time.html command.
"Computes"_compute.html that produce per-atom vectors or arrays are
those which have the word {atom} in their style name. See the doc
pages for individual "fixes"_fix.html to determine which ones produce
per-atom vectors or arrays. "Variables"_variable.html of style {atom}
are the only ones that can be used with this fix since they produce
per-atom vectors.
Each per-atom value of each input vector is averaged independently.
:line
The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what
timesteps the input values will be used in order to contribute to the
average. The final averaged quantities are generated on timesteps
that are a multiple of {Nfreq}. The average is over {Nrepeat}
quantities, computed in the preceding portion of the simulation every
{Nevery} timesteps. {Nfreq} must be a multiple of {Nevery} and
{Nevery} must be non-zero even if {Nrepeat} is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nfreq >
(Nrepeat-1)*Nevery is required.
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc.
:line
The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are
self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the "compute
property/atom"_compute_property_atom.html command and then specifying
an input value from that compute.
If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. If no bracketed term is
appended, the per-atom vector calculated by the compute is used. If a
bracketed term containing an index I is appended, the Ith column of
the per-atom array calculated by the compute is used. Users can also
write code for their own compute styles and "add them to
LAMMPS"_Section_modify.html.
If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. If no bracketed term is
appended, the per-atom vector calculated by the fix is used. If a
bracketed term containing an index I is appended, the Ith column of
the per-atom array calculated by the fix is used. Note that some
fixes only produce their values on certain timesteps, which must be
compatible with {Nevery}, else an error will result. Users can also
write code for their own fix styles and "add them to
LAMMPS"_Section_modify.html.
If a value begins with "v_", a variable name must follow which has
been previously defined in the input script as an "atom-style
variable"_variable.html Variables of style {atom} can reference
thermodynamic keywords, or invoke other computes, fixes, or variables
when they are evaluated, so this is a very general means of generating
per-atom quantities to time average.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global scalar or vector quantities are
stored by this fix for access by various "output
-commands"_Section_howto.html#4_15.
+commands"_Section_howto.html#howto_15.
This fix produces a per-atom vector or array which can be accessed by
-various "output commands"_Section_howto.html#4_15. A vector is
+various "output commands"_Section_howto.html#howto_15. A vector is
produced if only a single quantity is averaged by this fix. If two or
more quantities are averaged, then an array of values is produced.
The per-atom values can only be accessed on timesteps that are
multiples of {Nfreq} since that is when averaging is performed.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"compute"_compute.html, "fix ave/histo"_fix_ave_histo.html, "fix
ave/spatial"_fix_ave_spatial.html, "fix ave/time"_fix_ave_time.html,
"variable"_variable.html,
[Default:] none
diff --git a/doc/fix_ave_correlate.html b/doc/fix_ave_correlate.html
index 40e2fb891..76e1c2edd 100644
--- a/doc/fix_ave_correlate.html
+++ b/doc/fix_ave_correlate.html
@@ -1,344 +1,344 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix ave/correlate command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID ave/correlate Nevery Nrepeat Nfreq value1 value2 ... keyword args ...
</PRE>
<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>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>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
fix 1 all ave/correlate 1 50 10000 &
c_thermo_press[1] c_thermo_press[2] c_thermo_press[3] &
type upper ave running title1 "My correlation data"
</PRE>
<P><B>Description:</B>
</P>
<P>Use one or more global scalar values as inputs every few timesteps,
calculate time correlations bewteen them at varying time intervals,
and average the correlation data over longer timescales. The
resulting correlation values can be time integrated by
-<A HREF = "variable.html">variables</A> or used by other <A HREF = "Section_howto.html#4_15">output
+<A HREF = "variable.html">variables</A> or used by other <A HREF = "Section_howto.html#howto_15">output
commands</A> such as <A HREF = "thermo_style.html">thermo_style
custom</A>, and can also be written to a file.
</P>
<P>The group specified with this command is ignored. However, note that
specified values may represent calculations performed by computes and
fixes which store their own "group" definitions.
</P>
<P>Each listed value can be the result of a <A HREF = "compute.html">compute</A> or
<A HREF = "fix.html">fix</A> or the evaluation of an equal-style
<A HREF = "variable.html">variable</A>. In each case, the compute, fix, or variable
must produce a global quantity, not a per-atom or local quantity. If
you wish to spatial- or time-average or histogram per-atom quantities
from a compute, fix, or variable, then see the <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A>, <A HREF = "fix_ave_atom.html">fix ave/atom</A>,
or <A HREF = "fix_ave_histo.html">fix ave/histo</A> commands. If you wish to sum a
per-atom quantity into a single global quantity, see the <A HREF = "compute_reduce.html">compute
reduce</A> command.
</P>
<P><A HREF = "compute.html">Computes</A> that produce global quantities are those which
do not have the word <I>atom</I> in their style name. Only a few
<A HREF = "fix.html">fixes</A> produce global quantities. See the doc pages for
individual fixes for info on which ones produce such values.
<A HREF = "variable.html">Variables</A> of style <I>equal</I> are the only ones that can
be used with this fix. Variables of style <I>atom</I> cannot be used,
since they produce per-atom values.
</P>
<P>The input values must either be all scalars. What kinds of
correlations between input values are calculated is determined by the
<I>type</I> keyword as discussed below.
</P>
<HR>
<P>The <I>Nevery</I>, <I>Nrepeat</I>, and <I>Nfreq</I> arguments specify on what
timesteps the input values will be used to calculate correlation data.
The input values are sampled every <I>Nevery</I> timesteps. The
correlation data for the preceding samples is computed on timesteps
that are a multiple of <I>Nfreq</I>. Consider a set of samples from some
initial time up to an output timestep. The initial time could be the
beginning of the simulation or the last output time; see the <I>ave</I>
keyword for options. For the set of samples, the correlation value
Cij is calculated as:
</P>
<PRE>Cij(delta) = ave(Vi(t)*Vj(t+delta))
</PRE>
<P>which is the correlation value between input values Vi and Vj,
separated by time delta. Note that the second value Vj in the pair is
always the one sampled at the later time. The ave() represents an
average over every pair of samples in the set that are separated by
time delta. The maximum delta used is of size (<I>Nrepeat</I>-1)*<I>Nevery</I>.
Thus the correlation between a pair of input values yields <I>Nrepeat</I>
correlation datums:
</P>
<PRE>Cij(0), Cij(Nevery), Cij(2*Nevery), ..., Cij((Nrepeat-1)*Nevery)
</PRE>
<P>For example, if Nevery=5, Nrepeat=6, and Nfreq=100, then values on
timesteps 0,5,10,15,...,100 will be used to compute the final averages
on timestep 100. Six averages will be computed: Cij(0), Cij(5),
Cij(10), Cij(15), Cij(20), and Cij(25). Cij(10) on timestep 100 will
be the average of 19 samples, namely Vi(0)*Vj(10), Vi(5)*Vj(15),
Vi(10)*V j20), Vi(15)*Vj(25), ..., Vi(85)*Vj(95), Vi(90)*Vj(100).
</P>
<P><I>Nfreq</I> must be a multiple of <I>Nevery</I>; <I>Nevery</I> and <I>Nrepeat</I> must be
non-zero. Also, if the <I>ave</I> keyword is set to <I>one</I> which is the
default, then <I>Nfreq</I> >= (<I>Nrepeat</I>-1)*<I>Nevery</I> is required.
</P>
<HR>
<P>If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. If no bracketed term is
appended, the global scalar calculated by the compute is used. If a
bracketed term is appended, the Ith element of the global vector
calculated by the compute is used.
</P>
<P>Note that there is a <A HREF = "compute_reduce.html">compute reduce</A> command
which can sum per-atom quantities into a global scalar or vector which
can thus be accessed by fix ave/correlate. Or it can be a compute
defined not in your input script, but by <A HREF = "thermo_style.html">thermodynamic
output</A> or other fixes such as <A HREF = "fix_nh.html">fix nvt</A>
or <A HREF = "fix_temp_rescale.html">fix temp/rescale</A>. See the doc pages for
these commands which give the IDs of these computes. Users can also
write code for their own compute styles and <A HREF = "Section_modify.html">add them to
LAMMPS</A>.
</P>
<P>If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. If no bracketed term is
appended, the global scalar calculated by the fix is used. If a
bracketed term is appended, the Ith element of the global vector
calculated by the fix is used.
</P>
<P>Note that some fixes only produce their values on certain timesteps,
which must be compatible with <I>Nevery</I>, else an error will result.
Users can also write code for their own fix styles and <A HREF = "Section_modify.html">add them to
LAMMPS</A>.
</P>
<P>If a value begins with "v_", a variable name must follow which has
been previously defined in the input script. Only equal-style
variables can be referenced. See the <A HREF = "variable.html">variable</A> command
for details. Note that variables of style <I>equal</I> define a formula
which can reference individual atom properties or thermodynamic
keywords, or they can invoke other computes, fixes, or variables when
they are evaluated, so this is a very general means of specifying
quantities to time correlate.
</P>
<HR>
<P>Additional optional keywords also affect the operation of this fix.
</P>
<P>The <I>type</I> keyword determines which pairs of input values are
correlated with each other. For N input values Vi, for i = 1 to N,
let the number of pairs = Npair. Note that the second value in the
pair Vi(t)*Vj(t+delta) is always the one sampled at the later time.
</P>
<UL><LI>If <I>type</I> is set to <I>auto</I> then each input value is correlated with
itself. I.e. Cii = Vi*Vi, for i = 1 to N, so Npair = N.
<LI>If <I>type</I> is set
to <I>upper</I> then each input value is correlated with every succeeding
value. I.e. Cij = Vi*Vj, for i < j, so Npair = N*(N-1)/2.
<LI>If <I>type</I> is set
to <I>lower</I> then each input value is correlated with every preceeding
value. I.e. Cij = Vi*Vj, for i > j, so Npair = N*(N-1)/2.
<LI>If <I>type</I> is set to <I>auto/upper</I> then each input value is correlated
with itself and every succeeding value. I.e. Cij = Vi*Vj, for i >= j,
so Npair = N*(N+1)/2.
<LI>If <I>type</I> is set to <I>auto/lower</I> then each input value is correlated
with itself and every preceding value. I.e. Cij = Vi*Vj, for i <= j,
so Npair = N*(N+1)/2.
<LI>If <I>type</I> is set to <I>full</I> then each input value is correlated with
itself and every other value. I.e. Cij = Vi*Vj, for i,j = 1,N so
Npair = N^2.
</UL>
<P>The <I>ave</I> keyword determines what happens to the accumulation of
correlation samples every <I>Nfreq</I> timesteps. If the <I>ave</I> setting is
<I>one</I>, then the accumulation is restarted or zeroed every <I>Nfreq</I>
timesteps. Thus the outputs on successive <I>Nfreq</I> timesteps are
essentially independent of each other. The exception is that the
Cij(0) = Vi(T)*Vj(T) value at a timestep T, where T is a multiple of
<I>Nfreq</I>, contributes to the correlation output both at time T and at
time T+Nfreq.
</P>
<P>If the <I>ave</I> setting is <I>running</I>, then the accumulation is never
zeroed. Thus the output of correlation data at any timestep is the
average over samples accumulated every <I>Nevery</I> steps since the fix
was defined. it can only be restarted by deleting the fix via the
<A HREF = "unfix.html">unfix</A> command, or by re-defining the fix by re-specifying
it.
</P>
<P>The <I>start</I> keyword specifies what timestep the accumulation of
correlation samples will begin on. The default is step 0. Setting it
to a larger value can avoid adding non-equilibrated data to the
correlation averages.
</P>
<P>The <I>prefactor</I> keyword specifies a constant which will be used as a
multiplier on the correlation data after it is averaged. It is
effectively a scale factor on Vi*Vj, which can be used to account for
the size of the time window or other unit conversions.
</P>
<P>The <I>file</I> keyword allows a filename to be specified. Every <I>Nfreq</I>
steps, an array of correlation data is written to the file. The
number of rows is <I>Nrepeat</I>, as described above. The number of
columns is the Npair+2, also as described above. Thus the file ends
up to be a series of these array sections.
</P>
<P>The <I>title1</I> and <I>title2</I> and <I>title3</I> keywords allow specification of
the strings that will be printed as the first 3 lines of the output
file, assuming the <I>file</I> keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified.
</P>
<P>By default, these header lines are as follows:
</P>
<PRE># Time-correlated data for fix ID
# TimeStep Number-of-time-windows
# Index TimeDelta Ncount valueI*valueJ valueI*valueJ ...
</PRE>
<P>In the first line, ID is replaced with the fix-ID. The second line
describes the two values that are printed at the first of each section
of output. In the third line the value pairs are replaced with the
appropriate fields from the fix ave/correlate command.
</P>
<HR>
<P>Let Sij = a set of time correlation data for input values I and J,
namely the <I>Nrepeat</I> values:
</P>
<PRE>Sij = Cij(0), Cij(Nevery), Cij(2*Nevery), ..., Cij(*Nrepeat-1)*Nevery)
</PRE>
<P>As explained below, these datums are output as one column of a global
array, which is effectively the correlation matrix.
</P>
<P>The <I>trap</I> function defined for <A HREF = "variable.html">equal-style variables</A>
can be used to perform a time integration of this vector of datums,
using a trapezoidal rule. This is useful for calculating various
quantities which can be derived from time correlation data. If a
normalization factor is needed for the time integration, it can be
included in the variable formula or via the <I>prefactor</I> keyword.
</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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global array of values which can be accessed by
-various <A HREF = "Section_howto.html#4_15">output commands</A>. The values can
+various <A HREF = "Section_howto.html#howto_15">output commands</A>. The values can
only be accessed on timesteps that are multiples of <I>Nfreq</I> since that
is when averaging is performed. The global array has # of rows =
<I>Nrepeat</I> and # of columns = Npair+2. The first column has the time
delta (in timesteps) between the pairs of input values used to
calculate the correlation, as described above. The 2nd column has the
number of samples contributing to the correlation average, as
described above. The remaining Npair columns are for I,J pairs of the
N input values, as determined by the <I>type</I> keyword, as described
above.
</P>
<UL><LI>For <I>type</I> = <I>auto</I>, the Npair = N columns are ordered: C11, C22, ...,
CNN.
<LI>For <I>type</I> = <I>upper</I>, the Npair = N*(N-1)/2 columns are ordered: C12,
C13, ..., C1N, C23, ..., C2N, C34, ..., CN-1N.
<LI>For <I>type</I> = <I>lower</I>, the Npair = N*(N-1)/2 columns are ordered: C21,
C31, C32, C41, C42, C43, ..., CN1, CN2, ..., CNN-1.
<LI>For <I>type</I> = <I>auto/upper</I>, the Npair = N*(N+1)/2 columns are ordered:
C11, C12, C13, ..., C1N, C22, C23, ..., C2N, C33, C34, ..., CN-1N,
CNN.
<LI>For <I>type</I> = <I>auto/lower</I>, the Npair = N*(N+1)/2 columns are ordered:
C11, C21, C22, C31, C32, C33, C41, ..., C44, CN1, CN2, ..., CNN-1,
CNN.
<LI>For <I>type</I> = <I>full</I>, the Npair = N^2 columns are ordered: C11, C12,
..., C1N, C21, C22, ..., C2N, C31, ..., C3N, ..., CN1, ..., CNN-1,
CNN.
</UL>
<P>The array values calculated by this fix are treated as "intensive".
If you need to divide them by the number of atoms, you must do this in
a later processing step, e.g. when using them in a
<A HREF = "variable.html">variable</A>.
</P>
<P>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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute.html">compute</A>, <A HREF = "fix_ave_time.html">fix ave/time</A>, <A HREF = "fix_ave_atom.html">fix
ave/atom</A>, <A HREF = "fix_ave_spatial.html">fix ave/spatial</A>,
<A HREF = "fix_ave_histo.html">fix ave/histo</A>, <A HREF = "variable.html">variable</A>
</P>
<P><B>Default:</B> none
</P>
<P>The option defaults are ave = one, type = auto, start = 0, no file
output, title 1,2,3 = strings as described above, and prefactor = 1.0.
</P>
</HTML>
diff --git a/doc/fix_ave_correlate.txt b/doc/fix_ave_correlate.txt
index ce20deead..cf792ee11 100644
--- a/doc/fix_ave_correlate.txt
+++ b/doc/fix_ave_correlate.txt
@@ -1,329 +1,329 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix ave/correlate command :h3
[Syntax:]
fix ID group-ID ave/correlate Nevery Nrepeat Nfreq value1 value2 ... keyword args ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
ave/correlate = style name of this fix command :l
Nevery = use input values every this many timesteps :l
Nrepeat = # of correlation time windows to accumulate :l
Nfreq = calculate tine window averages every this many timesteps :l
one or more input values can be listed :l
value = c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l
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
zero or more keyword/arg pairs may be appended :l
keyword = {type} or {ave} or {start} or {prefactor} or {file} or {title1} or {title2} or {title3} :l
{type} arg = {auto} or {upper} or {lower} or {auto/upper} or {auto/lower} or {full}
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
{ave} args = {one} or {running}
one = zero the correlation accumulation every Nfreq steps
running = accumulate correlations continuously
{start} args = Nstart
Nstart = start accumulating correlations on this timestep
{prefactor} args = value
value = prefactor to scale all the correlation data by
{file} arg = filename
filename = name of file to output correlation data to
{title1} arg = string
string = text to print as 1st line of output file
{title2} arg = string
string = text to print as 2nd line of output file
{title3} arg = string
string = text to print as 3rd line of output file :pre
:ule
[Examples:]
fix 1 all ave/correlate 5 100 1000 c_myTemp file temp.correlate
fix 1 all ave/correlate 1 50 10000 &
c_thermo_press\[1\] c_thermo_press\[2\] c_thermo_press\[3\] &
type upper ave running title1 "My correlation data" :pre
[Description:]
Use one or more global scalar values as inputs every few timesteps,
calculate time correlations bewteen them at varying time intervals,
and average the correlation data over longer timescales. The
resulting correlation values can be time integrated by
"variables"_variable.html or used by other "output
-commands"_Section_howto.html#4_15 such as "thermo_style
+commands"_Section_howto.html#howto_15 such as "thermo_style
custom"_thermo_style.html, and can also be written to a file.
The group specified with this command is ignored. However, note that
specified values may represent calculations performed by computes and
fixes which store their own "group" definitions.
Each listed value can be the result of a "compute"_compute.html or
"fix"_fix.html or the evaluation of an equal-style
"variable"_variable.html. In each case, the compute, fix, or variable
must produce a global quantity, not a per-atom or local quantity. If
you wish to spatial- or time-average or histogram per-atom quantities
from a compute, fix, or variable, then see the "fix
ave/spatial"_fix_ave_spatial.html, "fix ave/atom"_fix_ave_atom.html,
or "fix ave/histo"_fix_ave_histo.html commands. If you wish to sum a
per-atom quantity into a single global quantity, see the "compute
reduce"_compute_reduce.html command.
"Computes"_compute.html that produce global quantities are those which
do not have the word {atom} in their style name. Only a few
"fixes"_fix.html produce global quantities. See the doc pages for
individual fixes for info on which ones produce such values.
"Variables"_variable.html of style {equal} are the only ones that can
be used with this fix. Variables of style {atom} cannot be used,
since they produce per-atom values.
The input values must either be all scalars. What kinds of
correlations between input values are calculated is determined by the
{type} keyword as discussed below.
:line
The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what
timesteps the input values will be used to calculate correlation data.
The input values are sampled every {Nevery} timesteps. The
correlation data for the preceding samples is computed on timesteps
that are a multiple of {Nfreq}. Consider a set of samples from some
initial time up to an output timestep. The initial time could be the
beginning of the simulation or the last output time; see the {ave}
keyword for options. For the set of samples, the correlation value
Cij is calculated as:
Cij(delta) = ave(Vi(t)*Vj(t+delta)) :pre
which is the correlation value between input values Vi and Vj,
separated by time delta. Note that the second value Vj in the pair is
always the one sampled at the later time. The ave() represents an
average over every pair of samples in the set that are separated by
time delta. The maximum delta used is of size ({Nrepeat}-1)*{Nevery}.
Thus the correlation between a pair of input values yields {Nrepeat}
correlation datums:
Cij(0), Cij(Nevery), Cij(2*Nevery), ..., Cij((Nrepeat-1)*Nevery) :pre
For example, if Nevery=5, Nrepeat=6, and Nfreq=100, then values on
timesteps 0,5,10,15,...,100 will be used to compute the final averages
on timestep 100. Six averages will be computed: Cij(0), Cij(5),
Cij(10), Cij(15), Cij(20), and Cij(25). Cij(10) on timestep 100 will
be the average of 19 samples, namely Vi(0)*Vj(10), Vi(5)*Vj(15),
Vi(10)*V j20), Vi(15)*Vj(25), ..., Vi(85)*Vj(95), Vi(90)*Vj(100).
{Nfreq} must be a multiple of {Nevery}; {Nevery} and {Nrepeat} must be
non-zero. Also, if the {ave} keyword is set to {one} which is the
default, then {Nfreq} >= ({Nrepeat}-1)*{Nevery} is required.
:line
If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. If no bracketed term is
appended, the global scalar calculated by the compute is used. If a
bracketed term is appended, the Ith element of the global vector
calculated by the compute is used.
Note that there is a "compute reduce"_compute_reduce.html command
which can sum per-atom quantities into a global scalar or vector which
can thus be accessed by fix ave/correlate. Or it can be a compute
defined not in your input script, but by "thermodynamic
output"_thermo_style.html or other fixes such as "fix nvt"_fix_nh.html
or "fix temp/rescale"_fix_temp_rescale.html. See the doc pages for
these commands which give the IDs of these computes. Users can also
write code for their own compute styles and "add them to
LAMMPS"_Section_modify.html.
If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. If no bracketed term is
appended, the global scalar calculated by the fix is used. If a
bracketed term is appended, the Ith element of the global vector
calculated by the fix is used.
Note that some fixes only produce their values on certain timesteps,
which must be compatible with {Nevery}, else an error will result.
Users can also write code for their own fix styles and "add them to
LAMMPS"_Section_modify.html.
If a value begins with "v_", a variable name must follow which has
been previously defined in the input script. Only equal-style
variables can be referenced. See the "variable"_variable.html command
for details. Note that variables of style {equal} define a formula
which can reference individual atom properties or thermodynamic
keywords, or they can invoke other computes, fixes, or variables when
they are evaluated, so this is a very general means of specifying
quantities to time correlate.
:line
Additional optional keywords also affect the operation of this fix.
The {type} keyword determines which pairs of input values are
correlated with each other. For N input values Vi, for i = 1 to N,
let the number of pairs = Npair. Note that the second value in the
pair Vi(t)*Vj(t+delta) is always the one sampled at the later time.
If {type} is set to {auto} then each input value is correlated with
itself. I.e. Cii = Vi*Vi, for i = 1 to N, so Npair = N. :ulb,l
If {type} is set
to {upper} then each input value is correlated with every succeeding
value. I.e. Cij = Vi*Vj, for i < j, so Npair = N*(N-1)/2. :l
If {type} is set
to {lower} then each input value is correlated with every preceeding
value. I.e. Cij = Vi*Vj, for i > j, so Npair = N*(N-1)/2. :l
If {type} is set to {auto/upper} then each input value is correlated
with itself and every succeeding value. I.e. Cij = Vi*Vj, for i >= j,
so Npair = N*(N+1)/2. :l
If {type} is set to {auto/lower} then each input value is correlated
with itself and every preceding value. I.e. Cij = Vi*Vj, for i <= j,
so Npair = N*(N+1)/2. :l
If {type} is set to {full} then each input value is correlated with
itself and every other value. I.e. Cij = Vi*Vj, for i,j = 1,N so
Npair = N^2. :l,ule
The {ave} keyword determines what happens to the accumulation of
correlation samples every {Nfreq} timesteps. If the {ave} setting is
{one}, then the accumulation is restarted or zeroed every {Nfreq}
timesteps. Thus the outputs on successive {Nfreq} timesteps are
essentially independent of each other. The exception is that the
Cij(0) = Vi(T)*Vj(T) value at a timestep T, where T is a multiple of
{Nfreq}, contributes to the correlation output both at time T and at
time T+Nfreq.
If the {ave} setting is {running}, then the accumulation is never
zeroed. Thus the output of correlation data at any timestep is the
average over samples accumulated every {Nevery} steps since the fix
was defined. it can only be restarted by deleting the fix via the
"unfix"_unfix.html command, or by re-defining the fix by re-specifying
it.
The {start} keyword specifies what timestep the accumulation of
correlation samples will begin on. The default is step 0. Setting it
to a larger value can avoid adding non-equilibrated data to the
correlation averages.
The {prefactor} keyword specifies a constant which will be used as a
multiplier on the correlation data after it is averaged. It is
effectively a scale factor on Vi*Vj, which can be used to account for
the size of the time window or other unit conversions.
The {file} keyword allows a filename to be specified. Every {Nfreq}
steps, an array of correlation data is written to the file. The
number of rows is {Nrepeat}, as described above. The number of
columns is the Npair+2, also as described above. Thus the file ends
up to be a series of these array sections.
The {title1} and {title2} and {title3} keywords allow specification of
the strings that will be printed as the first 3 lines of the output
file, assuming the {file} keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified.
By default, these header lines are as follows:
# Time-correlated data for fix ID
# TimeStep Number-of-time-windows
# Index TimeDelta Ncount valueI*valueJ valueI*valueJ ... :pre
In the first line, ID is replaced with the fix-ID. The second line
describes the two values that are printed at the first of each section
of output. In the third line the value pairs are replaced with the
appropriate fields from the fix ave/correlate command.
:line
Let Sij = a set of time correlation data for input values I and J,
namely the {Nrepeat} values:
Sij = Cij(0), Cij(Nevery), Cij(2*Nevery), ..., Cij(*Nrepeat-1)*Nevery) :pre
As explained below, these datums are output as one column of a global
array, which is effectively the correlation matrix.
The {trap} function defined for "equal-style variables"_variable.html
can be used to perform a time integration of this vector of datums,
using a trapezoidal rule. This is useful for calculating various
quantities which can be derived from time correlation data. If a
normalization factor is needed for the time integration, it can be
included in the variable formula or via the {prefactor} keyword.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global array of values which can be accessed by
-various "output commands"_Section_howto.html#4_15. The values can
+various "output commands"_Section_howto.html#howto_15. The values can
only be accessed on timesteps that are multiples of {Nfreq} since that
is when averaging is performed. The global array has # of rows =
{Nrepeat} and # of columns = Npair+2. The first column has the time
delta (in timesteps) between the pairs of input values used to
calculate the correlation, as described above. The 2nd column has the
number of samples contributing to the correlation average, as
described above. The remaining Npair columns are for I,J pairs of the
N input values, as determined by the {type} keyword, as described
above.
For {type} = {auto}, the Npair = N columns are ordered: C11, C22, ...,
CNN. :ulb,l
For {type} = {upper}, the Npair = N*(N-1)/2 columns are ordered: C12,
C13, ..., C1N, C23, ..., C2N, C34, ..., CN-1N. :l
For {type} = {lower}, the Npair = N*(N-1)/2 columns are ordered: C21,
C31, C32, C41, C42, C43, ..., CN1, CN2, ..., CNN-1. :l
For {type} = {auto/upper}, the Npair = N*(N+1)/2 columns are ordered:
C11, C12, C13, ..., C1N, C22, C23, ..., C2N, C33, C34, ..., CN-1N,
CNN. :l
For {type} = {auto/lower}, the Npair = N*(N+1)/2 columns are ordered:
C11, C21, C22, C31, C32, C33, C41, ..., C44, CN1, CN2, ..., CNN-1,
CNN. :l
For {type} = {full}, the Npair = N^2 columns are ordered: C11, C12,
..., C1N, C21, C22, ..., C2N, C31, ..., C3N, ..., CN1, ..., CNN-1,
CNN. :l,ule
The array values calculated by this fix are treated as "intensive".
If you need to divide them by the number of atoms, you must do this in
a later processing step, e.g. when using them in a
"variable"_variable.html.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"compute"_compute.html, "fix ave/time"_fix_ave_time.html, "fix
ave/atom"_fix_ave_atom.html, "fix ave/spatial"_fix_ave_spatial.html,
"fix ave/histo"_fix_ave_histo.html, "variable"_variable.html
[Default:] none
The option defaults are ave = one, type = auto, start = 0, no file
output, title 1,2,3 = strings as described above, and prefactor = 1.0.
diff --git a/doc/fix_ave_histo.html b/doc/fix_ave_histo.html
index 6330a34e6..ee99ee523 100644
--- a/doc/fix_ave_histo.html
+++ b/doc/fix_ave_histo.html
@@ -1,331 +1,332 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix ave/histo command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID ave/histo Nevery Nrepeat Nfreq lo hi Nbin value1 value2 ... keyword args ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>ave/histo = 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 histogram
<LI>Nfreq = calculate histogram every this many timesteps
<LI>lo,hi = lo/hi bounds within which to histogram
<LI>Nbin = # of histogram bins
<LI>one or more input values can be listed
<LI>value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[N], f_ID, f_ID[N], v_name
<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>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>
ignore = ignore values outside histogram lo/hi bounds
end = count values outside histogram lo/hi bounds in end bins
extra = create 2 extra bins for value outside histogram lo/hi bounds
<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
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all ave/histo 100 5 1000 0.5 1.5 50 c_myTemp file temp.histo ave running
fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press[2] c_thermo_press[3] title1 "My output values"
fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyond extra
</PRE>
<P><B>Description:</B>
</P>
<P>Use one or more values as inputs every few timesteps, histogram them,
and average the histogram over longer timescales. The resulting
-histogram can be used by other <A HREF = "Section_howto.html#4_15">output
-commands</A>, and can also be written to a file.
+histogram can be used by other <A HREF = "Section_howto.html#howto_15">output
+commands</A>, and can also be written to a
+file.
</P>
<P>The group specified with this command is ignored for global and local
input values. For per-atom input values, only atoms in the group
contribute to the histogram. Note that regardless of the specified
group, specified values may represent calculations performed by
computes and fixes which store their own "group" definition.
</P>
<P>A histogram is simply a count of the number of values that fall within
a histogram bin. <I>Nbins</I> are defined, with even spacing between <I>lo</I>
and <I>hi</I>. Values that fall outside the lo/hi bounds can be treated in
different ways; see the discussion of the <I>beyond</I> keyword below.
</P>
<P>Each input value can be an atom attribute (position, velocity, force
component) or can be the result of a <A HREF = "compute.html">compute</A> or
<A HREF = "fix.html">fix</A> or the evaluation of an equal-style or atom-style
<A HREF = "variable.html">variable</A>. The set of input values can be either all
global, all per-atom, or all local quantities. Inputs of different
kinds (e.g. global and per-atom) cannot be mixed. Atom attributes are
per-atom vector values. See the doc page for individual "compute" and
"fix" commands to see what kinds of quantities they generate.
</P>
<P>The input values must either be all scalars or all vectors (or
arrays), depending on the setting of the <I>mode</I> keyword.
</P>
<P>If <I>mode</I> = vector, then the input values may either be vectors or
arrays. If a global array is listed, then it is the same as if the
individual columns of the array had been listed one by one.
E.g. these 2 fix ave/histo commands are equivalent, since the <A HREF = "compute_com_molecule.html">compute
com/molecule</A> command creates a global array
with 3 columns:
</P>
<PRE>compute myCOM all com/molecule
fix 1 all ave/histo 100 1 100 c_myCOM file tmp1.com mode vector
fix 2 all ave/histo 100 1 100 c_myCOM[1] c_myCOM[2] c_myCOM[3] file tmp2.com mode vector
</PRE>
<P>The output of this command is a single histogram for all input values
combined together, not one histogram per input value. See below for
details on the format of the output of this fix.
</P>
<HR>
<P>The <I>Nevery</I>, <I>Nrepeat</I>, and <I>Nfreq</I> arguments specify on what
timesteps the input values will be used in order to contribute to the
histogram. The final histogram is generated on timesteps that are
multiple of <I>Nfreq</I>. It is averaged over <I>Nrepeat</I> histograms,
computed in the preceding portion of the simulation every <I>Nevery</I>
timesteps. <I>Nfreq</I> must be a multiple of <I>Nevery</I> and <I>Nevery</I> must
be non-zero even if <I>Nrepeat</I> is 1. Also, the timesteps contributing
to the histogram cannot overlap, i.e. Nfreq > (Nrepeat-1)*Nevery is
required.
</P>
<P>For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then input values
on timesteps 90,92,94,96,98,100 will be used to compute the final
histogram on timestep 100. Similarly for timesteps
190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq
= 100, then no time averaging of the histogram is done; a histogram is
simply generated on timesteps 100,200,etc.
</P>
<HR>
<P>The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are
self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the <A HREF = "compute_property_atom.html">compute
property/atom</A> command and then specifying
an input value from that compute.
</P>
<P>If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. If <I>mode</I> = scalar, then if
no bracketed term is appended, the global scalar calculated by the
compute is used. If a bracketed term is appended, the Ith element of
the global vector calculated by the compute is used. If <I>mode</I> =
vector, then if no bracketed term is appended, the global or per-atom
or local vector calculated by the compute is used. Or if the compute
calculates an array, all of the columns of the array are used as if
they had been specified as individual vectors (see description above).
If a bracketed term is appended, the Ith column of the global or
per-atom or local array calculated by the compute is used.
</P>
<P>Note that there is a <A HREF = "compute_reduce.html">compute reduce</A> command
which can sum per-atom quantities into a global scalar or vector which
can thus be accessed by fix ave/histo. Or it can be a compute defined
not in your input script, but by <A HREF = "thermo_style.html">thermodynamic
output</A> or other fixes such as <A HREF = "fix_nh.html">fix
nvt</A> or <A HREF = "fix_temp_rescale.html">fix temp/rescale</A>. See
the doc pages for these commands which give the IDs of these computes.
Users can also write code for their own compute styles and <A HREF = "Section_modify.html">add them
to LAMMPS</A>.
</P>
<P>If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. If <I>mode</I> = scalar, then if
no bracketed term is appended, the global scalar calculated by the fix
is used. If a bracketed term is appended, the Ith element of the
global vector calculated by the fix is used. If <I>mode</I> = vector, then
if no bracketed term is appended, the global or per-atom or local
vector calculated by the fix is used. Or if the fix calculates an
array, all of the columns of the array are used as if they had been
specified as individual vectors (see description above). If a
bracketed term is appended, the Ith column of the global or per-atom
or local array calculated by the fix is used.
</P>
<P>Note that some fixes only produce their values on certain timesteps,
which must be compatible with <I>Nevery</I>, else an error will result.
Users can also write code for their own fix styles and <A HREF = "Section_modify.html">add them to
LAMMPS</A>.
</P>
<P>If a value begins with "v_", a variable name must follow which has
been previously defined in the input script. If <I>mode</I> = scalar, then
only equal-style variables can be used, which produce a global value.
If <I>mode</I> = vector, then only atom-style variables can be used, which
produce a per-atom vector. See the <A HREF = "variable.html">variable</A> command
for details. Note that variables of style <I>equal</I> and <I>atom</I> define a
formula which can reference individual atom properties or
thermodynamic keywords, or they can invoke other computes, fixes, or
variables when they are evaluated, so this is a very general means of
specifying quantities to histogram.
</P>
<HR>
<P>Additional optional keywords also affect the operation of this fix.
</P>
<P>If the <I>mode</I> keyword is set to <I>scalar</I>, then all input values must
be global scalars, or elements of global vectors. If the <I>mode</I>
keyword is set to <I>vector</I>, then all input values must be global or
per-atom or local vectors, or columns of global or per-atom or local
arrays.
</P>
<P>The <I>beyond</I> keyword determines how input values that fall outside the
<I>lo</I> to <I>hi</I> bounds are treated. Values such that <I>lo</I> <= value <=
<I>hi</I> are assigned to one bin. Values on a bin boundary are assigned
to the lower of the 2 bins. If <I>beyond</I> is set to <I>ignore</I> then
values < <I>lo</I> and values > <I>hi</I> are ignored, i.e. they are not binned.
If <I>beyond</I> is set to <I>end</I> then values < <I>lo</I> are counted in the
first bin and values > <I>hi</I> are counted in the last bin. If <I>beyond</I>
is set to <I>extend</I> then two extra bins are created, so that there are
Nbins+2 total bins. Values < <I>lo</I> are counted in the first bin and
values > <I>hi</I> are counted in the last bin (Nbins+1). Values between
<I>lo</I> and <I>hi</I> (inclusive) are counted in bins 2 thru Nbins+1. The
"coordinate" stored and printed for these two extra bins is <I>lo</I> and
<I>hi</I>.
</P>
<P>The <I>ave</I> keyword determines how the histogram produced every <I>Nfreq</I>
steps are averaged with histograms produced on previous steps that
were multiples of <I>Nfreq</I>, before they are accessed by another output
command or written to a file.
</P>
<P>If the <I>ave</I> setting is <I>one</I>, then the histograms produced on
timesteps that are multiples of <I>Nfreq</I> are independent of each other;
they are output as-is without further averaging.
</P>
<P>If the <I>ave</I> setting is <I>running</I>, then the histograms produced on
timesteps that are multiples of <I>Nfreq</I> are summed and averaged in a
cumulative sense before being output. Each bin value in the histogram
is thus the average of the bin value produced on that timestep with
all preceding values for the same bin. This running average begins
when the fix is defined; it can only be restarted by deleting the fix
via the <A HREF = "unfix.html">unfix</A> command, or by re-defining the fix by
re-specifying it.
</P>
<P>If the <I>ave</I> setting is <I>window</I>, then the histograms produced on
timesteps that are multiples of <I>Nfreq</I> are summed within a moving
"window" of time, so that the last M histograms are used to produce
the output. E.g. if M = 3 and Nfreq = 1000, then the output on step
10000 will be the combined histogram of the individual histograms on
steps 8000,9000,10000. Outputs on early steps will be sums over less
than M histograms if they are not available.
</P>
<P>The <I>start</I> keyword specifies what timestep histogramming will begin
on. The default is step 0. Often input values can be 0.0 at time 0,
so setting <I>start</I> to a larger value can avoid including a 0.0 in
a running or windowed histogram.
</P>
<P>The <I>file</I> keyword allows a filename to be specified. Every <I>Nfreq</I>
steps, one histogram is written to the file. This includes a leading
line that contains the timestep, number of bins, the total count of
values contributing to the histogram, the count of values that were
not histogrammed (see the <I>beyond</I> keyword), the minimum value
encountered, and the maximum value encountered. The min/max values
include values that were not histogrammed. Following the leading
line, one line per bin is written into the file. Each line contains
the bin #, the coordinate for the center of the bin (between <I>lo</I> and
<I>hi</I>), the count of values in the bin, and the normalized count. The
normalized count is the bin count divided by the total count (not
including values not histogrammed), so that the normalized values sum
to 1.0 across all bins.
</P>
<P>The <I>title1</I> and <I>title2</I> and <I>title3</I> keywords allow specification of
the strings that will be printed as the first 3 lines of the output
file, assuming the <I>file</I> keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified.
</P>
<P>By default, these header lines are as follows:
</P>
<PRE># Histogram for fix ID
# TimeStep Number-of-bins Total-counts Missing-counts Min-value Max-value
# Bin Coord Count Count/Total
</PRE>
<P>In the first line, ID is replaced with the fix-ID. The second line
describes the six values that are printed at the first of each section
of output. The third describes the 4 values printed for each bin in
the histogram.
</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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix produces a global vector and global array which can be
-accessed by various <A HREF = "Section_howto.html#4_15">output commands</A>. The
-values can only be accessed on timesteps that are multiples of <I>Nfreq</I>
-since that is when a histogram is generated.
-The global vector has 4 values:
+accessed by various <A HREF = "Section_howto.html#howto_15">output commands</A>.
+The values can only be accessed on timesteps that are multiples of
+<I>Nfreq</I> since that is when a histogram is generated. The global
+vector has 4 values:
</P>
<UL><LI>1 = total counts in the histogram
<LI>2 = values that were not histogrammed (see <I>beyond</I> keyword)
<LI>3 = min value of all input values, including ones not histogrammed
<LI>4 = max value of all input values, including ones not histogrammed
</UL>
<P>The global array has # of rows = Nbins and # of columns = 3. The
first column has the bin coordinate, the 2nd column has the count of
values in that histogram bin, and the 3rd column has the bin count
divided by the total count (not including missing counts), so that the
values in the 3rd column sum to 1.0.
</P>
<P>The vector and array values calculated by this fix are all treated as
"intensive". If this is not the case, e.g. due to histogramming
per-atom input values, then you will need to account for that when
interpreting the values produced by this fix.
</P>
<P>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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute.html">compute</A>, <A HREF = "fix_ave_atom.html">fix ave/atom</A>, <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A>, <A HREF = "fix_ave_time.html">fix ave/time</A>,
<A HREF = "variable.html">variable</A>, <A HREF = "fix_ave_correlate.html">fix ave/correlate</A>,
</P>
<P><B>Default:</B> none
</P>
<P>The option defaults are mode = scalar, ave = one, start = 0, no file
output, beyond = ignore, and title 1,2,3 = strings as described above.
</P>
</HTML>
diff --git a/doc/fix_ave_histo.txt b/doc/fix_ave_histo.txt
index aa0b046c9..7f009eba0 100644
--- a/doc/fix_ave_histo.txt
+++ b/doc/fix_ave_histo.txt
@@ -1,314 +1,315 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix ave/histo command :h3
[Syntax:]
fix ID group-ID ave/histo Nevery Nrepeat Nfreq lo hi Nbin value1 value2 ... keyword args ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
ave/histo = style name of this fix command :l
Nevery = use input values every this many timesteps :l
Nrepeat = # of times to use input values for calculating histogram :l
Nfreq = calculate histogram every this many timesteps :l
lo,hi = lo/hi bounds within which to histogram :l
Nbin = # of histogram bins :l
one or more input values can be listed :l
value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l
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
zero or more keyword/arg pairs may be appended :l
keyword = {mode} or {file} or {ave} or {start} or {beyond} or {title1} or {title2} or {title3} :l
{mode} arg = {scalar} or {vector}
scalar = all input values are scalars
vector = all input values are vectors
{file} arg = filename
filename = name of file to output histogram(s) to
{ave} args = {one} or {running} or {window}
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
{start} args = Nstart
Nstart = start averaging on this timestep
{beyond} arg = {ignore} or {end} or {extra}
ignore = ignore values outside histogram lo/hi bounds
end = count values outside histogram lo/hi bounds in end bins
extra = create 2 extra bins for value outside histogram lo/hi bounds
{title1} arg = string
string = text to print as 1st line of output file
{title2} arg = string
string = text to print as 2nd line of output file
{title3} arg = string
string = text to print as 3rd line of output file, only for vector mode :pre
:ule
[Examples:]
fix 1 all ave/histo 100 5 1000 0.5 1.5 50 c_myTemp file temp.histo ave running
fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press\[2\] c_thermo_press\[3\] title1 "My output values"
fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyond extra :pre
[Description:]
Use one or more values as inputs every few timesteps, histogram them,
and average the histogram over longer timescales. The resulting
histogram can be used by other "output
-commands"_Section_howto.html#4_15, and can also be written to a file.
+commands"_Section_howto.html#howto_15, and can also be written to a
+file.
The group specified with this command is ignored for global and local
input values. For per-atom input values, only atoms in the group
contribute to the histogram. Note that regardless of the specified
group, specified values may represent calculations performed by
computes and fixes which store their own "group" definition.
A histogram is simply a count of the number of values that fall within
a histogram bin. {Nbins} are defined, with even spacing between {lo}
and {hi}. Values that fall outside the lo/hi bounds can be treated in
different ways; see the discussion of the {beyond} keyword below.
Each input value can be an atom attribute (position, velocity, force
component) or can be the result of a "compute"_compute.html or
"fix"_fix.html or the evaluation of an equal-style or atom-style
"variable"_variable.html. The set of input values can be either all
global, all per-atom, or all local quantities. Inputs of different
kinds (e.g. global and per-atom) cannot be mixed. Atom attributes are
per-atom vector values. See the doc page for individual "compute" and
"fix" commands to see what kinds of quantities they generate.
The input values must either be all scalars or all vectors (or
arrays), depending on the setting of the {mode} keyword.
If {mode} = vector, then the input values may either be vectors or
arrays. If a global array is listed, then it is the same as if the
individual columns of the array had been listed one by one.
E.g. these 2 fix ave/histo commands are equivalent, since the "compute
com/molecule"_compute_com_molecule.html command creates a global array
with 3 columns:
compute myCOM all com/molecule
fix 1 all ave/histo 100 1 100 c_myCOM file tmp1.com mode vector
fix 2 all ave/histo 100 1 100 c_myCOM\[1\] c_myCOM\[2\] c_myCOM\[3\] file tmp2.com mode vector :pre
The output of this command is a single histogram for all input values
combined together, not one histogram per input value. See below for
details on the format of the output of this fix.
:line
The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what
timesteps the input values will be used in order to contribute to the
histogram. The final histogram is generated on timesteps that are
multiple of {Nfreq}. It is averaged over {Nrepeat} histograms,
computed in the preceding portion of the simulation every {Nevery}
timesteps. {Nfreq} must be a multiple of {Nevery} and {Nevery} must
be non-zero even if {Nrepeat} is 1. Also, the timesteps contributing
to the histogram cannot overlap, i.e. Nfreq > (Nrepeat-1)*Nevery is
required.
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then input values
on timesteps 90,92,94,96,98,100 will be used to compute the final
histogram on timestep 100. Similarly for timesteps
190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq
= 100, then no time averaging of the histogram is done; a histogram is
simply generated on timesteps 100,200,etc.
:line
The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are
self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the "compute
property/atom"_compute_property_atom.html command and then specifying
an input value from that compute.
If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. If {mode} = scalar, then if
no bracketed term is appended, the global scalar calculated by the
compute is used. If a bracketed term is appended, the Ith element of
the global vector calculated by the compute is used. If {mode} =
vector, then if no bracketed term is appended, the global or per-atom
or local vector calculated by the compute is used. Or if the compute
calculates an array, all of the columns of the array are used as if
they had been specified as individual vectors (see description above).
If a bracketed term is appended, the Ith column of the global or
per-atom or local array calculated by the compute is used.
Note that there is a "compute reduce"_compute_reduce.html command
which can sum per-atom quantities into a global scalar or vector which
can thus be accessed by fix ave/histo. Or it can be a compute defined
not in your input script, but by "thermodynamic
output"_thermo_style.html or other fixes such as "fix
nvt"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html. See
the doc pages for these commands which give the IDs of these computes.
Users can also write code for their own compute styles and "add them
to LAMMPS"_Section_modify.html.
If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. If {mode} = scalar, then if
no bracketed term is appended, the global scalar calculated by the fix
is used. If a bracketed term is appended, the Ith element of the
global vector calculated by the fix is used. If {mode} = vector, then
if no bracketed term is appended, the global or per-atom or local
vector calculated by the fix is used. Or if the fix calculates an
array, all of the columns of the array are used as if they had been
specified as individual vectors (see description above). If a
bracketed term is appended, the Ith column of the global or per-atom
or local array calculated by the fix is used.
Note that some fixes only produce their values on certain timesteps,
which must be compatible with {Nevery}, else an error will result.
Users can also write code for their own fix styles and "add them to
LAMMPS"_Section_modify.html.
If a value begins with "v_", a variable name must follow which has
been previously defined in the input script. If {mode} = scalar, then
only equal-style variables can be used, which produce a global value.
If {mode} = vector, then only atom-style variables can be used, which
produce a per-atom vector. See the "variable"_variable.html command
for details. Note that variables of style {equal} and {atom} define a
formula which can reference individual atom properties or
thermodynamic keywords, or they can invoke other computes, fixes, or
variables when they are evaluated, so this is a very general means of
specifying quantities to histogram.
:line
Additional optional keywords also affect the operation of this fix.
If the {mode} keyword is set to {scalar}, then all input values must
be global scalars, or elements of global vectors. If the {mode}
keyword is set to {vector}, then all input values must be global or
per-atom or local vectors, or columns of global or per-atom or local
arrays.
The {beyond} keyword determines how input values that fall outside the
{lo} to {hi} bounds are treated. Values such that {lo} <= value <=
{hi} are assigned to one bin. Values on a bin boundary are assigned
to the lower of the 2 bins. If {beyond} is set to {ignore} then
values < {lo} and values > {hi} are ignored, i.e. they are not binned.
If {beyond} is set to {end} then values < {lo} are counted in the
first bin and values > {hi} are counted in the last bin. If {beyond}
is set to {extend} then two extra bins are created, so that there are
Nbins+2 total bins. Values < {lo} are counted in the first bin and
values > {hi} are counted in the last bin (Nbins+1). Values between
{lo} and {hi} (inclusive) are counted in bins 2 thru Nbins+1. The
"coordinate" stored and printed for these two extra bins is {lo} and
{hi}.
The {ave} keyword determines how the histogram produced every {Nfreq}
steps are averaged with histograms produced on previous steps that
were multiples of {Nfreq}, before they are accessed by another output
command or written to a file.
If the {ave} setting is {one}, then the histograms produced on
timesteps that are multiples of {Nfreq} are independent of each other;
they are output as-is without further averaging.
If the {ave} setting is {running}, then the histograms produced on
timesteps that are multiples of {Nfreq} are summed and averaged in a
cumulative sense before being output. Each bin value in the histogram
is thus the average of the bin value produced on that timestep with
all preceding values for the same bin. This running average begins
when the fix is defined; it can only be restarted by deleting the fix
via the "unfix"_unfix.html command, or by re-defining the fix by
re-specifying it.
If the {ave} setting is {window}, then the histograms produced on
timesteps that are multiples of {Nfreq} are summed within a moving
"window" of time, so that the last M histograms are used to produce
the output. E.g. if M = 3 and Nfreq = 1000, then the output on step
10000 will be the combined histogram of the individual histograms on
steps 8000,9000,10000. Outputs on early steps will be sums over less
than M histograms if they are not available.
The {start} keyword specifies what timestep histogramming will begin
on. The default is step 0. Often input values can be 0.0 at time 0,
so setting {start} to a larger value can avoid including a 0.0 in
a running or windowed histogram.
The {file} keyword allows a filename to be specified. Every {Nfreq}
steps, one histogram is written to the file. This includes a leading
line that contains the timestep, number of bins, the total count of
values contributing to the histogram, the count of values that were
not histogrammed (see the {beyond} keyword), the minimum value
encountered, and the maximum value encountered. The min/max values
include values that were not histogrammed. Following the leading
line, one line per bin is written into the file. Each line contains
the bin #, the coordinate for the center of the bin (between {lo} and
{hi}), the count of values in the bin, and the normalized count. The
normalized count is the bin count divided by the total count (not
including values not histogrammed), so that the normalized values sum
to 1.0 across all bins.
The {title1} and {title2} and {title3} keywords allow specification of
the strings that will be printed as the first 3 lines of the output
file, assuming the {file} keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified.
By default, these header lines are as follows:
# Histogram for fix ID
# TimeStep Number-of-bins Total-counts Missing-counts Min-value Max-value
# Bin Coord Count Count/Total :pre
In the first line, ID is replaced with the fix-ID. The second line
describes the six values that are printed at the first of each section
of output. The third describes the 4 values printed for each bin in
the histogram.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix produces a global vector and global array which can be
-accessed by various "output commands"_Section_howto.html#4_15. The
-values can only be accessed on timesteps that are multiples of {Nfreq}
-since that is when a histogram is generated.
-The global vector has 4 values:
+accessed by various "output commands"_Section_howto.html#howto_15.
+The values can only be accessed on timesteps that are multiples of
+{Nfreq} since that is when a histogram is generated. The global
+vector has 4 values:
1 = total counts in the histogram
2 = values that were not histogrammed (see {beyond} keyword)
3 = min value of all input values, including ones not histogrammed
4 = max value of all input values, including ones not histogrammed :ul
The global array has # of rows = Nbins and # of columns = 3. The
first column has the bin coordinate, the 2nd column has the count of
values in that histogram bin, and the 3rd column has the bin count
divided by the total count (not including missing counts), so that the
values in the 3rd column sum to 1.0.
The vector and array values calculated by this fix are all treated as
"intensive". If this is not the case, e.g. due to histogramming
per-atom input values, then you will need to account for that when
interpreting the values produced by this fix.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"compute"_compute.html, "fix ave/atom"_fix_ave_atom.html, "fix
ave/spatial"_fix_ave_spatial.html, "fix ave/time"_fix_ave_time.html,
"variable"_variable.html, "fix ave/correlate"_fix_ave_correlate.html,
[Default:] none
The option defaults are mode = scalar, ave = one, start = 0, no file
output, beyond = ignore, and title 1,2,3 = strings as described above.
diff --git a/doc/fix_ave_spatial.html b/doc/fix_ave_spatial.html
index d1046fb7f..e61b3d6bb 100644
--- a/doc/fix_ave_spatial.html
+++ b/doc/fix_ave_spatial.html
@@ -1,362 +1,362 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix ave/spatial command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID ave/spatial Nevery Nrepeat Nfreq dim origin delta ... value1 value2 ... keyword args ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>ave/spatial = 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>dim, origin, delta can be repeated 1, 2, or 3 times for 1d, 2d, or 3d bins
<PRE> dim = <I>x</I> or <I>y</I> or <I>z</I>
origin = <I>lower</I> or <I>center</I> or <I>upper</I> or coordinate value (distance units)
delta = thickness of spatial bins in dim (distance units)
</PRE>
<LI>one or more input values can be listed
<LI>value = vx, vy, vz, fx, fy, fz, density/mass, density/number, c_ID, c_ID[I], f_ID, f_ID[I], v_name
<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>norm</I> or <I>units</I> or <I>file</I> or <I>ave</I> or <I>title1</I> or <I>title2</I> or <I>title3</I>
<PRE> <I>units</I> arg = <I>box</I> or <I>lattice</I> or <I>reduced</I>
<I>norm</I> arg = <I>all</I> or <I>sample</I>
<I>region</I> arg = region-ID
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>file</I> arg = filename
filename = file to write results to
<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 &
title1 "My output values"
fix 1 flow ave/spatial 100 10 1000 y 0.0 1.0 vx vz norm sample file vel.profile
fix 1 flow ave/spatial 100 5 1000 z lower 1.0 y 0.0 2.5 density/mass ave running
</PRE>
<P><B>Description:</B>
</P>
<P>Use one or more per-atom vectors as inputs every few timesteps, bin
their values spatially into 1d, 2d, or 3d bins based on current atom
coordinates, and average the bin values over longer timescales. The
-resulting bin averages can be used by other <A HREF = "Section_howto.html#4_15">output
+resulting bin averages can be used by other <A HREF = "Section_howto.html#howto_15">output
commands</A> such as <A HREF = "thermo_style.html">thermo_style
custom</A>, and can also be written to a file.
</P>
<P>The group specified with the command means only atoms within the group
contribute to bin averages. If the <I>region</I> keyword is used, the
atom must be in both the group and the specified geometric
<A HREF = "region.html">region</A> in order to contribute to bin averages.
</P>
<P>Each listed value can be an atom attribute (position, velocity, force
component), a mass or number density, or the result of a
<A HREF = "compute.html">compute</A> or <A HREF = "fix.html">fix</A> or the evaluation of an
atom-style <A HREF = "variable.html">variable</A>. In the latter cases, the
compute, fix, or variable must produce a per-atom quantity, not a
global quantity. If you wish to time-average global quantities from a
compute, fix, or variable, then see the <A HREF = "fix_ave_time.html">fix
ave/time</A> command.
</P>
<P><A HREF = "compute.html">Computes</A> that produce per-atom quantities are those
which have the word <I>atom</I> in their style name. See the doc pages for
individual <A HREF = "fix.html">fixes</A> to determine which ones produce per-atom
quantities. <A HREF = "variable.html">Variables</A> of style <I>atom</I> are the only
ones that can be used with this fix since all other styles of variable
produce global quantities.
</P>
<P>The per-atom values of each input vector are binned and averaged
independently of the per-atom values in other input vectors.
</P>
<P>The size and dimensionality of the bins (1d = layers or slabs, 2d =
pencils, 3d = boxes) are determined by the <I>dim</I>, <I>origin</I>, and
<I>delta</I> settings and how many times they are specified (1, 2, or 3).
See details below.
</P>
<P>IMPORTANT NOTE: This fix works by creating an array of size Nbins by
Nvalues on each processor. Nbins is the total number of bins; Nvalues
is the number of input values specified. Each processor loops over
its atoms, tallying its values to the appropriate bin. Then the
entire array is summed across all processors. This means that using a
large number of bins (easy to do for 2d or 3d bins) will incur an
overhead in memory and computational cost (summing across processors),
so be careful to use reasonable numbers of bins.
</P>
<HR>
<P>The <I>Nevery</I>, <I>Nrepeat</I>, and <I>Nfreq</I> arguments specify on what
timesteps the input values will be used to bin them and contribute to
the average. The final averaged quantities are generated on timesteps
that are a multiples of <I>Nfreq</I>. The average is over <I>Nrepeat</I>
quantities, computed in the preceding portion of the simulation every
<I>Nevery</I> timesteps. <I>Nfreq</I> must be a multiple of <I>Nevery</I> and
<I>Nevery</I> must be non-zero even if <I>Nrepeat</I> is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nfreq >
(Nrepeat-1)*Nevery is required.
</P>
<P>For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
averaging is done; values are simply generated on timesteps
100,200,etc.
</P>
<HR>
<P>Each per-atom property is also averaged over atoms in each bin. Bins
can be 1d layers or slabs, 2d pencils, or 3d boxes. This depends on
how many times (1, 2, or 3) the <I>dim</I>, <I>origin</I>, and <I>delta</I> settings
are specified in the fix ave/spatial command. For 2d or 3d bins,
there is no restriction on specifying dim = x before dim = y, or dim =
y before dim = z. Bins in a particular <I>dim</I> have a bin size in that
dimension given by <I>delta</I>. Every Nfreq steps, when averaging is
being performed and the per-atom property is calculated for the first
time, the number of bins and the bin sizes and boundaries are
computed. Thus if the simulation box changes size during a
simulation, the number of bins and their boundaries may also change.
In each dimension, bins are defined relative to a specified <I>origin</I>,
which may be the lower/upper edge of the simulation box (in <I>dim</I>) or
its center point, or a specified coordinate value. Starting at the
origin, sufficient bins are created in both directions to completely
cover the box. On subsequent timesteps every atom is mapped to one of
the bins. Atoms beyond the lowermost/uppermost bin in a dimension are
counted in the first/last bin in that dimension.
</P>
<P>For orthogonal simulation boxes, the bins are also layers, pencils, or
boxes aligned with the xyz coordinate axes. For triclinic
(non-orthogonal) simulation boxes, the bins are so that they are
-parallel to the tilted faces of the simulation box. See <A HREF = "Section_howto.html#4_12">this
-section</A> of the manual for a discussion of the
-geometry of triclinic boxes in LAMMPS. As described there, a tilted
-simulation box has edge vectors a,b,c. In that nomenclature, bins in
-the x dimension have faces with normals in the "b" cross "c"
+parallel to the tilted faces of the simulation box. See <A HREF = "Section_howto.html#howto_12">this
+section</A> of the manual for a discussion of
+the geometry of triclinic boxes in LAMMPS. As described there, a
+tilted simulation box has edge vectors a,b,c. In that nomenclature,
+bins in the x dimension have faces with normals in the "b" cross "c"
direction. Bins in y have faces normal to the "a" cross "c"
direction. And bins in z have faces normal to the "a" cross "b"
direction. Note that in order to define the size and position of
these bins in an unambiguous fashion, the <I>units</I> option must be set
to <I>reduced</I> when using a triclinic simulation box, as noted below.
</P>
<HR>
<P>The atom attribute values (vx,vy,vz,fx,fy,fz) are self-explanatory.
Note that other atom attributes (including atom postitions x,y,z) can
be used as inputs to this fix by using the <A HREF = "compute_property_atom.html">compute
property/atom</A> command and then specifying
an input value from that compute.
</P>
<P>The <I>density/number</I> value means the number density is computed in
each bin, i.e. a weighting of 1 for each atom. The <I>density/mass</I>
value means the mass density is computed in each bind, i.e. each atom
is weighted by its mass. The resulting density is normalized by the
volume of the bin so that units of number/volume or density are
output. See the <A HREF = "units.html">units</A> command doc page for the
definition of density for each choice of units, e.g. gram/cm^3.
</P>
<P>If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the compute is used. If a
bracketed interger is appended, the Ith column of the per-atom array
calculated by the compute is used. Users can also write code for
their own compute styles and <A HREF = "Section_modify.html">add them to LAMMPS</A>.
</P>
<P>If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the fix is used. If a
bracketed integer is appended, the Ith column of the per-atom array
calculated by the fix is used. Note that some fixes only produce
their values on certain timesteps, which must be compatible with
<I>Nevery</I>, else an error results. Users can also write code for their
own fix styles and <A HREF = "Section_modify.html">add them to LAMMPS</A>.
</P>
<P>If a value begins with "v_", a variable name must follow which has
been previously defined in the input script. Variables of style
<I>atom</I> can reference thermodynamic keywords and various per-atom
attributes, or invoke other computes, fixes, or variables when they
are evaluated, so this is a very general means of generating per-atom
quantities to spatially average.
</P>
<HR>
<P>Additional optional keywords also affect the operation of this fix.
</P>
<P>The <I>units</I> keyword determines the meaning of the distance units used
for the bin size <I>delta</I> and for <I>origin</I> if it is a coordinate
value. For orthogonal simulation boxes, any of the 3 options may be
used. For non-orthogonal (triclinic) simulation boxes, only the
<I>reduced</I> option may be used.
</P>
<P>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. A <I>reduced</I> value means normalized
unitless values between 0 and 1, which represent the lower and upper
faces of the simulation box respectively. Thus an <I>origin</I> value of
0.5 means the center of the box in any dimension. A <I>delta</I> value of
0.1 means 10 bins span the box in that dimension.
</P>
<P>Consider a non-orthogonal box, with bins that are 1d layers or slabs
in the x dimension. No matter how the box is tilted, an <I>origin</I> of
0.0 means start layers at the lower "b" cross "c" plane of the
simulation box and an <I>origin</I> of 1.0 means to start layers at the
upper "b" cross "c" face of the box. A <I>delta</I> value of 0.1 means
there will be 10 layers from 0.0 to 1.0, regardless of the current
size or shape of the simulation box.
</P>
<P>The <I>norm</I> keyword affects how averaging is done for the output
produced every <I>Nfreq</I> timesteps. For an <I>all</I> setting, a bin
quantity is summed over all atoms in all <I>Nrepeat</I> samples, as is the
count of atoms in the bin. The printed value for the bin is
Total-quantity / Total-count. In other words it is an average over
the entire <I>Nfreq</I> timescale.
</P>
<P>For a <I>sample</I> setting, the bin quantity is summed over atoms for only
a single sample, as is the count, and a "average sample value" is
computed, i.e. Sample-quantity / Sample-count. The printed value for
the bin is the average of the <I>Nrepeat</I> "average sample values", In
other words it is an average of an average.
</P>
<P>The <I>ave</I> keyword determines how the bin values produced every <I>Nfreq</I>
steps are averaged with bin values produced on previous steps that
were multiples of <I>Nfreq</I>, before they are accessed by another output
command or written to a file.
</P>
<P>If the <I>ave</I> setting is <I>one</I>, then the bin values produced on
timesteps that are multiples of <I>Nfreq</I> are independent of each other;
they are output as-is without further averaging.
</P>
<P>If the <I>ave</I> setting is <I>running</I>, then the bin values produced on
timesteps that are multiples of <I>Nfreq</I> are summed and averaged in a
cumulative sense before being output. Each output bin value is thus
the average of the bin value produced on that timestep with all
preceding values for the same bin. This running average begins when
the fix is defined; it can only be restarted by deleting the fix via
the <A HREF = "unfix.html">unfix</A> command, or re-defining the fix by
re-specifying it.
</P>
<P>If the <I>ave</I> setting is <I>window</I>, then the bin values produced on
timesteps that are multiples of <I>Nfreq</I> are summed and averaged within
a moving "window" of time, so that the last M values for the same bin
are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then
the output on step 10000 will be the average of the individual bin
values on steps 8000,9000,10000. Outputs on early steps will average
over less than M values if they are not available.
</P>
<P>The <I>file</I> keyword allows a filename to be specified. Every <I>Nfreq</I>
timesteps, a section of bin info will be written to a text file in the
following format. A line with the timestep and number of bin is
written. Then one line per bin is written, containing the bin ID
(1-N), the coordinate of the center of the bin, the number of atoms
in the bin, and one or more calculated values. The number of values
in each line corresponds to the number of values specified in the fix
ave/spatial command. The number of atoms and the value(s) are average
quantities. If the value of the <I>units</I> keyword is <I>box</I> or
<I>lattice</I>, the "coord" is printed in box units. If the value of the
<I>units</I> keyword is <I>reduced</I>, the "coord" is printed in reduced units
(0-1).
</P>
<P>The <I>title1</I> and <I>title2</I> and <I>title3</I> keywords allow specification of
the strings that will be printed as the first 3 lines of the output
file, assuming the <I>file</I> keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified.
</P>
<P>By default, these header lines are as follows:
</P>
<PRE># Spatial-averaged data for fix ID and group name
# Timestep Number-of-bins
# Bin Coord1 Coord2 Coord3 Count value1 value2 ...
</PRE>
<P>In the first line, ID and name are replaced with the fix-ID and group
name. The second line describes the two values that are printed at
the first of each section of output. In the third line the values are
replaced with the appropriate fields from the fix ave/spatial command.
The Coord2 and Coord3 entries in the third line only appear for 2d and
3d bins respectively. For 1d bins, the word Coord1 is replaced by
just Coord.
</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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global array of values which can be accessed by
-various <A HREF = "Section_howto.html#4_15">output commands</A>. The values can
+various <A HREF = "Section_howto.html#howto_15">output commands</A>. The values can
only be accessed on timesteps that are multiples of <I>Nfreq</I> since that
is when averaging is performed. The global array has # of rows =
Nbins and # of columns = Ndim+1+Nvalues, where Ndim = 1,2,3 for
1d,2d,3d bins. The first 1 or 2 or 3 columns have the bin coordinates
(center of the bin) in the appropriate dimensions, the next column has
the count of atoms in that bin, and the remaining columns are the
Nvalue quantities. When the array is accessed with an I that exceeds
the current number of bins, than a 0.0 is returned by the fix instead
of an error, since the number of bins can vary as a simulation runs,
depending on the simulation box size. 2d or 3d bins are ordered so
that the last dimension(s) vary fastest. The array values calculated
by this fix are "intensive", since they are already normalized by the
count of atoms in each bin.
</P>
<P>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>When the <I>ave</I> keyword is set to <I>running</I> or <I>window</I> then the number
of bins must remain the same during the simulation, so that the
appropriate averaging can be done. This will be the case if the
simulation box size doesn't change or if the <I>units</I> keyword is set to
<I>reduced</I>.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute.html">compute</A>, <A HREF = "fix_ave_atom.html">fix ave/atom</A>, <A HREF = "fix_ave_histo.html">fix
ave/histo</A>, <A HREF = "fix_ave_time.html">fix ave/time</A>,
<A HREF = "variable.html">variable</A>, <A HREF = "fix_ave_correlate.html">fix ave/correlate</A>,
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are units = lattice, norm = all, no file output,
and ave = one, title 1,2,3 = strings as described above.
</P>
</HTML>
diff --git a/doc/fix_ave_spatial.txt b/doc/fix_ave_spatial.txt
index ed3b95f32..f6ce44d8f 100644
--- a/doc/fix_ave_spatial.txt
+++ b/doc/fix_ave_spatial.txt
@@ -1,345 +1,345 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix ave/spatial command :h3
[Syntax:]
fix ID group-ID ave/spatial Nevery Nrepeat Nfreq dim origin delta ... value1 value2 ... keyword args ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
ave/spatial = style name of this fix command :l
Nevery = use input values every this many timesteps :l
Nrepeat = # of times to use input values for calculating averages :l
Nfreq = calculate averages every this many timesteps :l
dim, origin, delta can be repeated 1, 2, or 3 times for 1d, 2d, or 3d bins :l
dim = {x} or {y} or {z}
origin = {lower} or {center} or {upper} or coordinate value (distance units)
delta = thickness of spatial bins in dim (distance units) :pre
one or more input values can be listed :l
value = vx, vy, vz, fx, fy, fz, density/mass, density/number, c_ID, c_ID\[I\], f_ID, f_ID\[I\], v_name :l
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
zero or more keyword/arg pairs may be appended :l
keyword = {norm} or {units} or {file} or {ave} or {title1} or {title2} or {title3} :l
{units} arg = {box} or {lattice} or {reduced}
{norm} arg = {all} or {sample}
{region} arg = region-ID
region-ID = ID of region atoms must be in to contribute to spatial averaging
{ave} args = {one} or {running} or {window M}
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
{file} arg = filename
filename = file to write results to
{title1} arg = string
string = text to print as 1st line of output file
{title2} arg = string
string = text to print as 2nd line of output file
{title3} arg = string
string = text to print as 3rd line of output file :pre
:ule
[Examples:]
fix 1 all ave/spatial 10000 1 10000 z lower 0.02 c_myCentro units reduced &
title1 "My output values"
fix 1 flow ave/spatial 100 10 1000 y 0.0 1.0 vx vz norm sample file vel.profile
fix 1 flow ave/spatial 100 5 1000 z lower 1.0 y 0.0 2.5 density/mass ave running :pre
[Description:]
Use one or more per-atom vectors as inputs every few timesteps, bin
their values spatially into 1d, 2d, or 3d bins based on current atom
coordinates, and average the bin values over longer timescales. The
resulting bin averages can be used by other "output
-commands"_Section_howto.html#4_15 such as "thermo_style
+commands"_Section_howto.html#howto_15 such as "thermo_style
custom"_thermo_style.html, and can also be written to a file.
The group specified with the command means only atoms within the group
contribute to bin averages. If the {region} keyword is used, the
atom must be in both the group and the specified geometric
"region"_region.html in order to contribute to bin averages.
Each listed value can be an atom attribute (position, velocity, force
component), a mass or number density, or the result of a
"compute"_compute.html or "fix"_fix.html or the evaluation of an
atom-style "variable"_variable.html. In the latter cases, the
compute, fix, or variable must produce a per-atom quantity, not a
global quantity. If you wish to time-average global quantities from a
compute, fix, or variable, then see the "fix
ave/time"_fix_ave_time.html command.
"Computes"_compute.html that produce per-atom quantities are those
which have the word {atom} in their style name. See the doc pages for
individual "fixes"_fix.html to determine which ones produce per-atom
quantities. "Variables"_variable.html of style {atom} are the only
ones that can be used with this fix since all other styles of variable
produce global quantities.
The per-atom values of each input vector are binned and averaged
independently of the per-atom values in other input vectors.
The size and dimensionality of the bins (1d = layers or slabs, 2d =
pencils, 3d = boxes) are determined by the {dim}, {origin}, and
{delta} settings and how many times they are specified (1, 2, or 3).
See details below.
IMPORTANT NOTE: This fix works by creating an array of size Nbins by
Nvalues on each processor. Nbins is the total number of bins; Nvalues
is the number of input values specified. Each processor loops over
its atoms, tallying its values to the appropriate bin. Then the
entire array is summed across all processors. This means that using a
large number of bins (easy to do for 2d or 3d bins) will incur an
overhead in memory and computational cost (summing across processors),
so be careful to use reasonable numbers of bins.
:line
The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what
timesteps the input values will be used to bin them and contribute to
the average. The final averaged quantities are generated on timesteps
that are a multiples of {Nfreq}. The average is over {Nrepeat}
quantities, computed in the preceding portion of the simulation every
{Nevery} timesteps. {Nfreq} must be a multiple of {Nevery} and
{Nevery} must be non-zero even if {Nrepeat} is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nfreq >
(Nrepeat-1)*Nevery is required.
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
averaging is done; values are simply generated on timesteps
100,200,etc.
:line
Each per-atom property is also averaged over atoms in each bin. Bins
can be 1d layers or slabs, 2d pencils, or 3d boxes. This depends on
how many times (1, 2, or 3) the {dim}, {origin}, and {delta} settings
are specified in the fix ave/spatial command. For 2d or 3d bins,
there is no restriction on specifying dim = x before dim = y, or dim =
y before dim = z. Bins in a particular {dim} have a bin size in that
dimension given by {delta}. Every Nfreq steps, when averaging is
being performed and the per-atom property is calculated for the first
time, the number of bins and the bin sizes and boundaries are
computed. Thus if the simulation box changes size during a
simulation, the number of bins and their boundaries may also change.
In each dimension, bins are defined relative to a specified {origin},
which may be the lower/upper edge of the simulation box (in {dim}) or
its center point, or a specified coordinate value. Starting at the
origin, sufficient bins are created in both directions to completely
cover the box. On subsequent timesteps every atom is mapped to one of
the bins. Atoms beyond the lowermost/uppermost bin in a dimension are
counted in the first/last bin in that dimension.
For orthogonal simulation boxes, the bins are also layers, pencils, or
boxes aligned with the xyz coordinate axes. For triclinic
(non-orthogonal) simulation boxes, the bins are so that they are
parallel to the tilted faces of the simulation box. See "this
-section"_Section_howto.html#4_12 of the manual for a discussion of the
-geometry of triclinic boxes in LAMMPS. As described there, a tilted
-simulation box has edge vectors a,b,c. In that nomenclature, bins in
-the x dimension have faces with normals in the "b" cross "c"
+section"_Section_howto.html#howto_12 of the manual for a discussion of
+the geometry of triclinic boxes in LAMMPS. As described there, a
+tilted simulation box has edge vectors a,b,c. In that nomenclature,
+bins in the x dimension have faces with normals in the "b" cross "c"
direction. Bins in y have faces normal to the "a" cross "c"
direction. And bins in z have faces normal to the "a" cross "b"
direction. Note that in order to define the size and position of
these bins in an unambiguous fashion, the {units} option must be set
to {reduced} when using a triclinic simulation box, as noted below.
:line
The atom attribute values (vx,vy,vz,fx,fy,fz) are self-explanatory.
Note that other atom attributes (including atom postitions x,y,z) can
be used as inputs to this fix by using the "compute
property/atom"_compute_property_atom.html command and then specifying
an input value from that compute.
The {density/number} value means the number density is computed in
each bin, i.e. a weighting of 1 for each atom. The {density/mass}
value means the mass density is computed in each bind, i.e. each atom
is weighted by its mass. The resulting density is normalized by the
volume of the bin so that units of number/volume or density are
output. See the "units"_units.html command doc page for the
definition of density for each choice of units, e.g. gram/cm^3.
If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the compute is used. If a
bracketed interger is appended, the Ith column of the per-atom array
calculated by the compute is used. Users can also write code for
their own compute styles and "add them to LAMMPS"_Section_modify.html.
If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the fix is used. If a
bracketed integer is appended, the Ith column of the per-atom array
calculated by the fix is used. Note that some fixes only produce
their values on certain timesteps, which must be compatible with
{Nevery}, else an error results. Users can also write code for their
own fix styles and "add them to LAMMPS"_Section_modify.html.
If a value begins with "v_", a variable name must follow which has
been previously defined in the input script. Variables of style
{atom} can reference thermodynamic keywords and various per-atom
attributes, or invoke other computes, fixes, or variables when they
are evaluated, so this is a very general means of generating per-atom
quantities to spatially average.
:line
Additional optional keywords also affect the operation of this fix.
The {units} keyword determines the meaning of the distance units used
for the bin size {delta} and for {origin} if it is a coordinate
value. For orthogonal simulation boxes, any of the 3 options may be
used. For non-orthogonal (triclinic) simulation boxes, only the
{reduced} option may be used.
A {box} value selects standard distance units as defined by the
"units"_units.html command, e.g. Angstroms for units = real or metal.
A {lattice} value means the distance units are in lattice spacings.
The "lattice"_lattice.html command must have been previously used to
define the lattice spacing. A {reduced} value means normalized
unitless values between 0 and 1, which represent the lower and upper
faces of the simulation box respectively. Thus an {origin} value of
0.5 means the center of the box in any dimension. A {delta} value of
0.1 means 10 bins span the box in that dimension.
Consider a non-orthogonal box, with bins that are 1d layers or slabs
in the x dimension. No matter how the box is tilted, an {origin} of
0.0 means start layers at the lower "b" cross "c" plane of the
simulation box and an {origin} of 1.0 means to start layers at the
upper "b" cross "c" face of the box. A {delta} value of 0.1 means
there will be 10 layers from 0.0 to 1.0, regardless of the current
size or shape of the simulation box.
The {norm} keyword affects how averaging is done for the output
produced every {Nfreq} timesteps. For an {all} setting, a bin
quantity is summed over all atoms in all {Nrepeat} samples, as is the
count of atoms in the bin. The printed value for the bin is
Total-quantity / Total-count. In other words it is an average over
the entire {Nfreq} timescale.
For a {sample} setting, the bin quantity is summed over atoms for only
a single sample, as is the count, and a "average sample value" is
computed, i.e. Sample-quantity / Sample-count. The printed value for
the bin is the average of the {Nrepeat} "average sample values", In
other words it is an average of an average.
The {ave} keyword determines how the bin values produced every {Nfreq}
steps are averaged with bin values produced on previous steps that
were multiples of {Nfreq}, before they are accessed by another output
command or written to a file.
If the {ave} setting is {one}, then the bin values produced on
timesteps that are multiples of {Nfreq} are independent of each other;
they are output as-is without further averaging.
If the {ave} setting is {running}, then the bin values produced on
timesteps that are multiples of {Nfreq} are summed and averaged in a
cumulative sense before being output. Each output bin value is thus
the average of the bin value produced on that timestep with all
preceding values for the same bin. This running average begins when
the fix is defined; it can only be restarted by deleting the fix via
the "unfix"_unfix.html command, or re-defining the fix by
re-specifying it.
If the {ave} setting is {window}, then the bin values produced on
timesteps that are multiples of {Nfreq} are summed and averaged within
a moving "window" of time, so that the last M values for the same bin
are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then
the output on step 10000 will be the average of the individual bin
values on steps 8000,9000,10000. Outputs on early steps will average
over less than M values if they are not available.
The {file} keyword allows a filename to be specified. Every {Nfreq}
timesteps, a section of bin info will be written to a text file in the
following format. A line with the timestep and number of bin is
written. Then one line per bin is written, containing the bin ID
(1-N), the coordinate of the center of the bin, the number of atoms
in the bin, and one or more calculated values. The number of values
in each line corresponds to the number of values specified in the fix
ave/spatial command. The number of atoms and the value(s) are average
quantities. If the value of the {units} keyword is {box} or
{lattice}, the "coord" is printed in box units. If the value of the
{units} keyword is {reduced}, the "coord" is printed in reduced units
(0-1).
The {title1} and {title2} and {title3} keywords allow specification of
the strings that will be printed as the first 3 lines of the output
file, assuming the {file} keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified.
By default, these header lines are as follows:
# Spatial-averaged data for fix ID and group name
# Timestep Number-of-bins
# Bin Coord1 Coord2 Coord3 Count value1 value2 ... :pre
In the first line, ID and name are replaced with the fix-ID and group
name. The second line describes the two values that are printed at
the first of each section of output. In the third line the values are
replaced with the appropriate fields from the fix ave/spatial command.
The Coord2 and Coord3 entries in the third line only appear for 2d and
3d bins respectively. For 1d bins, the word Coord1 is replaced by
just Coord.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global array of values which can be accessed by
-various "output commands"_Section_howto.html#4_15. The values can
+various "output commands"_Section_howto.html#howto_15. The values can
only be accessed on timesteps that are multiples of {Nfreq} since that
is when averaging is performed. The global array has # of rows =
Nbins and # of columns = Ndim+1+Nvalues, where Ndim = 1,2,3 for
1d,2d,3d bins. The first 1 or 2 or 3 columns have the bin coordinates
(center of the bin) in the appropriate dimensions, the next column has
the count of atoms in that bin, and the remaining columns are the
Nvalue quantities. When the array is accessed with an I that exceeds
the current number of bins, than a 0.0 is returned by the fix instead
of an error, since the number of bins can vary as a simulation runs,
depending on the simulation box size. 2d or 3d bins are ordered so
that the last dimension(s) vary fastest. The array values calculated
by this fix are "intensive", since they are already normalized by the
count of atoms in each bin.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
When the {ave} keyword is set to {running} or {window} then the number
of bins must remain the same during the simulation, so that the
appropriate averaging can be done. This will be the case if the
simulation box size doesn't change or if the {units} keyword is set to
{reduced}.
[Related commands:]
"compute"_compute.html, "fix ave/atom"_fix_ave_atom.html, "fix
ave/histo"_fix_ave_histo.html, "fix ave/time"_fix_ave_time.html,
"variable"_variable.html, "fix ave/correlate"_fix_ave_correlate.html,
[Default:]
The option defaults are units = lattice, norm = all, no file output,
and ave = one, title 1,2,3 = strings as described above.
diff --git a/doc/fix_ave_time.html b/doc/fix_ave_time.html
index 1ca9dd4ff..78446a1d4 100644
--- a/doc/fix_ave_time.html
+++ b/doc/fix_ave_time.html
@@ -1,328 +1,328 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix ave/time command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ...
</PRE>
<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 or vector 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 or vector 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>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>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
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all ave/time 100 5 1000 c_myTemp c_thermo_temp file temp.profile
fix 1 all ave/time 100 5 1000 c_thermo_press[2] ave window 20 &
title1 "My output values"
fix 1 all ave/time 1 100 1000 f_indent f_indent[1] file temp.indent off 1
</PRE>
<P><B>Description:</B>
</P>
<P>Use one or more global values as inputs every few timesteps, and
average them over longer timescales. The resulting averages can be
-used by other <A HREF = "Section_howto.html#4_15">output commands</A> such as
+used by other <A HREF = "Section_howto.html#howto_15">output commands</A> such as
<A HREF = "thermo_style.html">thermo_style custom</A>, and can also be written to a
file. Note that if no time averaging is done, this command can be
used as a convenient way to simply output one or more global values to
a file.
</P>
<P>The group specified with this command is ignored. However, note that
specified values may represent calculations performed by computes and
fixes which store their own "group" definitions.
</P>
<P>Each listed value can be the result of a <A HREF = "compute.html">compute</A> or
<A HREF = "fix.html">fix</A> or the evaluation of an equal-style
<A HREF = "variable.html">variable</A>. In each case, the compute, fix, or variable
must produce a global quantity, not a per-atom or local quantity. If
you wish to spatial- or time-average or histogram per-atom quantities
from a compute, fix, or variable, then see the <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A>, <A HREF = "fix_ave_atom.html">fix ave/atom</A>,
or <A HREF = "fix_ave_histo.html">fix ave/histo</A> commands. If you wish to sum a
per-atom quantity into a single global quantity, see the <A HREF = "compute_reduce.html">compute
reduce</A> command.
</P>
<P><A HREF = "compute.html">Computes</A> that produce global quantities are those which
do not have the word <I>atom</I> in their style name. Only a few
<A HREF = "fix.html">fixes</A> produce global quantities. See the doc pages for
individual fixes for info on which ones produce such values.
<A HREF = "variable.html">Variables</A> of style <I>equal</I> are the only ones that can
be used with this fix. Variables of style <I>atom</I> cannot be used,
since they produce per-atom values.
</P>
<P>The input values must either be all scalars or all vectors (or
arrays), depending on the setting of the <I>mode</I> keyword. In both
cases, the averaging is performed independently on each input value.
I.e. each input scalar is averaged independently and each element of
each input vector (or array) is averaged independently.
</P>
<P>If <I>mode</I> = vector, then the input values may either be vectors or
arrays and all must be the same "length", which is the length of the
vector or number of rows in the array. If a global array is listed,
then it is the same as if the individual columns of the array had been
listed one by one. E.g. these 2 fix ave/time commands are equivalent,
since the <A HREF = "compute_rdf.html">compute rdf</A> command creates, in this
case, a global array with 3 columns, each of length 50:
</P>
<PRE>compute myRDF all rdf 50 1 2
fix 1 all ave/time 100 1 100 c_myRDF file tmp1.rdf mode vector
fix 2 all ave/time 100 1 100 c_myRDF[1] c_myRDF[2] c_myRDF[3] file tmp2.rdf mode vector
</PRE>
<HR>
<P>The <I>Nevery</I>, <I>Nrepeat</I>, and <I>Nfreq</I> arguments specify on what
timesteps the input values will be used in order to contribute to the
average. The final averaged quantities are generated on timesteps
that are a mlutiple of <I>Nfreq</I>. The average is over <I>Nrepeat</I>
quantities, computed in the preceding portion of the simulation every
<I>Nevery</I> timesteps. <I>Nfreq</I> must be a multiple of <I>Nevery</I> and
<I>Nevery</I> must be non-zero even if <I>Nrepeat</I> is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nfreq >
(Nrepeat-1)*Nevery is required.
</P>
<P>For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
averaging is done; values are simply generated on timesteps
100,200,etc.
</P>
<HR>
<P>If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. If <I>mode</I> = scalar, then if
no bracketed term is appended, the global scalar calculated by the
compute is used. If a bracketed term is appended, the Ith element of
the global vector calculated by the compute is used. If <I>mode</I> =
vector, then if no bracketed term is appended, the global vector
calculated by the compute is used. Or if the compute calculates an
array, all of the columns of the global array are used as if they had
been specified as individual vectors (see description above). If a
bracketed term is appended, the Ith column of the global array
calculated by the compute is used.
</P>
<P>Note that there is a <A HREF = "compute_reduce.html">compute reduce</A> command
which can sum per-atom quantities into a global scalar or vector which
can thus be accessed by fix ave/time. Or it can be a compute defined
not in your input script, but by <A HREF = "thermo_style.html">thermodynamic
output</A> or other fixes such as <A HREF = "fix_nh.html">fix
nvt</A> or <A HREF = "fix_temp_rescale.html">fix temp/rescale</A>. See
the doc pages for these commands which give the IDs of these computes.
Users can also write code for their own compute styles and <A HREF = "Section_modify.html">add them
to LAMMPS</A>.
</P>
<P>If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. If <I>mode</I> = scalar, then if
no bracketed term is appended, the global scalar calculated by the fix
is used. If a bracketed term is appended, the Ith element of the
global vector calculated by the fix is used. If <I>mode</I> = vector, then
if no bracketed term is appended, the global vector calculated by the
fix is used. Or if the fix calculates an array, all of the columns of
the global array are used as if they had been specified as individual
vectors (see description above). If a bracketed term is appended, the
Ith column of the global array calculated by the fix is used.
</P>
<P>Note that some fixes only produce their values on certain timesteps,
which must be compatible with <I>Nevery</I>, else an error will result.
Users can also write code for their own fix styles and <A HREF = "Section_modify.html">add them to
LAMMPS</A>.
</P>
<P>If a value begins with "v_", a variable name must follow which has
been previously defined in the input script. Variables can only be
used as input for <I>mode</I> = scalar. Only equal-style variables can be
referenced. See the <A HREF = "variable.html">variable</A> command for details.
Note that variables of style <I>equal</I> define a formula which can
reference individual atom properties or thermodynamic keywords, or
they can invoke other computes, fixes, or variables when they are
evaluated, so this is a very general means of specifying quantities to
time average.
</P>
<HR>
<P>Additional optional keywords also affect the operation of this fix.
</P>
<P>If the <I>mode</I> keyword is set to <I>scalar</I>, then all input values must
be global scalars, or elements of global vectors. If the <I>mode</I>
keyword is set to <I>vector</I>, then all input values must be global
vectors, or columns of global arrays. They can also be global arrays,
which are converted into a series of global vectors (one per column),
as explained above.
</P>
<P>The <I>ave</I> keyword determines how the values produced every <I>Nfreq</I>
steps are averaged with values produced on previous steps that were
multiples of <I>Nfreq</I>, before they are accessed by another output
command or written to a file.
</P>
<P>If the <I>ave</I> setting is <I>one</I>, then the values produced on timesteps
that are multiples of <I>Nfreq</I> are independent of each other; they are
output as-is without further averaging.
</P>
<P>If the <I>ave</I> setting is <I>running</I>, then the values produced on
timesteps that are multiples of <I>Nfreq</I> are summed and averaged in a
cummulative sense before being output. Each output value is thus the
average of the value produced on that timestep with all preceding
values. This running average begins when the fix is defined; it can
only be restarted by deleting the fix via the <A HREF = "unfix.html">unfix</A>
command, or by re-defining the fix by re-specifying it.
</P>
<P>If the <I>ave</I> setting is <I>window</I>, then the values produced on
timesteps that are multiples of <I>Nfreq</I> are summed and averaged within
a moving "window" of time, so that the last M values are used to
produce the output. E.g. if M = 3 and Nfreq = 1000, then the output
on step 10000 will be the average of the individual values on steps
8000,9000,10000. Outputs on early steps will average over less than M
values if they are not available.
</P>
<P>The <I>start</I> keyword specifies what timestep averaging will begin on.
The default is step 0. Often input values can be 0.0 at time 0, so
setting <I>start</I> to a larger value can avoid including a 0.0 in a
running or windowed average.
</P>
<P>The <I>off</I> keyword can be used to flag any of the input values. If a
value is flagged, it will not be time averaged. Instead the most
recent input value will always be stored and output. This is useful
if one of more of the inputs produced by a compute or fix or variable
are effectively constant or are simply current values. E.g. they are
being written to a file with other time-averaged values for purposes
of creating well-formatted output.
</P>
<P>The <I>file</I> keyword allows a filename to be specified. Every <I>Nfreq</I>
steps, one quantity or vector of quantities is written to the file for
each input value specified in the fix ave/time command. For <I>mode</I> =
scalar, this means a single line is written each time output is
performed. Thus the file ends up to be a series of lines, i.e. one
column of numbers for each input value. For <I>mode</I> = vector, an array
of numbers is written each time output is performed. The number of
rows is the length of the input vectors, and the number of columns is
the number of values. Thus the file ends up to be a series of these
array sections.
</P>
<P>The <I>title1</I> and <I>title2</I> and <I>title3</I> keywords allow specification of
the strings that will be printed as the first 2 or 3 lines of the
output file, assuming the <I>file</I> keyword was used. LAMMPS uses
default values for each of these, so they do not need to be specified.
</P>
<P>By default, these header lines are as follows for <I>mode</I> = scalar:
</P>
<PRE># Time-averaged data for fix ID
# TimeStep value1 value2 ...
</PRE>
<P>In the first line, ID is replaced with the fix-ID. In the second line
the values are replaced with the appropriate fields from the fix
ave/time command. There is no third line in the header of the file,
so the <I>title3</I> setting is ignored when <I>mode</I> = scalar.
</P>
<P>By default, these header lines are as follows for <I>mode</I> = vector:
</P>
<PRE># Time-averaged data for fix ID
# TimeStep Number-of-rows
# Row value1 value2 ...
</PRE>
<P>In the first line, ID is replaced with the fix-ID. The second line
describes the two values that are printed at the first of each section
of output. In the third line the values are replaced with the
appropriate fields from the fix ave/time command.
</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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix produces a global scalar or global vector or global array
-which can be accessed by various <A HREF = "Section_howto.html#4_15">output
-commands</A>. The values can only be accessed on
-timesteps that are multiples of <I>Nfreq</I> since that is when averaging
-is performed.
+which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. The values can only be
+accessed on timesteps that are multiples of <I>Nfreq</I> since that is when
+averaging is performed.
</P>
<P>A scalar is produced if only a single input value is averaged and
<I>mode</I> = scalar. A vector is produced if multiple input values are
averaged for <I>mode</I> = scalar, or a single input value for <I>mode</I> =
vector. In the first case, the length of the vector is the number of
inputs. In the second case, the length of the vector is the same as
the length of the input vector. An array is produced if multiple
input values are averaged and <I>mode</I> = vector. The global array has #
of rows = length of the input vectors and # of columns = number of
inputs.
</P>
<P>If the fix prouduces a scalar or vector, then the scalar and each
element of the vector can be either "intensive" or "extensive". If
the fix produces an array, then all elements in the array must be the
same, either "intensive" or "extensive". If a compute or fix provides
the value being time averaged, then the compute or fix determines
whether the value is intensive or extensive; see the doc page for that
compute or fix for further info. Values produced by a variable are
treated as intensive.
</P>
<P>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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute.html">compute</A>, <A HREF = "fix_ave_atom.html">fix ave/atom</A>, <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A>, <A HREF = "fix_ave_histo.html">fix ave/histo</A>,
<A HREF = "variable.html">variable</A>, <A HREF = "fix_ave_correlate.html">fix ave/correlate</A>,
</P>
<P><B>Default:</B> none
</P>
<P>The option defaults are mode = scalar, ave = one, start = 0, no file
output, title 1,2,3 = strings as described above, and no off settings
for any input values.
</P>
</HTML>
diff --git a/doc/fix_ave_time.txt b/doc/fix_ave_time.txt
index aa8a8ffdc..18a224a7e 100644
--- a/doc/fix_ave_time.txt
+++ b/doc/fix_ave_time.txt
@@ -1,313 +1,313 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix ave/time command :h3
[Syntax:]
fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
ave/time = style name of this fix command :l
Nevery = use input values every this many timesteps :l
Nrepeat = # of times to use input values for calculating averages :l
Nfreq = calculate averages every this many timesteps :l
one or more input values can be listed :l
value = c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l
c_ID = global scalar or vector 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 or vector 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
zero or more keyword/arg pairs may be appended :l
keyword = {mode} or {file} or {ave} or {start} or {off} or {title1} or {title2} or {title3} :l
{mode} arg = {scalar} or {vector}
scalar = all input values are global scalars
vector = all input values are global vectors or global arrays
{ave} args = {one} or {running} or {window M}
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
{start} args = Nstart
Nstart = start averaging on this timestep
{off} arg = M = do not average this value
M = value # from 1 to Nvalues
{file} arg = filename
filename = name of file to output time averages to
{title1} arg = string
string = text to print as 1st line of output file
{title2} arg = string
string = text to print as 2nd line of output file
{title3} arg = string
string = text to print as 3rd line of output file, only for vector mode :pre
:ule
[Examples:]
fix 1 all ave/time 100 5 1000 c_myTemp c_thermo_temp file temp.profile
fix 1 all ave/time 100 5 1000 c_thermo_press\[2\] ave window 20 &
title1 "My output values"
fix 1 all ave/time 1 100 1000 f_indent f_indent\[1\] file temp.indent off 1 :pre
[Description:]
Use one or more global values as inputs every few timesteps, and
average them over longer timescales. The resulting averages can be
-used by other "output commands"_Section_howto.html#4_15 such as
+used by other "output commands"_Section_howto.html#howto_15 such as
"thermo_style custom"_thermo_style.html, and can also be written to a
file. Note that if no time averaging is done, this command can be
used as a convenient way to simply output one or more global values to
a file.
The group specified with this command is ignored. However, note that
specified values may represent calculations performed by computes and
fixes which store their own "group" definitions.
Each listed value can be the result of a "compute"_compute.html or
"fix"_fix.html or the evaluation of an equal-style
"variable"_variable.html. In each case, the compute, fix, or variable
must produce a global quantity, not a per-atom or local quantity. If
you wish to spatial- or time-average or histogram per-atom quantities
from a compute, fix, or variable, then see the "fix
ave/spatial"_fix_ave_spatial.html, "fix ave/atom"_fix_ave_atom.html,
or "fix ave/histo"_fix_ave_histo.html commands. If you wish to sum a
per-atom quantity into a single global quantity, see the "compute
reduce"_compute_reduce.html command.
"Computes"_compute.html that produce global quantities are those which
do not have the word {atom} in their style name. Only a few
"fixes"_fix.html produce global quantities. See the doc pages for
individual fixes for info on which ones produce such values.
"Variables"_variable.html of style {equal} are the only ones that can
be used with this fix. Variables of style {atom} cannot be used,
since they produce per-atom values.
The input values must either be all scalars or all vectors (or
arrays), depending on the setting of the {mode} keyword. In both
cases, the averaging is performed independently on each input value.
I.e. each input scalar is averaged independently and each element of
each input vector (or array) is averaged independently.
If {mode} = vector, then the input values may either be vectors or
arrays and all must be the same "length", which is the length of the
vector or number of rows in the array. If a global array is listed,
then it is the same as if the individual columns of the array had been
listed one by one. E.g. these 2 fix ave/time commands are equivalent,
since the "compute rdf"_compute_rdf.html command creates, in this
case, a global array with 3 columns, each of length 50:
compute myRDF all rdf 50 1 2
fix 1 all ave/time 100 1 100 c_myRDF file tmp1.rdf mode vector
fix 2 all ave/time 100 1 100 c_myRDF\[1\] c_myRDF\[2\] c_myRDF\[3\] file tmp2.rdf mode vector :pre
:line
The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what
timesteps the input values will be used in order to contribute to the
average. The final averaged quantities are generated on timesteps
that are a mlutiple of {Nfreq}. The average is over {Nrepeat}
quantities, computed in the preceding portion of the simulation every
{Nevery} timesteps. {Nfreq} must be a multiple of {Nevery} and
{Nevery} must be non-zero even if {Nrepeat} is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nfreq >
(Nrepeat-1)*Nevery is required.
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
averaging is done; values are simply generated on timesteps
100,200,etc.
:line
If a value begins with "c_", a compute ID must follow which has been
previously defined in the input script. If {mode} = scalar, then if
no bracketed term is appended, the global scalar calculated by the
compute is used. If a bracketed term is appended, the Ith element of
the global vector calculated by the compute is used. If {mode} =
vector, then if no bracketed term is appended, the global vector
calculated by the compute is used. Or if the compute calculates an
array, all of the columns of the global array are used as if they had
been specified as individual vectors (see description above). If a
bracketed term is appended, the Ith column of the global array
calculated by the compute is used.
Note that there is a "compute reduce"_compute_reduce.html command
which can sum per-atom quantities into a global scalar or vector which
can thus be accessed by fix ave/time. Or it can be a compute defined
not in your input script, but by "thermodynamic
output"_thermo_style.html or other fixes such as "fix
nvt"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html. See
the doc pages for these commands which give the IDs of these computes.
Users can also write code for their own compute styles and "add them
to LAMMPS"_Section_modify.html.
If a value begins with "f_", a fix ID must follow which has been
previously defined in the input script. If {mode} = scalar, then if
no bracketed term is appended, the global scalar calculated by the fix
is used. If a bracketed term is appended, the Ith element of the
global vector calculated by the fix is used. If {mode} = vector, then
if no bracketed term is appended, the global vector calculated by the
fix is used. Or if the fix calculates an array, all of the columns of
the global array are used as if they had been specified as individual
vectors (see description above). If a bracketed term is appended, the
Ith column of the global array calculated by the fix is used.
Note that some fixes only produce their values on certain timesteps,
which must be compatible with {Nevery}, else an error will result.
Users can also write code for their own fix styles and "add them to
LAMMPS"_Section_modify.html.
If a value begins with "v_", a variable name must follow which has
been previously defined in the input script. Variables can only be
used as input for {mode} = scalar. Only equal-style variables can be
referenced. See the "variable"_variable.html command for details.
Note that variables of style {equal} define a formula which can
reference individual atom properties or thermodynamic keywords, or
they can invoke other computes, fixes, or variables when they are
evaluated, so this is a very general means of specifying quantities to
time average.
:line
Additional optional keywords also affect the operation of this fix.
If the {mode} keyword is set to {scalar}, then all input values must
be global scalars, or elements of global vectors. If the {mode}
keyword is set to {vector}, then all input values must be global
vectors, or columns of global arrays. They can also be global arrays,
which are converted into a series of global vectors (one per column),
as explained above.
The {ave} keyword determines how the values produced every {Nfreq}
steps are averaged with values produced on previous steps that were
multiples of {Nfreq}, before they are accessed by another output
command or written to a file.
If the {ave} setting is {one}, then the values produced on timesteps
that are multiples of {Nfreq} are independent of each other; they are
output as-is without further averaging.
If the {ave} setting is {running}, then the values produced on
timesteps that are multiples of {Nfreq} are summed and averaged in a
cummulative sense before being output. Each output value is thus the
average of the value produced on that timestep with all preceding
values. This running average begins when the fix is defined; it can
only be restarted by deleting the fix via the "unfix"_unfix.html
command, or by re-defining the fix by re-specifying it.
If the {ave} setting is {window}, then the values produced on
timesteps that are multiples of {Nfreq} are summed and averaged within
a moving "window" of time, so that the last M values are used to
produce the output. E.g. if M = 3 and Nfreq = 1000, then the output
on step 10000 will be the average of the individual values on steps
8000,9000,10000. Outputs on early steps will average over less than M
values if they are not available.
The {start} keyword specifies what timestep averaging will begin on.
The default is step 0. Often input values can be 0.0 at time 0, so
setting {start} to a larger value can avoid including a 0.0 in a
running or windowed average.
The {off} keyword can be used to flag any of the input values. If a
value is flagged, it will not be time averaged. Instead the most
recent input value will always be stored and output. This is useful
if one of more of the inputs produced by a compute or fix or variable
are effectively constant or are simply current values. E.g. they are
being written to a file with other time-averaged values for purposes
of creating well-formatted output.
The {file} keyword allows a filename to be specified. Every {Nfreq}
steps, one quantity or vector of quantities is written to the file for
each input value specified in the fix ave/time command. For {mode} =
scalar, this means a single line is written each time output is
performed. Thus the file ends up to be a series of lines, i.e. one
column of numbers for each input value. For {mode} = vector, an array
of numbers is written each time output is performed. The number of
rows is the length of the input vectors, and the number of columns is
the number of values. Thus the file ends up to be a series of these
array sections.
The {title1} and {title2} and {title3} keywords allow specification of
the strings that will be printed as the first 2 or 3 lines of the
output file, assuming the {file} keyword was used. LAMMPS uses
default values for each of these, so they do not need to be specified.
By default, these header lines are as follows for {mode} = scalar:
# Time-averaged data for fix ID
# TimeStep value1 value2 ... :pre
In the first line, ID is replaced with the fix-ID. In the second line
the values are replaced with the appropriate fields from the fix
ave/time command. There is no third line in the header of the file,
so the {title3} setting is ignored when {mode} = scalar.
By default, these header lines are as follows for {mode} = vector:
# Time-averaged data for fix ID
# TimeStep Number-of-rows
# Row value1 value2 ... :pre
In the first line, ID is replaced with the fix-ID. The second line
describes the two values that are printed at the first of each section
of output. In the third line the values are replaced with the
appropriate fields from the fix ave/time command.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix produces a global scalar or global vector or global array
which can be accessed by various "output
-commands"_Section_howto.html#4_15. The values can only be accessed on
-timesteps that are multiples of {Nfreq} since that is when averaging
-is performed.
+commands"_Section_howto.html#howto_15. The values can only be
+accessed on timesteps that are multiples of {Nfreq} since that is when
+averaging is performed.
A scalar is produced if only a single input value is averaged and
{mode} = scalar. A vector is produced if multiple input values are
averaged for {mode} = scalar, or a single input value for {mode} =
vector. In the first case, the length of the vector is the number of
inputs. In the second case, the length of the vector is the same as
the length of the input vector. An array is produced if multiple
input values are averaged and {mode} = vector. The global array has #
of rows = length of the input vectors and # of columns = number of
inputs.
If the fix prouduces a scalar or vector, then the scalar and each
element of the vector can be either "intensive" or "extensive". If
the fix produces an array, then all elements in the array must be the
same, either "intensive" or "extensive". If a compute or fix provides
the value being time averaged, then the compute or fix determines
whether the value is intensive or extensive; see the doc page for that
compute or fix for further info. Values produced by a variable are
treated as intensive.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"compute"_compute.html, "fix ave/atom"_fix_ave_atom.html, "fix
ave/spatial"_fix_ave_spatial.html, "fix ave/histo"_fix_ave_histo.html,
"variable"_variable.html, "fix ave/correlate"_fix_ave_correlate.html,
[Default:] none
The option defaults are mode = scalar, ave = one, start = 0, no file
output, title 1,2,3 = strings as described above, and no off settings
for any input values.
diff --git a/doc/fix_aveforce.html b/doc/fix_aveforce.html
index d671deb1e..27a17ec49 100644
--- a/doc/fix_aveforce.html
+++ b/doc/fix_aveforce.html
@@ -1,128 +1,128 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix aveforce command
</H3>
<H3>fix aveforce/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID aveforce fx fy fz keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>aveforce = style name of this fix command
<LI>fx,fy,fz = force component values (force units)
<LI>any of fx,fy,fz can be a variable (see below)
<LI>zero or more keyword/value pairs may be appended to args
<LI>keyword = <I>region</I>
<PRE> <I>region</I> value = region-ID
region-ID = ID of region atoms must be in to have added force
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix pressdown topwall aveforce 0.0 -1.0 0.0
fix 2 bottomwall aveforce NULL -1.0 0.0 region top
fix 2 bottomwall aveforce NULL -1.0 v_oscillate region top
</PRE>
<P><B>Description:</B>
</P>
<P>Apply an additional external force to a group of atoms in such a way
that every atom experiences the same force. This is useful for
pushing on wall or boundary atoms so that the structure of the wall
does not change over time.
</P>
<P>The existing force is averaged for the group of atoms, component by
component. The actual force on each atom is then set to the average
value plus the component specified in this command. This means each
atom in the group receives the same force.
</P>
<P>Any of the fx,fy,fz values can be specified as NULL which means the
force in that dimension is not changed. Note that this is not the
same as specifying a 0.0 value, since that sets all forces to the same
average value without adding in any additional force.
</P>
<P>Any of the 3 quantities defining the force components can be specified
as an equal-style <A HREF = "variable.html">variable</A>, namely <I>fx</I>, <I>fy</I>, <I>fz</I>.
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 each timestep, and its value used to determine the average
force.
</P>
<P>Equal-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. Thus it is easy to specify a time-dependent average force.
</P>
<P>If the <I>region</I> keyword is used, the atom must also be in the
specified geometric <A HREF = "region.html">region</A> in order to have force added
to it.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global 3-vector of forces, which can be accessed
-by various <A HREF = "Section_howto.html#4_15">output commands</A>. This is the
+by various <A HREF = "Section_howto.html#howto_15">output commands</A>. This is the
total force on the group of atoms before the forces on individual
atoms are changed by the fix. The vector values calculated by this
fix are "extensive".
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command. You should not
specify force components with a variable that has time-dependence for
use with a minimizer, since the minimizer increments the timestep as
the iteration count during the minimization.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_setforce.html">fix setforce</A>, <A HREF = "fix_addforce.html">fix addforce</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_aveforce.txt b/doc/fix_aveforce.txt
index 996c85ea5..af83f5212 100644
--- a/doc/fix_aveforce.txt
+++ b/doc/fix_aveforce.txt
@@ -1,115 +1,115 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix aveforce command :h3
fix aveforce/cuda command :h3
[Syntax:]
fix ID group-ID aveforce fx fy fz keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
aveforce = style name of this fix command :l
fx,fy,fz = force component values (force units) :l
any of fx,fy,fz can be a variable (see below) :l
zero or more keyword/value pairs may be appended to args :l
keyword = {region} :l
{region} value = region-ID
region-ID = ID of region atoms must be in to have added force :pre
:ule
[Examples:]
fix pressdown topwall aveforce 0.0 -1.0 0.0
fix 2 bottomwall aveforce NULL -1.0 0.0 region top
fix 2 bottomwall aveforce NULL -1.0 v_oscillate region top :pre
[Description:]
Apply an additional external force to a group of atoms in such a way
that every atom experiences the same force. This is useful for
pushing on wall or boundary atoms so that the structure of the wall
does not change over time.
The existing force is averaged for the group of atoms, component by
component. The actual force on each atom is then set to the average
value plus the component specified in this command. This means each
atom in the group receives the same force.
Any of the fx,fy,fz values can be specified as NULL which means the
force in that dimension is not changed. Note that this is not the
same as specifying a 0.0 value, since that sets all forces to the same
average value without adding in any additional force.
Any of the 3 quantities defining the force components can be specified
as an equal-style "variable"_variable.html, namely {fx}, {fy}, {fz}.
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 each timestep, and its value used to determine the average
force.
Equal-style variables can specify formulas with various mathematical
functions, and include "thermo_style"_thermo_style.html command
keywords for the simulation box parameters and timestep and elapsed
time. Thus it is easy to specify a time-dependent average force.
If the {region} keyword is used, the atom must also be in the
specified geometric "region"_region.html in order to have force added
to it.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global 3-vector of forces, which can be accessed
-by various "output commands"_Section_howto.html#4_15. This is the
+by various "output commands"_Section_howto.html#howto_15. This is the
total force on the group of atoms before the forces on individual
atoms are changed by the fix. The vector values calculated by this
fix are "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command. You should not
specify force components with a variable that has time-dependence for
use with a minimizer, since the minimizer increments the timestep as
the iteration count during the minimization.
[Restrictions:] none
[Related commands:]
"fix setforce"_fix_setforce.html, "fix addforce"_fix_addforce.html
[Default:] none
diff --git a/doc/fix_bond_break.html b/doc/fix_bond_break.html
index 182874d07..497df4775 100644
--- a/doc/fix_bond_break.html
+++ b/doc/fix_bond_break.html
@@ -1,159 +1,163 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix bond/break command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID bond/break Nevery bondtype Rmax keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>bond/break = style name of this fix command
<LI>Nevery = attempt bond breaking every this many steps
<LI>bondtype = type of bonds to break
<LI>Rmax = bond longer than Rmax can break (distance units)
<LI>zero or more keyword/value pairs may be appended to args
<LI>keyword = <I>prob</I>
<PRE> <I>prob</I> values = fraction seed
fraction = break a bond with this probability if otherwise eligible
seed = random number seed (positive integer)
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 5 all bond/break 10 2 1.2
fix 5 polymer bond/break 1 1 2.0 prob 0.5 49829
</PRE>
<P><B>Description:</B>
</P>
<P>Break bonds between pairs of atoms as a simulation runs according to
specified criteria. This can be used to model the dissolution of a
polymer network due to stretching of the simulation box or other
deformations. In this context, a bond means an interaction between a
pair of atoms computed by the <A HREF = "bond_style.html">bond_style</A> command.
Once the bond is broken it will be permanently deleted. This is
different than a <A HREF = "pair_style.html">pairwise</A> bond-order potential such
as Tersoff or AIREBO which infers bonds and many-body interactions
based on the current geometry of a small cluster of atoms and
effectively creates and destroys bonds from timestep to timestep as
atoms move.
</P>
<P>A check for possible bond breakage is performed every <I>Nevery</I>
timesteps. If two bonded atoms I,J are further than a distance <I>Rmax</I>
of each other, if the bond is of type <I>bondtype</I>, and if both I and J
are in the specified fix group, then I,J is labeled as a "possible"
bond to break.
</P>
<P>If several bonds involving an atom are stretched, it may have multiple
possible bonds to break. Every atom checks its list of possible bonds
to break and labels the longest such bond as its "sole" bond to break.
After this is done, if atom I is bonded to atom J in its sole bond,
and atom J is bonded to atom I in its sole bond, then the I,J bond is
"eligible" to be broken.
</P>
<P>Note that these rules mean an atom will only be part of at most one
broken bond on a given timestep. It also means that if atom I chooses
atom J as its sole partner, but atom J chooses atom K is its sole
partner (due to Rjk > Rij), then this means atom I will not be part of
a broken bond on this timestep, even if it has other possible bond
partners.
</P>
<P>The <I>prob</I> keyword can effect whether an eligible bond is actually
broken. The <I>fraction</I> setting must be a value between 0.0 and 1.0.
A uniform random number between 0.0 and 1.0 is generated and the
eligible bond is only broken if the random number < fraction.
</P>
<P>When a bond is broken, data structures within LAMMPS that store bond
topology are updated to reflect the breakage. This can also affect
subsequent computation of pairwise interactions involving the atoms in
the bond. See the Restriction section below for additional
information.
</P>
<P>Computationally, each timestep this fix operates, it loops over bond
lists and computes distances between pairs of bonded atoms in the
list. It also communicates between neighboring processors to
coordinate which bonds are broken. Thus it will increase the cost of
a timestep. Thus you should be cautious about invoking this fix too
frequently.
</P>
<P>You can dump out snapshots of the current bond topology via the <A HREF = "dump.html">dump
local</A> command.
</P>
<P>IMPORTANT NOTE: Breaking a bond typically alters the energy of a
system. You should be careful not to choose bond breaking criteria
that induce a dramatic change in energy. For example, if you define a
very stiff harmonic bond and break it when 2 atoms are separated by a
distance far from the equilibribum bond length, then the 2 atoms will
be dramatically released when the bond is broken. More generally, you
may need to thermostat your system to compensate for energy changes
resulting from broken bonds.
</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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes two statistics which it stores in a global vector of
-length 2, which can be accessed by various <A HREF = "Section_howto.html#4_15">output
-commands</A>. The vector values calculated by
-this fix are "intensive".
+length 2, which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. The vector values calculated
+by this fix are "intensive".
</P>
<P>These are the 2 quantities:
</P>
<UL><LI>(1) # of bonds broken on the most recent breakage timestep
<LI>(2) cummulative # of bonds broken
</UL>
<P>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 "mc" 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>Currently, there are 2 restrictions for using this fix. We may relax
these in the future if there are new models that would be enabled by
it.
</P>
<P>When a bond is broken, you might wish to turn off angle and dihedral
interactions that include that bond. However, LAMMPS does not check
for these angles and dihedrals, even if your simulation defines an
<A HREF = "angle_style.html">angle_style</A> or
<A HREF = "dihedral_style.html">dihedral_style</A>.
</P>
<P>This fix requires that the pairwise weightings defined by the
<A HREF = "special_bonds.html">special_bonds</A> command be 0,1,1 for 1-2, 1-3, and
1-4 neighbors within the bond topology. This effectively means that
the pairwise interaction between atoms I and J is turned off when a
bond between them exists and will be turned on when the bond is
broken. It also means that the pairwise interaction of I with J's
other bond partners is unaffected by the existence of the bond.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_bond_create.html">fix bond/create</A>, <A HREF = "fix_bond_swap.html">fix
bond/swap</A>, <A HREF = "dump.html">dump local</A>,
<A HREF = "special_bonds.html">special_bonds</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are prob = 1.0.
</P>
</HTML>
diff --git a/doc/fix_bond_break.txt b/doc/fix_bond_break.txt
index f63c3c371..97cb2fa59 100755
--- a/doc/fix_bond_break.txt
+++ b/doc/fix_bond_break.txt
@@ -1,146 +1,150 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix bond/break command :h3
[Syntax:]
fix ID group-ID bond/break Nevery bondtype Rmax keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
bond/break = style name of this fix command :l
Nevery = attempt bond breaking every this many steps :l
bondtype = type of bonds to break :l
Rmax = bond longer than Rmax can break (distance units) :l
zero or more keyword/value pairs may be appended to args :l
keyword = {prob} :l
{prob} values = fraction seed
fraction = break a bond with this probability if otherwise eligible
seed = random number seed (positive integer) :pre
:ule
[Examples:]
fix 5 all bond/break 10 2 1.2
fix 5 polymer bond/break 1 1 2.0 prob 0.5 49829 :pre
[Description:]
Break bonds between pairs of atoms as a simulation runs according to
specified criteria. This can be used to model the dissolution of a
polymer network due to stretching of the simulation box or other
deformations. In this context, a bond means an interaction between a
pair of atoms computed by the "bond_style"_bond_style.html command.
Once the bond is broken it will be permanently deleted. This is
different than a "pairwise"_pair_style.html bond-order potential such
as Tersoff or AIREBO which infers bonds and many-body interactions
based on the current geometry of a small cluster of atoms and
effectively creates and destroys bonds from timestep to timestep as
atoms move.
A check for possible bond breakage is performed every {Nevery}
timesteps. If two bonded atoms I,J are further than a distance {Rmax}
of each other, if the bond is of type {bondtype}, and if both I and J
are in the specified fix group, then I,J is labeled as a "possible"
bond to break.
If several bonds involving an atom are stretched, it may have multiple
possible bonds to break. Every atom checks its list of possible bonds
to break and labels the longest such bond as its "sole" bond to break.
After this is done, if atom I is bonded to atom J in its sole bond,
and atom J is bonded to atom I in its sole bond, then the I,J bond is
"eligible" to be broken.
Note that these rules mean an atom will only be part of at most one
broken bond on a given timestep. It also means that if atom I chooses
atom J as its sole partner, but atom J chooses atom K is its sole
partner (due to Rjk > Rij), then this means atom I will not be part of
a broken bond on this timestep, even if it has other possible bond
partners.
The {prob} keyword can effect whether an eligible bond is actually
broken. The {fraction} setting must be a value between 0.0 and 1.0.
A uniform random number between 0.0 and 1.0 is generated and the
eligible bond is only broken if the random number < fraction.
When a bond is broken, data structures within LAMMPS that store bond
topology are updated to reflect the breakage. This can also affect
subsequent computation of pairwise interactions involving the atoms in
the bond. See the Restriction section below for additional
information.
Computationally, each timestep this fix operates, it loops over bond
lists and computes distances between pairs of bonded atoms in the
list. It also communicates between neighboring processors to
coordinate which bonds are broken. Thus it will increase the cost of
a timestep. Thus you should be cautious about invoking this fix too
frequently.
You can dump out snapshots of the current bond topology via the "dump
local"_dump.html command.
IMPORTANT NOTE: Breaking a bond typically alters the energy of a
system. You should be careful not to choose bond breaking criteria
that induce a dramatic change in energy. For example, if you define a
very stiff harmonic bond and break it when 2 atoms are separated by a
distance far from the equilibribum bond length, then the 2 atoms will
be dramatically released when the bond is broken. More generally, you
may need to thermostat your system to compensate for energy changes
resulting from broken bonds.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes two statistics which it stores in a global vector of
length 2, which can be accessed by various "output
-commands"_Section_howto.html#4_15. The vector values calculated by
-this fix are "intensive".
+commands"_Section_howto.html#howto_15. The vector values calculated
+by this fix are "intensive".
These are the 2 quantities:
(1) # of bonds broken on the most recent breakage timestep
(2) cummulative # of bonds broken :ul
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
+This fix is part of the "mc" package. It is only enabled if LAMMPS
+was built with that package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
+
Currently, there are 2 restrictions for using this fix. We may relax
these in the future if there are new models that would be enabled by
it.
When a bond is broken, you might wish to turn off angle and dihedral
interactions that include that bond. However, LAMMPS does not check
for these angles and dihedrals, even if your simulation defines an
"angle_style"_angle_style.html or
"dihedral_style"_dihedral_style.html.
This fix requires that the pairwise weightings defined by the
"special_bonds"_special_bonds.html command be 0,1,1 for 1-2, 1-3, and
1-4 neighbors within the bond topology. This effectively means that
the pairwise interaction between atoms I and J is turned off when a
bond between them exists and will be turned on when the bond is
broken. It also means that the pairwise interaction of I with J's
other bond partners is unaffected by the existence of the bond.
[Related commands:]
"fix bond/create"_fix_bond_create.html, "fix
bond/swap"_fix_bond_swap.html, "dump local"_dump.html,
"special_bonds"_special_bonds.html
[Default:]
The option defaults are prob = 1.0.
diff --git a/doc/fix_bond_create.html b/doc/fix_bond_create.html
index 1c7eb027d..80090cbee 100644
--- a/doc/fix_bond_create.html
+++ b/doc/fix_bond_create.html
@@ -1,217 +1,221 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix bond/create command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID bond/create Nevery itype jtype Rmin bondtype keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>bond/create = style name of this fix command
<LI>Nevery = attempt bond creation every this many steps
<LI>itype,jtype = atoms of itype can bond to atoms of jtype
<LI>Rmin = 2 atoms separated by less than Rmin can bond (distance units)
<LI>bondtype = type of created bonds
<LI>zero or more keyword/value pairs may be appended to args
<LI>keyword = <I>iparam</I> or <I>jparam</I> or <I>prob</I>
<PRE> <I>iparam</I> values = maxbond, newtype
maxbond = max # of bonds of bondtype the itype atom can have
newtype = change the itype atom to this type when maxbonds exist
<I>jparam</I> values = maxbond, newtype
maxbond = max # of bonds of bondtype the jtype atom can have
newtype = change the jtype atom to this type when maxbonds exist
<I>prob</I> values = fraction seed
fraction = create a bond with this probability if otherwise eligible
seed = random number seed (positive integer)
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 5 all bond/create 10 1 2 0.8 1
fix 5 all bond/create 1 3 3 0.8 1 prob 0.5 85784 iparam 2 3
</PRE>
<P><B>Description:</B>
</P>
<P>Create bonds between pairs of atoms as a simulation runs according to
specified criteria. This can be used to model cross-linking of
polymers, the formation of a percolation network, etc. In this
context, a bond means an interaction between a pair of atoms computed
by the <A HREF = "bond_style.html">bond_style</A> command. Once the bond is created
it will be permanently in place. This is different than a
<A HREF = "pair_style.html">pairwise</A> bond-order potential such as Tersoff or
AIREBO which infers bonds and many-body interactions based on the
current geometry of a small cluster of atoms and effectively creates
and destroys bonds from timestep to timestep as atoms move.
</P>
<P>A check for possible new bonds is performed every <I>Nevery</I> timesteps.
If two atoms I,J are within a distance <I>Rmin</I> of each other, if I is
of atom type <I>itype</I>, if J is of atom type <I>jtype</I>, if both I and J
are in the specified fix group, if a bond does not already exist
between I and J, and if both I and J meet their respective <I>maxbond</I>
requirement (explained below), then I,J is labeled as a "possible"
bond pair.
</P>
<P>If several atoms are close to an atom, it may have multiple possible
bond partners. Every atom checks its list of possible bond partners
and labels the closest such partner as its "sole" bond partner. After
this is done, if atom I has atom J as its sole partner, and atom J has
atom I as its sole partner, then the I,J bond is "eligible" to be
formed.
</P>
<P>Note that these rules mean an atom will only be part of at most one
created bond on a given timestep. It also means that if atom I
chooses atom J as its sole partner, but atom J chooses atom K is its
sole partner (due to Rjk < Rij), then this means atom I will not form
a bond on this timestep, even if it has other possible bond partners.
</P>
<P>It is permissible to have <I>itype</I> = <I>jtype</I>. <I>Rmin</I> must be <= the
pairwise cutoff distance between <I>itype</I> and <I>jtype</I> atoms, as defined
by the <A HREF = "pair_style.html">pair_style</A> command.
</P>
<P>The <I>iparam</I> and <I>jparam</I> keywords can be used to limit the bonding
functionality of the participating atoms. Each atom keeps track of
how many bonds of <I>bondtype</I> it already has. If atom I of
itype already has <I>maxbond</I> bonds (as set by the <I>iparam</I>
keyword), then it will not form any more. Likewise for atom J. If
<I>maxbond</I> is set to 0, then there is no limit on the number of bonds
that can be formed with that atom.
</P>
<P>The <I>newtype</I> value for <I>iparam</I> and <I>jparam</I> can be used to change
the atom type of atom I or J when it reaches <I>maxbond</I> number of bonds
of type <I>bondtype</I>. This means it can now interact in a pairwise
fashion with other atoms in a different way by specifying different
<A HREF = "pair_coeff.html">pair_coeff</A> coefficients. If you do not wish the
atom type to change, simply specify <I>newtype</I> as <I>itype</I> or <I>jtype</I>.
</P>
<P>The <I>prob</I> keyword can also effect whether an eligible bond is
actually created. The <I>fraction</I> setting must be a value between 0.0
and 1.0. A uniform random number between 0.0 and 1.0 is generated and
the eligible bond is only created if the random number < fraction.
</P>
<P>Any bond that is created is assigned a bond type of <I>bondtype</I>. Data
structures within LAMMPS that store bond topology are updated to
reflect the new bond. This can also affect subsequent computation of
pairwise interactions involving the atoms in the bond. See the
Restriction section below for additional information.
</P>
<P>IMPORTANT NOTE: To create a new bond, the internal LAMMPS data
structures that store this information must have space for it. When
LAMMPS is initialized from a data file, the list of bonds is scanned
and the maximum number of bonds per atom is tallied. If some atom
will acquire more bonds than this limit as this fix operates, then the
"extra bonds per atom" parameter in the data file header must be set
to allow for it. See the <A HREF = "read_data.html">read_data</A> command for more
details. Note that if this parameter needs to be set, it means a data
file must be used to initialize the system, even if it initially has
no bonds. A data file with no atoms can be used if you wish to add
unbonded atoms via the <A HREF = "create_atoms.html">create atoms</A> command,
e.g. for a percolation simulation.
</P>
<P>IMPORTANT NOTE: LAMMPS also maintains a data structure that stores a
list of 1st, 2nd, and 3rd neighbors of each atom (in the bond topology
of the system) for use in weighting pairwise interactions for bonded
atoms. Adding a bond adds a single entry to this list. The "extra"
keyword of the <A HREF = "special_bonds.html">special_bonds</A> command should be
used to leave space for new bonds if the maximum number of entries for
any atom will be exceeded as this fix operates. See the
<A HREF = "special_bonds.html">special_bonds</A> command for details.
</P>
<P>Note that even if your simulation starts with no bonds, you must
define a <A HREF = "bond_style.html">bond_style</A> and use the
<A HREF = "bond_coeff.html">bond_coeff</A> command to specify coefficients for the
<I>bondtype</I>. Similarly, if new atom types are specified by the
<I>iparam</I> or <I>jparam</I> keywords, they must be within the range of atom
types allowed by the simulation and pairwise coefficients must be
specified for the new types.
</P>
<P>Computationally, each timestep this fix operates, it loops over
neighbor lists and computes distances between pairs of atoms in the
list. It also communicates between neighboring processors to
coordinate which bonds are created. Thus it roughly doubles the cost
of a timestep. Thus you should be cautious about invoking this fix
too frequently.
</P>
<P>You can dump out snapshots of the current bond topology via the <A HREF = "dump.html">dump
local</A> command.
</P>
<P>IMPORTANT NOTE: Creating a bond typically alters the energy of a
system. You should be careful not to choose bond creation criteria
that induce a dramatic change in energy. For example, if you define a
very stiff harmonic bond and create it when 2 atoms are separated by a
distance far from the equilibribum bond length, then the 2 atoms will
oscillate dramatically when the bond is formed. More generally, you
may need to thermostat your system to compensate for energy changes
resulting from created bonds.
</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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes two statistics which it stores in a global vector of
-length 2, which can be accessed by various <A HREF = "Section_howto.html#4_15">output
-commands</A>. The vector values calculated by
-this fix are "intensive".
+length 2, which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. The vector values calculated
+by this fix are "intensive".
</P>
<P>These are the 2 quantities:
</P>
<UL><LI>(1) # of bonds created on the most recent creation timestep
<LI>(2) cummulative # of bonds created
</UL>
<P>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 "mc" 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>Currently, there are 2 restrictions for using this fix. We may relax
these in the future if there are new models that would be enabled by
it.
</P>
<P>When a bond is created, you might wish to induce new angle and
dihedral interactions that include that bond. However, LAMMPS does
not create these angles and dihedrals, even if your simulation defines
an <A HREF = "angle_style.html">angle_style</A> or
<A HREF = "dihedral_style.html">dihedral_style</A>.
</P>
<P>This fix requires that the pairwise weightings defined by the
<A HREF = "special_bonds.html">special_bonds</A> command be 0,1,1 for 1-2, 1-3, and
1-4 neighbors within the bond topology. This effectively means that
the pairwise interaction between atoms I and J will be turned off when
a bond between them is created. It also means that the pairwise
interaction of I with J's other bond partners will be unaffected by
the new bond.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_bond_break.html">fix bond/break</A>, <A HREF = "fix_bond_swap.html">fix
bond/swap</A>, <A HREF = "dump.html">dump local</A>,
<A HREF = "special_bonds.html">special_bonds</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are iparam = (0,itype), jparam = (0,jtype), and
prob = 1.0.
</P>
</HTML>
diff --git a/doc/fix_bond_create.txt b/doc/fix_bond_create.txt
index 580f888df..d373e6066 100755
--- a/doc/fix_bond_create.txt
+++ b/doc/fix_bond_create.txt
@@ -1,203 +1,207 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix bond/create command :h3
[Syntax:]
fix ID group-ID bond/create Nevery itype jtype Rmin bondtype keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
bond/create = style name of this fix command :l
Nevery = attempt bond creation every this many steps :l
itype,jtype = atoms of itype can bond to atoms of jtype :l
Rmin = 2 atoms separated by less than Rmin can bond (distance units) :l
bondtype = type of created bonds :l
zero or more keyword/value pairs may be appended to args :l
keyword = {iparam} or {jparam} or {prob} :l
{iparam} values = maxbond, newtype
maxbond = max # of bonds of bondtype the itype atom can have
newtype = change the itype atom to this type when maxbonds exist
{jparam} values = maxbond, newtype
maxbond = max # of bonds of bondtype the jtype atom can have
newtype = change the jtype atom to this type when maxbonds exist
{prob} values = fraction seed
fraction = create a bond with this probability if otherwise eligible
seed = random number seed (positive integer) :pre
:ule
[Examples:]
fix 5 all bond/create 10 1 2 0.8 1
fix 5 all bond/create 1 3 3 0.8 1 prob 0.5 85784 iparam 2 3 :pre
[Description:]
Create bonds between pairs of atoms as a simulation runs according to
specified criteria. This can be used to model cross-linking of
polymers, the formation of a percolation network, etc. In this
context, a bond means an interaction between a pair of atoms computed
by the "bond_style"_bond_style.html command. Once the bond is created
it will be permanently in place. This is different than a
"pairwise"_pair_style.html bond-order potential such as Tersoff or
AIREBO which infers bonds and many-body interactions based on the
current geometry of a small cluster of atoms and effectively creates
and destroys bonds from timestep to timestep as atoms move.
A check for possible new bonds is performed every {Nevery} timesteps.
If two atoms I,J are within a distance {Rmin} of each other, if I is
of atom type {itype}, if J is of atom type {jtype}, if both I and J
are in the specified fix group, if a bond does not already exist
between I and J, and if both I and J meet their respective {maxbond}
requirement (explained below), then I,J is labeled as a "possible"
bond pair.
If several atoms are close to an atom, it may have multiple possible
bond partners. Every atom checks its list of possible bond partners
and labels the closest such partner as its "sole" bond partner. After
this is done, if atom I has atom J as its sole partner, and atom J has
atom I as its sole partner, then the I,J bond is "eligible" to be
formed.
Note that these rules mean an atom will only be part of at most one
created bond on a given timestep. It also means that if atom I
chooses atom J as its sole partner, but atom J chooses atom K is its
sole partner (due to Rjk < Rij), then this means atom I will not form
a bond on this timestep, even if it has other possible bond partners.
It is permissible to have {itype} = {jtype}. {Rmin} must be <= the
pairwise cutoff distance between {itype} and {jtype} atoms, as defined
by the "pair_style"_pair_style.html command.
The {iparam} and {jparam} keywords can be used to limit the bonding
functionality of the participating atoms. Each atom keeps track of
how many bonds of {bondtype} it already has. If atom I of
itype already has {maxbond} bonds (as set by the {iparam}
keyword), then it will not form any more. Likewise for atom J. If
{maxbond} is set to 0, then there is no limit on the number of bonds
that can be formed with that atom.
The {newtype} value for {iparam} and {jparam} can be used to change
the atom type of atom I or J when it reaches {maxbond} number of bonds
of type {bondtype}. This means it can now interact in a pairwise
fashion with other atoms in a different way by specifying different
"pair_coeff"_pair_coeff.html coefficients. If you do not wish the
atom type to change, simply specify {newtype} as {itype} or {jtype}.
The {prob} keyword can also effect whether an eligible bond is
actually created. The {fraction} setting must be a value between 0.0
and 1.0. A uniform random number between 0.0 and 1.0 is generated and
the eligible bond is only created if the random number < fraction.
Any bond that is created is assigned a bond type of {bondtype}. Data
structures within LAMMPS that store bond topology are updated to
reflect the new bond. This can also affect subsequent computation of
pairwise interactions involving the atoms in the bond. See the
Restriction section below for additional information.
IMPORTANT NOTE: To create a new bond, the internal LAMMPS data
structures that store this information must have space for it. When
LAMMPS is initialized from a data file, the list of bonds is scanned
and the maximum number of bonds per atom is tallied. If some atom
will acquire more bonds than this limit as this fix operates, then the
"extra bonds per atom" parameter in the data file header must be set
to allow for it. See the "read_data"_read_data.html command for more
details. Note that if this parameter needs to be set, it means a data
file must be used to initialize the system, even if it initially has
no bonds. A data file with no atoms can be used if you wish to add
unbonded atoms via the "create atoms"_create_atoms.html command,
e.g. for a percolation simulation.
IMPORTANT NOTE: LAMMPS also maintains a data structure that stores a
list of 1st, 2nd, and 3rd neighbors of each atom (in the bond topology
of the system) for use in weighting pairwise interactions for bonded
atoms. Adding a bond adds a single entry to this list. The "extra"
keyword of the "special_bonds"_special_bonds.html command should be
used to leave space for new bonds if the maximum number of entries for
any atom will be exceeded as this fix operates. See the
"special_bonds"_special_bonds.html command for details.
Note that even if your simulation starts with no bonds, you must
define a "bond_style"_bond_style.html and use the
"bond_coeff"_bond_coeff.html command to specify coefficients for the
{bondtype}. Similarly, if new atom types are specified by the
{iparam} or {jparam} keywords, they must be within the range of atom
types allowed by the simulation and pairwise coefficients must be
specified for the new types.
Computationally, each timestep this fix operates, it loops over
neighbor lists and computes distances between pairs of atoms in the
list. It also communicates between neighboring processors to
coordinate which bonds are created. Thus it roughly doubles the cost
of a timestep. Thus you should be cautious about invoking this fix
too frequently.
You can dump out snapshots of the current bond topology via the "dump
local"_dump.html command.
IMPORTANT NOTE: Creating a bond typically alters the energy of a
system. You should be careful not to choose bond creation criteria
that induce a dramatic change in energy. For example, if you define a
very stiff harmonic bond and create it when 2 atoms are separated by a
distance far from the equilibribum bond length, then the 2 atoms will
oscillate dramatically when the bond is formed. More generally, you
may need to thermostat your system to compensate for energy changes
resulting from created bonds.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes two statistics which it stores in a global vector of
length 2, which can be accessed by various "output
-commands"_Section_howto.html#4_15. The vector values calculated by
-this fix are "intensive".
+commands"_Section_howto.html#howto_15. The vector values calculated
+by this fix are "intensive".
These are the 2 quantities:
(1) # of bonds created on the most recent creation timestep
(2) cummulative # of bonds created :ul
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
+This fix is part of the "mc" package. It is only enabled if LAMMPS
+was built with that package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
+
Currently, there are 2 restrictions for using this fix. We may relax
these in the future if there are new models that would be enabled by
it.
When a bond is created, you might wish to induce new angle and
dihedral interactions that include that bond. However, LAMMPS does
not create these angles and dihedrals, even if your simulation defines
an "angle_style"_angle_style.html or
"dihedral_style"_dihedral_style.html.
This fix requires that the pairwise weightings defined by the
"special_bonds"_special_bonds.html command be 0,1,1 for 1-2, 1-3, and
1-4 neighbors within the bond topology. This effectively means that
the pairwise interaction between atoms I and J will be turned off when
a bond between them is created. It also means that the pairwise
interaction of I with J's other bond partners will be unaffected by
the new bond.
[Related commands:]
"fix bond/break"_fix_bond_break.html, "fix
bond/swap"_fix_bond_swap.html, "dump local"_dump.html,
"special_bonds"_special_bonds.html
[Default:]
The option defaults are iparam = (0,itype), jparam = (0,jtype), and
prob = 1.0.
diff --git a/doc/fix_bond_swap.html b/doc/fix_bond_swap.html
index a4ced3535..493339409 100644
--- a/doc/fix_bond_swap.html
+++ b/doc/fix_bond_swap.html
@@ -1,184 +1,188 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix bond/swap command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID bond/swap fraction cutoff seed
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>bond/swap = style name of this fix command
<LI>fraction = fraction of group atoms to consider for swapping
<LI>cutoff = distance at which swapping will be considered (distance units)
<LI>seed = random # seed (positive integer)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all bond/swap 0.5 1.3 598934
</PRE>
<P><B>Description:</B>
</P>
<P>In a simulation of polymer chains, this command attempts to swap bonds
between two different chains, effectively grafting the end of one
chain onto another chain and vice versa. This is done via Monte Carlo
rules using the Boltzmann acceptance criterion. The purpose is to
equilibrate the polymer chain conformations more rapidly than dynamics
alone would do it, by enabling instantaneous large conformational
changes in a dense polymer melt. The polymer chains should thus more
rapidly converge to the proper end-to-end distances and radii of
gyration. It is designed for use with systems of
<A HREF = "bond_fene.html">FENE</A> or <A HREF = "bond_harmonic.html">harmonic</A> bead-spring
polymer chains where each polymer is a linear chain of monomers, but
LAMMPS does not enforce this requirement, i.e. any
<A HREF = "bond_style.html">bond_style</A> can be used.
</P>
<P>A schematic of the kinds of bond swaps that can occur is shown here:
</P>
<CENTER><IMG SRC = "JPG/bondswap.jpg">
</CENTER>
<P>On the left, the red and blue chains have two monomers A1 and B1 close
to each other, which are currently bonded to monomers A2 and B2
respectively within their own chains. The bond swap operation will
attempt to delete the A1-A2 and B1-B2 bonds and replace them with
A1-B2 and B1-A2 bonds. If the swap is energetically favorable, the
two chains on the right are the result and each polymer chain has
undergone a dramatic conformational change. This reference provides
more details on how the algorithm works and its application:
<A HREF = "#Sides">(Sides)</A>.
</P>
<P>The bond swapping operation is invoked each time neighbor lists are
built during a simulation, since it potentially alters the list of
which neighbors are considered for pairwise interaction. At each
reneighboring step, each processor considers a random specified
<I>fraction</I> of its atoms as potential swapping monomers for this
timestep. Choosing a small <I>fraction</I> value can reduce the likelihood
of a reverse swap occurring soon after an initial swap.
</P>
<P>For each monomer A1, its neighbors are examined to find a possible B1
monomer. Both A1 and B1 must be in the fix group, their separation
must be less than the specified <I>cutoff</I>, and the molecule IDs of A1
and B1 must be the same (see below). If a suitable partner is found,
the energy change due to swapping the 2 bonds is computed. This
includes changes in pairwise, bond, and angle energies due to the
altered connectivity of the 2 chains. Dihedral and improper
interactions are not allowed to be defined when this fix is used.
</P>
<P>If the energy decreases due to the swap operation, the bond swap is
accepted. If the energy increases it is accepted with probability
exp(-delta/kT) where delta is the increase in energy, k is the
Boltzmann constant, and T is the current temperature of the system.
Whether the swap is accepted or rejected, no other swaps are attempted
by this processor on this timestep.
</P>
<P>The criterion for matching molecule IDs is how bond swaps performed by
this fix conserve chain length. To use this features you must setup
the molecule IDs for your polymer chains in a certain way, typically
in the data file, read by the <A HREF = "read_data.html">read_data</A> comand.
Consider a system of 6-mer chains. You have 3 choices. If the
molecule IDs for monomers on each chain are set to 1,2,3,4,5,6 then
swaps will conserve length. For a particular momoner there will be
only one other monomer on another chain which is a potential swap
partner. If the molecule IDs for monomers on each chain are set to
1,2,3,3,2,1 then swaps will conserve length but swaps will be able to
occur at either end of a chain. Thus for a particular monomer there
will be 2 possible swap partners on another chain. In this scenario,
swaps can also occur within a single chain, i.e. the two ends of a
chain swap with each other. The third choice is to give all monomers
on all chains the same molecule ID, e.g. 0. This will allow a wide
variety of swaps to occur, but will NOT conserve chain lengths.
</P>
<P>IMPORTANT NOTE: If your simulation uses molecule IDs in the usual way,
where all monomers on a single chain are assigned the same ID
(different for each chain), then swaps will only occur within the same
chain and will NOT conserve chain length. This is probably not what
you want for this fix.
</P>
<HR>
<P>This fix computes a temperature each time it is invoked for use by the
Boltzmann criterion. To do this, the fix creates its own compute of
style <I>temp</I>, as if this command had been issued:
</P>
<PRE>compute fix-ID_temp all temp
</PRE>
<P>See the <A HREF = "compute_temp.html">compute temp</A> command for details. Note
that the ID of the new compute is the fix-ID with underscore + "temp"
appended and the group for the new compute is "all", so that the
temperature of the entire system is used.
</P>
<P>Note that this is NOT the compute used by thermodynamic output (see
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>.
This means you can change the attributes of this fix's temperature
(e.g. its degrees-of-freedom) via the
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
during thermodyanmic output via the <A HREF = "thermo_style.html">thermo_style
custom</A> command using the appropriate compute-ID.
It also means that changing attributes of <I>thermo_temp</I> will have no
effect on this fix.
</P>
<HR>
<P><B>Restart, fix_modify, thermo 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>. Because the state of the random number generator
is not saved in restart files, this means you cannot do "exact"
restarts with this fix, where the simulation continues on the same as
if no restart had taken place. However, in a statistical sense, a
restarted simulation should produce the same behavior. Also note that
each processor generates possible swaps independently of other
processors. Thus if you repeat the same simulation on a different number
of processors, the specific swaps performed will be different.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> option is supported by this
fix. You can use it to assign a <A HREF = "compute.html">compute</A> you have
defined to this fix which will be used to compute the temperature for
the Boltzmann criterion.
</P>
<P>This fix computes two statistical quantities as a global 2-vector of
-output, which can be accessed by various <A HREF = "Section_howto.html#4_15">output
-commands</A>. The first component of the vector
-is the cummulative number of swaps performed by all processors. The
-second component of the vector is the cummulative number of swaps
+output, which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. The first component of the
+vector is the cummulative number of swaps performed by all processors.
+The second component of the vector is the cummulative number of swaps
attempted (whether accepted or rejected). Note that a swap "attempt"
only occurs when swap partners meeting the criteria described above
are found on a particular timestep. The vector values calculated by
this fix are "intensive".
</P>
<P>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 "mc" 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 setings of the "special_bond" command must be 0,1,1 in order to
use this fix, which is typical of bead-spring chains with FENE or
harmonic bonds. This means that pairwise interactions between bonded
atoms are turned off, but are turned on between atoms two or three
hops away along the chain backbone.
</P>
<P>Currently, energy changes in dihedral and improper interactions due to
a bond swap are not considered. Thus a simulation that uses this fix
cannot use a dihedral or improper potential.
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Sides"></A>
<P><B>(Sides)</B> Sides, Grest, Stevens, Plimpton, J Polymer Science B, 42,
199-208 (2004).
</P>
</HTML>
diff --git a/doc/fix_bond_swap.txt b/doc/fix_bond_swap.txt
index eba291c8c..f5cb81f8f 100755
--- a/doc/fix_bond_swap.txt
+++ b/doc/fix_bond_swap.txt
@@ -1,178 +1,182 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix bond/swap command :h3
[Syntax:]
fix ID group-ID bond/swap fraction cutoff seed :pre
ID, group-ID are documented in "fix"_fix.html command
bond/swap = style name of this fix command
fraction = fraction of group atoms to consider for swapping
cutoff = distance at which swapping will be considered (distance units)
seed = random # seed (positive integer) :ul
[Examples:]
fix 1 all bond/swap 0.5 1.3 598934 :pre
[Description:]
In a simulation of polymer chains, this command attempts to swap bonds
between two different chains, effectively grafting the end of one
chain onto another chain and vice versa. This is done via Monte Carlo
rules using the Boltzmann acceptance criterion. The purpose is to
equilibrate the polymer chain conformations more rapidly than dynamics
alone would do it, by enabling instantaneous large conformational
changes in a dense polymer melt. The polymer chains should thus more
rapidly converge to the proper end-to-end distances and radii of
gyration. It is designed for use with systems of
"FENE"_bond_fene.html or "harmonic"_bond_harmonic.html bead-spring
polymer chains where each polymer is a linear chain of monomers, but
LAMMPS does not enforce this requirement, i.e. any
"bond_style"_bond_style.html can be used.
A schematic of the kinds of bond swaps that can occur is shown here:
:c,image(JPG/bondswap.jpg)
On the left, the red and blue chains have two monomers A1 and B1 close
to each other, which are currently bonded to monomers A2 and B2
respectively within their own chains. The bond swap operation will
attempt to delete the A1-A2 and B1-B2 bonds and replace them with
A1-B2 and B1-A2 bonds. If the swap is energetically favorable, the
two chains on the right are the result and each polymer chain has
undergone a dramatic conformational change. This reference provides
more details on how the algorithm works and its application:
"(Sides)"_#Sides.
The bond swapping operation is invoked each time neighbor lists are
built during a simulation, since it potentially alters the list of
which neighbors are considered for pairwise interaction. At each
reneighboring step, each processor considers a random specified
{fraction} of its atoms as potential swapping monomers for this
timestep. Choosing a small {fraction} value can reduce the likelihood
of a reverse swap occurring soon after an initial swap.
For each monomer A1, its neighbors are examined to find a possible B1
monomer. Both A1 and B1 must be in the fix group, their separation
must be less than the specified {cutoff}, and the molecule IDs of A1
and B1 must be the same (see below). If a suitable partner is found,
the energy change due to swapping the 2 bonds is computed. This
includes changes in pairwise, bond, and angle energies due to the
altered connectivity of the 2 chains. Dihedral and improper
interactions are not allowed to be defined when this fix is used.
If the energy decreases due to the swap operation, the bond swap is
accepted. If the energy increases it is accepted with probability
exp(-delta/kT) where delta is the increase in energy, k is the
Boltzmann constant, and T is the current temperature of the system.
Whether the swap is accepted or rejected, no other swaps are attempted
by this processor on this timestep.
The criterion for matching molecule IDs is how bond swaps performed by
this fix conserve chain length. To use this features you must setup
the molecule IDs for your polymer chains in a certain way, typically
in the data file, read by the "read_data"_read_data.html comand.
Consider a system of 6-mer chains. You have 3 choices. If the
molecule IDs for monomers on each chain are set to 1,2,3,4,5,6 then
swaps will conserve length. For a particular momoner there will be
only one other monomer on another chain which is a potential swap
partner. If the molecule IDs for monomers on each chain are set to
1,2,3,3,2,1 then swaps will conserve length but swaps will be able to
occur at either end of a chain. Thus for a particular monomer there
will be 2 possible swap partners on another chain. In this scenario,
swaps can also occur within a single chain, i.e. the two ends of a
chain swap with each other. The third choice is to give all monomers
on all chains the same molecule ID, e.g. 0. This will allow a wide
variety of swaps to occur, but will NOT conserve chain lengths.
IMPORTANT NOTE: If your simulation uses molecule IDs in the usual way,
where all monomers on a single chain are assigned the same ID
(different for each chain), then swaps will only occur within the same
chain and will NOT conserve chain length. This is probably not what
you want for this fix.
:line
This fix computes a temperature each time it is invoked for use by the
Boltzmann criterion. To do this, the fix creates its own compute of
style {temp}, as if this command had been issued:
compute fix-ID_temp all temp :pre
See the "compute temp"_compute_temp.html command for details. Note
that the ID of the new compute is the fix-ID with underscore + "temp"
appended and the group for the new compute is "all", so that the
temperature of the entire system is used.
Note that this is NOT the compute used by thermodynamic output (see
the "thermo_style"_thermo_style.html command) with ID = {thermo_temp}.
This means you can change the attributes of this fix's temperature
(e.g. its degrees-of-freedom) via the
"compute_modify"_compute_modify.html command or print this temperature
during thermodyanmic output via the "thermo_style
custom"_thermo_style.html command using the appropriate compute-ID.
It also means that changing attributes of {thermo_temp} will have no
effect on this fix.
:line
[Restart, fix_modify, thermo output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. Because the state of the random number generator
is not saved in restart files, this means you cannot do "exact"
restarts with this fix, where the simulation continues on the same as
if no restart had taken place. However, in a statistical sense, a
restarted simulation should produce the same behavior. Also note that
each processor generates possible swaps independently of other
processors. Thus if you repeat the same simulation on a different number
of processors, the specific swaps performed will be different.
The "fix_modify"_fix_modify.html {temp} option is supported by this
fix. You can use it to assign a "compute"_compute.html you have
defined to this fix which will be used to compute the temperature for
the Boltzmann criterion.
This fix computes two statistical quantities as a global 2-vector of
output, which can be accessed by various "output
-commands"_Section_howto.html#4_15. The first component of the vector
-is the cummulative number of swaps performed by all processors. The
-second component of the vector is the cummulative number of swaps
+commands"_Section_howto.html#howto_15. The first component of the
+vector is the cummulative number of swaps performed by all processors.
+The second component of the vector is the cummulative number of swaps
attempted (whether accepted or rejected). Note that a swap "attempt"
only occurs when swap partners meeting the criteria described above
are found on a particular timestep. The vector values calculated by
this fix are "intensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
+This fix is part of the "mc" package. It is only enabled if LAMMPS
+was built with that package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
+
The setings of the "special_bond" command must be 0,1,1 in order to
use this fix, which is typical of bead-spring chains with FENE or
harmonic bonds. This means that pairwise interactions between bonded
atoms are turned off, but are turned on between atoms two or three
hops away along the chain backbone.
Currently, energy changes in dihedral and improper interactions due to
a bond swap are not considered. Thus a simulation that uses this fix
cannot use a dihedral or improper potential.
[Related commands:] none
[Default:] none
:line
:link(Sides)
[(Sides)] Sides, Grest, Stevens, Plimpton, J Polymer Science B, 42,
199-208 (2004).
diff --git a/doc/fix_box_relax.html b/doc/fix_box_relax.html
index 1486e1765..917e29a9f 100644
--- a/doc/fix_box_relax.html
+++ b/doc/fix_box_relax.html
@@ -1,319 +1,319 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix box/relax command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID box/relax keyword value ...
</PRE>
<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>
<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>
</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
<I>iso</I>, <I>aniso</I>, <I>tri</I>, <I>x</I>, <I>y</I>, <I>z</I>, <I>xy</I>, <I>xz</I>, <I>yz</I>, and <I>couple</I>
keywords. These keywords give you the ability to specify all 6
components of an external stress tensor, and to couple various of
these components together so that the dimensions they represent are
varied together during the mimimization.
</P>
<P>Orthogonal simulation boxes have 3 adjustable dimensions (x,y,z).
Triclinic (non-orthogonal) simulation boxes have 6 adjustable
dimensions (x,y,z,xy,xz,yz). 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.
</P>
<P>The target pressures <I>Ptarget</I> for each of the 6 components of the
stress tensor can be specified independently via the <I>x</I>, <I>y</I>, <I>z</I>,
<I>xy</I>, <I>xz</I>, <I>yz</I> keywords, which correspond to the 6 simulation box
dimensions. For example, if the <I>y</I> keyword is used, the y-box length
will change during the minimization. If the <I>xy</I> keyword is used, the
xy tilt factor will change. A box dimension will not change if that
component is not specified.
</P>
<P>Note that in order to use the <I>xy</I>, <I>xz</I>, or <I>yz</I> keywords, the
simulation box must be triclinic, even if its initial tilt factors are
0.0.
</P>
<P>When the size of the simulation box changes, all atoms are re-scaled
to new positions, unless the keyword <I>dilate</I> is specified with a
value of <I>partial</I>, in which case only the atoms in the fix group are
re-scaled. This can be useful for leaving the coordinates of atoms in
a solid substrate unchanged and controlling the pressure of a
surrounding fluid.
</P>
<P>IMPORTANT NOTE: Appling an external pressure to tilt dimensions <I>xy</I>,
<I>xz</I>, <I>yz</I> can sometimes result in arbitrarily large values of the
tilt dimensions, i.e. a dramatically deformed simulation box. This
typically indicates that there is something badly wrong with how the
simulation was constructed. The two most common sources of this error
are applying a shear stress to a liquid system or specifying an
external shear stress tensor that exceeds the yield stress of the
solid. In either case the minimization is either not going to
converge at all, or converge to a bogus conformation. Note that
LAMMPS will not throw an error when the tilt value becomes extreme,
but the final box may be unsuitable for running dynamics on, unless
fix deform is used first to remap the box to a valid tilt value.
</P>
<HR>
<P>The <I>couple</I> keyword allows two or three of the diagonal components of
the pressure tensor to be "coupled" together. The value specified
with the keyword determines which are coupled. For example, <I>xz</I>
means the <I>Pxx</I> and <I>Pzz</I> components of the stress tensor are coupled.
<I>Xyz</I> means all 3 diagonal components are coupled. Coupling means two
things: the instantaneous stress will be computed as an average of the
corresponding diagonal components, and the coupled box dimensions will
be changed together in lockstep, meaning coupled dimensions will be
dilated or contracted by the same percentage every timestep. The
<I>Ptarget</I> values for any coupled dimensions must be identical.
<I>Couple xyz</I> can be used for a 2d simulation; the <I>z</I> dimension is
simply ignored.
</P>
<HR>
<P>The <I>iso</I>, <I>aniso</I>, and <I>tri</I> keywords are simply shortcuts that are
equivalent to specifying several other keywords together.
</P>
<P>The keyword <I>iso</I> means couple all 3 diagonal components together when
pressure is computed (hydrostatic pressure), and dilate/contract the
dimensions together. Using "iso Ptarget" is the same as specifying
these 4 keywords:
</P>
<PRE>x Ptarget
y Ptarget
z Ptarget
couple xyz
</PRE>
<P>The keyword <I>aniso</I> means <I>x</I>, <I>y</I>, and <I>z</I> dimensions are controlled
independently using the <I>Pxx</I>, <I>Pyy</I>, and <I>Pzz</I> components of the
stress tensor as the driving forces, and the specified scalar external
pressure. Using "aniso Ptarget" is the same as specifying these 4
keywords:
</P>
<PRE>x Ptarget
y Ptarget
z Ptarget
couple none
</PRE>
<P>The keyword <I>tri</I> means <I>x</I>, <I>y</I>, <I>z</I>, <I>xy</I>, <I>xz</I>, and <I>yz</I> dimensions
are controlled independently using their individual stress components
as the driving forces, and the specified scalar pressure as the
external normal stress. Using "tri Ptarget" is the same as specifying
these 7 keywords:
</P>
<PRE>x Ptarget
y Ptarget
z Ptarget
xy 0.0
yz 0.0
xz 0.0
couple none
</PRE>
<HR>
<P>The <I>vmax</I> keyword can be used to limit the fractional change in the
volume of the simulation box that can occur in one iteration of the
minimizer. If the pressure is not settling down during the
minimization this can be because the volume is fluctuating too much.
The specified fraction must be greater than 0.0 and should be << 1.0.
A value of 0.001 means the volume cannot change by more than 1/10 of a
percent in one iteration when <I>couple xyz</I> has been specified. For
any other case it means no linear dimension of the simulation box can
change by more than 1/10 of a percent.
</P>
<HR>
<P>With this fix, the potential energy used by the minimizer is augmented
by an additional energy provided by the fix. The overall objective
function then is:
</P>
<CENTER><IMG SRC = "Eqs/fix_box_relax1.jpg">
</CENTER>
<P>where <I>U</I> is the system potential energy, <I>P</I>_t is the desired
hydrostatic pressure, <I>V</I> and <I>V</I>_0 are the system and reference
volumes, respectively. <I>E</I>_<I>strain</I> is the strain energy expression
proposed by Parrinello and Rahman <A HREF = "#Parrinello1981">(Parrinello1981)</A>.
Taking derivatives of <I>E</I> w.r.t. the box dimensions, and setting these
to zero, we find that at the minimum of the objective function, the
global system stress tensor <B>P</B> will satisfy the relation:
</P>
<CENTER><IMG SRC = "Eqs/fix_box_relax2.jpg">
</CENTER>
<P>where <B>I</B> is the identity matrix, <B>h</B>_0 is the box dimension tensor of
the reference cell, and <B>h</B>_0<I>d</I> is the diagonal part of
<B>h</B>_0. <B>S</B>_<I>t</I> is a symmetric stress tensor that is chosen by LAMMPS
so that the upper-triangular components of <B>P</B> equal the stress tensor
specified by the user.
</P>
<P>This equation only applies when the box dimensions are equal to those
of the reference dimensions. If this is not the case, then the
converged stress tensor will not equal that specified by the user. We
can resolve this problem by periodically resetting the reference
dimensions. The keyword <I>nreset_ref</I> controls how often this is done.
If this keyword is not used, or is given a value of zero, then the
reference dimensions are set to those of the initial simulation domain
and are never changed. A value of <I>nstep</I> means that every <I>nstep</I>
minimization steps, the reference dimensions are set to those of the
current simulation domain. Note that resetting the reference
dimensions changes the objective function and gradients, which
sometimes causes the minimization to fail. This can be resolved by
changing the value of <I>nreset</I>, or simply continuing the minimization
from a restart file.
</P>
<P>IMPORTANT NOTE: As normally computed, pressure includes a kinetic-
energy or temperature-dependent component; see the <A HREF = "compute_pressure.html">compute
pressure</A> command. However, atom velocities are
ignored during a minimization, and the applied pressure(s) specified
with this command are assumed to only be the virial component of the
pressure (the non-kinetic portion). Thus if atoms have a non-zero
temperature and you print the usual thermodynamic pressure, it may not
appear the system is converging to your specified pressure. The
solution for this is to either (a) zero the velocities of all atoms
before performing the minimization, or (b) make sure you are
monitoring the pressure without its kinetic component. The latter can
be done by outputting the pressure from the fix this command creates
(see below) or a pressure fix you define yourself.
</P>
<P>IMPORTANT NOTE: Because pressure is often a very sensitive function of
volume, it can be difficult for the minimizer to equilibrate the
system the desired pressure with high precision, particularly for
solids. Some techniques that seem to help are (a) use the
"min_modify line quadratic" option when minimizing with box
relaxations, and (b) minimize several times in succession if need be,
to drive the pressure closer to the target pressure. Also note that
some systems (e.g. liquids) will not sustain a non-hydrostatic applied
pressure, which means the minimizer will not converge.
</P>
<HR>
<P>This fix computes a temperature and pressure each timestep. The
temperature is used to compute the kinetic contribution to the
pressure, even though this is subsequently ignored by default. To do
this, the fix creates its own computes of style "temp" and "pressure",
as if these commands had been issued:
</P>
<PRE>compute fix-ID_temp group-ID temp
compute fix-ID_press group-ID pressure fix-ID_temp virial
</PRE>
<P>See the <A HREF = "compute_temp.html">compute temp</A> and <A HREF = "compute_pressure.html">compute
pressure</A> commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press", and the group for the new computes is the same
as the fix group. Also note that the pressure compute does not
include a kinetic component.
</P>
<P>Note that these are NOT the computes used by thermodynamic output (see
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>
and <I>thermo_press</I>. This means you can change the attributes of this
fix's temperature or pressure via the
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
or pressure during thermodynamic output via the <A HREF = "thermo_style.html">thermo_style
custom</A> command using the appropriate compute-ID.
It also means that changing attributes of <I>thermo_temp</I> or
<I>thermo_press</I> will have no effect on this fix.
</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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> and <I>press</I> options are
supported by this fix. You can use them to assign a
<A HREF = "compute.html">compute</A> you have defined to this fix which will be used
in its temperature and pressure calculation, as described above. Note
that as described above, if you assign a pressure compute to this fix
that includes a kinetic energy component it will affect the
minimization, most likely in an undesirable way.
</P>
<P>IMPORTANT NOTE: If both the <I>temp</I> and <I>press</I> keywords are used in a
single thermo_modify command (or in two separate commands), then the
order in which the keywords are specified is important. Note that a
<A HREF = "compute_pressure.html">pressure compute</A> defines its own temperature
compute as an argument when it is specified. The <I>temp</I> keyword will
override this (for the pressure compute being used by fix npt), but
only if the <I>temp</I> keyword comes after the <I>press</I> keyword. If the
<I>temp</I> keyword comes before the <I>press</I> keyword, then the new pressure
compute specified by the <I>press</I> keyword will be unaffected by the
<I>temp</I> setting.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
pressure-volume energy, plus the strain energy, if it exists.
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command.
</P>
<P>This fix is invoked during <A HREF = "minimize.html">energy minimization</A>, but
not for the purpose of adding a contribution to the energy or forces
being minimized. Instead it alters the simulation box geometry as
described above.
</P>
<P><B>Restrictions:</B>
</P>
<P>Only dimensions that are available can be adjusted by this fix.
Non-periodic dimensions are not available. <I>z</I>, <I>xz</I>, and <I>yz</I>, are
not available for 2D simulations. <I>xy</I>, <I>xz</I>, and <I>yz</I> are only
available if the simulation domain is non-orthogonal. 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.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nh.html">fix npt</A>, <A HREF = "minimize.html">minimize</A>
</P>
<P><B>Default:</B>
</P>
<P>The keyword defaults are dilate = all, vmax = 0.0001, nreset = 0.
</P>
<HR>
<A NAME = "Parrinello1981"></A>
<P><B>(Parrinello1981)</B> Parrinello and Rahman, J Appl Phys, 52, 7182 (1981).
</P>
</HTML>
diff --git a/doc/fix_box_relax.txt b/doc/fix_box_relax.txt
index 510458504..d1b924d0f 100644
--- a/doc/fix_box_relax.txt
+++ b/doc/fix_box_relax.txt
@@ -1,310 +1,310 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix box/relax command :h3
[Syntax:]
fix ID group-ID box/relax keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
box/relax = style name of this fix command :l
one or more keyword value pairs may be appended
keyword = {iso} or {aniso} or {tri} or {x} or {y} or {z} or {xy} or {yz} or {xz} or {couple} or {nreset} or {vmax} or {dilate}
{iso} or {aniso} or {tri} value = Ptarget = desired pressure (pressure units)
{x} or {y} or {z} or {xy} or {yz} or {xz} value = Ptarget = desired pressure (pressure units)
{couple} = {none} or {xyz} or {xy} or {yz} or {xz}
{nreset} value = reset reference cell every this many minimizer iterations
{vmax} value = fraction = max allowed volume change in one iteration
{dilate} value = {all} or {partial} :pre
:ule
[Examples:]
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
[Description:]
Apply an external pressure or stress tensor to the simulation box
during an "energy minimization"_minimize.html. 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.
:line
The external pressure tensor is specified using one or more of the
{iso}, {aniso}, {tri}, {x}, {y}, {z}, {xy}, {xz}, {yz}, and {couple}
keywords. These keywords give you the ability to specify all 6
components of an external stress tensor, and to couple various of
these components together so that the dimensions they represent are
varied together during the mimimization.
Orthogonal simulation boxes have 3 adjustable dimensions (x,y,z).
Triclinic (non-orthogonal) simulation boxes have 6 adjustable
dimensions (x,y,z,xy,xz,yz). The "create_box"_create_box.html, "read
data"_read_data.html, and "read_restart"_read_restart.html commands
specify whether the simulation box is orthogonal or non-orthogonal
(triclinic) and explain the meaning of the xy,xz,yz tilt factors.
The target pressures {Ptarget} for each of the 6 components of the
stress tensor can be specified independently via the {x}, {y}, {z},
{xy}, {xz}, {yz} keywords, which correspond to the 6 simulation box
dimensions. For example, if the {y} keyword is used, the y-box length
will change during the minimization. If the {xy} keyword is used, the
xy tilt factor will change. A box dimension will not change if that
component is not specified.
Note that in order to use the {xy}, {xz}, or {yz} keywords, the
simulation box must be triclinic, even if its initial tilt factors are
0.0.
When the size of the simulation box changes, all atoms are re-scaled
to new positions, unless the keyword {dilate} is specified with a
value of {partial}, in which case only the atoms in the fix group are
re-scaled. This can be useful for leaving the coordinates of atoms in
a solid substrate unchanged and controlling the pressure of a
surrounding fluid.
IMPORTANT NOTE: Appling an external pressure to tilt dimensions {xy},
{xz}, {yz} can sometimes result in arbitrarily large values of the
tilt dimensions, i.e. a dramatically deformed simulation box. This
typically indicates that there is something badly wrong with how the
simulation was constructed. The two most common sources of this error
are applying a shear stress to a liquid system or specifying an
external shear stress tensor that exceeds the yield stress of the
solid. In either case the minimization is either not going to
converge at all, or converge to a bogus conformation. Note that
LAMMPS will not throw an error when the tilt value becomes extreme,
but the final box may be unsuitable for running dynamics on, unless
fix deform is used first to remap the box to a valid tilt value.
:line
The {couple} keyword allows two or three of the diagonal components of
the pressure tensor to be "coupled" together. The value specified
with the keyword determines which are coupled. For example, {xz}
means the {Pxx} and {Pzz} components of the stress tensor are coupled.
{Xyz} means all 3 diagonal components are coupled. Coupling means two
things: the instantaneous stress will be computed as an average of the
corresponding diagonal components, and the coupled box dimensions will
be changed together in lockstep, meaning coupled dimensions will be
dilated or contracted by the same percentage every timestep. The
{Ptarget} values for any coupled dimensions must be identical.
{Couple xyz} can be used for a 2d simulation; the {z} dimension is
simply ignored.
:line
The {iso}, {aniso}, and {tri} keywords are simply shortcuts that are
equivalent to specifying several other keywords together.
The keyword {iso} means couple all 3 diagonal components together when
pressure is computed (hydrostatic pressure), and dilate/contract the
dimensions together. Using "iso Ptarget" is the same as specifying
these 4 keywords:
x Ptarget
y Ptarget
z Ptarget
couple xyz :pre
The keyword {aniso} means {x}, {y}, and {z} dimensions are controlled
independently using the {Pxx}, {Pyy}, and {Pzz} components of the
stress tensor as the driving forces, and the specified scalar external
pressure. Using "aniso Ptarget" is the same as specifying these 4
keywords:
x Ptarget
y Ptarget
z Ptarget
couple none :pre
The keyword {tri} means {x}, {y}, {z}, {xy}, {xz}, and {yz} dimensions
are controlled independently using their individual stress components
as the driving forces, and the specified scalar pressure as the
external normal stress. Using "tri Ptarget" is the same as specifying
these 7 keywords:
x Ptarget
y Ptarget
z Ptarget
xy 0.0
yz 0.0
xz 0.0
couple none :pre
:line
The {vmax} keyword can be used to limit the fractional change in the
volume of the simulation box that can occur in one iteration of the
minimizer. If the pressure is not settling down during the
minimization this can be because the volume is fluctuating too much.
The specified fraction must be greater than 0.0 and should be << 1.0.
A value of 0.001 means the volume cannot change by more than 1/10 of a
percent in one iteration when {couple xyz} has been specified. For
any other case it means no linear dimension of the simulation box can
change by more than 1/10 of a percent.
:line
With this fix, the potential energy used by the minimizer is augmented
by an additional energy provided by the fix. The overall objective
function then is:
:c,image(Eqs/fix_box_relax1.jpg)
where {U} is the system potential energy, {P}_t is the desired
hydrostatic pressure, {V} and {V}_0 are the system and reference
volumes, respectively. {E}_{strain} is the strain energy expression
proposed by Parrinello and Rahman "(Parrinello1981)"_#Parrinello1981.
Taking derivatives of {E} w.r.t. the box dimensions, and setting these
to zero, we find that at the minimum of the objective function, the
global system stress tensor [P] will satisfy the relation:
:c,image(Eqs/fix_box_relax2.jpg)
where [I] is the identity matrix, [h]_0 is the box dimension tensor of
the reference cell, and [h]_0{d} is the diagonal part of
[h]_0. [S]_{t} is a symmetric stress tensor that is chosen by LAMMPS
so that the upper-triangular components of [P] equal the stress tensor
specified by the user.
This equation only applies when the box dimensions are equal to those
of the reference dimensions. If this is not the case, then the
converged stress tensor will not equal that specified by the user. We
can resolve this problem by periodically resetting the reference
dimensions. The keyword {nreset_ref} controls how often this is done.
If this keyword is not used, or is given a value of zero, then the
reference dimensions are set to those of the initial simulation domain
and are never changed. A value of {nstep} means that every {nstep}
minimization steps, the reference dimensions are set to those of the
current simulation domain. Note that resetting the reference
dimensions changes the objective function and gradients, which
sometimes causes the minimization to fail. This can be resolved by
changing the value of {nreset}, or simply continuing the minimization
from a restart file.
IMPORTANT NOTE: As normally computed, pressure includes a kinetic-
energy or temperature-dependent component; see the "compute
pressure"_compute_pressure.html command. However, atom velocities are
ignored during a minimization, and the applied pressure(s) specified
with this command are assumed to only be the virial component of the
pressure (the non-kinetic portion). Thus if atoms have a non-zero
temperature and you print the usual thermodynamic pressure, it may not
appear the system is converging to your specified pressure. The
solution for this is to either (a) zero the velocities of all atoms
before performing the minimization, or (b) make sure you are
monitoring the pressure without its kinetic component. The latter can
be done by outputting the pressure from the fix this command creates
(see below) or a pressure fix you define yourself.
IMPORTANT NOTE: Because pressure is often a very sensitive function of
volume, it can be difficult for the minimizer to equilibrate the
system the desired pressure with high precision, particularly for
solids. Some techniques that seem to help are (a) use the
"min_modify line quadratic" option when minimizing with box
relaxations, and (b) minimize several times in succession if need be,
to drive the pressure closer to the target pressure. Also note that
some systems (e.g. liquids) will not sustain a non-hydrostatic applied
pressure, which means the minimizer will not converge.
:line
This fix computes a temperature and pressure each timestep. The
temperature is used to compute the kinetic contribution to the
pressure, even though this is subsequently ignored by default. To do
this, the fix creates its own computes of style "temp" and "pressure",
as if these commands had been issued:
compute fix-ID_temp group-ID temp
compute fix-ID_press group-ID pressure fix-ID_temp virial :pre
See the "compute temp"_compute_temp.html and "compute
pressure"_compute_pressure.html commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press", and the group for the new computes is the same
as the fix group. Also note that the pressure compute does not
include a kinetic component.
Note that these are NOT the computes used by thermodynamic output (see
the "thermo_style"_thermo_style.html command) with ID = {thermo_temp}
and {thermo_press}. This means you can change the attributes of this
fix's temperature or pressure via the
"compute_modify"_compute_modify.html command or print this temperature
or pressure during thermodynamic output via the "thermo_style
custom"_thermo_style.html command using the appropriate compute-ID.
It also means that changing attributes of {thermo_temp} or
{thermo_press} will have no effect on this fix.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {temp} and {press} options are
supported by this fix. You can use them to assign a
"compute"_compute.html you have defined to this fix which will be used
in its temperature and pressure calculation, as described above. Note
that as described above, if you assign a pressure compute to this fix
that includes a kinetic energy component it will affect the
minimization, most likely in an undesirable way.
IMPORTANT NOTE: If both the {temp} and {press} keywords are used in a
single thermo_modify command (or in two separate commands), then the
order in which the keywords are specified is important. Note that a
"pressure compute"_compute_pressure.html defines its own temperature
compute as an argument when it is specified. The {temp} keyword will
override this (for the pressure compute being used by fix npt), but
only if the {temp} keyword comes after the {press} keyword. If the
{temp} keyword comes before the {press} keyword, then the new pressure
compute specified by the {press} keyword will be unaffected by the
{temp} setting.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the
+"output commands"_Section_howto.html#howto_15. The scalar is the
pressure-volume energy, plus the strain energy, if it exists.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command.
This fix is invoked during "energy minimization"_minimize.html, but
not for the purpose of adding a contribution to the energy or forces
being minimized. Instead it alters the simulation box geometry as
described above.
[Restrictions:]
Only dimensions that are available can be adjusted by this fix.
Non-periodic dimensions are not available. {z}, {xz}, and {yz}, are
not available for 2D simulations. {xy}, {xz}, and {yz} are only
available if the simulation domain is non-orthogonal. The
"create_box"_create_box.html, "read data"_read_data.html, and
"read_restart"_read_restart.html commands specify whether the
simulation box is orthogonal or non-orthogonal (triclinic) and explain
the meaning of the xy,xz,yz tilt factors.
[Related commands:]
"fix npt"_fix_nh.html, "minimize"_minimize.html
[Default:]
The keyword defaults are dilate = all, vmax = 0.0001, nreset = 0.
:line
:link(Parrinello1981)
[(Parrinello1981)] Parrinello and Rahman, J Appl Phys, 52, 7182 (1981).
diff --git a/doc/fix_deform.html b/doc/fix_deform.html
index 2cb1805ba..3a090578b 100644
--- a/doc/fix_deform.html
+++ b/doc/fix_deform.html
@@ -1,460 +1,460 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix deform command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID deform N parameter args ... keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>deform = style name of this fix command
<LI>N = perform box deformation every this many timesteps
<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>
<I>x</I>, <I>y</I>, <I>z</I> args = style value(s)
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>
<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> value = A Tp
A = amplitude of oscillation (distance units)
Tp = period of oscillation (time units)
<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> value = A Tp
A = amplitude of oscillation (distance units)
Tp = period of oscillation (time units)
</PRE>
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>remap</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>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>Any parameter varied by this command must refer to a periodic
dimension - see the <A HREF = "boundary.html">boundary</A> command. For parameters
<I>xy</I>, <I>xz</I>, and <I>yz</I>, the 2nd dimension must be periodic, e.g. <I>y</I> for
<I>xy</I>. 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>For the <I>scale</I>, <I>vel</I>, <I>erate</I>, <I>trate</I>, <I>volume</I>, and <I>wiggle</I>
styles, the box length is expanded or compressed around its mid point.
</P>
<HR>
<P>For the <I>xy</I>, <I>xz</I>, and <I>yz</I> parameters, this is the meaning of their
styles and values. Note that changing the tilt factors of a triclinic
box does not change its volume.
</P>
<P>The <I>final</I>, <I>delta</I>, <I>vel</I>, and <I>erate</I> styles all change the shear
strain at a "constant engineering shear strain rate". This means the
tilt factor changes linearly with time from its initial to final
value.
</P>
<P>For style <I>final</I>, the final tilt factor is specified. The value
can be in lattice or box distance units. See the discussion of the
units keyword below.
</P>
<P>For style <I>delta</I>, a plus or minus change in the tilt factor is
specified. The value can be in lattice or box distance units. See
the discussion of the units keyword below.
</P>
<P>For style <I>vel</I>, a velocity at which the tilt factor changes is
specified in units of distance/time. This is effectively an
"engineering shear strain rate", where rate = V/L0 and L0 is the
initial box length perpendicular to the direction of shear. The
distance can be in lattice or box distance units. See the discussion
of the units keyword below. For example, if the initial tilt factor
is 5 Angstroms, and the V is 10 Angstroms/psec, then after 1 psec, the
tilt factor will be 15 Angstroms. After 2 psec, it will be 25
Angstroms.
</P>
<P>The <I>erate</I> style changes a tilt factor at a "constant engineering
shear strain rate". The units of the specified shear 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). Shear strain is unitless and is
defined as offset/length, where length is the box length perpendicular
to the shear direction (e.g. y box length for xy deformation) and
offset is the displacement distance in the shear direction (e.g. x
direction for xy deformation) from the unstrained orientation.
</P>
<P>The tilt factor T as a function of time will change as
</P>
<PRE>T(t) = T0 + erate*dt
</PRE>
<P>where T0 is the initial tilt factor and 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 shear strain will increase by 0.1 every
picosecond. I.e. if the xy shear strain was initially 0.0, then
strain after 1 psec = 0.1, strain after 2 psec = 0.2, etc. Thus the
tilt factor would be 0.0 at time 0, 0.1*ybox at 1 psec, 0.2*ybox at 2
psec, etc, where ybox is the original y box length. R = 1 or 2 means
the tilt factor will increase by 1 or 2 every picosecond. R = -0.01
means a decrease in shear strain by 0.01 every picosecond.
</P>
<P>The <I>trate</I> style changes a tilt factor at a "constant true shear
strain rate". Note that this is not an "engineering shear strain
rate", as the other styles are. Rather, for a "true" rate, the rate
of change is constant, which means the tilt factor changes
non-linearly with time from its initial to final value. The units of
the specified shear 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). Shear strain is unitless and is defined as offset/length,
where length is the box length perpendicular to the shear direction
(e.g. y box length for xy deformation) and offset is the displacement
distance in the shear direction (e.g. x direction for xy deformation)
from the unstrained orientation.
</P>
<P>The tilt factor T as a function of time will change as
</P>
<PRE>T(t) = T0 exp(trate*dt)
</PRE>
<P>where T0 is the initial tilt factor and 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 shear strain or tilt factor will
increase by 10% every picosecond. I.e. if the xy shear strain was
initially 0.1, then strain after 1 psec = 0.11, strain after 2 psec =
0.121, etc. R = ln(2) or ln(3) means the tilt factor will double or
triple every picosecond. R = ln(0.99) means the tilt factor will
shrink by 1% every picosecond. Note that the change is continuous, so
running with R = ln(2) for 10 picoseconds does not change the tilt
factor by a factor of 10, but by a factor of 1024 since it doubles
every picosecond. Note that the initial tilt factor must be non-zero
to use the <I>trate</I> option.
</P>
<P>Note that shear strain is defined as the tilt factor divided by the
perpendicular box length. The <I>erate</I> and <I>trate</I> styles control the
tilt factor, but assume the perpendicular box length remains constant.
If this is not the case (e.g. it changes due to another fix deform
parameter), then this effect on the shear strain is ignored.
</P>
<P>The <I>wiggle</I> style oscillates the specified tilt factor sinusoidally
with the specified amplitude and period. I.e. the tilt factor T as a
function of time is given by
</P>
<PRE>T(t) = T0 + A sin(2*pi t/Tp)
</PRE>
<P>where T0 is its initial value. If the amplitude A is a positive
number the tilt factor initially becomes more positive, then more
negative, etc. If A is negative then the tilt factor initially
becomes more negative, then more positive, etc. The amplitude can be
in lattice or box distance units. See the discussion of the units
keyword below.
</P>
<P>All of these styles change the xy, xz, yz tilt factors during a
simulation. In LAMMPS, tilt factors (xy,xz,yz) for triclinic boxes
are always bounded by half the distance of the parallel box length.
For example, if xlo = 2 and xhi = 12, then the x box length is 10 and
the xy tilt factor must be between -5 and 5. Similarly, both xz and
yz must be between -(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is
not a limitation, since if the maximum tilt factor is 5 (as in this
example), then configurations with tilt = ..., -15, -5, 5, 15, 25,
... are all equivalent.
</P>
<P>To obey this constraint and allow for large shear deformations to be
applied via the <I>xy</I>, <I>xz</I>, or <I>yz</I> parameters, the following
algorithm is used. If <I>prd</I> is the associated parallel box length (10
in the example above), then if the tilt factor exceeds the accepted
range of -5 to 5 during the simulation, then the box is re-shaped to
the other limit (an equivalent box) and the simulation continues.
Thus for this example, if the initial xy tilt factor was 0.0 and "xy
final 100.0" was specified, then during the simulation the xy tilt
factor would increase from 0.0 to 5.0, the box would be re-shaped so
that the tilt factor becomes -5.0, the tilt factor would increase from
-5.0 to 5.0, the box would be re-shaped again, etc. The re-shaping
would occur 10 times and the final tilt factor at the end of the
simulation would be 0.0. During each re-shaping event, atoms are
remapped into the new box in the appropriate manner.
</P>
<HR>
<P>Each time the box size or shape is changed, the <I>remap</I> keyword
determines whether atom positions are remapped to the new box. If
<I>remap</I> is set to <I>x</I> (the default), atoms in the fix group are
remapped; otherwise they are not. Note that their velocities are not
changed, just their positions are altered. If <I>remap</I> is set to <I>v</I>,
then any atom in the fix group that crosses a periodic boundary will
have a delta added to its velocity equal to the difference in
velocities between the lo and hi boundaries. Note that this velocity
difference can include tilt components, e.g. a delta in the x velocity
when an atom crosses the y periodic boundary. If <I>remap</I> is set to
<I>none</I>, then neither of these remappings take place.
</P>
<P>Conceptually, setting <I>remap</I> to <I>x</I> forces the atoms to deform via an
affine transformation that exactly matches the box deformation. This
setting is typically appropriate for solids. Note that though the
atoms are effectively "moving" with the box over time, it is not due
to their having a velocity that tracks the box change, but only due to
the remapping. By contrast, setting <I>remap</I> to <I>v</I> is typically
appropriate for fluids, where you want the atoms to respond to the
change in box size/shape on their own and acquire a velocity that
matches the box change, so that their motion will naturally track the
box without explicit remapping of their coordinates.
</P>
<P>IMPORTANT NOTE: When non-equilibrium MD (NEMD) simulations are
performed using this fix, the option "remap v" should normally be
used. This is because <A HREF = "fix_nvt_sllod.html">fix nvt/sllod</A> adjusts the
atom positions and velocities to induce a velocity profile that
matches the changing box size/shape. Thus atom coordinates should NOT
be remapped by fix deform, but velocities SHOULD be when atoms cross
periodic boundaries, since that is consistent with maintaining the
velocity profile already created by fix nvt/sllod. LAMMPS will warn
you if the <I>remap</I> setting is not consistent with fix nvt/sllod.
</P>
<P>IMPORTANT NOTE: If a <A HREF = "fix_rigid.html">fix rigid</A> is defined for rigid
bodies, and <I>remap</I> is set to <I>x</I>, then the center-of-mass coordinates
of rigid bodies will be remapped to the changing simulation box. This
will be done regardless of whether atoms in the rigid bodies are in
the fix deform group or not. The velocity of the centers of mass are
not remapped even if <I>remap</I> is set to <I>v</I>, since <A HREF = "fix_nvt_sllod.html">fix
nvt/sllod</A> does not currently do anything special
for rigid particles. If you wish to perform a NEMD simulation of
rigid particles, you can either thermostat them independently or
include a background fluid and thermostat the fluid via <A HREF = "fix_nvt_sllod.html">fix
nvt/sllod</A>.
</P>
<P>The <I>units</I> keyword determines the meaning of the distance units used
to define various arguments. 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 also affects the <I>vel</I> style parameters since it is
defined in terms of distance/time.
</P>
<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>. 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#4_15">output
+by this fix for access by various <A HREF = "Section_howto.html#howto_15">output
commands</A>.
</P>
<P>This fix can perform deformation over multiple runs, using the <I>start</I>
and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this.
</P>
<P>This fix is not invoked during <A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>Any box dimension varied by this fix must be periodic.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "displace_box.html">displace_box</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are remap = x and units = lattice.
</P>
</HTML>
diff --git a/doc/fix_deform.txt b/doc/fix_deform.txt
index 3cda5dbd7..e1f81e330 100644
--- a/doc/fix_deform.txt
+++ b/doc/fix_deform.txt
@@ -1,448 +1,448 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix deform command :h3
[Syntax:]
fix ID group-ID deform N parameter args ... keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
deform = style name of this fix command :l
N = perform box deformation every this many timesteps :l
one or more parameter/arg pairs may be appended :l
parameter = {x} or {y} or {z} or {xy} or {xz} or {yz}
{x}, {y}, {z} args = style value(s)
style = {final} or {delta} or {scale} or {vel} or {erate} or {trate} or {volume} or {wiggle}
{final} values = lo hi
lo hi = box boundaries at end of run (distance units)
{delta} values = dlo dhi
dlo dhi = change in box boundaries at end of run (distance units)
{scale} values = factor
factor = multiplicative factor for change in box length at end of run
{vel} value = V
V = change box length at this velocity (distance/time units),
effectively an engineering strain rate
{erate} value = R
R = engineering strain rate (1/time units)
{trate} value = R
R = true strain rate (1/time units)
{volume} value = none = adjust this dim to preserve volume of system
{wiggle} value = A Tp
A = amplitude of oscillation (distance units)
Tp = period of oscillation (time units)
{xy}, {xz}, {yz} args = style value
style = {final} or {delta} or {vel} or {erate} or {trate} or {wiggle}
{final} value = tilt
tilt = tilt factor at end of run (distance units)
{delta} value = dtilt
dtilt = change in tilt factor at end of run (distance units)
{vel} value = V
V = change tilt factor at this velocity (distance/time units),
effectively an engineering shear strain rate
{erate} value = R
R = engineering shear strain rate (1/time units)
{trate} value = R
R = true shear strain rate (1/time units)
{wiggle} value = A Tp
A = amplitude of oscillation (distance units)
Tp = period of oscillation (time units) :pre
zero or more keyword/value pairs may be appended :l
keyword = {remap} or {units} :l
{remap} value = {x} or {v} or {none}
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
{units} value = {lattice} or {box}
lattice = distances are defined in lattice units
box = distances are defined in simulation box units :pre
:ule
[Examples:]
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
[Description:]
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 "fix
nvt/sllod"_fix_nvt_sllod.html and "compute
temp/deform"_compute_temp_deform.html commands for more details.
Any parameter varied by this command must refer to a periodic
dimension - see the "boundary"_boundary.html command. For parameters
{xy}, {xz}, and {yz}, the 2nd dimension must be periodic, e.g. {y} for
{xy}. Dimensions not varied by this command can be periodic or
non-periodic. Dimensions corresponding to unspecified parameters can
also be controlled by a "fix npt"_fix_nh.html or "fix nph"_fix_nh.html
command.
The size and shape of the simulation box at the beginning of the
simulation run were either specified by the
"create_box"_create_box.html or "read_data"_read_data.html or
"read_restart"_read_restart.html 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 "create_box"_create_box.html, "read
data"_read_data.html, and "read_restart"_read_restart.html 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.
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.
:line
For the {x}, {y}, and {z} parameters, this is the meaning of their
styles and values.
The {final}, {delta}, {scale}, {vel}, and {erate} 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.
For style {final}, 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.
For style {delta}, 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.
For style {scale}, 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.
For style {vel}, 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.
The {erate} 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 "units"_units.html 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
L(t) = L0 (1 + erate*dt) :pre
where dt is the elapsed time (in time units). Thus if {erate} 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 {trate} style would induce.
The {trate} 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 "units"_units.html 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
L(t) = L0 exp(trate*dt) :pre
where dt is the elapsed time (in time units). Thus if {trate} 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 {erate}, but by a factor of
1024 since the box length will double every picosecond.
Note that to change the volume (or cross-sectional area) of the
simulation box at a constant rate, you can change multiple dimensions
via {erate} or {trate}. 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.
The {volume} 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 {y} 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.
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 {volume}
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
"fix npt aniso"_fix_nh.html with zero applied pressure on those 2
dimensions, so that they respond to the tensile strain dynamically.
The {wiggle} 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
L(t) = L0 + A sin(2*pi t/Tp) :pre
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.
For the {scale}, {vel}, {erate}, {trate}, {volume}, and {wiggle}
styles, the box length is expanded or compressed around its mid point.
:line
For the {xy}, {xz}, and {yz} parameters, this is the meaning of their
styles and values. Note that changing the tilt factors of a triclinic
box does not change its volume.
The {final}, {delta}, {vel}, and {erate} styles all change the shear
strain at a "constant engineering shear strain rate". This means the
tilt factor changes linearly with time from its initial to final
value.
For style {final}, the final tilt factor is specified. The value
can be in lattice or box distance units. See the discussion of the
units keyword below.
For style {delta}, a plus or minus change in the tilt factor is
specified. The value can be in lattice or box distance units. See
the discussion of the units keyword below.
For style {vel}, a velocity at which the tilt factor changes is
specified in units of distance/time. This is effectively an
"engineering shear strain rate", where rate = V/L0 and L0 is the
initial box length perpendicular to the direction of shear. The
distance can be in lattice or box distance units. See the discussion
of the units keyword below. For example, if the initial tilt factor
is 5 Angstroms, and the V is 10 Angstroms/psec, then after 1 psec, the
tilt factor will be 15 Angstroms. After 2 psec, it will be 25
Angstroms.
The {erate} style changes a tilt factor at a "constant engineering
shear strain rate". The units of the specified shear strain rate are
1/time. See the "units"_units.html command for the time units
associated with different choices of simulation units,
e.g. picoseconds for "metal" units). Shear strain is unitless and is
defined as offset/length, where length is the box length perpendicular
to the shear direction (e.g. y box length for xy deformation) and
offset is the displacement distance in the shear direction (e.g. x
direction for xy deformation) from the unstrained orientation.
The tilt factor T as a function of time will change as
T(t) = T0 + erate*dt :pre
where T0 is the initial tilt factor and dt is the elapsed time (in
time units). Thus if {erate} R is specified as 0.1 and time units are
picoseconds, this means the shear strain will increase by 0.1 every
picosecond. I.e. if the xy shear strain was initially 0.0, then
strain after 1 psec = 0.1, strain after 2 psec = 0.2, etc. Thus the
tilt factor would be 0.0 at time 0, 0.1*ybox at 1 psec, 0.2*ybox at 2
psec, etc, where ybox is the original y box length. R = 1 or 2 means
the tilt factor will increase by 1 or 2 every picosecond. R = -0.01
means a decrease in shear strain by 0.01 every picosecond.
The {trate} style changes a tilt factor at a "constant true shear
strain rate". Note that this is not an "engineering shear strain
rate", as the other styles are. Rather, for a "true" rate, the rate
of change is constant, which means the tilt factor changes
non-linearly with time from its initial to final value. The units of
the specified shear strain rate are 1/time. See the
"units"_units.html command for the time units associated with
different choices of simulation units, e.g. picoseconds for "metal"
units). Shear strain is unitless and is defined as offset/length,
where length is the box length perpendicular to the shear direction
(e.g. y box length for xy deformation) and offset is the displacement
distance in the shear direction (e.g. x direction for xy deformation)
from the unstrained orientation.
The tilt factor T as a function of time will change as
T(t) = T0 exp(trate*dt) :pre
where T0 is the initial tilt factor and dt is the elapsed time (in
time units). Thus if {trate} R is specified as ln(1.1) and time units
are picoseconds, this means the shear strain or tilt factor will
increase by 10% every picosecond. I.e. if the xy shear strain was
initially 0.1, then strain after 1 psec = 0.11, strain after 2 psec =
0.121, etc. R = ln(2) or ln(3) means the tilt factor will double or
triple every picosecond. R = ln(0.99) means the tilt factor will
shrink by 1% every picosecond. Note that the change is continuous, so
running with R = ln(2) for 10 picoseconds does not change the tilt
factor by a factor of 10, but by a factor of 1024 since it doubles
every picosecond. Note that the initial tilt factor must be non-zero
to use the {trate} option.
Note that shear strain is defined as the tilt factor divided by the
perpendicular box length. The {erate} and {trate} styles control the
tilt factor, but assume the perpendicular box length remains constant.
If this is not the case (e.g. it changes due to another fix deform
parameter), then this effect on the shear strain is ignored.
The {wiggle} style oscillates the specified tilt factor sinusoidally
with the specified amplitude and period. I.e. the tilt factor T as a
function of time is given by
T(t) = T0 + A sin(2*pi t/Tp) :pre
where T0 is its initial value. If the amplitude A is a positive
number the tilt factor initially becomes more positive, then more
negative, etc. If A is negative then the tilt factor initially
becomes more negative, then more positive, etc. The amplitude can be
in lattice or box distance units. See the discussion of the units
keyword below.
All of these styles change the xy, xz, yz tilt factors during a
simulation. In LAMMPS, tilt factors (xy,xz,yz) for triclinic boxes
are always bounded by half the distance of the parallel box length.
For example, if xlo = 2 and xhi = 12, then the x box length is 10 and
the xy tilt factor must be between -5 and 5. Similarly, both xz and
yz must be between -(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is
not a limitation, since if the maximum tilt factor is 5 (as in this
example), then configurations with tilt = ..., -15, -5, 5, 15, 25,
... are all equivalent.
To obey this constraint and allow for large shear deformations to be
applied via the {xy}, {xz}, or {yz} parameters, the following
algorithm is used. If {prd} is the associated parallel box length (10
in the example above), then if the tilt factor exceeds the accepted
range of -5 to 5 during the simulation, then the box is re-shaped to
the other limit (an equivalent box) and the simulation continues.
Thus for this example, if the initial xy tilt factor was 0.0 and "xy
final 100.0" was specified, then during the simulation the xy tilt
factor would increase from 0.0 to 5.0, the box would be re-shaped so
that the tilt factor becomes -5.0, the tilt factor would increase from
-5.0 to 5.0, the box would be re-shaped again, etc. The re-shaping
would occur 10 times and the final tilt factor at the end of the
simulation would be 0.0. During each re-shaping event, atoms are
remapped into the new box in the appropriate manner.
:line
Each time the box size or shape is changed, the {remap} keyword
determines whether atom positions are remapped to the new box. If
{remap} is set to {x} (the default), atoms in the fix group are
remapped; otherwise they are not. Note that their velocities are not
changed, just their positions are altered. If {remap} is set to {v},
then any atom in the fix group that crosses a periodic boundary will
have a delta added to its velocity equal to the difference in
velocities between the lo and hi boundaries. Note that this velocity
difference can include tilt components, e.g. a delta in the x velocity
when an atom crosses the y periodic boundary. If {remap} is set to
{none}, then neither of these remappings take place.
Conceptually, setting {remap} to {x} forces the atoms to deform via an
affine transformation that exactly matches the box deformation. This
setting is typically appropriate for solids. Note that though the
atoms are effectively "moving" with the box over time, it is not due
to their having a velocity that tracks the box change, but only due to
the remapping. By contrast, setting {remap} to {v} is typically
appropriate for fluids, where you want the atoms to respond to the
change in box size/shape on their own and acquire a velocity that
matches the box change, so that their motion will naturally track the
box without explicit remapping of their coordinates.
IMPORTANT NOTE: When non-equilibrium MD (NEMD) simulations are
performed using this fix, the option "remap v" should normally be
used. This is because "fix nvt/sllod"_fix_nvt_sllod.html adjusts the
atom positions and velocities to induce a velocity profile that
matches the changing box size/shape. Thus atom coordinates should NOT
be remapped by fix deform, but velocities SHOULD be when atoms cross
periodic boundaries, since that is consistent with maintaining the
velocity profile already created by fix nvt/sllod. LAMMPS will warn
you if the {remap} setting is not consistent with fix nvt/sllod.
IMPORTANT NOTE: If a "fix rigid"_fix_rigid.html is defined for rigid
bodies, and {remap} is set to {x}, then the center-of-mass coordinates
of rigid bodies will be remapped to the changing simulation box. This
will be done regardless of whether atoms in the rigid bodies are in
the fix deform group or not. The velocity of the centers of mass are
not remapped even if {remap} is set to {v}, since "fix
nvt/sllod"_fix_nvt_sllod.html does not currently do anything special
for rigid particles. If you wish to perform a NEMD simulation of
rigid particles, you can either thermostat them independently or
include a background fluid and thermostat the fluid via "fix
nvt/sllod"_fix_nvt_sllod.html.
The {units} keyword determines the meaning of the distance units used
to define various arguments. A {box} value selects standard distance
units as defined by the "units"_units.html command, e.g. Angstroms for
units = real or metal. A {lattice} value means the distance units are
in lattice spacings. The "lattice"_lattice.html command must have
been previously used to define the lattice spacing. Note that the
units choice also affects the {vel} style parameters since it is
defined in terms of distance/time.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15.
+commands"_Section_howto.html#howto_15.
This fix can perform deformation over multiple runs, using the {start}
and {stop} keywords of the "run"_run.html command. See the
"run"_run.html command for details of how to do this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
Any box dimension varied by this fix must be periodic.
[Related commands:]
"displace_box"_displace_box.html
[Default:]
The option defaults are remap = x and units = lattice.
diff --git a/doc/fix_deposit.html b/doc/fix_deposit.html
index 43b2d7c82..574a3d04f 100644
--- a/doc/fix_deposit.html
+++ b/doc/fix_deposit.html
@@ -1,165 +1,165 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix deposit command
</H3>
<P><B>Syntax:</B>
</P>
<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 to insert
<LI>type = atom type to assign to inserted atoms
<LI>M = insert a single particle 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>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>units</I>
<PRE> <I>region</I> value = region-ID
region-ID = ID of region to use as insertion volume
<I>global</I> values = lo hi
lo,hi = put new particle a distance lo-hi above all other particles (distance units)
<I>local</I> values = lo hi delta
lo,hi = put new particle a distance lo-hi above any nearby particle beneath it (distance units)
delta = lateral distance within which a neighbor is considered "nearby" (distance units)
<I>near</I> value = R
R = only insert particle 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 particle (velocity units)
<I>vy</I> values = vylo vyhi
vylo,vyhi = range of y velocities for inserted particle (velocity units)
<I>vz</I> values = vzlo vzhi
vzlo,vzhi = range of z velocities for inserted particle (velocity units)
<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
</PRE>
<P><B>Description:</B>
</P>
<P>Insert a single particle into the simulation domain every M timesteps
until N particles have been inserted. This is useful for simulating
the deposition of particles onto a surface.
</P>
<P>Inserted particles have the specified atom type and 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 temperature is computed.
</P>
<P>Care must be taken that inserted particles are not too near existing
particles, 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.
</P>
<P>This 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>Each timestep a particle is to be inserted, its coordinates are chosen
as follows. A random position within the insertion volume is
generated. If neither the <I>global</I> or <I>local</I> keyword is used, that
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 delta parameter.
</P>
<P>Once a trial x,y,z location has been computed, the insertion is only
performed if no current particle in the simulation is within a
distance R of the new particle. 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 an atom is not successfully
deposited, LAMMPS prints a warning message.
</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.
</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><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 atoms
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#4_15">output commands</A>. No
+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>The specified insertion region cannot be a "dynamic" region, as
defined by the <A HREF = "region.html">region</A> command.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_pour.html">fix_pour</A>, <A HREF = "region.html">region</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are delta = 0.0, near = 0.0, attempt = 10, rate =
0.0, vx = 0.0 0.0, vy = 0.0 0.0, vz = 0.0 0.0, and units = lattice.
</P>
</HTML>
diff --git a/doc/fix_deposit.txt b/doc/fix_deposit.txt
index 70e8e61a9..82ee3056c 100644
--- a/doc/fix_deposit.txt
+++ b/doc/fix_deposit.txt
@@ -1,151 +1,151 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix deposit command :h3
[Syntax:]
fix ID group-ID deposit N type M seed keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
deposit = style name of this fix command :l
N = # of atoms to insert :l
type = atom type to assign to inserted atoms :l
M = insert a single particle every M steps :l
seed = random # seed (positive integer) :l
one or more keyword/value pairs may be appended to args :l
keyword = {region} or {global} or {local} or {near} or {attempt} or {rate} or {vx} or {vy} or {vz} or {units} :l
{region} value = region-ID
region-ID = ID of region to use as insertion volume
{global} values = lo hi
lo,hi = put new particle a distance lo-hi above all other particles (distance units)
{local} values = lo hi delta
lo,hi = put new particle a distance lo-hi above any nearby particle beneath it (distance units)
delta = lateral distance within which a neighbor is considered "nearby" (distance units)
{near} value = R
R = only insert particle if further than R from existing particles (distance units)
{attempt} value = Q
Q = attempt a single insertion up to Q times
{rate} value = V
V = z velocity (y in 2d) at which insertion volume moves (velocity units)
{vx} values = vxlo vxhi
vxlo,vxhi = range of x velocities for inserted particle (velocity units)
{vy} values = vylo vyhi
vylo,vyhi = range of y velocities for inserted particle (velocity units)
{vz} values = vzlo vzhi
vzlo,vzhi = range of z velocities for inserted particle (velocity units)
{units} value = {lattice} or {box}
lattice = the geometry is defined in lattice units
box = the geometry is defined in simulation box units :pre
:ule
[Examples:]
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 :pre
[Description:]
Insert a single particle into the simulation domain every M timesteps
until N particles have been inserted. This is useful for simulating
the deposition of particles onto a surface.
Inserted particles have the specified atom type and are assigned to
two groups: the default group "all" and the group specified in the fix
deposit command (which can also be "all").
If you are computing temperature values which include inserted
particles, you will want to use the "compute_modify"_compute_modify.html
dynamic option, which insures the current number of atoms is used as a
normalizing factor each time temperature is computed.
Care must be taken that inserted particles are not too near existing
particles, using the options described below. When inserting
particles above a surface in a non-periodic box (see the
"boundary"_boundary.html 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
"fix wall/reflect"_fix_wall_reflect.html 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.
This command must use the {region} keyword to define an insertion
volume. The specified region must have been previously defined with a
"region"_region.html command. It must be defined with side = {in}.
Each timestep a particle is to be inserted, its coordinates are chosen
as follows. A random position within the insertion volume is
generated. If neither the {global} or {local} keyword is used, that
is the trial position. If the {global} 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 {local} 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 delta parameter.
Once a trial x,y,z location has been computed, the insertion is only
performed if no current particle in the simulation is within a
distance R of the new particle. 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 an atom is not successfully
deposited, LAMMPS prints a warning message.
The {rate} 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 {global} or {local} keywords are used, since those
options choose a z-coordinate for insertion independently.
The vx, vy, and vz components of velocity for the inserted particle
are set using the values specified for the {vx}, {vy}, and {vz}
keywords. Note that normally, new particles should be a assigned a
negative vertical velocity so that they move towards the surface.
The {units} keyword determines the meaning of the distance units used
for the other deposition parameters. A {box} value selects standard
distance units as defined by the "units"_units.html command,
e.g. Angstroms for units = real or metal. A {lattice} value means the
distance units are in lattice spacings. The "lattice"_lattice.html
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.
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the state of the deposition to "binary restart
files"_restart.html. This includes information about how many atoms
have been depositied, the random number generator seed, the next
timestep for deposition, etc. See the
"read_restart"_read_restart.html 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.
None of the "fix_modify"_fix_modify.html options are relevant to this
fix. No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#4_15. No
+access by various "output commands"_Section_howto.html#howto_15. No
parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
The specified insertion region cannot be a "dynamic" region, as
defined by the "region"_region.html command.
[Related commands:]
"fix_pour"_fix_pour.html, "region"_region.html
[Default:]
The option defaults are delta = 0.0, near = 0.0, attempt = 10, rate =
0.0, vx = 0.0 0.0, vy = 0.0 0.0, vz = 0.0 0.0, and units = lattice.
diff --git a/doc/fix_drag.html b/doc/fix_drag.html
index 5cdd866d1..adef7e657 100644
--- a/doc/fix_drag.html
+++ b/doc/fix_drag.html
@@ -1,66 +1,66 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix drag command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID drag x y z fmag delta
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>drag = style name of this fix command
<LI>x,y,z = coord to drag atoms towards
<LI>fmag = magnitude of force to apply to each atom (force units)
<LI>delta = cutoff distance inside of which force is not applied (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix center small-molecule drag 0.0 10.0 0.0 5.0 2.0
</PRE>
<P><B>Description:</B>
</P>
<P>Apply a force to each atom in a group to drag it towards the point
(x,y,z). The magnitude of the force is specified by fmag. If an atom
is closer than a distance delta to the point, then the force is not
applied.
</P>
<P>Any of the x,y,z values can be specified as NULL which means do not
include that dimension in the distance calculation or force
application.
</P>
<P>This command can be used to steer one or more atoms to a new location
in the simulation.
</P>
<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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global 3-vector of forces, which can be accessed
-by various <A HREF = "Section_howto.html#4_15">output commands</A>. This is the
+by various <A HREF = "Section_howto.html#howto_15">output commands</A>. This is the
total force on the group of atoms by the drag force. The vector
values calculated by this fix are "extensive".
</P>
<P>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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_spring.html">fix spring</A>, <A HREF = "fix_spring_self.html">fix spring/self</A>,
<A HREF = "fix_spring_rg.html">fix spring/rg</A>, <A HREF = "fix_smd.html">fix smd</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_drag.txt b/doc/fix_drag.txt
index 3fdf26bcb..503563d97 100644
--- a/doc/fix_drag.txt
+++ b/doc/fix_drag.txt
@@ -1,62 +1,62 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix drag command :h3
[Syntax:]
fix ID group-ID drag x y z fmag delta :pre
ID, group-ID are documented in "fix"_fix.html command
drag = style name of this fix command
x,y,z = coord to drag atoms towards
fmag = magnitude of force to apply to each atom (force units)
delta = cutoff distance inside of which force \
is not applied (distance units) :ul
[Examples:]
fix center small-molecule drag 0.0 10.0 0.0 5.0 2.0 :pre
[Description:]
Apply a force to each atom in a group to drag it towards the point
(x,y,z). The magnitude of the force is specified by fmag. If an atom
is closer than a distance delta to the point, then the force is not
applied.
Any of the x,y,z values can be specified as NULL which means do not
include that dimension in the distance calculation or force
application.
This command can be used to steer one or more atoms to a new location
in the simulation.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global 3-vector of forces, which can be accessed
-by various "output commands"_Section_howto.html#4_15. This is the
+by various "output commands"_Section_howto.html#howto_15. This is the
total force on the group of atoms by the drag force. The vector
values calculated by this fix are "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix spring"_fix_spring.html, "fix spring/self"_fix_spring_self.html,
"fix spring/rg"_fix_spring_rg.html, "fix smd"_fix_smd.html
[Default:] none
diff --git a/doc/fix_dt_reset.html b/doc/fix_dt_reset.html
index e146adfa9..2831e47d8 100644
--- a/doc/fix_dt_reset.html
+++ b/doc/fix_dt_reset.html
@@ -1,98 +1,98 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix dt/reset command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID dt/reset N Tmin Tmax Xmax keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>dt/reset = style name of this fix command
<LI>N = recompute dt every N timesteps
<LI>Tmin = minimum dt allowed (can be NULL) (time units)
<LI>Tmax = maximum dt allowed (can be NULL) (time units)
<LI>Xmax = maximum distance for an atom to move in one timestep (distance units)
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>units</I>
</UL>
<PRE> <I>units</I> value = <I>lattice</I> or <I>box</I>
lattice = Xmax is defined in lattice units
box = Xmax is defined in simulation box units
</PRE>
<P><B>Examples:</B>
</P>
<PRE>fix 5 all dt/reset 10 1.0e-5 0.01 0.1
fix 5 all dt/reset 10 0.01 2.0 0.2 units box
</PRE>
<P><B>Description:</B>
</P>
<P>Reset the timestep size every N steps during a run, so that no atom
moves further than Xmax, based on current atom velocities and forces.
This can be useful when starting from a configuration with overlapping
atoms, where forces will be large. Or it can be useful when running
an impact simulation where one or more high-energy atoms collide with
a solid, causing a damage cascade.
</P>
<P>This fix overrides the timestep size setting made by the
<A HREF = "timestep.html">timestep</A> command. The new timestep size <I>dt</I> is
computed in the following manner.
</P>
<P>For each atom, the timestep is computed that would cause it to
displace <I>Xmax</I> on the next integration step, as a function of its
current velocity and force. Since performing this calculation exactly
would require the solution to a quartic equation, a cheaper estimate
is generated. The estimate is conservative in that the atom's
displacement is guaranteed not to exceed <I>Xmax</I>, though it may be
smaller.
</P>
<P>Given this putative timestep for each atom, the minimum timestep value
across all atoms is computed. Then the <I>Tmin</I> and <I>Tmax</I> bounds are
applied, if specified. If one (or both) is specified as NULL, it is
not applied.
</P>
<P>When the <A HREF = "run_style.html">run style</A> is <I>respa</I>, this fix resets the
outer loop (largest) timestep, which is the same timestep that the
<A HREF = "timestep.html">timestep</A> command sets.
</P>
<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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global scalar and a global vector of length 1,
-which can be accessed by various <A HREF = "Section_howto.html#4_15">output
-commands</A>. The scalar is the current timestep
-size. The cumulative simulation time (in time units) is stored as the
-first element of the vector. The scalar and vector values calculated
-by this fix are "intensive".
+which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. The scalar is the current
+timestep size. The cumulative simulation time (in time units) is
+stored as the first element of the vector. The scalar and vector
+values calculated by this fix are "intensive".
</P>
<P>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>The cumulative time is zeroed when the fix is created and
continuously accrues thereafter. Using the
<A HREF = "reset_timestep.html">reset_timestep</A> command while this fix is defined
will mess up the time accumulation.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "timestep.html">timestep</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults is units = lattice.
</P>
</HTML>
diff --git a/doc/fix_dt_reset.txt b/doc/fix_dt_reset.txt
index c0100bd7f..edd1b4c79 100644
--- a/doc/fix_dt_reset.txt
+++ b/doc/fix_dt_reset.txt
@@ -1,92 +1,92 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix dt/reset command :h3
[Syntax:]
fix ID group-ID dt/reset N Tmin Tmax Xmax keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command
dt/reset = style name of this fix command
N = recompute dt every N timesteps
Tmin = minimum dt allowed (can be NULL) (time units)
Tmax = maximum dt allowed (can be NULL) (time units)
Xmax = maximum distance for an atom to move in one timestep (distance units)
zero or more keyword/value pairs may be appended
keyword = {units} :ul
{units} value = {lattice} or {box}
lattice = Xmax is defined in lattice units
box = Xmax is defined in simulation box units :pre
[Examples:]
fix 5 all dt/reset 10 1.0e-5 0.01 0.1
fix 5 all dt/reset 10 0.01 2.0 0.2 units box :pre
[Description:]
Reset the timestep size every N steps during a run, so that no atom
moves further than Xmax, based on current atom velocities and forces.
This can be useful when starting from a configuration with overlapping
atoms, where forces will be large. Or it can be useful when running
an impact simulation where one or more high-energy atoms collide with
a solid, causing a damage cascade.
This fix overrides the timestep size setting made by the
"timestep"_timestep.html command. The new timestep size {dt} is
computed in the following manner.
For each atom, the timestep is computed that would cause it to
displace {Xmax} on the next integration step, as a function of its
current velocity and force. Since performing this calculation exactly
would require the solution to a quartic equation, a cheaper estimate
is generated. The estimate is conservative in that the atom's
displacement is guaranteed not to exceed {Xmax}, though it may be
smaller.
Given this putative timestep for each atom, the minimum timestep value
across all atoms is computed. Then the {Tmin} and {Tmax} bounds are
applied, if specified. If one (or both) is specified as NULL, it is
not applied.
When the "run style"_run_style.html is {respa}, this fix resets the
outer loop (largest) timestep, which is the same timestep that the
"timestep"_timestep.html command sets.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global scalar and a global vector of length 1,
which can be accessed by various "output
-commands"_Section_howto.html#4_15. The scalar is the current timestep
-size. The cumulative simulation time (in time units) is stored as the
-first element of the vector. The scalar and vector values calculated
-by this fix are "intensive".
+commands"_Section_howto.html#howto_15. The scalar is the current
+timestep size. The cumulative simulation time (in time units) is
+stored as the first element of the vector. The scalar and vector
+values calculated by this fix are "intensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
The cumulative time is zeroed when the fix is created and
continuously accrues thereafter. Using the
"reset_timestep"_reset_timestep.html command while this fix is defined
will mess up the time accumulation.
[Related commands:]
"timestep"_timestep.html
[Default:]
The option defaults is units = lattice.
diff --git a/doc/fix_efield.html b/doc/fix_efield.html
index 894caeb94..7b3daba5a 100644
--- a/doc/fix_efield.html
+++ b/doc/fix_efield.html
@@ -1,68 +1,68 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix efield command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID efield ex ey ez
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>efield = style name of this fix command
<LI>ex,ey,ez = E-field component values (electric field units)
<LI>any of ex,ey,ez can be a variable (see below)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix kick external-field efield 1.0 0.0 0.0
fix kick external-field efield 0.0 0.0 v_oscillate
</PRE>
<P><B>Description:</B>
</P>
<P>Add a force F = qE to each charged atom in the group due to an
external electric field being applied to the system.
</P>
<P>Any of the 3 quantities defining the E-field components can be
specified as an equal-style or atom-style <A HREF = "variable.html">variable</A>,
namely <I>ex</I>, <I>ey</I>, <I>ez</I>. 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 each timestep, and its value used to
determine the E-field component.
</P>
<P>Equal-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. Thus it is easy to specify a time-dependent E-field.
</P>
<P>Atom-style variables can specify the same formulas as equal-style
variables but can also include per-atom values, such as atom
coordinates. Thus it is easy to specify a spatially-dependent E-field
with optional time-dependence as well.
</P>
<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>. 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#4_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.
+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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_addforce.html">fix addforce</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_efield.txt b/doc/fix_efield.txt
index 70562d5cd..6bc7ba4a6 100644
--- a/doc/fix_efield.txt
+++ b/doc/fix_efield.txt
@@ -1,63 +1,63 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix efield command :h3
[Syntax:]
fix ID group-ID efield ex ey ez :pre
ID, group-ID are documented in "fix"_fix.html command
efield = style name of this fix command
ex,ey,ez = E-field component values (electric field units)
any of ex,ey,ez can be a variable (see below) :ul
[Examples:]
fix kick external-field efield 1.0 0.0 0.0
fix kick external-field efield 0.0 0.0 v_oscillate :pre
[Description:]
Add a force F = qE to each charged atom in the group due to an
external electric field being applied to the system.
Any of the 3 quantities defining the E-field components can be
specified as an equal-style or atom-style "variable"_variable.html,
namely {ex}, {ey}, {ez}. 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 each timestep, and its value used to
determine the E-field component.
Equal-style variables can specify formulas with various mathematical
functions, and include "thermo_style"_thermo_style.html command
keywords for the simulation box parameters and timestep and elapsed
time. Thus it is easy to specify a time-dependent E-field.
Atom-style variables can specify the same formulas as equal-style
variables but can also include per-atom values, such as atom
coordinates. Thus it is easy to specify a spatially-dependent E-field
with optional time-dependence as well.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix addforce"_fix_addforce.html
[Default:] none
diff --git a/doc/fix_enforce2d.html b/doc/fix_enforce2d.html
index 737a85377..67cfe4da1 100644
--- a/doc/fix_enforce2d.html
+++ b/doc/fix_enforce2d.html
@@ -1,74 +1,74 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix enforce2d command
</H3>
<H3>fix enforce2d/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID enforce2d
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>enforce2d = style name of this fix command
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 5 all enforce2d
</PRE>
<P><B>Description:</B>
</P>
<P>Zero out the z-dimension velocity and force on each atom in the group.
This is useful when running a 2d simulation to insure that atoms do
not move from their initial z coordinate.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</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>. 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#4_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.
+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.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_enforce2d.txt b/doc/fix_enforce2d.txt
index d266edc56..578b31179 100644
--- a/doc/fix_enforce2d.txt
+++ b/doc/fix_enforce2d.txt
@@ -1,68 +1,68 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix enforce2d command :h3
fix enforce2d/cuda command :h3
[Syntax:]
fix ID group-ID enforce2d :pre
ID, group-ID are documented in "fix"_fix.html command
enforce2d = style name of this fix command :ul
[Examples:]
fix 5 all enforce2d :pre
[Description:]
Zero out the z-dimension velocity and force on each atom in the group.
This is useful when running a 2d simulation to insure that atoms do
not move from their initial z coordinate.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command.
[Restrictions:] none
[Related commands:] none
[Default:] none
diff --git a/doc/fix_evaporate.html b/doc/fix_evaporate.html
index e533c5194..8ef4b2fab 100644
--- a/doc/fix_evaporate.html
+++ b/doc/fix_evaporate.html
@@ -1,100 +1,100 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix evaporate command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID evaporate N M region-ID seed
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>evaporate = style name of this fix command
<LI>N = delete atoms every this many timesteps
<LI>M = number of atoms to delete each time
<LI>region-ID = ID of region within which to perform deletions
<LI>seed = random number seed to use for choosing atoms to delete
<LI>zero or more keyword/value pairs may be appended
<PRE>keyword = <I>molecule</I>
<I>molecule</I> value = <I>no</I> or <I>yes</I>
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 solvent evaporate 1000 10 surface 49892
fix 1 solvent evaporate 1000 10 surface 38277 molecule yes
</PRE>
<P><B>Description:</B>
</P>
<P>Remove M atoms from the simulation every N steps. This can be used,
for example, to model evaporation of solvent particles or moleclues
(i.e. drying) of a system. Every N steps, the number of atoms in the
fix group and within the specifed region are counted. M of these are
chosen at random and deleted. If there are less than M eligible
particles, then all of them are deleted.
</P>
<P>If the setting for the <I>molecule</I> keyword is <I>no</I>, then only single
atoms are deleted. In this case, you should insure you do not delete
only a portion of a molecule (only some of its atoms), or LAMMPS will
soon generate an error when it tries to find those atoms. LAMMPS will
warn you if any of the atoms eligible for deletion have a non-zero
molecule ID, but does not check for this at the time of deletion.
</P>
<P>If the setting for the <I>molecule</I> keyword is <I>yes</I>, then when an atom
is chosen for deletion, the entire molecule it is part of is deleted.
The count of deleted atoms is incremented by the number of atoms in
the molecule, which may make it exceed <I>M</I>. If the molecule ID of the
chosen atom is 0, then it is assumed to not be part of a molecule, and
just the single atom is deleted.
</P>
<P>As an example, if you wish to delete 10 water molecules every <I>N</I>
steps, you should set <I>M</I> to 30. If only the water's oxygen atoms
were in the fix group, then two hydrogen atoms would be deleted when
an oxygen atom is selected for deletion, whether the hydrogens are
inside the evaporation region or not.
</P>
<P>Note that neighbor lists are re-built on timesteps that atoms are
removed. Thus you should not remove atoms too frequently or you will
incur overhead due to the cost of building neighbor lists.
</P>
<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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global scalar, which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
cummulative number of deleted atoms. The scalar value calculated by
this fix is "intensive".
</P>
<P>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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_deposit.html">fix deposit</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are molecule = no.
</P>
</HTML>
diff --git a/doc/fix_evaporate.txt b/doc/fix_evaporate.txt
index 147fc1445..331accb88 100644
--- a/doc/fix_evaporate.txt
+++ b/doc/fix_evaporate.txt
@@ -1,87 +1,87 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix evaporate command :h3
[Syntax:]
fix ID group-ID evaporate N M region-ID seed :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
evaporate = style name of this fix command :l
N = delete atoms every this many timesteps :l
M = number of atoms to delete each time :l
region-ID = ID of region within which to perform deletions :l
seed = random number seed to use for choosing atoms to delete :l
zero or more keyword/value pairs may be appended :l
keyword = {molecule}
{molecule} value = {no} or {yes} :pre
:ule
[Examples:]
fix 1 solvent evaporate 1000 10 surface 49892
fix 1 solvent evaporate 1000 10 surface 38277 molecule yes :pre
[Description:]
Remove M atoms from the simulation every N steps. This can be used,
for example, to model evaporation of solvent particles or moleclues
(i.e. drying) of a system. Every N steps, the number of atoms in the
fix group and within the specifed region are counted. M of these are
chosen at random and deleted. If there are less than M eligible
particles, then all of them are deleted.
If the setting for the {molecule} keyword is {no}, then only single
atoms are deleted. In this case, you should insure you do not delete
only a portion of a molecule (only some of its atoms), or LAMMPS will
soon generate an error when it tries to find those atoms. LAMMPS will
warn you if any of the atoms eligible for deletion have a non-zero
molecule ID, but does not check for this at the time of deletion.
If the setting for the {molecule} keyword is {yes}, then when an atom
is chosen for deletion, the entire molecule it is part of is deleted.
The count of deleted atoms is incremented by the number of atoms in
the molecule, which may make it exceed {M}. If the molecule ID of the
chosen atom is 0, then it is assumed to not be part of a molecule, and
just the single atom is deleted.
As an example, if you wish to delete 10 water molecules every {N}
steps, you should set {M} to 30. If only the water's oxygen atoms
were in the fix group, then two hydrogen atoms would be deleted when
an oxygen atom is selected for deletion, whether the hydrogens are
inside the evaporation region or not.
Note that neighbor lists are re-built on timesteps that atoms are
removed. Thus you should not remove atoms too frequently or you will
incur overhead due to the cost of building neighbor lists.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global scalar, which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the
+"output commands"_Section_howto.html#howto_15. The scalar is the
cummulative number of deleted atoms. The scalar value calculated by
this fix is "intensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix deposit"_fix_deposit.html
[Default:]
The option defaults are molecule = no.
diff --git a/doc/fix_external.html b/doc/fix_external.html
index fe57859db..d08bffc4e 100644
--- a/doc/fix_external.html
+++ b/doc/fix_external.html
@@ -1,83 +1,83 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix external command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID external
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>external = style name of this fix command
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all external
</PRE>
<P><B>Description:</B>
</P>
<P>This fix makes a callback each timestep or minimization iteration to
an external driver program that is using LAMMPS as a library. This is
a way to let another program compute forces on atoms which LAMMPS will
include in its dynamics performed by the <A HREF = "run.html">run</A> command or its
iterations performed by the <A HREF = "minimize.html">minimize</A> command
</P>
<P>The callback function "foo" will be invoked every timestep or
iteration as:
</P>
<PRE>foo(ptr,timestep,nlocal,ids,x,fexternal);
</PRE>
<P>which has this prototype:
</P>
<P>void foo(void *, int, int, int *, double **, double **);
</P>
<P>The arguments are as follows:
</P>
<UL><LI>ptr = pointer provided by and simply passed back to external driver
<LI>timestep = current LAMMPS timestep
<LI>nlocal = # of atoms on this processor
<LI>ids = list of atom IDs on this processor
<LI>x = coordinates of atoms on this processor
<LI>fexternal = forces on atoms on this processor
</UL>
<P>Fexternal are the forces returned by the driver program,
which LAMMPS adds to the current force on each atom.
</P>
<P>See the couple/lammps_quest/lmpqst.cpp file in the LAMMPS distribution
for an example of a coupling application that uses this fix, and how
it makes a call to the fix to specify what function the fix should
callback to. The sample application performs classical MD using
quantum forces computed by a density functional code <A HREF = "http://dft.sandia.gov/Quest">Quest</A>.
</P>
<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>. 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#4_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.
+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.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command. However, LAMMPS
knows nothing about the energy associated with these forces. So you
should perform the minimization based on a force tolerance, not an
energy tolerance.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_external.txt b/doc/fix_external.txt
index 74c0b0b88..f8e12ded3 100644
--- a/doc/fix_external.txt
+++ b/doc/fix_external.txt
@@ -1,78 +1,78 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix external command :h3
[Syntax:]
fix ID group-ID external :pre
ID, group-ID are documented in "fix"_fix.html command
external = style name of this fix command :ul
[Examples:]
fix 1 all external :pre
[Description:]
This fix makes a callback each timestep or minimization iteration to
an external driver program that is using LAMMPS as a library. This is
a way to let another program compute forces on atoms which LAMMPS will
include in its dynamics performed by the "run"_run.html command or its
iterations performed by the "minimize"_minimize.html command
The callback function "foo" will be invoked every timestep or
iteration as:
foo(ptr,timestep,nlocal,ids,x,fexternal); :pre
which has this prototype:
void foo(void *, int, int, int *, double **, double **);
The arguments are as follows:
ptr = pointer provided by and simply passed back to external driver
timestep = current LAMMPS timestep
nlocal = # of atoms on this processor
ids = list of atom IDs on this processor
x = coordinates of atoms on this processor
fexternal = forces on atoms on this processor :ul
Fexternal are the forces returned by the driver program,
which LAMMPS adds to the current force on each atom.
See the couple/lammps_quest/lmpqst.cpp file in the LAMMPS distribution
for an example of a coupling application that uses this fix, and how
it makes a call to the fix to specify what function the fix should
callback to. The sample application performs classical MD using
quantum forces computed by a density functional code "Quest"_quest.
:link(quest,http://dft.sandia.gov/Quest)
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command. However, LAMMPS
knows nothing about the energy associated with these forces. So you
should perform the minimization based on a force tolerance, not an
energy tolerance.
[Restrictions:] none
[Related commands:] none
[Default:] none
diff --git a/doc/fix_freeze.html b/doc/fix_freeze.html
index 18cb51625..8cf86af53 100644
--- a/doc/fix_freeze.html
+++ b/doc/fix_freeze.html
@@ -1,91 +1,91 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix freeze command
</H3>
<H3>fix freeze/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID freeze
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>freeze = style name of this fix command
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 2 bottom freeze
</PRE>
<P><B>Description:</B>
</P>
<P>Zero out the force and torque on a granular particle. This is useful
for preventing certain particles from moving in a simulation. The
<A HREF = "pair_gran.html">granular pair styles</A> also detect if this fix has been
defined and compute interactions between frozen and non-frozen
particles appropriately, as if the frozen particle has infinite mass.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global 3-vector of forces, which can be accessed
-by various <A HREF = "Section_howto.html#4_15">output commands</A>. This is the
+by various <A HREF = "Section_howto.html#howto_15">output commands</A>. This is the
total force on the group of atoms before the forces on individual
atoms are changed by the fix. The vector values calculated by this
fix are "extensive".
</P>
<P>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 "granular" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>There can only be a single freeze fix defined. This is because other
the <A HREF = "pair_gran.html">granular pair styles</A> treat frozen particles
differently and need to be able to reference a single group to which
this fix is applied.
</P>
<P><B>Related commands:</B> none
</P>
<P><A HREF = "atom_style.html">atom_style sphere</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_freeze.txt b/doc/fix_freeze.txt
index 45cae7bbb..52c069877 100644
--- a/doc/fix_freeze.txt
+++ b/doc/fix_freeze.txt
@@ -1,85 +1,85 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix freeze command :h3
fix freeze/cuda command :h3
[Syntax:]
fix ID group-ID freeze :pre
ID, group-ID are documented in "fix"_fix.html command
freeze = style name of this fix command :ul
[Examples:]
fix 2 bottom freeze :pre
[Description:]
Zero out the force and torque on a granular particle. This is useful
for preventing certain particles from moving in a simulation. The
"granular pair styles"_pair_gran.html also detect if this fix has been
defined and compute interactions between frozen and non-frozen
particles appropriately, as if the frozen particle has infinite mass.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global 3-vector of forces, which can be accessed
-by various "output commands"_Section_howto.html#4_15. This is the
+by various "output commands"_Section_howto.html#howto_15. This is the
total force on the group of atoms before the forces on individual
atoms are changed by the fix. The vector values calculated by this
fix are "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
This fix is part of the "granular" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
There can only be a single freeze fix defined. This is because other
the "granular pair styles"_pair_gran.html treat frozen particles
differently and need to be able to reference a single group to which
this fix is applied.
[Related commands:] none
"atom_style sphere"_atom_style.html
[Default:] none
diff --git a/doc/fix_gcmc.html b/doc/fix_gcmc.html
new file mode 100644
index 000000000..c2a5db81a
--- /dev/null
+++ b/doc/fix_gcmc.html
@@ -0,0 +1,187 @@
+<HTML>
+<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
+</CENTER>
+
+
+
+
+
+
+<HR>
+
+<H3>fix gcmc command
+</H3>
+<P><B>Syntax:</B>
+</P>
+<PRE>fix ID group-ID gcmc N X M type seed T mu displace keyword values ...
+</PRE>
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+
+<LI>gcmc = style name of this fix command
+
+<LI>N = invoke this fix every N steps
+
+<LI>X = number of exchanges to attempt every N steps
+
+<LI>M = number of MC displacements to attempt every N steps
+
+<LI>type = atom type of exchanged particles
+
+<LI>seed = random # seed (positive integer)
+
+<LI>T = temperature of the ideal gas reservoir (temperature units)
+
+<LI>mu = chemical potential of the ideal gas reservoir (energy units)
+
+<LI>displace = maximum Monte Carlo displacement distance (length units)
+
+<LI>zero or more keyword/value pairs may be appended to args
+
+<PRE>keyword = <I>molecule</I>
+ <I>molecule</I> value = <I>no</I> or <I>yes</I>
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix 2 all gcmc 10 1000 1000 2 29494 298.0 -0.5 0.01
+fix 3 all gcmc 10 100 100 1 3456543 3.0 -2.5 0.1 molecule yes
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>This fix performs grand canonical Monte Carlo (GCMC) exchanges of
+particles of the given type with an imaginary ideal gas reservoir at
+the specified T and chemical potential (mu) as discussed in
+<A HREF = "#Frenkel">(Frenkel)</A>. If used with the <A HREF = "fix_nh.html">fix nvt</A> command,
+simulations in the grand canonical enemble (muVT, constant chemical
+potential, constant volume, and constant temperature) can be
+performed. Specific uses include computing isotherms in microporous
+materials, or computing vapor-liquid coexistence curves.
+</P>
+<P>Perform up to X exchanges of particles of the given type between the
+simulation domain and the imaginary reservoir every N timesteps. Also
+perform M Monte Carlo displacements of particles of the given type
+within the simulation domain. M should typically be chosen to be
+approximately equal to the expected number of particles of the given
+type within the domain, which will result in roughly one MC
+translation per particle per MC cycle.
+</P>
+<P>This fix cannot be used to perform MC displacements of particles other
+than the exchanged type. All particles in the simulation domain can be
+moved using regular time integration displacements, e.g. via
+<A HREF = "fix_nvt.html">fix_nvt</A>, resulting in a hybrid GCMC+MD simulation.
+</P>
+<P>If used with <A HREF = "fix_nvt.html">fix_nvt</A>, the temperature of the imaginary
+reservoir, T, should be set to be equivalent to the target temperature
+used in <A HREF = "fix_nvt.html">fix_nvt</A>. Otherwise, the imaginary reservoir
+will not be in thermal equilibrium with the simulation domain.
+</P>
+<P>Note that neighbor lists are re-built every timestep that this fix is
+invoked, so you should not set N to be too small. However, periodic
+rebuilds are necessary in order to avoid dangerous rebuilds and missed
+interactions. Specifically, avoid performing so many MC displacements
+per timestep that a particle can move beyond the neighbor list skin
+distance. See the <A HREF = "neighbor.html">neighbor</A> command for details.
+</P>
+<P>When a particle is to be inserted, its coordinates are chosen as a
+random position within the current simulation domain, and its velocity
+is randomly chosen from the specified temperature distribution given
+by T.
+</P>
+<P>Exchanged particles have the specified atom type and are assigned to
+two groups: the default group "all" and the group specified in the fix
+gcmc command (which can also be "all").
+</P>
+<P>If the setting for the <I>molecule</I> keyword is <I>no</I>, then only single
+atoms are exchanged. In this case, you should ensure you do not
+delete only a portion of a molecule (only some of its atoms), or
+LAMMPS will soon generate an error when it tries to find those atoms.
+LAMMPS will warn you if any of the atoms eligible for deletion have a
+non-zero molecule ID, but does not check for this at the time of
+deletion.
+</P>
+<P>If the setting for the <I>molecule</I> keyword is <I>yes</I>, entire molecules
+are exchanged. This feature is not yet supported.
+</P>
+<P>Use of this fix typically will cause the number of atoms to fluctuate,
+therefore, you will want to use the
+<A HREF = "compute_modify.html">compute_modify</A> command to insure that the
+current number of atoms is used as a normalizing factor each time
+temperature is computed. Here is the necessary command:
+</P>
+<PRE>compute_modify thermo_temp dynamic yes
+</PRE>
+<P>If LJ units are used, note that a value of 0.18292026 is used by this
+fix as the reduced value for Planck's constant. This value was
+derived from LJ paramters for argon, where h* = h/sqrt(sigma^2 *
+epsilon * mass), sigma = 3.429 angstroms, epsilon/k = 121.85 K, and
+mass = 39.948 amu.
+</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 the random
+number generator seed, the next timestep for MC exchanges, 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.
+</P>
+<P>This fix computes a global vector of length 6, which can be accessed
+by various <A HREF = "Section_howto.html#howto_15">output commands</A>. The vector
+values are the following global cummulative quantities:
+</P>
+<UL><LI>1 = displacement attempts
+<LI>2 = displacement successes
+<LI>3 = deletion attempts
+<LI>4 = deletion successes
+<LI>5 = insertion attempts
+<LI>6 = insertion successes
+</UL>
+<P>The vector values calculated by this fix are "extensive".
+</P>
+<P>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 "mc" 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>Do not set "neigh_modify once yes" or else this fix will never be
+called. Reneighboring is required.
+</P>
+<P>You cannot currently exchange charged particles or molecules with a
+net charge.
+</P>
+<P>Only pairwise interactions, as defined by the
+<A HREF = "pair_style.html">pair_style</A> command, are included in this
+calculation. Long-range interactions due to a
+<A HREF = "kspace_style.html">kspace_style</A> command are not included. Not all
+pair potentials can be evaluated in a pairwise mode as required by
+this fix. For example, 3-body potentials, such as
+<A HREF = "pair_tersoff.html">Tersoff</A> and <A HREF = "pair_sw.html">Stillinger-Weber</A> cannot
+be used. <A HREF = "pair_eam.html">EAM</A> potentials for metals only include the
+pair potential portion of the EAM interaction, not the embedding term.
+</P>
+<P><B>Related commands:</B>
+</P>
+<P><A HREF = "fix_nvt.html">fix_nvt</A>, <A HREF = "neighbor.html">neighbor</A>,
+<A HREF = "fix_deposit.html">fix_deposit</A>, <A HREF = "fix_evaporate.html">fix_evaporate</A>
+</P>
+<P><B>Default:</B>
+</P>
+<P>The option defaults are molecule = no.
+</P>
+<HR>
+
+<A NAME = "Frenkel"></A>
+
+<P><B>(Frenkel)</B> Frenkel and Smit, Understanding Molecular Simulation,
+Academic Press, London, 2002.
+</P>
+</HTML>
diff --git a/doc/fix_gcmc.txt b/doc/fix_gcmc.txt
new file mode 100644
index 000000000..ecf56d1de
--- /dev/null
+++ b/doc/fix_gcmc.txt
@@ -0,0 +1,169 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+fix gcmc command :h3
+
+[Syntax:]
+
+fix ID group-ID gcmc N X M type seed T mu displace keyword values ... :pre
+
+ID, group-ID are documented in "fix"_fix.html command :ulb,l
+gcmc = style name of this fix command :l
+N = invoke this fix every N steps :l
+X = number of exchanges to attempt every N steps :l
+M = number of MC displacements to attempt every N steps :l
+type = atom type of exchanged particles :l
+seed = random # seed (positive integer) :l
+T = temperature of the ideal gas reservoir (temperature units) :l
+mu = chemical potential of the ideal gas reservoir (energy units) :l
+displace = maximum Monte Carlo displacement distance (length units) :l
+zero or more keyword/value pairs may be appended to args :l
+keyword = {molecule}
+ {molecule} value = {no} or {yes} :pre
+:ule
+
+[Examples:]
+
+fix 2 all gcmc 10 1000 1000 2 29494 298.0 -0.5 0.01
+fix 3 all gcmc 10 100 100 1 3456543 3.0 -2.5 0.1 molecule yes :pre
+
+[Description:]
+
+This fix performs grand canonical Monte Carlo (GCMC) exchanges of
+particles of the given type with an imaginary ideal gas reservoir at
+the specified T and chemical potential (mu) as discussed in
+"(Frenkel)"_#Frenkel. If used with the "fix nvt"_fix_nh.html command,
+simulations in the grand canonical enemble (muVT, constant chemical
+potential, constant volume, and constant temperature) can be
+performed. Specific uses include computing isotherms in microporous
+materials, or computing vapor-liquid coexistence curves.
+
+Perform up to X exchanges of particles of the given type between the
+simulation domain and the imaginary reservoir every N timesteps. Also
+perform M Monte Carlo displacements of particles of the given type
+within the simulation domain. M should typically be chosen to be
+approximately equal to the expected number of particles of the given
+type within the domain, which will result in roughly one MC
+translation per particle per MC cycle.
+
+This fix cannot be used to perform MC displacements of particles other
+than the exchanged type. All particles in the simulation domain can be
+moved using regular time integration displacements, e.g. via
+"fix_nvt"_fix_nvt.html, resulting in a hybrid GCMC+MD simulation.
+
+If used with "fix_nvt"_fix_nvt.html, the temperature of the imaginary
+reservoir, T, should be set to be equivalent to the target temperature
+used in "fix_nvt"_fix_nvt.html. Otherwise, the imaginary reservoir
+will not be in thermal equilibrium with the simulation domain.
+
+Note that neighbor lists are re-built every timestep that this fix is
+invoked, so you should not set N to be too small. However, periodic
+rebuilds are necessary in order to avoid dangerous rebuilds and missed
+interactions. Specifically, avoid performing so many MC displacements
+per timestep that a particle can move beyond the neighbor list skin
+distance. See the "neighbor"_neighbor.html command for details.
+
+When a particle is to be inserted, its coordinates are chosen as a
+random position within the current simulation domain, and its velocity
+is randomly chosen from the specified temperature distribution given
+by T.
+
+Exchanged particles have the specified atom type and are assigned to
+two groups: the default group "all" and the group specified in the fix
+gcmc command (which can also be "all").
+
+If the setting for the {molecule} keyword is {no}, then only single
+atoms are exchanged. In this case, you should ensure you do not
+delete only a portion of a molecule (only some of its atoms), or
+LAMMPS will soon generate an error when it tries to find those atoms.
+LAMMPS will warn you if any of the atoms eligible for deletion have a
+non-zero molecule ID, but does not check for this at the time of
+deletion.
+
+If the setting for the {molecule} keyword is {yes}, entire molecules
+are exchanged. This feature is not yet supported.
+
+Use of this fix typically will cause the number of atoms to fluctuate,
+therefore, you will want to use the
+"compute_modify"_compute_modify.html command to insure that the
+current number of atoms is used as a normalizing factor each time
+temperature is computed. Here is the necessary command:
+
+compute_modify thermo_temp dynamic yes :pre
+
+If LJ units are used, note that a value of 0.18292026 is used by this
+fix as the reduced value for Planck's constant. This value was
+derived from LJ paramters for argon, where h* = h/sqrt(sigma^2 *
+epsilon * mass), sigma = 3.429 angstroms, epsilon/k = 121.85 K, and
+mass = 39.948 amu.
+
+[Restart, fix_modify, output, run start/stop, minimize info:]
+
+This fix writes the state of the deposition to "binary restart
+files"_restart.html. This includes information about the random
+number generator seed, the next timestep for MC exchanges, etc. See
+the "read_restart"_read_restart.html 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.
+
+None of the "fix_modify"_fix_modify.html options are relevant to this
+fix.
+
+This fix computes a global vector of length 6, which can be accessed
+by various "output commands"_Section_howto.html#howto_15. The vector
+values are the following global cummulative quantities:
+
+1 = displacement attempts
+2 = displacement successes
+3 = deletion attempts
+4 = deletion successes
+5 = insertion attempts
+6 = insertion successes :ul
+
+The vector values calculated by this fix are "extensive".
+
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command. This fix is not invoked during "energy
+minimization"_minimize.html.
+
+[Restrictions:]
+
+This fix is part of the "mc" package. It is only enabled if LAMMPS
+was built with that package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
+
+Do not set "neigh_modify once yes" or else this fix will never be
+called. Reneighboring is required.
+
+You cannot currently exchange charged particles or molecules with a
+net charge.
+
+Only pairwise interactions, as defined by the
+"pair_style"_pair_style.html command, are included in this
+calculation. Long-range interactions due to a
+"kspace_style"_kspace_style.html command are not included. Not all
+pair potentials can be evaluated in a pairwise mode as required by
+this fix. For example, 3-body potentials, such as
+"Tersoff"_pair_tersoff.html and "Stillinger-Weber"_pair_sw.html cannot
+be used. "EAM"_pair_eam.html potentials for metals only include the
+pair potential portion of the EAM interaction, not the embedding term.
+
+[Related commands:]
+
+"fix_nvt"_fix_nvt.html, "neighbor"_neighbor.html,
+"fix_deposit"_fix_deposit.html, "fix_evaporate"_fix_evaporate.html
+
+[Default:]
+
+The option defaults are molecule = no.
+
+:line
+
+:link(Frenkel)
+[(Frenkel)] Frenkel and Smit, Understanding Molecular Simulation,
+Academic Press, London, 2002.
diff --git a/doc/fix_gravity.html b/doc/fix_gravity.html
index 7c40c5e78..3446d9b08 100644
--- a/doc/fix_gravity.html
+++ b/doc/fix_gravity.html
@@ -1,131 +1,131 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix gravity command
</H3>
<H3>fix gravity/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group gravity style magnitude args
</PRE>
<UL><LI>ID, group are documented in <A HREF = "fix.html">fix</A> command
<LI>gravity = style name of this fix command
<LI>magnitude = size of acceleration (force/mass units)
<LI>style = <I>chute</I> or <I>spherical</I> or <I>gradient</I> or <I>vector</I>
<PRE> <I>chute</I> args = angle
angle = angle in +x away from -z or -y axis in 3d/2d (in degrees)
<I>spherical</I> args = phi theta
phi = azimuthal angle from +x axis (in degrees)
theta = angle from +z or +y axis in 3d/2d (in degrees)
<I>gradient</I> args = phi theta phi_grad theta_grad
phi = azimuthal angle from +x axis (in degrees)
theta = angle from +z or +y axis in 3d/2d (in degrees)
phi_grad = rate of change of angle phi (full rotations per time unit)
theta_grad = rate of change of angle theta (full rotations per time unit)
<I>vector</I> args = x y z
x y z = vector direction to apply the acceleration
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all gravity 1.0 chute 24.0
fix 1 all gravity 1.0 spherical 0.0 -180.0
fix 1 all gravity 1.0 gradient 0.0 -180.0 0.0 0.1
fix 1 all gravity 100.0 vector 1 1 0
</PRE>
<P><B>Description:</B>
</P>
<P>Impose an additional acceleration on each particle in the group. This
fix is typically used with granular systems to include a "gravity"
term acting on the macroscopic particles. More generally, it can
represent any kind of driving field, e.g. a pressure gradient inducing
a Poiseuille flow in a fluid. Note that this fix operates differently
than the <A HREF = "fix_addforce.html">fix addforce</A> command. The addforce fix
adds the same force to each atom, independent of its mass. This
command imparts the same acceleration to each atom (force/mass).
</P>
<P>The <I>magnitude</I> of the acceleration is specified in force/mass units.
For granular systems (LJ units) this is typically 1.0. See the
<A HREF = "units.html">units</A> command for details.
</P>
<P>Style <I>chute</I> is typically used for simulations of chute flow where
the specified angle is the chute angle, with flow occurring in the +x
direction. For 3d systems, the tilt is away from the z axis; for 2d
systems, the tilt is away from the y axis.
</P>
<P>Style <I>spherical</I> allows an arbitrary 3d direction to be specified for
the acceleration vector. Phi and theta are defined in the usual
spherical coordinates. Thus for acceleration acting in the -z
direction, theta would be 180.0 (or -180.0). Theta = 90.0 and phi =
-90.0 would mean acceleration acts in the -y direction. For 2d
systems, <I>phi</I> is ignored and <I>theta</I> is an angle in the xy plane
where theta = 0.0 is the y-axis.
</P>
<P>Style <I>gradient</I> is the same as style <I>spherical</I> except that the
direction of the acceleration vector is time dependent. The units of
the gradient arguments are in full rotations per time unit. E.g. a
timestep of 0.001 and a gradient of 0.1 means the acceleration vector
would rotate thru 360 degrees every 10,000 timesteps. For the
time-dependent case, the initial direction of the acceleration vector
is set to phi,theta when the fix is specified and evolves thereafter.
For 2d systems, <I>phi</I> and <I>phi_grad</I> are ignored.
</P>
<P>Style <I>vector</I> imposes an acceleration in the vector direction given
by (x,y,z). For 2d systems, the z component is ignored.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</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>. 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#4_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.
+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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "atom_style.html">atom_style sphere</A>, <A HREF = "fix_addforce.html">fix addforce</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_gravity.txt b/doc/fix_gravity.txt
index cb2c90221..1ee4b5ce3 100644
--- a/doc/fix_gravity.txt
+++ b/doc/fix_gravity.txt
@@ -1,120 +1,120 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix gravity command :h3
fix gravity/cuda command :h3
[Syntax:]
fix ID group gravity style magnitude args :pre
ID, group are documented in "fix"_fix.html command :ulb,l
gravity = style name of this fix command :l
magnitude = size of acceleration (force/mass units) :l
style = {chute} or {spherical} or {gradient} or {vector} :l
{chute} args = angle
angle = angle in +x away from -z or -y axis in 3d/2d (in degrees)
{spherical} args = phi theta
phi = azimuthal angle from +x axis (in degrees)
theta = angle from +z or +y axis in 3d/2d (in degrees)
{gradient} args = phi theta phi_grad theta_grad
phi = azimuthal angle from +x axis (in degrees)
theta = angle from +z or +y axis in 3d/2d (in degrees)
phi_grad = rate of change of angle phi (full rotations per time unit)
theta_grad = rate of change of angle theta (full rotations per time unit)
{vector} args = x y z
x y z = vector direction to apply the acceleration :pre
:ule
[Examples:]
fix 1 all gravity 1.0 chute 24.0
fix 1 all gravity 1.0 spherical 0.0 -180.0
fix 1 all gravity 1.0 gradient 0.0 -180.0 0.0 0.1
fix 1 all gravity 100.0 vector 1 1 0 :pre
[Description:]
Impose an additional acceleration on each particle in the group. This
fix is typically used with granular systems to include a "gravity"
term acting on the macroscopic particles. More generally, it can
represent any kind of driving field, e.g. a pressure gradient inducing
a Poiseuille flow in a fluid. Note that this fix operates differently
than the "fix addforce"_fix_addforce.html command. The addforce fix
adds the same force to each atom, independent of its mass. This
command imparts the same acceleration to each atom (force/mass).
The {magnitude} of the acceleration is specified in force/mass units.
For granular systems (LJ units) this is typically 1.0. See the
"units"_units.html command for details.
Style {chute} is typically used for simulations of chute flow where
the specified angle is the chute angle, with flow occurring in the +x
direction. For 3d systems, the tilt is away from the z axis; for 2d
systems, the tilt is away from the y axis.
Style {spherical} allows an arbitrary 3d direction to be specified for
the acceleration vector. Phi and theta are defined in the usual
spherical coordinates. Thus for acceleration acting in the -z
direction, theta would be 180.0 (or -180.0). Theta = 90.0 and phi =
-90.0 would mean acceleration acts in the -y direction. For 2d
systems, {phi} is ignored and {theta} is an angle in the xy plane
where theta = 0.0 is the y-axis.
Style {gradient} is the same as style {spherical} except that the
direction of the acceleration vector is time dependent. The units of
the gradient arguments are in full rotations per time unit. E.g. a
timestep of 0.001 and a gradient of 0.1 means the acceleration vector
would rotate thru 360 degrees every 10,000 timesteps. For the
time-dependent case, the initial direction of the acceleration vector
is set to phi,theta when the fix is specified and evolves thereafter.
For 2d systems, {phi} and {phi_grad} are ignored.
Style {vector} imposes an acceleration in the vector direction given
by (x,y,z). For 2d systems, the z component is ignored.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"atom_style sphere"_atom_style.html, "fix addforce"_fix_addforce.html
[Default:] none
diff --git a/doc/fix_heat.html b/doc/fix_heat.html
index 293e131e7..e871f5f48 100644
--- a/doc/fix_heat.html
+++ b/doc/fix_heat.html
@@ -1,104 +1,104 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix heat command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID heat N eflux
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>heat = style name of this fix command
<LI>N = add/subtract heat every this many timesteps
<LI>eflux = rate of heat addition or subtraction (energy/time units)
<LI>zero or more keyword/value pairs may be appended to args
<LI>keyword = <I>region</I>
<PRE> <I>region</I> value = region-ID
region-ID = ID of region atoms must be in to have added force
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 3 qin heat 1 1.0
fix 4 qout heat 1 -1.0 region top
</PRE>
<P><B>Description:</B>
</P>
<P>Add non-translational kinetic energy (heat) to a group of atoms such
that their aggregate momentum is conserved. Two of these fixes can be
used to establish a temperature gradient across a simulation domain by
adding heat (energy) to one group of atoms (hot reservoir) and
subtracting heat from another (cold reservoir). E.g. a simulation
sampling from the McDLT ensemble.
</P>
<P>If the <I>region</I> keyword is used, the atom must be in both the group
and the specified geometric <A HREF = "region.html">region</A> in order to have
energy added or subtracted to it. If not specified, then the atoms in
the group are affected wherever they may move to.
</P>
<P>Heat addition/subtraction is performed every N timesteps. The <I>eflux</I>
parameter determines the change in aggregate energy of the entire
group of atoms per unit time, e.g. in eV/psec for <A HREF = "units.html">metal
units</A>. Thus it is an "extensive" quantity, meaning its
magnitude should be scaled with the number of atoms in the group.
Since <I>eflux</I> is independent of N or the <A HREF = "timestep.html">timestep</A>, a
larger value of N will add/subtract a larger amount of energy each
time the fix is invoked. If heat is subtracted from the system too
aggressively so that the group's kinetic energy would go to zero,
LAMMPS halts with an error message.
</P>
<P>Fix heat is different from a thermostat such as <A HREF = "fix_nh.html">fix nvt</A>
or <A HREF = "fix_temp_rescale.html">fix temp/rescale</A> in that energy is
added/subtracted continually. Thus if there isn't another mechanism
in place to counterbalance this effect, the entire system will heat or
cool continuously. You can use multiple heat fixes so that the net
energy change is 0.0 or use <A HREF = "fix_viscous.html">fix viscous</A> to drain
energy from the system.
</P>
<P>This fix does not change the coordinates of its atoms; it only scales
their velocities. Thus you must still use an integration fix
(e.g. <A HREF = "fix_nve.html">fix nve</A>) on the affected atoms. This fix should
not normally be used on atoms that have their temperature controlled
by another fix - e.g. <A HREF = "fix_nh.html">fix nvt</A> or <A HREF = "fix_langevin.html">fix
langevin</A> fix.
</P>
<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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. This scalar is the most
-recent value by which velocites were scaled. The scalar value
+<A HREF = "Section_howto.html#howto_15">output commands</A>. This scalar is the
+most recent value by which velocites were scaled. The scalar value
calculated by this fix is "intensive".
</P>
<P>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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_temp.html">compute temp</A>, <A HREF = "compute_temp_region.html">compute
temp/region</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_heat.txt b/doc/fix_heat.txt
index 9848ccb54..b6c3ee356 100644
--- a/doc/fix_heat.txt
+++ b/doc/fix_heat.txt
@@ -1,93 +1,93 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix heat command :h3
[Syntax:]
fix ID group-ID heat N eflux :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
heat = style name of this fix command :l
N = add/subtract heat every this many timesteps :l
eflux = rate of heat addition or subtraction (energy/time units) :l
zero or more keyword/value pairs may be appended to args :l
keyword = {region} :l
{region} value = region-ID
region-ID = ID of region atoms must be in to have added force :pre
:ule
[Examples:]
fix 3 qin heat 1 1.0
fix 4 qout heat 1 -1.0 region top :pre
[Description:]
Add non-translational kinetic energy (heat) to a group of atoms such
that their aggregate momentum is conserved. Two of these fixes can be
used to establish a temperature gradient across a simulation domain by
adding heat (energy) to one group of atoms (hot reservoir) and
subtracting heat from another (cold reservoir). E.g. a simulation
sampling from the McDLT ensemble.
If the {region} keyword is used, the atom must be in both the group
and the specified geometric "region"_region.html in order to have
energy added or subtracted to it. If not specified, then the atoms in
the group are affected wherever they may move to.
Heat addition/subtraction is performed every N timesteps. The {eflux}
parameter determines the change in aggregate energy of the entire
group of atoms per unit time, e.g. in eV/psec for "metal
units"_units.html. Thus it is an "extensive" quantity, meaning its
magnitude should be scaled with the number of atoms in the group.
Since {eflux} is independent of N or the "timestep"_timestep.html, a
larger value of N will add/subtract a larger amount of energy each
time the fix is invoked. If heat is subtracted from the system too
aggressively so that the group's kinetic energy would go to zero,
LAMMPS halts with an error message.
Fix heat is different from a thermostat such as "fix nvt"_fix_nh.html
or "fix temp/rescale"_fix_temp_rescale.html in that energy is
added/subtracted continually. Thus if there isn't another mechanism
in place to counterbalance this effect, the entire system will heat or
cool continuously. You can use multiple heat fixes so that the net
energy change is 0.0 or use "fix viscous"_fix_viscous.html to drain
energy from the system.
This fix does not change the coordinates of its atoms; it only scales
their velocities. Thus you must still use an integration fix
(e.g. "fix nve"_fix_nve.html) on the affected atoms. This fix should
not normally be used on atoms that have their temperature controlled
by another fix - e.g. "fix nvt"_fix_nh.html or "fix
langevin"_fix_langevin.html fix.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. This scalar is the most
-recent value by which velocites were scaled. The scalar value
+"output commands"_Section_howto.html#howto_15. This scalar is the
+most recent value by which velocites were scaled. The scalar value
calculated by this fix is "intensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"compute temp"_compute_temp.html, "compute
temp/region"_compute_temp_region.html
[Default:] none
diff --git a/doc/fix_imd.html b/doc/fix_imd.html
index 9f24cc96a..d800f16b1 100644
--- a/doc/fix_imd.html
+++ b/doc/fix_imd.html
@@ -1,178 +1,178 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix imd command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID imd trate port keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>imd = style name of this fix command
<LI>port = port number on which the fix listens for an IMD client
<LI>keyword = <I>unwrap</I> or <I>fscale</I> or <I>trate</I>
<PRE> <I>unwrap</I> arg = <I>on</I> or <I>off</I>
off = coordinates are wrapped back into the principal unit cell (default)
on = "unwrapped" coordinates using the image flags used
<I>fscale</I> arg = factor
factor = floating point number to scale IMD forces (default: 1.0)
<I>trate</I> arg = transmission rate of coordinate data sets (default: 1)
<I>nowait</I> arg = <I>on</I> or <I>off</I>
off = LAMMPS waits to be connected to an IMD client before continuing (default)
on = LAMMPS listens for an IMD client, but continues with the run
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix vmd all imd 5678
fix comm all imd 8888 trate 5 unwrap on fscale 10.0
</PRE>
<P><B>Description:</B>
</P>
<P>This fix implements the "Interactive MD" (IMD) protocol which allows
realtime visualization and manipulation of MD simulations through the
IMD protocol, as initially implemented in VMD and NAMD. Specifically
it allows LAMMPS to connect an IMD client, for example the <A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD
visualization program</A>, so that it can monitor the progress of the
simulation and interactively apply forces to selected atoms.
</P>
<P>If LAMMPS is compiled with the preprocessor flag -DLAMMPS_ASYNC_IMD
then fix imd will use posix threads to spawn a thread on MPI rank 0 in
order to offload data reading and writing from the main execution
thread and potentiall lower the inferred latencies for slow
communication links. This feature has only been tested under linux.
</P>
<P>There are example scripts for using this package with LAMMPS in
examples/USER/imd. Additional examples and a driver for use with the
Novint Falcon game controller as haptic device can be found at:
http://sites.google.com/site/akohlmey/software/vrpn-icms.
</P>
<P>The source code for this fix includes code developed by the
Theoretical and Computational Biophysics Group in the Beckman
Institute for Advanced Science and Technology at the University of
Illinois at Urbana-Champaign. We thank them for providing a software
interface that allows codes like LAMMPS to hook to <A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD</A>.
</P>
<P>Upon initialization of the fix, it will open a communication port on
the node with MPI task 0 and wait for an incoming connection. As soon
as an IMD client is connected, the simulation will continue and the
fix will send the current coordinates of the fix's group to the IMD
client at every trate MD step. When using r-RESPA, trate applies to
the steps of the outmost RESPA level. During a run with an active IMD
connection also the IMD client can request to apply forces to selected
atoms of the fix group.
</P>
<P>The port number selected must be an available network port number. On
many machines, port numbers < 1024 are reserved for accounts with
system manager privilege and specific applications. If multiple imd
fixes would be active at the same time, each needs to use a different
port number.
</P>
<P>The <I>nowait</I> keyword controls the behavior of the fix when no IMD
client is connected. With the default setting of <I>off</I>, LAMMPS will
wait until a connection is made before continuing with the
execution. Setting <I>nowait</I> to <I>on</I> will have the LAMMPS code be ready
to connect to a client, but continue with the simulation. This can for
example be used to monitor the progress of an ongoing calculation
without the need to be permanently connected or having to download a
trajectory file.
</P>
<P>The <I>trate</I> keyword allows to select how often the coordinate data is
sent to the IMD client. It can also be changed on request of the IMD
client through an IMD protocol message. The <I>unwrap</I> keyword allows
to send "unwrapped" coordinates to the IMD client that undo the
wrapping back of coordinates into the principle unit cell, as done by
default in LAMMPS. The <I>fscale</I> keyword allows to apply a scaling
factor to forces transmitted by the IMD client. The IMD protocols
stipulates that forces are transferred in kcal/mol/angstrom under the
assumption that coordinates are given in angstrom. For LAMMPS runs
with different units or as a measure to tweak the forces generated by
the manipulation of the IMD client, this option allows to make
adjustments.
</P>
<P>To connect VMD to a listening LAMMPS simulation on the same machine
with fix imd enabled, one needs to start VMD and load a coordinate or
topology file that matches the fix group. When the VMD command
prompts appears, one types the command line:
</P>
<PRE>imd connect localhost 5678
</PRE>
<P>This assumes that <I>fix imd</I> was started with 5678 as a port
number for the IMD protocol.
</P>
<P>The steps to do interactive manipulation of a running simulation in
VMD are the following:
</P>
<P>In the Mouse menu of the VMD Main window, select "Mouse -> Force ->
Atom". You may alternately select "Residue", or "Fragment" to apply
forces to whole residues or fragments. Your mouse can now be used to
apply forces to your simulation. Click on an atom, residue, or
fragment and drag to apply a force. Click quickly without moving the
mouse to turn the force off. You can also use a variety of 3D position
trackers to apply forces to your simulation. Game controllers or haptic
devices with force-feedback such as the Novint Falcon or Sensable
PHANTOM allow you to feel the resistance due to inertia or interactions
with neighbors that the atoms experience you are trying to move, as if
they were real objects. See the <A HREF = "http://www.ks.uiuc.edu/Research/vmd/imd/">VMD IMD Homepage</A> and the
<A HREF = "http://sites.google.com/site/akohlmey/software/vrpn-icms">VRPN-ICMS Homepage</A> for more details.
</P>
<P>If IMD control messages are received, a line of text describing the
message and its effect will be printed to the LAMMPS output screen, if
screen output is active.
</P>
<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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix. No global scalar or vector or per-atom
-quantities are stored by this fix for access by various <A HREF = "Section_howto.html#4_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.
+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 "user-misc" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>On platforms that support multi-threading, this fix can be compiled in
a way that the coordinate transfers to the IMD client can be handled
from a separate thread, when LAMMPS is compiled with the
-DLAMMPS_ASYNC_IMD preprocessor flag. This should to keep MD loop
times low and transfer rates high, especially for systems with many
atoms and for slow connections.
</P>
<P>When used in combination with VMD, a topology or coordinate file has
to be loaded, which matches (in number and ordering of atoms) the
group the fix is applied to. The fix internally sorts atom IDs by
ascending integer value; in VMD (and thus the IMD protocol) those will
be assigned 0-based consecutive index numbers.
</P>
<P>When using multiple active IMD connections at the same time, each
needs to use a different port number.
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_imd.txt b/doc/fix_imd.txt
index 5c0018dad..66ea5676d 100644
--- a/doc/fix_imd.txt
+++ b/doc/fix_imd.txt
@@ -1,166 +1,166 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix imd command :h3
[Syntax:]
fix ID group-ID imd trate port keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
imd = style name of this fix command :l
port = port number on which the fix listens for an IMD client :l
keyword = {unwrap} or {fscale} or {trate} :l
{unwrap} arg = {on} or {off}
off = coordinates are wrapped back into the principal unit cell (default)
on = "unwrapped" coordinates using the image flags used
{fscale} arg = factor
factor = floating point number to scale IMD forces (default: 1.0)
{trate} arg = transmission rate of coordinate data sets (default: 1)
{nowait} arg = {on} or {off}
off = LAMMPS waits to be connected to an IMD client before continuing (default)
on = LAMMPS listens for an IMD client, but continues with the run :pre
:ule
[Examples:]
fix vmd all imd 5678
fix comm all imd 8888 trate 5 unwrap on fscale 10.0 :pre
[Description:]
This fix implements the "Interactive MD" (IMD) protocol which allows
realtime visualization and manipulation of MD simulations through the
IMD protocol, as initially implemented in VMD and NAMD. Specifically
it allows LAMMPS to connect an IMD client, for example the "VMD
visualization program"_VMD, so that it can monitor the progress of the
simulation and interactively apply forces to selected atoms.
If LAMMPS is compiled with the preprocessor flag -DLAMMPS_ASYNC_IMD
then fix imd will use posix threads to spawn a thread on MPI rank 0 in
order to offload data reading and writing from the main execution
thread and potentiall lower the inferred latencies for slow
communication links. This feature has only been tested under linux.
There are example scripts for using this package with LAMMPS in
examples/USER/imd. Additional examples and a driver for use with the
Novint Falcon game controller as haptic device can be found at:
http://sites.google.com/site/akohlmey/software/vrpn-icms.
The source code for this fix includes code developed by the
Theoretical and Computational Biophysics Group in the Beckman
Institute for Advanced Science and Technology at the University of
Illinois at Urbana-Champaign. We thank them for providing a software
interface that allows codes like LAMMPS to hook to "VMD"_VMD.
Upon initialization of the fix, it will open a communication port on
the node with MPI task 0 and wait for an incoming connection. As soon
as an IMD client is connected, the simulation will continue and the
fix will send the current coordinates of the fix's group to the IMD
client at every trate MD step. When using r-RESPA, trate applies to
the steps of the outmost RESPA level. During a run with an active IMD
connection also the IMD client can request to apply forces to selected
atoms of the fix group.
The port number selected must be an available network port number. On
many machines, port numbers < 1024 are reserved for accounts with
system manager privilege and specific applications. If multiple imd
fixes would be active at the same time, each needs to use a different
port number.
The {nowait} keyword controls the behavior of the fix when no IMD
client is connected. With the default setting of {off}, LAMMPS will
wait until a connection is made before continuing with the
execution. Setting {nowait} to {on} will have the LAMMPS code be ready
to connect to a client, but continue with the simulation. This can for
example be used to monitor the progress of an ongoing calculation
without the need to be permanently connected or having to download a
trajectory file.
The {trate} keyword allows to select how often the coordinate data is
sent to the IMD client. It can also be changed on request of the IMD
client through an IMD protocol message. The {unwrap} keyword allows
to send "unwrapped" coordinates to the IMD client that undo the
wrapping back of coordinates into the principle unit cell, as done by
default in LAMMPS. The {fscale} keyword allows to apply a scaling
factor to forces transmitted by the IMD client. The IMD protocols
stipulates that forces are transferred in kcal/mol/angstrom under the
assumption that coordinates are given in angstrom. For LAMMPS runs
with different units or as a measure to tweak the forces generated by
the manipulation of the IMD client, this option allows to make
adjustments.
To connect VMD to a listening LAMMPS simulation on the same machine
with fix imd enabled, one needs to start VMD and load a coordinate or
topology file that matches the fix group. When the VMD command
prompts appears, one types the command line:
imd connect localhost 5678 :pre
This assumes that {fix imd} was started with 5678 as a port
number for the IMD protocol.
The steps to do interactive manipulation of a running simulation in
VMD are the following:
In the Mouse menu of the VMD Main window, select "Mouse -> Force ->
Atom". You may alternately select "Residue", or "Fragment" to apply
forces to whole residues or fragments. Your mouse can now be used to
apply forces to your simulation. Click on an atom, residue, or
fragment and drag to apply a force. Click quickly without moving the
mouse to turn the force off. You can also use a variety of 3D position
trackers to apply forces to your simulation. Game controllers or haptic
devices with force-feedback such as the Novint Falcon or Sensable
PHANTOM allow you to feel the resistance due to inertia or interactions
with neighbors that the atoms experience you are trying to move, as if
they were real objects. See the "VMD IMD Homepage"_imdvmd and the
"VRPN-ICMS Homepage"_vrpnicms for more details.
If IMD control messages are received, a line of text describing the
message and its effect will be printed to the LAMMPS output screen, if
screen output is active.
:link(VMD,http://www.ks.uiuc.edu/Research/vmd)x
:link(imdvmd,http://www.ks.uiuc.edu/Research/vmd/imd/)
:link(vrpnicms,http://sites.google.com/site/akohlmey/software/vrpn-icms)
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global scalar or vector or per-atom
quantities are stored by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix is part of the "user-misc" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
On platforms that support multi-threading, this fix can be compiled in
a way that the coordinate transfers to the IMD client can be handled
from a separate thread, when LAMMPS is compiled with the
-DLAMMPS_ASYNC_IMD preprocessor flag. This should to keep MD loop
times low and transfer rates high, especially for systems with many
atoms and for slow connections.
When used in combination with VMD, a topology or coordinate file has
to be loaded, which matches (in number and ordering of atoms) the
group the fix is applied to. The fix internally sorts atom IDs by
ascending integer value; in VMD (and thus the IMD protocol) those will
be assigned 0-based consecutive index numbers.
When using multiple active IMD connections at the same time, each
needs to use a different port number.
[Related commands:] none
[Default:] none
diff --git a/doc/fix_indent.html b/doc/fix_indent.html
index b23d54a11..4e77d2e94 100644
--- a/doc/fix_indent.html
+++ b/doc/fix_indent.html
@@ -1,211 +1,211 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix indent command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID indent K keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>indent = style name of this fix command
<LI>K = force constant for indenter surface (force/distance^2 units)
<LI>one or more keyword/value pairs may be appended
<LI>keyword = <I>sphere</I> or <I>cylinder</I> or <I>plane</I> or <I>side</I> or <I>units</I>
<PRE> <I>sphere</I> args = x y z R
x,y,z = initial position of center of indenter (distance units)
R = sphere radius of indenter (distance units)
any of x,y,z,R can be a variable (see below)
<I>cylinder</I> args = dim c1 c2 R
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)
R = cylinder radius of indenter (distance units)
any of c1,c2,R can be a variable (see below)
<I>plane</I> args = dim pos side
dim = <I>x</I> or <I>y</I> or <I>z</I> = plane perpendicular to this dimension
pos = position of plane in dimension x, y, or z (distance units)
pos can be a variable (see below)
side = <I>lo</I> or <I>hi</I>
<I>side</I> value = <I>in</I> or <I>out</I>
<I>in</I> = the indenter acts on particles inside the sphere or cylinder
<I>out</I> = the indenter acts on particles outside the sphere or cylinder
<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 1 all indent 10.0 sphere 0.0 0.0 15.0 3.0
fix 1 all indent 10.0 sphere v_x v_y 0.0 v_radius side in
fix 2 flow indent 10.0 cylinder z 0.0 0.0 10.0 units box
</PRE>
<P><B>Description:</B>
</P>
<P>Insert an indenter within a simulation box. The indenter repels all
atoms that touch it, so it can be used to push into a material or as
an obstacle in a flow. Or it can be used as a constraining wall
around a simulation; see the discussion of the <I>side</I> keyword below.
</P>
<P>The indenter can either be spherical or cylindrical or planar. You
must set one of those 3 keywords.
</P>
<P>A spherical indenter exerts a force of magnitude
</P>
<PRE>F(r) = - K (r - R)^2
</PRE>
<P>on each atom where <I>K</I> is the specified force constant, <I>r</I> is the
distance from the atom to the center of the indenter, and <I>R</I> is the
radius of the indenter. The force is repulsive and F(r) = 0 for <I>r</I> >
<I>R</I>.
</P>
<P>A cylindrical indenter exerts the same force, except that <I>r</I> is the
distance from the atom to the center axis of the cylinder. The
cylinder extends infinitely along its axis.
</P>
<P>Spherical and cylindrical indenters account for periodic boundaries in
two ways. First, the center point of a spherical indenter (x,y,z) or
axis of a cylindrical indenter (c1,c2) is remapped back into the
simulation box, if the box is periodic in a particular dimension.
This occurs every timestep if the indenter geometry is specified with
a variable (see below), e.g. it is moving over time. Second, the
calculation of distance to the indenter center or axis accounts for
periodic boundaries. Both of these mean that an indenter can
effectively move through and straddle one or more periodic boundaries.
</P>
<P>A planar indenter is really an axis-aligned infinite-extent wall
exerting the same force on atoms in the system, where <I>R</I> is the
position of the plane and <I>r-R</I> is the distance from the plane. If
the <I>side</I> parameter of the plane is specified as <I>lo</I> then it will
indent from the lo end of the simulation box, meaning that atoms with
a coordinate less than the plane's current position will be pushed
towards the hi end of the box and atoms with a coordinate higher than
the plane's current position will feel no force. Vice versa if <I>side</I>
is specified as <I>hi</I>.
</P>
<P>Any of the 4 quantities defining a spherical indenter's geometry can
be specified as an equal-style <A HREF = "variable.html">variable</A>, namely <I>x</I>,
<I>y</I>, <I>z</I>, or <I>R</I>. Similarly, for a cylindrical indenter, any of <I>c1</I>,
<I>c2</I>, or <I>R</I>, can be a variable. For a planar indenter, <I>pos</I> can be
a variable. 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 each timestep, and its value used to define the
indenter geometry.
</P>
<P>Note that equal-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. Thus it is easy to specify indenter properties that
change as a function of time or span consecutive runs in a continuous
fashion. For the latter, see the <I>start</I> and <I>stop</I> keywords of the
<A HREF = "run.html">run</A> command and the <I>elaplong</I> keyword of <A HREF = "thermo_style.html">thermo_style
custom</A> for details.
</P>
<P>For example, if a spherical indenter's x-position is specfied as v_x,
then this variable definition will keep it's center at a relative
position in the simulation box, 1/4 of the way from the left edge to
the right edge, even if the box size changes:
</P>
<PRE>variable x equal "xlo + 0.25*lx"
</PRE>
<P>Similarly, either of these variable definitions will move the indenter
from an initial position at 2.5 at a constant velocity of 5:
</P>
<PRE>variable x equal "2.5 + 5*elaplong*dt"
variable x equal vdisplace(2.5,5)
</PRE>
<P>If a spherical indenter's radius is specified as v_r, then these
variable definitions will grow the size of the indenter at a specfied
rate.
</P>
<PRE>variable r0 equal 0.0
variable rate equal 1.0
variable r equal "v_r0 + step*dt*v_rate"
</PRE>
<P>If the <I>side</I> keyword is specified as <I>out</I>, which is the default,
then particles outside the indenter are pushded away from its outer
surface, as described above. This only applies to spherical or
cylindrical indenters. If the <I>side</I> keyword is specified as <I>in</I>,
the action of the indenter is reversed. Particles inside the indenter
are pushed away from its inner surface. In other words, the indenter
is now a containing wall that traps the particles inside it. If the
radius shrinks over time, it will squeeze the particles.
</P>
<P>The <I>units</I> keyword determines the meaning of the distance units used
to define the indenter geometry. 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.
The (x,y,z) coords of the indenter position are scaled by the x,y,z
lattice spacings respectively. The radius of a spherical or
cylindrical indenter is scaled by the x lattice spacing.
</P>
<P>Note that the units keyword only affects indenter geometry parameters
specified directly with numbers, not those specified as variables. In
the latter case, you should use the <I>xlat</I>, <I>ylat</I>, <I>zlat</I> keywords of
the <A HREF = "thermo_style.html">thermo_style</A> command if you want to include
lattice spacings in a variable formula.
</P>
<P>The force constant <I>K</I> is not affected by the <I>units</I> keyword. It is
always in force/distance^2 units where force and distance are defined
by the <A HREF = "units.html">units</A> command. If you wish K to be scaled by the
lattice spacing, you can define K with a variable whose formula
contains <I>xlat</I>, <I>ylat</I>, <I>zlat</I> keywords of the
<A HREF = "thermo_style.html">thermo_style</A> command, e.g.
</P>
<PRE>variable k equal 100.0/xlat/xlat
fix 1 all indent $k sphere ...
</PRE>
<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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy of interaction between atoms and the indenter to
the system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>. The energy of each particle interacting
with the indenter is K/3 (r - R)^3.
</P>
<P>This fix computes a global scalar energy and a global 3-vector of
-forces (on the indenter), which can be accessed by various <A HREF = "Section_howto.html#4_15">output
+forces (on the indenter), which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
commands</A>. The scalar and vector values
calculated by this fix are "extensive".
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command. Note that if you
define the indenter geometry with a variable using a time-dependent
formula, LAMMPS uses the iteration count in the minimizer as the
timestep. But it is almost certainly a bad idea to have the indenter
change its position or size during a minimization. LAMMPS does not
check if you have done this.
</P>
<P>IMPORTANT NOTE: If you want the atom/indenter interaction energy to be
included in the total potential energy of the system (the quantity
being minimized), you must enable the <A HREF = "fix_modify.html">fix_modify</A>
<I>energy</I> option for this fix.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are side = out and units = lattice.
</P>
</HTML>
diff --git a/doc/fix_indent.txt b/doc/fix_indent.txt
index 3f4983f26..27f33125d 100644
--- a/doc/fix_indent.txt
+++ b/doc/fix_indent.txt
@@ -1,200 +1,200 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix indent command :h3
[Syntax:]
fix ID group-ID indent K keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
indent = style name of this fix command :l
K = force constant for indenter surface (force/distance^2 units) :l
one or more keyword/value pairs may be appended :l
keyword = {sphere} or {cylinder} or {plane} or {side} or {units} :l
{sphere} args = x y z R
x,y,z = initial position of center of indenter (distance units)
R = sphere radius of indenter (distance units)
any of x,y,z,R can be a variable (see below)
{cylinder} args = dim c1 c2 R
dim = {x} or {y} or {z} = axis of cylinder
c1,c2 = coords of cylinder axis in other 2 dimensions (distance units)
R = cylinder radius of indenter (distance units)
any of c1,c2,R can be a variable (see below)
{plane} args = dim pos side
dim = {x} or {y} or {z} = plane perpendicular to this dimension
pos = position of plane in dimension x, y, or z (distance units)
pos can be a variable (see below)
side = {lo} or {hi}
{side} value = {in} or {out}
{in} = the indenter acts on particles inside the sphere or cylinder
{out} = the indenter acts on particles outside the sphere or cylinder
{units} value = {lattice} or {box}
lattice = the geometry is defined in lattice units
box = the geometry is defined in simulation box units :pre
:ule
[Examples:]
fix 1 all indent 10.0 sphere 0.0 0.0 15.0 3.0
fix 1 all indent 10.0 sphere v_x v_y 0.0 v_radius side in
fix 2 flow indent 10.0 cylinder z 0.0 0.0 10.0 units box :pre
[Description:]
Insert an indenter within a simulation box. The indenter repels all
atoms that touch it, so it can be used to push into a material or as
an obstacle in a flow. Or it can be used as a constraining wall
around a simulation; see the discussion of the {side} keyword below.
The indenter can either be spherical or cylindrical or planar. You
must set one of those 3 keywords.
A spherical indenter exerts a force of magnitude
F(r) = - K (r - R)^2 :pre
on each atom where {K} is the specified force constant, {r} is the
distance from the atom to the center of the indenter, and {R} is the
radius of the indenter. The force is repulsive and F(r) = 0 for {r} >
{R}.
A cylindrical indenter exerts the same force, except that {r} is the
distance from the atom to the center axis of the cylinder. The
cylinder extends infinitely along its axis.
Spherical and cylindrical indenters account for periodic boundaries in
two ways. First, the center point of a spherical indenter (x,y,z) or
axis of a cylindrical indenter (c1,c2) is remapped back into the
simulation box, if the box is periodic in a particular dimension.
This occurs every timestep if the indenter geometry is specified with
a variable (see below), e.g. it is moving over time. Second, the
calculation of distance to the indenter center or axis accounts for
periodic boundaries. Both of these mean that an indenter can
effectively move through and straddle one or more periodic boundaries.
A planar indenter is really an axis-aligned infinite-extent wall
exerting the same force on atoms in the system, where {R} is the
position of the plane and {r-R} is the distance from the plane. If
the {side} parameter of the plane is specified as {lo} then it will
indent from the lo end of the simulation box, meaning that atoms with
a coordinate less than the plane's current position will be pushed
towards the hi end of the box and atoms with a coordinate higher than
the plane's current position will feel no force. Vice versa if {side}
is specified as {hi}.
Any of the 4 quantities defining a spherical indenter's geometry can
be specified as an equal-style "variable"_variable.html, namely {x},
{y}, {z}, or {R}. Similarly, for a cylindrical indenter, any of {c1},
{c2}, or {R}, can be a variable. For a planar indenter, {pos} can be
a variable. 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 each timestep, and its value used to define the
indenter geometry.
Note that equal-style variables can specify formulas with various
mathematical functions, and include "thermo_style"_thermo_style.html
command keywords for the simulation box parameters and timestep and
elapsed time. Thus it is easy to specify indenter properties that
change as a function of time or span consecutive runs in a continuous
fashion. For the latter, see the {start} and {stop} keywords of the
"run"_run.html command and the {elaplong} keyword of "thermo_style
custom"_thermo_style.html for details.
For example, if a spherical indenter's x-position is specfied as v_x,
then this variable definition will keep it's center at a relative
position in the simulation box, 1/4 of the way from the left edge to
the right edge, even if the box size changes:
variable x equal "xlo + 0.25*lx" :pre
Similarly, either of these variable definitions will move the indenter
from an initial position at 2.5 at a constant velocity of 5:
variable x equal "2.5 + 5*elaplong*dt"
variable x equal vdisplace(2.5,5) :pre
If a spherical indenter's radius is specified as v_r, then these
variable definitions will grow the size of the indenter at a specfied
rate.
variable r0 equal 0.0
variable rate equal 1.0
variable r equal "v_r0 + step*dt*v_rate" :pre
If the {side} keyword is specified as {out}, which is the default,
then particles outside the indenter are pushded away from its outer
surface, as described above. This only applies to spherical or
cylindrical indenters. If the {side} keyword is specified as {in},
the action of the indenter is reversed. Particles inside the indenter
are pushed away from its inner surface. In other words, the indenter
is now a containing wall that traps the particles inside it. If the
radius shrinks over time, it will squeeze the particles.
The {units} keyword determines the meaning of the distance units used
to define the indenter geometry. A {box} value selects standard
distance units as defined by the "units"_units.html command,
e.g. Angstroms for units = real or metal. A {lattice} value means the
distance units are in lattice spacings. The "lattice"_lattice.html
command must have been previously used to define the lattice spacing.
The (x,y,z) coords of the indenter position are scaled by the x,y,z
lattice spacings respectively. The radius of a spherical or
cylindrical indenter is scaled by the x lattice spacing.
Note that the units keyword only affects indenter geometry parameters
specified directly with numbers, not those specified as variables. In
the latter case, you should use the {xlat}, {ylat}, {zlat} keywords of
the "thermo_style"_thermo_style.html command if you want to include
lattice spacings in a variable formula.
The force constant {K} is not affected by the {units} keyword. It is
always in force/distance^2 units where force and distance are defined
by the "units"_units.html command. If you wish K to be scaled by the
lattice spacing, you can define K with a variable whose formula
contains {xlat}, {ylat}, {zlat} keywords of the
"thermo_style"_thermo_style.html command, e.g.
variable k equal 100.0/xlat/xlat
fix 1 all indent $k sphere ... :pre
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy of interaction between atoms and the indenter to
the system's potential energy as part of "thermodynamic
output"_thermo_style.html. The energy of each particle interacting
with the indenter is K/3 (r - R)^3.
This fix computes a global scalar energy and a global 3-vector of
forces (on the indenter), which can be accessed by various "output
-commands"_Section_howto.html#4_15. The scalar and vector values
+commands"_Section_howto.html#howto_15. The scalar and vector values
calculated by this fix are "extensive".
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command. Note that if you
define the indenter geometry with a variable using a time-dependent
formula, LAMMPS uses the iteration count in the minimizer as the
timestep. But it is almost certainly a bad idea to have the indenter
change its position or size during a minimization. LAMMPS does not
check if you have done this.
IMPORTANT NOTE: If you want the atom/indenter interaction energy to be
included in the total potential energy of the system (the quantity
being minimized), you must enable the "fix_modify"_fix_modify.html
{energy} option for this fix.
[Restrictions:] none
[Related commands:] none
[Default:]
The option defaults are side = out and units = lattice.
diff --git a/doc/fix_langevin.html b/doc/fix_langevin.html
index b304ac44f..17fefcd56 100644
--- a/doc/fix_langevin.html
+++ b/doc/fix_langevin.html
@@ -1,253 +1,253 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix langevin command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID langevin Tstart Tstop damp seed keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>langevin = style name of this fix command
<LI>Tstart,Tstop = desired temperature at start/end of run (temperature units)
<LI>damp = damping parameter (time units)
<LI>seed = random number seed to use for white noise (positive integer)
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>angmom</I> or <I>omega</I> or <I>scale</I> or <I>tally</I> or <I>zero</I>
<PRE> <I>angmom</I> value = <I>no</I> or <I>yes</I>
<I>no</I> = do not thermostat rotational degrees of freedom via the angular momentum
<I>yes</I> = do thermostat rotational degrees of freedom via the angular momentum
<I>omega</I> value = <I>no</I> or <I>yes</I>
<I>no</I> = do not thermostat rotational degrees of freedom via then angular velocity
<I>yes</I> = do thermostat rotational degrees of freedom via the angular velocity
<I>scale</I> values = type ratio
type = atom type (1-N)
ratio = factor by which to scale the damping coefficient
<I>tally</I> value = <I>no</I> or <I>yes</I>
<I>no</I> = do not tally the energy added/subtracted to atoms
<I>yes</I> = do tally the energy added/subtracted to atoms
<I>zero</I> value = <I>no</I> or <I>yes</I>
<I>no</I> = do not set total random force to zero
<I>yes</I> = set total random force to zero
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 3 boundary langevin 1.0 1.0 1000.0 699483
fix 1 all langevin 1.0 1.1 100.0 48279 scale 3 1.5
</PRE>
<P><B>Description:</B>
</P>
<P>Apply a Langevin thermostat as described in <A HREF = "#Schneider">(Schneider)</A>
to a group of atoms which models an interaction with a background
implicit solvent. Used with <A HREF = "fix_nve.html">fix nve</A>, this command
performs Brownian dynamics (BD), since the total force on each atom
will have the form:
</P>
<PRE>F = Fc + Ff + Fr
Ff = - (m / damp) v
Fr is proportional to sqrt(Kb T m / (dt damp))
</PRE>
<P>Fc is the conservative force computed via the usual inter-particle
interactions (<A HREF = "pair_style.html">pair_style</A>,
<A HREF = "bond_style.html">bond_style</A>, etc).
</P>
<P>The Ff and Fr terms are added by this fix on a per-particle basis.
See the <A HREF = "pair_dpd.html">pair_style dpd/tstat</A> command for a
thermostatting option that adds similar terms on a pairwise basis to
pairs of interacting particles.
</P>
<P>Ff is a frictional drag or viscous damping term proportional to the
particle's velocity. The proportionality constant for each atom is
computed as m/damp, where m is the mass of the particle and damp is
the damping factor specified by the user.
</P>
<P>Fr is a force due to solvent atoms at a temperature T randomly bumping
into the particle. As derived from the fluctuation/dissipation
theorem, its magnitude as shown above is proportional to sqrt(Kb T m /
dt damp), where Kb is the Boltzmann constant, T is the desired
temperature, m is the mass of the particle, dt is the timestep size,
and damp is the damping factor. Random numbers are used to randomize
the direction and magnitude of this force as described in
<A HREF = "#Dunweg">(Dunweg)</A>, where a uniform random number is used (instead of
a Gaussian random number) for speed.
</P>
<P>Note that the thermostat effect of this fix is applied to only the
translational degrees of freedom for the particles, which is an
important consideration if extended spherical or aspherical particles
which have rotational degrees of freedom are being thermostatted with
this fix. The translational degrees of freedom can also have a bias
velocity removed from them before thermostatting takes place; see the
description below.
</P>
<P>IMPORTANT NOTE: Unlike the <A HREF = "fix_nh.html">fix nvt</A> command which
performs Nose/Hoover thermostatting AND time integration, this fix
does NOT perform time integration. It only modifies forces to effect
thermostatting. Thus you must use a separate time integration fix,
like <A HREF = "fix_nve.html">fix nve</A> to actually update the velocities and
positions of atoms using the modified forces. Likewise, this fix
should not normally be used on atoms that also have their temperature
controlled by another fix - e.g. by <A HREF = "fix_nh.html">fix nvt</A> or <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A> commands.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</P>
<P>The desired temperature at each timestep is a ramped value during the
run from <I>Tstart</I> to <I>Tstop</I>.
</P>
<P>Like other fixes that perform thermostatting, this fix can be used
with <A HREF = "compute.html">compute commands</A> that remove a "bias" from the
atom velocities. E.g. removing the center-of-mass velocity from a
group of atoms or removing the x-component of velocity from the
calculation. This is not done by default, but only if the
<A HREF = "fix_modify.html">fix_modify</A> command is used to assign a temperature
compute to this fix that includes such a bias term. See the doc pages
for individual <A HREF = "compute.html">compute commands</A> to determine which ones
include a bias. In this case, the thermostat works in the following
manner: bias is removed from each atom, thermostatting is performed on
the remaining thermal degrees of freedom, and the bias is added back
in.
</P>
<P>The <I>damp</I> parameter is specified in time units and determines how
rapidly the temperature is relaxed. For example, a value of 100.0
means to relax the temperature in a timespan of (roughly) 100 time
units (tau or fmsec or psec - see the <A HREF = "units.html">units</A> command).
The damp factor can be thought of as inversely related to the
viscosity of the solvent. I.e. a small relaxation time implies a
hi-viscosity solvent and vice versa. See the discussion about gamma
and viscosity in the documentation for the <A HREF = "fix_viscous.html">fix
viscous</A> command for more details.
</P>
<P>The random # <I>seed</I> must be a positive integer. A Marsaglia random
number generator is used. Each processor uses the input seed to
generate its own unique seed and its own stream of random numbers.
Thus the dynamics of the system will not be identical on two runs on
different numbers of processors.
</P>
<HR>
<P>The keyword/value option pairs are used in the following ways.
</P>
<P>The keyword <I>angmom</I> and <I>omega</I> keywords enable thermostatting of
rotational degrees of freedom in addition to the usual translational
degrees of freedom. This can only be done for finite-size particles.
A simulation using atom_style sphere defines an omega for finite-size
spheres. A simulation using atom_style ellipsoid defines a finite
size and shape for aspherical particles and an angular momentum. The
Langevin formulas for thermostatting the rotational degrees of freedom
are the same as those above, where force is replaced by torque, m is
replaced by the moment of inertia I, and v is replaced by omega (which
is derived from the angular momentum in the case of aspherical
particles). The rotational temperature of the particles can be
monitored by the <A HREF = "compute_temp_sphere.html">compute temp/sphere</A> and
<A HREF = "compute_temp_asphere.html">compute temp/asphere</A> commands with their
rotate options.
</P>
<P>The keyword <I>scale</I> allows the damp factor to be scaled up or down by
the specified factor for atoms of that type. This can be useful when
different atom types have different sizes or masses. It can be used
multiple times to adjust damp for several atom types. Note that
specifying a ratio of 2 increases the relaxation time which is
equivalent to the solvent's viscosity acting on particles with 1/2 the
diameter. This is the opposite effect of scale factors used by the
<A HREF = "fix_viscous.html">fix viscous</A> command, since the damp factor in fix
<I>langevin</I> is inversely related to the gamma factor in fix <I>viscous</I>.
Also note that the damping factor in fix <I>langevin</I> includes the
particle mass in Ff, unlike fix <I>viscous</I>. Thus the mass and size of
different atom types should be accounted for in the choice of ratio
values.
</P>
<P>The keyword <I>tally</I> enables the calculation of the cumulative energy
added/subtracted to the atoms as they are thermostatted. Effectively
it is the energy exchanged between the infinite thermal reservoir and
the particles. As described below, this energy can then be printed
out or added to the potential energy of the system to monitor energy
conservation.
</P>
<P>The keyword <I>zero</I> can be used to eliminate drift due to the
thermostat. Because the random forces on different atoms are
independent, they do not sum exactly to zero. As a result, this fix
applies a small random force to the entire system, and the
center-of-mass of the system undergoes a slow random walk. If the
keyword <I>zero</I> is set to <I>yes</I>, the total random force is set exactly
to zero by subtracting off an equal part of it from each atom in the
group. As a result, the center-of-mass of a system with zero initial
momentum will not drift over time.
</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>. Because the state of the random number generator
is not saved in restart files, this means you cannot do "exact"
restarts with this fix, where the simulation continues on the same as
if no restart had taken place. However, in a statistical sense, a
restarted simulation should produce the same behavior.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> option is supported by this
fix. You can use it to assign a temperature <A HREF = "compute.html">compute</A>
you have defined to this fix which will be used in its thermostatting
procedure, as described above. For consistency, the group used by
this fix and by the compute should be the same.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy change induced by Langevin thermostatting to the
system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>. Note that use of this option requires
setting the <I>tally</I> keyword to <I>yes</I>.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
cummulative energy change due to this fix. The scalar value
calculated by this fix is "extensive". Note that calculation of this
quantity requires setting the <I>tally</I> keyword to <I>yes</I>.
</P>
<P>This fix can ramp its target temperature over multiple runs, using the
<I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this.
</P>
<P>This fix is not invoked during <A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_temp_rescale.html">fix temp/rescale</A>, <A HREF = "fix_viscous.html">fix
viscous</A>, <A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "pair_dpd.html">pair_style
dpd/tstat</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are angmom = no, omega = no, scale = 1.0 for all
types, tally = no, zero = no.
</P>
<HR>
<A NAME = "Dunweg"></A>
<P><B>(Dunweg)</B> Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991).
</P>
<A NAME = "Schneider"></A>
<P><B>(Schneider)</B> Schneider and Stoll, Phys Rev B, 17, 1302 (1978).
</P>
</HTML>
diff --git a/doc/fix_langevin.txt b/doc/fix_langevin.txt
index 1228b6326..63fd2135f 100644
--- a/doc/fix_langevin.txt
+++ b/doc/fix_langevin.txt
@@ -1,238 +1,238 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix langevin command :h3
[Syntax:]
fix ID group-ID langevin Tstart Tstop damp seed keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
langevin = style name of this fix command :l
Tstart,Tstop = desired temperature at start/end of run (temperature units) :l
damp = damping parameter (time units) :l
seed = random number seed to use for white noise (positive integer) :l
zero or more keyword/value pairs may be appended :l
keyword = {angmom} or {omega} or {scale} or {tally} or {zero} :l
{angmom} value = {no} or {yes}
{no} = do not thermostat rotational degrees of freedom via the angular momentum
{yes} = do thermostat rotational degrees of freedom via the angular momentum
{omega} value = {no} or {yes}
{no} = do not thermostat rotational degrees of freedom via then angular velocity
{yes} = do thermostat rotational degrees of freedom via the angular velocity
{scale} values = type ratio
type = atom type (1-N)
ratio = factor by which to scale the damping coefficient
{tally} value = {no} or {yes}
{no} = do not tally the energy added/subtracted to atoms
{yes} = do tally the energy added/subtracted to atoms
{zero} value = {no} or {yes}
{no} = do not set total random force to zero
{yes} = set total random force to zero :pre
:ule
[Examples:]
fix 3 boundary langevin 1.0 1.0 1000.0 699483
fix 1 all langevin 1.0 1.1 100.0 48279 scale 3 1.5 :pre
[Description:]
Apply a Langevin thermostat as described in "(Schneider)"_#Schneider
to a group of atoms which models an interaction with a background
implicit solvent. Used with "fix nve"_fix_nve.html, this command
performs Brownian dynamics (BD), since the total force on each atom
will have the form:
F = Fc + Ff + Fr
Ff = - (m / damp) v
Fr is proportional to sqrt(Kb T m / (dt damp)) :pre
Fc is the conservative force computed via the usual inter-particle
interactions ("pair_style"_pair_style.html,
"bond_style"_bond_style.html, etc).
The Ff and Fr terms are added by this fix on a per-particle basis.
See the "pair_style dpd/tstat"_pair_dpd.html command for a
thermostatting option that adds similar terms on a pairwise basis to
pairs of interacting particles.
Ff is a frictional drag or viscous damping term proportional to the
particle's velocity. The proportionality constant for each atom is
computed as m/damp, where m is the mass of the particle and damp is
the damping factor specified by the user.
Fr is a force due to solvent atoms at a temperature T randomly bumping
into the particle. As derived from the fluctuation/dissipation
theorem, its magnitude as shown above is proportional to sqrt(Kb T m /
dt damp), where Kb is the Boltzmann constant, T is the desired
temperature, m is the mass of the particle, dt is the timestep size,
and damp is the damping factor. Random numbers are used to randomize
the direction and magnitude of this force as described in
"(Dunweg)"_#Dunweg, where a uniform random number is used (instead of
a Gaussian random number) for speed.
Note that the thermostat effect of this fix is applied to only the
translational degrees of freedom for the particles, which is an
important consideration if extended spherical or aspherical particles
which have rotational degrees of freedom are being thermostatted with
this fix. The translational degrees of freedom can also have a bias
velocity removed from them before thermostatting takes place; see the
description below.
IMPORTANT NOTE: Unlike the "fix nvt"_fix_nh.html command which
performs Nose/Hoover thermostatting AND time integration, this fix
does NOT perform time integration. It only modifies forces to effect
thermostatting. Thus you must use a separate time integration fix,
like "fix nve"_fix_nve.html to actually update the velocities and
positions of atoms using the modified forces. Likewise, this fix
should not normally be used on atoms that also have their temperature
controlled by another fix - e.g. by "fix nvt"_fix_nh.html or "fix
temp/rescale"_fix_temp_rescale.html commands.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
The desired temperature at each timestep is a ramped value during the
run from {Tstart} to {Tstop}.
Like other fixes that perform thermostatting, this fix can be used
with "compute commands"_compute.html that remove a "bias" from the
atom velocities. E.g. removing the center-of-mass velocity from a
group of atoms or removing the x-component of velocity from the
calculation. This is not done by default, but only if the
"fix_modify"_fix_modify.html command is used to assign a temperature
compute to this fix that includes such a bias term. See the doc pages
for individual "compute commands"_compute.html to determine which ones
include a bias. In this case, the thermostat works in the following
manner: bias is removed from each atom, thermostatting is performed on
the remaining thermal degrees of freedom, and the bias is added back
in.
The {damp} parameter is specified in time units and determines how
rapidly the temperature is relaxed. For example, a value of 100.0
means to relax the temperature in a timespan of (roughly) 100 time
units (tau or fmsec or psec - see the "units"_units.html command).
The damp factor can be thought of as inversely related to the
viscosity of the solvent. I.e. a small relaxation time implies a
hi-viscosity solvent and vice versa. See the discussion about gamma
and viscosity in the documentation for the "fix
viscous"_fix_viscous.html command for more details.
The random # {seed} must be a positive integer. A Marsaglia random
number generator is used. Each processor uses the input seed to
generate its own unique seed and its own stream of random numbers.
Thus the dynamics of the system will not be identical on two runs on
different numbers of processors.
:line
The keyword/value option pairs are used in the following ways.
The keyword {angmom} and {omega} keywords enable thermostatting of
rotational degrees of freedom in addition to the usual translational
degrees of freedom. This can only be done for finite-size particles.
A simulation using atom_style sphere defines an omega for finite-size
spheres. A simulation using atom_style ellipsoid defines a finite
size and shape for aspherical particles and an angular momentum. The
Langevin formulas for thermostatting the rotational degrees of freedom
are the same as those above, where force is replaced by torque, m is
replaced by the moment of inertia I, and v is replaced by omega (which
is derived from the angular momentum in the case of aspherical
particles). The rotational temperature of the particles can be
monitored by the "compute temp/sphere"_compute_temp_sphere.html and
"compute temp/asphere"_compute_temp_asphere.html commands with their
rotate options.
The keyword {scale} allows the damp factor to be scaled up or down by
the specified factor for atoms of that type. This can be useful when
different atom types have different sizes or masses. It can be used
multiple times to adjust damp for several atom types. Note that
specifying a ratio of 2 increases the relaxation time which is
equivalent to the solvent's viscosity acting on particles with 1/2 the
diameter. This is the opposite effect of scale factors used by the
"fix viscous"_fix_viscous.html command, since the damp factor in fix
{langevin} is inversely related to the gamma factor in fix {viscous}.
Also note that the damping factor in fix {langevin} includes the
particle mass in Ff, unlike fix {viscous}. Thus the mass and size of
different atom types should be accounted for in the choice of ratio
values.
The keyword {tally} enables the calculation of the cumulative energy
added/subtracted to the atoms as they are thermostatted. Effectively
it is the energy exchanged between the infinite thermal reservoir and
the particles. As described below, this energy can then be printed
out or added to the potential energy of the system to monitor energy
conservation.
The keyword {zero} can be used to eliminate drift due to the
thermostat. Because the random forces on different atoms are
independent, they do not sum exactly to zero. As a result, this fix
applies a small random force to the entire system, and the
center-of-mass of the system undergoes a slow random walk. If the
keyword {zero} is set to {yes}, the total random force is set exactly
to zero by subtracting off an equal part of it from each atom in the
group. As a result, the center-of-mass of a system with zero initial
momentum will not drift over time.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. Because the state of the random number generator
is not saved in restart files, this means you cannot do "exact"
restarts with this fix, where the simulation continues on the same as
if no restart had taken place. However, in a statistical sense, a
restarted simulation should produce the same behavior.
The "fix_modify"_fix_modify.html {temp} option is supported by this
fix. You can use it to assign a temperature "compute"_compute.html
you have defined to this fix which will be used in its thermostatting
procedure, as described above. For consistency, the group used by
this fix and by the compute should be the same.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy change induced by Langevin thermostatting to the
system's potential energy as part of "thermodynamic
output"_thermo_style.html. Note that use of this option requires
setting the {tally} keyword to {yes}.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the
+"output commands"_Section_howto.html#howto_15. The scalar is the
cummulative energy change due to this fix. The scalar value
calculated by this fix is "extensive". Note that calculation of this
quantity requires setting the {tally} keyword to {yes}.
This fix can ramp its target temperature over multiple runs, using the
{start} and {stop} keywords of the "run"_run.html command. See the
"run"_run.html command for details of how to do this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix nvt"_fix_nh.html, "fix temp/rescale"_fix_temp_rescale.html, "fix
viscous"_fix_viscous.html, "fix nvt"_fix_nh.html, "pair_style
dpd/tstat"_pair_dpd.html
[Default:]
The option defaults are angmom = no, omega = no, scale = 1.0 for all
types, tally = no, zero = no.
:line
:link(Dunweg)
[(Dunweg)] Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991).
:link(Schneider)
[(Schneider)] Schneider and Stoll, Phys Rev B, 17, 1302 (1978).
diff --git a/doc/fix_langevin_eff.html b/doc/fix_langevin_eff.html
index 895c8c47e..60ad5d1e7 100644
--- a/doc/fix_langevin_eff.html
+++ b/doc/fix_langevin_eff.html
@@ -1,124 +1,124 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix langevin/eff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID langevin/eff Tstart Tstop damp seed keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>langevin/eff = style name of this fix command
<LI>Tstart,Tstop = desired temperature at start/end of run (temperature units)
<LI>damp = damping parameter (time units)
<LI>seed = random number seed to use for white noise (positive integer)
<LI>zero or more keyword/value pairs may be appended
<PRE>keyword = <I>scale</I> or <I>tally</I>
<I>scale</I> values = type ratio
type = atom type (1-N)
ratio = factor by which to scale the damping coefficient
<I>tally</I> values = <I>no</I> or <I>yes</I>
<I>no</I> = do not tally the energy added/subtracted to atoms
<I>yes</I> = do tally the energy added/subtracted to atoms
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 3 boundary langevin/eff 1.0 1.0 10.0 699483
fix 1 all langevin/eff 1.0 1.1 10.0 48279 scale 3 1.5
</PRE>
<P><B>Description:</B>
</P>
<P>Apply a Langevin thermostat as described in <A HREF = "#Schneider">(Schneider)</A>
to a group of nuclei and electrons in the <A HREF = "pair_eff.html">electron force
field</A> model. Used with <A HREF = "fix_nve_eff.html">fix nve/eff</A>,
this command performs Brownian dynamics (BD), since the total force on
each atom will have the form:
</P>
<PRE>F = Fc + Ff + Fr
Ff = - (m / damp) v
Fr is proportional to sqrt(Kb T m / (dt damp))
</PRE>
<P>Fc is the conservative force computed via the usual inter-particle
interactions (<A HREF = "pair_style.html">pair_style</A>).
</P>
<P>The Ff and Fr terms are added by this fix on a per-particle basis.
</P>
<P>The operation of this fix is exactly like that described by the <A HREF = "fix_langevin.html">fix
langevin</A> command, except that the thermostatting
is also applied to the radial electron velocity for electron
particles.
</P>
<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>. Because the state of the random number generator
is not saved in restart files, this means you cannot do "exact"
restarts with this fix, where the simulation continues on the same as
if no restart had taken place. However, in a statistical sense, a
restarted simulation should produce the same behavior.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> option is supported by this
fix. You can use it to assign a temperature <A HREF = "compute.html">compute</A>
you have defined to this fix which will be used in its thermostatting
procedure, as described above. For consistency, the group used by
this fix and by the compute should be the same.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy change induced by Langevin thermostatting to the
system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>. Note that use of this option requires
setting the <I>tally</I> keyword to <I>yes</I>.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
cummulative energy change due to this fix. The scalar value
calculated by this fix is "extensive". Note that calculation of this
quantity requires setting the <I>tally</I> keyword to <I>yes</I>.
</P>
<P>This fix can ramp its target temperature over multiple runs, using the
<I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this.
</P>
<P>This fix is not invoked during <A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B> none
</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#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_langevin.html">fix langevin</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are scale = 1.0 for all types and tally = no.
</P>
<HR>
<A NAME = "Dunweg"></A>
<P><B>(Dunweg)</B> Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991).
</P>
<A NAME = "Schneider"></A>
<P><B>(Schneider)</B> Schneider and Stoll, Phys Rev B, 17, 1302 (1978).
</P>
</HTML>
diff --git a/doc/fix_langevin_eff.txt b/doc/fix_langevin_eff.txt
index b48bb8477..1ee877bd6 100644
--- a/doc/fix_langevin_eff.txt
+++ b/doc/fix_langevin_eff.txt
@@ -1,110 +1,110 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix langevin/eff command :h3
[Syntax:]
fix ID group-ID langevin/eff Tstart Tstop damp seed keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
langevin/eff = style name of this fix command :l
Tstart,Tstop = desired temperature at start/end of run (temperature units) :l
damp = damping parameter (time units) :l
seed = random number seed to use for white noise (positive integer) :l
zero or more keyword/value pairs may be appended :l
keyword = {scale} or {tally}
{scale} values = type ratio
type = atom type (1-N)
ratio = factor by which to scale the damping coefficient
{tally} values = {no} or {yes}
{no} = do not tally the energy added/subtracted to atoms
{yes} = do tally the energy added/subtracted to atoms :pre
:ule
[Examples:]
fix 3 boundary langevin/eff 1.0 1.0 10.0 699483
fix 1 all langevin/eff 1.0 1.1 10.0 48279 scale 3 1.5 :pre
[Description:]
Apply a Langevin thermostat as described in "(Schneider)"_#Schneider
to a group of nuclei and electrons in the "electron force
field"_pair_eff.html model. Used with "fix nve/eff"_fix_nve_eff.html,
this command performs Brownian dynamics (BD), since the total force on
each atom will have the form:
F = Fc + Ff + Fr
Ff = - (m / damp) v
Fr is proportional to sqrt(Kb T m / (dt damp)) :pre
Fc is the conservative force computed via the usual inter-particle
interactions ("pair_style"_pair_style.html).
The Ff and Fr terms are added by this fix on a per-particle basis.
The operation of this fix is exactly like that described by the "fix
langevin"_fix_langevin.html command, except that the thermostatting
is also applied to the radial electron velocity for electron
particles.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. Because the state of the random number generator
is not saved in restart files, this means you cannot do "exact"
restarts with this fix, where the simulation continues on the same as
if no restart had taken place. However, in a statistical sense, a
restarted simulation should produce the same behavior.
The "fix_modify"_fix_modify.html {temp} option is supported by this
fix. You can use it to assign a temperature "compute"_compute.html
you have defined to this fix which will be used in its thermostatting
procedure, as described above. For consistency, the group used by
this fix and by the compute should be the same.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy change induced by Langevin thermostatting to the
system's potential energy as part of "thermodynamic
output"_thermo_style.html. Note that use of this option requires
setting the {tally} keyword to {yes}.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the
+"output commands"_Section_howto.html#howto_15. The scalar is the
cummulative energy change due to this fix. The scalar value
calculated by this fix is "extensive". Note that calculation of this
quantity requires setting the {tally} keyword to {yes}.
This fix can ramp its target temperature over multiple runs, using the
{start} and {stop} keywords of the "run"_run.html command. See the
"run"_run.html command for details of how to do this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
This fix is part of the "user-eff" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"fix langevin"_fix_langevin.html
[Default:]
The option defaults are scale = 1.0 for all types and tally = no.
:line
:link(Dunweg)
[(Dunweg)] Dunweg and Paul, Int J of Modern Physics C, 2, 817-27 (1991).
:link(Schneider)
[(Schneider)] Schneider and Stoll, Phys Rev B, 17, 1302 (1978).
diff --git a/doc/fix_lineforce.html b/doc/fix_lineforce.html
index 7de7b3ac0..9c87f094e 100644
--- a/doc/fix_lineforce.html
+++ b/doc/fix_lineforce.html
@@ -1,56 +1,56 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix lineforce command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID lineforce x y z
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>lineforce = style name of this fix command
<LI>x y z = direction of line as a 3-vector
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix hold boundary lineforce 0.0 1.0 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>Adjust the forces on each atom in the group so that only the component
of force along the linear direction specified by the vector (x,y,z)
remains. This is done by subtracting out components of force in the
plane perpendicular to the line.
</P>
<P>If the initial velocity of the atom is 0.0 (or along the line), then
it should continue to move along the line thereafter.
</P>
<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>. 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#4_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.
+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.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_planeforce.html">fix planeforce</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_lineforce.txt b/doc/fix_lineforce.txt
index f5e069ada..8b589632b 100644
--- a/doc/fix_lineforce.txt
+++ b/doc/fix_lineforce.txt
@@ -1,51 +1,51 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix lineforce command :h3
[Syntax:]
fix ID group-ID lineforce x y z :pre
ID, group-ID are documented in "fix"_fix.html command
lineforce = style name of this fix command
x y z = direction of line as a 3-vector :ul
[Examples:]
fix hold boundary lineforce 0.0 1.0 1.0 :pre
[Description:]
Adjust the forces on each atom in the group so that only the component
of force along the linear direction specified by the vector (x,y,z)
remains. This is done by subtracting out components of force in the
plane perpendicular to the line.
If the initial velocity of the atom is 0.0 (or along the line), then
it should continue to move along the line thereafter.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command.
[Restrictions:] none
[Related commands:]
"fix planeforce"_fix_planeforce.html
[Default:] none
diff --git a/doc/fix_momentum.html b/doc/fix_momentum.html
index ab91b7d3a..73e1a7a6f 100644
--- a/doc/fix_momentum.html
+++ b/doc/fix_momentum.html
@@ -1,79 +1,79 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix momentum command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID momentum N keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>momentum = style name of this fix command
<LI>N = adjust the momentum every this many timesteps
one or more keyword/value pairs may be appended
<LI>keyword = <I>linear</I> or <I>angular</I>
<PRE> <I>linear</I> values = xflag yflag zflag
xflag,yflag,zflag = 0/1 to exclude/include each dimension
<I>angular</I> values = none
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all momentum 1 linear 1 1 0
fix 1 all momentum 100 linear 1 1 1 angular
</PRE>
<P><B>Description:</B>
</P>
<P>Zero the linear and/or angular momentum of the group of atoms every N
timesteps by adjusting the velocities of the atoms. One (or both) of
the <I>linear</I> or <I>angular</I> keywords must be specified.
</P>
<P>If the <I>linear</I> keyword is used, the linear momentum is zeroed by
subtracting the center-of-mass velocity of the group from each atom.
This does not change the relative velocity of any pair of atoms. One
or more dimensions can be excluded from this operation by setting the
corresponding flag to 0.
</P>
<P>If the <I>angular</I> keyword is used, the angular momentum is zeroed by
subtracting a rotational component from each atom.
</P>
<P>This command can be used to insure the entire collection of atoms (or
a subset of them) does not drift or rotate during the simulation due
to random perturbations (e.g. <A HREF = "fix_langevin.html">fix langevin</A>
thermostatting).
</P>
<P>Note that the <A HREF = "velocity.html">velocity</A> command can be used to create
initial velocities with zero aggregate linear and/or angular momentum.
</P>
<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>. 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#4_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.
+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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_recenter.html">fix recenter</A>, <A HREF = "velocity.html">velocity</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_momentum.txt b/doc/fix_momentum.txt
index f2ed114b6..6fab08f1c 100644
--- a/doc/fix_momentum.txt
+++ b/doc/fix_momentum.txt
@@ -1,69 +1,69 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix momentum command :h3
[Syntax:]
fix ID group-ID momentum N keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
momentum = style name of this fix command :l
N = adjust the momentum every this many timesteps
one or more keyword/value pairs may be appended :l
keyword = {linear} or {angular} :l
{linear} values = xflag yflag zflag
xflag,yflag,zflag = 0/1 to exclude/include each dimension
{angular} values = none :pre
:ule
[Examples:]
fix 1 all momentum 1 linear 1 1 0
fix 1 all momentum 100 linear 1 1 1 angular :pre
[Description:]
Zero the linear and/or angular momentum of the group of atoms every N
timesteps by adjusting the velocities of the atoms. One (or both) of
the {linear} or {angular} keywords must be specified.
If the {linear} keyword is used, the linear momentum is zeroed by
subtracting the center-of-mass velocity of the group from each atom.
This does not change the relative velocity of any pair of atoms. One
or more dimensions can be excluded from this operation by setting the
corresponding flag to 0.
If the {angular} keyword is used, the angular momentum is zeroed by
subtracting a rotational component from each atom.
This command can be used to insure the entire collection of atoms (or
a subset of them) does not drift or rotate during the simulation due
to random perturbations (e.g. "fix langevin"_fix_langevin.html
thermostatting).
Note that the "velocity"_velocity.html command can be used to create
initial velocities with zero aggregate linear and/or angular momentum.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix recenter"_fix_recenter.html, "velocity"_velocity.html
[Default:] none
diff --git a/doc/fix_move.html b/doc/fix_move.html
index c56dac4f4..c41d32379 100644
--- a/doc/fix_move.html
+++ b/doc/fix_move.html
@@ -1,210 +1,210 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix move command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID move style args keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>move = style name of this fix command
<LI>style = <I>linear</I> or <I>wiggle</I> or <I>rotate</I> or <I>variable</I>
<PRE> <I>linear</I> args = Vx Vy Vz
Vx,Vy,Vz = components of velocity vector (velocity units), any component can be specified as NULL
<I>wiggle</I> args = Ax Ay Az period
Ax,Ay,Az = components of amplitude vector (distance units), any component can be specified as NULL
period = period of oscillation (time units)
<I>rotate</I> args = Px Py Pz Rx Ry Rz period
Px,Py,Pz = origin point of axis of rotation (distance units)
Rx,Ry,Rz = axis of rotation vector
period = period of rotation (time units)
<I>variable</I> args = v_dx v_dy v_dz v_vx v_vy v_vz
v_dx,v_dy,v_dz = 3 variable names that calculate x,y,z displacement as function of time, any component can be specified as NULL
v_vx,v_vy,v_vz = 3 variable names that calculate x,y,z velocity as function of time, any component can be specified as NULL
</PRE>
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>units</I>
<PRE> <I>units</I> value = <I>box</I> or <I>lattice</I>
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 boundary move wiggle 3.0 0.0 0.0 1.0 units box
fix 2 boundary move rotate 0.0 0.0 0.0 0.0 0.0 1.0 5.0
fix 2 boundary move variable v_myx v_myy NULL v_VX v_VY NULL
</PRE>
<P><B>Description:</B>
</P>
<P>Perform updates of position and velocity for atoms in the group each
timestep using the specified settings or formulas, without regard to
forces on the atoms. This can be useful for boundary or other atoms,
whose movement can influence nearby atoms.
</P>
<P>IMPORTANT NOTE: The atoms affected by this fix should not normally be
time integrated by other fixes (e.g. <A HREF = "fix_nve.html">fix nve</A>, <A HREF = "fix_nh.html">fix
nvt</A>), since that will change their positions and
velocities twice.
</P>
<P>IMPORTANT NOTE: As atoms move due to this fix, they will pass thru
periodic boundaries and be remapped to the other side of the
simulation box, just as they would during normal time integration
(e.g. via the <A HREF = "fix_nve.html">fix nve</A> command). It is up to you to
decide whether periodic boundaries are appropriate with the kind of
atom motion you are prescribing with this fix.
</P>
<P>IMPORTANT NOTE: As dicsussed below, atoms are moved relative to their
initial position at the time the fix is specified. These initial
coordinates are stored by the fix in "unwrapped" form, by using the
image flags associated with each atom. See the <A HREF = "dump.html">dump
custom</A> command for a discussion of "unwrapped" coordinates.
See the Atoms section of the <A HREF = "read_data.html">read_data</A> command for a
discussion of image flags and how they are set for each atom. You can
reset the image flags (e.g. to 0) before invoking this fix by using
the <A HREF = "set.html">set image</A> command.
</P>
<HR>
<P>The <I>linear</I> style moves atoms at a constant velocity, so that their
position <I>X</I> = (x,y,z) as a function of time is given in vector
notation as
</P>
<PRE>X(t) = X0 + V * delta
</PRE>
<P>where <I>X0</I> = (x0,y0,z0) is their position at the time the fix is
specified, <I>V</I> is the specified velocity vector with components
(Vx,Vy,Vz), and <I>delta</I> is the time elapsed since the fix was
specified. This style also sets the velocity of each atom to V =
(Vx,Vy,Vz). If any of the velocity components is specified as NULL,
then the position and velocity of that component is time integrated
the same as the <A HREF = "fix_nve.html">fix nve</A> command would perform, using
the corresponding force component on the atom.
</P>
<P>The <I>wiggle</I> style moves atoms in an oscillatory fashion, so that
their position <I>X</I> = (x,y,z) as a function of time is given in vector
notation as
</P>
<PRE>X(t) = X0 + A sin(omega*delta)
</PRE>
<P>where <I>X0</I> = (x0,y0,z0) is their position at the time the fix is
specified, <I>A</I> is the specified amplitude vector with components
(Ax,Ay,Az), <I>omega</I> is 2 PI / <I>period</I>, and <I>delta</I> is the time
elapsed since the fix was specified. This style also sets the
velocity of each atom to the time derivative of this expression. If
any of the amplitude components is specified as NULL, then the
position and velocity of that component is time integrated the same as
the <A HREF = "fix_nve.html">fix nve</A> command would perform, using the
corresponding force component on the atom.
</P>
<P>The <I>rotate</I> style rotates atoms around a rotation axis <I>R</I> =
(Rx,Ry,Rz) that goes thru a point <I>P</I> = (Px,Py,Pz). The <I>period</I> of
the rotation is also specified. This style also sets the velocity of
each atom to (omega cross Rperp) where omega is its angular velocity
around the rotation axis and Rperp is a perpendicular vector from the
rotation axis to the atom. If the defined
<A HREF = "atom_style.html">atom_style</A> assigns an angular velocity to each atom,
then each atom's angular velocity is also set to omega. Note that the
direction of rotation for the atoms around the rotation axis is
consistent with the right-hand rule: if your right-hand's thumb points
along <I>R</I>, then your fingers wrap around the axis in the direction of
rotation.
</P>
<P>The <I>variable</I> style allows the position and velocity components of
each atom to be set by formulas specified via the
<A HREF = "variable.html">variable</A> command. Each of the 6 variables is
specified as an argument to the fix as v_name, where name is the
variable name that is defined elsewhere in the input script.
</P>
<P>Each variable must be of either the <I>equal</I> or <I>atom</I> style.
<I>Equal</I>-style variables compute a single numeric quantity, that can be
a function of the timestep as well as of other simulation values.
<I>Atom</I>-style variables compute a numeric quantity for each atom, that
can be a function per-atom quantities, such as the atom's position, as
well as of the timestep and other simulation values. Note that this
fix stores the original coordinates of each atom (see note below) so
that per-atom quantity can be used in an atom-style variable formula.
See the <A HREF = "variable.html">variable</A> command for details.
</P>
<P>The first 3 variables (v_dx,v_dy,v_dz) specified for the <I>variable</I>
style are used to calculate a displacement from the atom's original
position at the time the fix was specified. The second 3 variables
(v_vx,v_vy,v_vz) specified are used to compute a velocity for each
atom.
</P>
<P>Any of the 6 variables can be specified as NULL. If both the
displacement and velocity variables for a particular x,y,z component
are specified as NULL, then the position and velocity of that
component is time integrated the same as the <A HREF = "fix_nve.html">fix nve</A>
command would perform, using the corresponding force component on the
atom. If only the velocity variable for a component is specified as
NULL, then the displacement variable will be used to set the position
of the atom, and its velocity component will not be changed. If only
the displacement variable for a component is specified as NULL, then
the velocity variable will be used to set the velocity of the atom,
and the position of the atom will be time integrated using that
velocity.
</P>
<P>The <I>units</I> keyword determines the meaning of the distance units used
to define the <I>linear</I> velocity and <I>wiggle</I> amplitude and <I>rotate</I>
origin. This setting is ignored for the <I>variable</I> style. A <I>box</I>
value selects standard units as defined by the <A HREF = "units.html">units</A>
command, e.g. velocity in Angstroms/fmsec and amplitude and position
in Angstroms for units = real. A <I>lattice</I> value means the velocity
units are in lattice spacings per time and the amplitude and position
are in lattice spacings. The <A HREF = "lattice.html">lattice</A> command must have
been previously used to define the lattice spacing. Each of these 3
quantities may be dependent on the x,y,z dimension, since the lattice
spacings can be different in x,y,z.
</P>
<P>For <A HREF = "run_style.html">rRESPA time integration</A>, this fix adjusts the
position and velocity of atoms on the outermost rRESPA level.
</P>
<HR>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the original coordinates of moving atoms to <A HREF = "restart.html">binary
restart files</A>, so that the motion can be continuous in a
restarted simulation. 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.
</P>
<P>This fix produces a per-atom array which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The number of columns for
-each atom is 3, and the columns store the original unwrapped x,y,z
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The number of columns
+for each atom is 3, and the columns store the original unwrapped x,y,z
coords of each atom. The per-atom values can be accessed on any
timestep.
</P>
<P>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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nve.html">fix nve</A>
</P>
<P><B>Default:</B> none
</P>
<P>The option default is units = lattice.
</P>
</HTML>
diff --git a/doc/fix_move.txt b/doc/fix_move.txt
index f46724f80..a07bd3307 100644
--- a/doc/fix_move.txt
+++ b/doc/fix_move.txt
@@ -1,199 +1,199 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix move command :h3
[Syntax:]
fix ID group-ID move style args keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
move = style name of this fix command :l
style = {linear} or {wiggle} or {rotate} or {variable} :l
{linear} args = Vx Vy Vz
Vx,Vy,Vz = components of velocity vector (velocity units), any component can be specified as NULL
{wiggle} args = Ax Ay Az period
Ax,Ay,Az = components of amplitude vector (distance units), any component can be specified as NULL
period = period of oscillation (time units)
{rotate} args = Px Py Pz Rx Ry Rz period
Px,Py,Pz = origin point of axis of rotation (distance units)
Rx,Ry,Rz = axis of rotation vector
period = period of rotation (time units)
{variable} args = v_dx v_dy v_dz v_vx v_vy v_vz
v_dx,v_dy,v_dz = 3 variable names that calculate x,y,z displacement as function of time, any component can be specified as NULL
v_vx,v_vy,v_vz = 3 variable names that calculate x,y,z velocity as function of time, any component can be specified as NULL :pre
zero or more keyword/value pairs may be appended :l
keyword = {units} :l
{units} value = {box} or {lattice} :pre
:ule
[Examples:]
fix 1 boundary move wiggle 3.0 0.0 0.0 1.0 units box
fix 2 boundary move rotate 0.0 0.0 0.0 0.0 0.0 1.0 5.0
fix 2 boundary move variable v_myx v_myy NULL v_VX v_VY NULL :pre
[Description:]
Perform updates of position and velocity for atoms in the group each
timestep using the specified settings or formulas, without regard to
forces on the atoms. This can be useful for boundary or other atoms,
whose movement can influence nearby atoms.
IMPORTANT NOTE: The atoms affected by this fix should not normally be
time integrated by other fixes (e.g. "fix nve"_fix_nve.html, "fix
nvt"_fix_nh.html), since that will change their positions and
velocities twice.
IMPORTANT NOTE: As atoms move due to this fix, they will pass thru
periodic boundaries and be remapped to the other side of the
simulation box, just as they would during normal time integration
(e.g. via the "fix nve"_fix_nve.html command). It is up to you to
decide whether periodic boundaries are appropriate with the kind of
atom motion you are prescribing with this fix.
IMPORTANT NOTE: As dicsussed below, atoms are moved relative to their
initial position at the time the fix is specified. These initial
coordinates are stored by the fix in "unwrapped" form, by using the
image flags associated with each atom. See the "dump
custom"_dump.html command for a discussion of "unwrapped" coordinates.
See the Atoms section of the "read_data"_read_data.html command for a
discussion of image flags and how they are set for each atom. You can
reset the image flags (e.g. to 0) before invoking this fix by using
the "set image"_set.html command.
:line
The {linear} style moves atoms at a constant velocity, so that their
position {X} = (x,y,z) as a function of time is given in vector
notation as
X(t) = X0 + V * delta :pre
where {X0} = (x0,y0,z0) is their position at the time the fix is
specified, {V} is the specified velocity vector with components
(Vx,Vy,Vz), and {delta} is the time elapsed since the fix was
specified. This style also sets the velocity of each atom to V =
(Vx,Vy,Vz). If any of the velocity components is specified as NULL,
then the position and velocity of that component is time integrated
the same as the "fix nve"_fix_nve.html command would perform, using
the corresponding force component on the atom.
The {wiggle} style moves atoms in an oscillatory fashion, so that
their position {X} = (x,y,z) as a function of time is given in vector
notation as
X(t) = X0 + A sin(omega*delta) :pre
where {X0} = (x0,y0,z0) is their position at the time the fix is
specified, {A} is the specified amplitude vector with components
(Ax,Ay,Az), {omega} is 2 PI / {period}, and {delta} is the time
elapsed since the fix was specified. This style also sets the
velocity of each atom to the time derivative of this expression. If
any of the amplitude components is specified as NULL, then the
position and velocity of that component is time integrated the same as
the "fix nve"_fix_nve.html command would perform, using the
corresponding force component on the atom.
The {rotate} style rotates atoms around a rotation axis {R} =
(Rx,Ry,Rz) that goes thru a point {P} = (Px,Py,Pz). The {period} of
the rotation is also specified. This style also sets the velocity of
each atom to (omega cross Rperp) where omega is its angular velocity
around the rotation axis and Rperp is a perpendicular vector from the
rotation axis to the atom. If the defined
"atom_style"_atom_style.html assigns an angular velocity to each atom,
then each atom's angular velocity is also set to omega. Note that the
direction of rotation for the atoms around the rotation axis is
consistent with the right-hand rule: if your right-hand's thumb points
along {R}, then your fingers wrap around the axis in the direction of
rotation.
The {variable} style allows the position and velocity components of
each atom to be set by formulas specified via the
"variable"_variable.html command. Each of the 6 variables is
specified as an argument to the fix as v_name, where name is the
variable name that is defined elsewhere in the input script.
Each variable must be of either the {equal} or {atom} style.
{Equal}-style variables compute a single numeric quantity, that can be
a function of the timestep as well as of other simulation values.
{Atom}-style variables compute a numeric quantity for each atom, that
can be a function per-atom quantities, such as the atom's position, as
well as of the timestep and other simulation values. Note that this
fix stores the original coordinates of each atom (see note below) so
that per-atom quantity can be used in an atom-style variable formula.
See the "variable"_variable.html command for details.
The first 3 variables (v_dx,v_dy,v_dz) specified for the {variable}
style are used to calculate a displacement from the atom's original
position at the time the fix was specified. The second 3 variables
(v_vx,v_vy,v_vz) specified are used to compute a velocity for each
atom.
Any of the 6 variables can be specified as NULL. If both the
displacement and velocity variables for a particular x,y,z component
are specified as NULL, then the position and velocity of that
component is time integrated the same as the "fix nve"_fix_nve.html
command would perform, using the corresponding force component on the
atom. If only the velocity variable for a component is specified as
NULL, then the displacement variable will be used to set the position
of the atom, and its velocity component will not be changed. If only
the displacement variable for a component is specified as NULL, then
the velocity variable will be used to set the velocity of the atom,
and the position of the atom will be time integrated using that
velocity.
The {units} keyword determines the meaning of the distance units used
to define the {linear} velocity and {wiggle} amplitude and {rotate}
origin. This setting is ignored for the {variable} style. A {box}
value selects standard units as defined by the "units"_units.html
command, e.g. velocity in Angstroms/fmsec and amplitude and position
in Angstroms for units = real. A {lattice} value means the velocity
units are in lattice spacings per time and the amplitude and position
are in lattice spacings. The "lattice"_lattice.html command must have
been previously used to define the lattice spacing. Each of these 3
quantities may be dependent on the x,y,z dimension, since the lattice
spacings can be different in x,y,z.
For "rRESPA time integration"_run_style.html, this fix adjusts the
position and velocity of atoms on the outermost rRESPA level.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the original coordinates of moving atoms to "binary
restart files"_restart.html, so that the motion can be continuous in a
restarted simulation. See the "read_restart"_read_restart.html
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.
None of the "fix_modify"_fix_modify.html options are relevant to this
fix.
This fix produces a per-atom array which can be accessed by various
-"output commands"_Section_howto.html#4_15. The number of columns for
-each atom is 3, and the columns store the original unwrapped x,y,z
+"output commands"_Section_howto.html#howto_15. The number of columns
+for each atom is 3, and the columns store the original unwrapped x,y,z
coords of each atom. The per-atom values can be accessed on any
timestep.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix nve"_fix_nve.html
[Default:] none
The option default is units = lattice.
diff --git a/doc/fix_msst.html b/doc/fix_msst.html
index 99294e06d..3368fea2b 100644
--- a/doc/fix_msst.html
+++ b/doc/fix_msst.html
@@ -1,171 +1,171 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3> fix msst command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID msst dir shockvel keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>msst = style name of this fix
<LI>dir = <I>x</I> or <I>y</I> or <I>z</I>
<LI>shockvel = shock velocity (strictly positive, distance/time units)
<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>
<PRE> <I>q</I> value = cell mass-like parameter (mass^2/distance^4 units)
<I>mu</I> value = artificial viscosity (mass/length/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)
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all msst y 100.0 q 1.0e5 mu 1.0e5
fix 2 all msst z 50.0 q 1.0e4 mu 1.0e4 v0 4.3419e+03 p0 3.7797e+03 e0 -9.72360e+02 tscale 0.01
</PRE>
<P><B>Description:</B>
</P>
<P>This command performs the Multi-Scale Shock Technique (MSST)
integration to update positions and velocities each timestep to mimic
a compressive shock wave passing over the system. See <A HREF = "#Reed">(Reed)</A>
for a detailed description of this method. The MSST varies the cell
volume and temperature in such a way as to restrain the system to the
shock Hugoniot and the Rayleigh line. These restraints correspond to
the macroscopic conservation laws dictated by a shock
front. <I>shockvel</I> determines the steady shock velocity that will be
simulated.
</P>
<P>To perform a simulation, choose a value of <I>q</I> that provides volume
compression on the timescale of 100 fs to 1 ps. If the volume is not
compressing, either the shock speed is chosen to be below the material
sound speed or <I>p0</I> has been chosen inaccurately. Volume compression
at the start can be sped up by using a non-zero value of <I>tscale</I>. Use
the smallest value of <I>tscale</I> that results in compression.
</P>
<P>Under some special high-symmetry conditions, the pressure (volume)
and/or temperature of the system may oscillate for many cycles even
with an appropriate choice of mass-like parameter <I>q</I>. Such
oscillations have physical significance in some cases. The optional
<I>mu</I> keyword adds an artificial viscosity that helps break the system
symmetry to equilibrate to the shock Hugoniot and Rayleigh line more
rapidly in such cases.
</P>
<P><I>tscale</I> is a factor between 0 and 1 that determines what fraction of
thermal kinetic energy is converted to compressive strain kinetic
energy at the start of the simulation. Setting this parameter to a
non-zero value may assist in compression at the start of simulations
where it is slow to occur.
</P>
<P>If keywords <I>e0</I>, <I>p0</I>,or <I>v0</I> are not supplied, these quantities will
be calculated on the first step, after the energy specified by
<I>tscale</I> is removed. The value of <I>e0</I> is not used in the dynamical
equations, but is used in calculating the deviation from the Hugoniot.
</P>
<P>Values of shockvel less than a critical value determined by the
material response will not have compressive solutions. This will be
reflected in lack of significant change of the volume in the MSST.
</P>
<P>For all pressure styles, the simulation box stays orthogonal in shape.
Parrinello-Rahman boundary conditions (tilted box) are supported by
LAMMPS, but are not implemented for MSST.
</P>
<P>This fix computes a temperature and pressure each timestep. To do
this, the fix creates its own computes of style "temp" and "pressure",
as if these commands had been issued:
</P>
<PRE>compute fix-ID_temp group-ID temp
compute fix-ID_press group-ID pressure fix-ID_temp
</PRE>
<P>See the <A HREF = "compute_temp.html">compute temp</A> and <A HREF = "compute_pressure.html">compute
pressure</A> commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press". The group for the new computes is "all".
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the state of all internal variables to <A HREF = "restart.html">binary restart
files</A>. 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>The progress of the MSST can be monitored by printing the global
scalar and global vector quantities computed by the fix.
</P>
<P>The scalar is the cumulative energy change due to the fix. This is
also the energy added to the potential energy by the
<A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> command. With this command, the
thermo keyword <I>etotal</I> prints the conserved quantity of the MSST
dynamic equations. This can be used to test if the MD timestep is
sufficiently small for accurate integration of the dynamic
equations. See also <A HREF = "thermo_style.html">thermo_style</A> command.
</P>
<P>The global vector contains four values in this order:
</P>
<P>[<I>dhugoniot</I>, <I>drayleigh</I>, <I>lagrangian_speed</I>, <I>lagrangian_position</I>]
</P>
<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#4_15">output
-commands</A>. The scalar values calculated by
-this fix are "extensive"; the vector values are "intensive".
+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#2_3">Making
+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
all.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_deform.html">fix deform</A>
</P>
<P><B>Default:</B>
</P>
<P>The keyword defaults are q = 10, mu = 0, tscale = 0.01. p0, v0, and e0
are calculated on the first step.
</P>
<HR>
<A NAME = "Reed"></A>
<P><B>(Reed)</B> Reed, Fried, and Joannopoulos, Phys. Rev. Lett., 90, 235503 (2003).
</P>
</HTML>
diff --git a/doc/fix_msst.txt b/doc/fix_msst.txt
index 95612079b..1e7707796 100644
--- a/doc/fix_msst.txt
+++ b/doc/fix_msst.txt
@@ -1,158 +1,158 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix msst command :h3
[Syntax:]
fix ID group-ID msst dir shockvel keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
msst = style name of this fix :l
dir = {x} or {y} or {z} :l
shockvel = shock velocity (strictly positive, distance/time units) :l
zero or more keyword value pairs may be appended :l
keyword = {q} or {mu} or {p0} or {v0} or {e0} or {tscale} :l
{q} value = cell mass-like parameter (mass^2/distance^4 units)
{mu} value = artificial viscosity (mass/length/time units)
{p0} value = initial pressure in the shock equations (pressure units)
{v0} value = initial simulation cell volume in the shock equations (distance^3 units)
{e0} value = initial total energy (energy units)
{tscale} value = reduction in initial temperature (unitless fraction between 0.0 and 1.0) :pre
:ule
[Examples:]
fix 1 all msst y 100.0 q 1.0e5 mu 1.0e5
fix 2 all msst z 50.0 q 1.0e4 mu 1.0e4 v0 4.3419e+03 p0 3.7797e+03 e0 -9.72360e+02 tscale 0.01 :pre
[Description:]
This command performs the Multi-Scale Shock Technique (MSST)
integration to update positions and velocities each timestep to mimic
a compressive shock wave passing over the system. See "(Reed)"_#Reed
for a detailed description of this method. The MSST varies the cell
volume and temperature in such a way as to restrain the system to the
shock Hugoniot and the Rayleigh line. These restraints correspond to
the macroscopic conservation laws dictated by a shock
front. {shockvel} determines the steady shock velocity that will be
simulated.
To perform a simulation, choose a value of {q} that provides volume
compression on the timescale of 100 fs to 1 ps. If the volume is not
compressing, either the shock speed is chosen to be below the material
sound speed or {p0} has been chosen inaccurately. Volume compression
at the start can be sped up by using a non-zero value of {tscale}. Use
the smallest value of {tscale} that results in compression.
Under some special high-symmetry conditions, the pressure (volume)
and/or temperature of the system may oscillate for many cycles even
with an appropriate choice of mass-like parameter {q}. Such
oscillations have physical significance in some cases. The optional
{mu} keyword adds an artificial viscosity that helps break the system
symmetry to equilibrate to the shock Hugoniot and Rayleigh line more
rapidly in such cases.
{tscale} is a factor between 0 and 1 that determines what fraction of
thermal kinetic energy is converted to compressive strain kinetic
energy at the start of the simulation. Setting this parameter to a
non-zero value may assist in compression at the start of simulations
where it is slow to occur.
If keywords {e0}, {p0},or {v0} are not supplied, these quantities will
be calculated on the first step, after the energy specified by
{tscale} is removed. The value of {e0} is not used in the dynamical
equations, but is used in calculating the deviation from the Hugoniot.
Values of shockvel less than a critical value determined by the
material response will not have compressive solutions. This will be
reflected in lack of significant change of the volume in the MSST.
For all pressure styles, the simulation box stays orthogonal in shape.
Parrinello-Rahman boundary conditions (tilted box) are supported by
LAMMPS, but are not implemented for MSST.
This fix computes a temperature and pressure each timestep. To do
this, the fix creates its own computes of style "temp" and "pressure",
as if these commands had been issued:
compute fix-ID_temp group-ID temp
compute fix-ID_press group-ID pressure fix-ID_temp :pre
See the "compute temp"_compute_temp.html and "compute
pressure"_compute_pressure.html commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press". The group for the new computes is "all".
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the state of all internal variables to "binary restart
files"_restart.html. See the "read_restart"_read_restart.html 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.
The progress of the MSST can be monitored by printing the global
scalar and global vector quantities computed by the fix.
The scalar is the cumulative energy change due to the fix. This is
also the energy added to the potential energy by the
"fix_modify"_fix_modify.html {energy} command. With this command, the
thermo keyword {etotal} prints the conserved quantity of the MSST
dynamic equations. This can be used to test if the MD timestep is
sufficiently small for accurate integration of the dynamic
equations. See also "thermo_style"_thermo_style.html command.
The global vector contains four values in this order:
\[{dhugoniot}, {drayleigh}, {lagrangian_speed}, {lagrangian_position}\]
{dhugoniot} is the departure from the Hugoniot (temperature units).
{drayleigh} is the departure from the Rayleigh line (pressure units).
{lagrangian_speed} is the laboratory-frame Lagrangian speed (particle velocity) of the computational cell (velocity units).
{lagrangian_position} 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
To print these quantities to the log file with descriptive column
headers, the following LAMMPS commands are suggested:
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
These fixes compute a global scalar and a global vector of 4
quantities, which can be accessed by various "output
-commands"_Section_howto.html#4_15. The scalar values calculated by
-this fix are "extensive"; the vector values are "intensive".
+commands"_Section_howto.html#howto_15. The scalar values calculated
+by this fix are "extensive"; the vector values are "intensive".
[Restrictions:]
This fix style is part of the "shock" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
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
all.
[Related commands:]
"fix deform"_fix_deform.html
[Default:]
The keyword defaults are q = 10, mu = 0, tscale = 0.01. p0, v0, and e0
are calculated on the first step.
:line
:link(Reed)
[(Reed)] Reed, Fried, and Joannopoulos, Phys. Rev. Lett., 90, 235503 (2003).
diff --git a/doc/fix_neb.html b/doc/fix_neb.html
index 69837ca05..0b41163b2 100644
--- a/doc/fix_neb.html
+++ b/doc/fix_neb.html
@@ -1,113 +1,113 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix neb command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID neb Kspring
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>neb = style name of this fix command
<LI>Kspring = inter-replica spring constant (force/distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 active neb 10.0
</PRE>
<P><B>Description:</B>
</P>
<P>Add inter-replica forces to atoms in the group for a multi-replica
simulation run via the <A HREF = "neb.html">neb</A> command to perform a nudged
elastic band (NEB) calculation for transition state finding. Hi-level
explanations of NEB are given with the <A HREF = "neb.html">neb</A> command and in
-<A HREF = "Section_howto.html#4_5">this section</A> of the manual. The fix neb
+<A HREF = "Section_howto.html#howto_5">this section</A> of the manual. The fix neb
command must be used with the "neb" command to define how
inter-replica forces are computed.
</P>
<P>Only the N atoms in the fix group experience inter-replica forces.
Atoms in the two end-point replicas do not experience these forces,
but those in intermediate replicas do. During the initial stage of
NEB, the 3N-length vector of interatomic forces Fi = -Grad(V) acting
on the atoms of each intermediate replica I is altered, as described
in the <A HREF = "#Henkelman1">(Henkelman1)</A> paper, to become:
</P>
<PRE>Fi = -Grad(V) + (Grad(V) dot That) That + Kspring (|Ri+i - Ri| - |Ri - Ri-1|) That
</PRE>
<P>Ri are the atomic coordinates of replica I; Ri-1 and Ri+1 are the
coordinates of its neighbor replicas. That (t with a hat over it) is
the unit "tangent" vector for replica I which is a function of Ri,
Ri-1, Ri+1, and the potential energy of the 3 replicas; it points
roughly in the direction of (Ri+i - Ri-1); see the
<A HREF = "#Henkelman1">(Henkelman1)</A> paper for details.
</P>
<P>The first two terms in the above equation are the component of the
interatomic forces perpendicular to the tangent vector. The last term
is a spring force between replica I and its neighbors, parallel to the
tangent vector direction with the specified spring constant <I>Kspring</I>.
</P>
<P>The effect of the first two terms is to push the atoms of each replica
toward the minimum energy path (MEP) of conformational states that
transition over the energy barrier. The MEP for an energy barrier is
defined as a sequence of 3N-dimensional states which cross the barrier
at its saddle point, each of which has a potential energy gradient
parallel to the MEP itself.
</P>
<P>The effect of the last term is to push each replica away from its two
neighbors in a direction along the MEP, so that the final set of
states are equidistant from each other.
</P>
<P>During the second stage of NEB, the forces on the N atoms in the
replica nearest the top of the energy barrier are altered so that it
climbs to the top of the barrier and finds the saddle point. The
forces on atoms in this replica are described in the
<A HREF = "#Henkelman2">(Henkelman2)</A> paper, and become:
</P>
<PRE>Fi = -Grad(V) + 2 (Grad(V) dot That) That
</PRE>
<P>The inter-replica forces for the other replicas are unchanged from the
first equation.
</P>
<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>. 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#4_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.
+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.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
as invoked by the <A HREF = "minimize.html">minimize</A> command via the
<A HREF = "neb.html">neb</A> command.
</P>
<P><B>Restrictions:</B>
</P>
<P>This command can only be used if LAMMPS was built with the "replica"
-package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info on packages.
+package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "neb.html">neb</A>
</P>
<P><B>Default:</B> none
</P>
<A NAME = "Henkelman"></A>
<P><B>(Henkelman1)</B> Henkelman and Jonsson, J Chem Phys, 113, 9978-9985 (2000).
</P>
<A NAME = "Henkelman"></A>
<P><B>(Henkelman2)</B> Henkelman, Uberuaga, Jonsson, J Chem Phys, 113,
9901-9904 (2000).
</P>
</HTML>
diff --git a/doc/fix_neb.txt b/doc/fix_neb.txt
index 353bde8bf..fa8cb1b71 100644
--- a/doc/fix_neb.txt
+++ b/doc/fix_neb.txt
@@ -1,106 +1,106 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix neb command :h3
[Syntax:]
fix ID group-ID neb Kspring :pre
ID, group-ID are documented in "fix"_fix.html command
neb = style name of this fix command
Kspring = inter-replica spring constant (force/distance units) :ul
[Examples:]
fix 1 active neb 10.0 :pre
[Description:]
Add inter-replica forces to atoms in the group for a multi-replica
simulation run via the "neb"_neb.html command to perform a nudged
elastic band (NEB) calculation for transition state finding. Hi-level
explanations of NEB are given with the "neb"_neb.html command and in
-"this section"_Section_howto.html#4_5 of the manual. The fix neb
+"this section"_Section_howto.html#howto_5 of the manual. The fix neb
command must be used with the "neb" command to define how
inter-replica forces are computed.
Only the N atoms in the fix group experience inter-replica forces.
Atoms in the two end-point replicas do not experience these forces,
but those in intermediate replicas do. During the initial stage of
NEB, the 3N-length vector of interatomic forces Fi = -Grad(V) acting
on the atoms of each intermediate replica I is altered, as described
in the "(Henkelman1)"_#Henkelman1 paper, to become:
Fi = -Grad(V) + (Grad(V) dot That) That + Kspring (|Ri+i - Ri| - |Ri - Ri-1|) That :pre
Ri are the atomic coordinates of replica I; Ri-1 and Ri+1 are the
coordinates of its neighbor replicas. That (t with a hat over it) is
the unit "tangent" vector for replica I which is a function of Ri,
Ri-1, Ri+1, and the potential energy of the 3 replicas; it points
roughly in the direction of (Ri+i - Ri-1); see the
"(Henkelman1)"_#Henkelman1 paper for details.
The first two terms in the above equation are the component of the
interatomic forces perpendicular to the tangent vector. The last term
is a spring force between replica I and its neighbors, parallel to the
tangent vector direction with the specified spring constant {Kspring}.
The effect of the first two terms is to push the atoms of each replica
toward the minimum energy path (MEP) of conformational states that
transition over the energy barrier. The MEP for an energy barrier is
defined as a sequence of 3N-dimensional states which cross the barrier
at its saddle point, each of which has a potential energy gradient
parallel to the MEP itself.
The effect of the last term is to push each replica away from its two
neighbors in a direction along the MEP, so that the final set of
states are equidistant from each other.
During the second stage of NEB, the forces on the N atoms in the
replica nearest the top of the energy barrier are altered so that it
climbs to the top of the barrier and finds the saddle point. The
forces on atoms in this replica are described in the
"(Henkelman2)"_#Henkelman2 paper, and become:
Fi = -Grad(V) + 2 (Grad(V) dot That) That :pre
The inter-replica forces for the other replicas are unchanged from the
first equation.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
as invoked by the "minimize"_minimize.html command via the
"neb"_neb.html command.
[Restrictions:]
This command can only be used if LAMMPS was built with the "replica"
-package. See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info on packages.
+package. See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
[Related commands:]
"neb"_neb.html
[Default:] none
:link(Henkelman)
[(Henkelman1)] Henkelman and Jonsson, J Chem Phys, 113, 9978-9985 (2000).
:link(Henkelman)
[(Henkelman2)] Henkelman, Uberuaga, Jonsson, J Chem Phys, 113,
9901-9904 (2000).
diff --git a/doc/fix_nh.html b/doc/fix_nh.html
index 684641e6d..526c9075f 100644
--- a/doc/fix_nh.html
+++ b/doc/fix_nh.html
@@ -1,545 +1,545 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nvt command
</H3>
<H3>fix nvt/cuda command
</H3>
<H3>fix npt command
</H3>
<H3>fix npt/cuda command
</H3>
<H3>fix nph command
</H3>
<P><B>Syntax:</B>
</P>
<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>
<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>
<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 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
fix 2 jello npt temp 300.0 300.0 100.0 tri 5.0 5.0 1000.0
fix 2 ice nph 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 which 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 equations of motion used are those of Shinoda et al. in
<A HREF = "#Shinoda">(Shinoda)</A>, which combine the hydrostatic equations of
Martyna, Tobias and Klein in <A HREF = "#Martyna">(Martyna)</A> with the strain
energy proposed by Parrinello and Rahman in
<A HREF = "#Parrinello">(Parrinello)</A>. The time integration schemes closely
follow the time-reversible measure-preserving Verlet and
rRESPA integrators derived by Tuckerman et al. in <A HREF = "#Tuckerman">(Tuckerman)</A>.
</P>
<HR>
<P>The thermostat for fix styles <I>nvt</I> and <I>npt</I> is specified using the
<I>temp</I> keyword. Other thermostat-related keywords are <I>tchain</I>,
<I>tloop</I> and <I>drag</I>, which are discussed below.
</P>
<P>The thermostat is applied to only the translational degrees of freedom
for the particles. The translational degrees of freedom can also have
a bias velocity removed before thermostatting takes place; see the
description below. The desired temperature at each timestep is a
ramped value during the run from <I>Tstart</I> to <I>Tstop</I>. The <I>Tdamp</I>
parameter is specified in time units and determines how rapidly the
temperature is relaxed. For example, a value of 10.0 means to relax
the temperature in a timespan of (roughly) 10 time units (e.g. tau or
fmsec or psec - see the <A HREF = "units.html">units</A> command). The atoms in the
fix group are the only ones whose velocities and positions are updated
by the velocity/position update portion of the integration.
</P>
<P>IMPORTANT NOTE: A Nose-Hoover thermostat will not work well for
arbitrary values of <I>Tdamp</I>. If <I>Tdamp</I> is too small, the temperature
can fluctuate wildly; if it is too large, the temperature will take a
very long time to equilibrate. A good choice for many models is a
<I>Tdamp</I> of around 100 timesteps. Note that this is NOT the same as
100 time units for most <A HREF = "units.html">units</A> settings.
</P>
<HR>
<P>The barostat for fix styles <I>npt</I> and <I>nph</I> is specified using one or
more of the <I>iso</I>, <I>aniso</I>, <I>tri</I>, <I>x</I>, <I>y</I>, <I>z</I>, <I>xy</I>, <I>xz</I>, <I>yz</I>,
and <I>couple</I> keywords. These keywords give you the ability to specify
all 6 components of an external stress tensor, and to couple various
of these components together so that the dimensions they represent are
varied together during a constant-pressure simulation.
</P>
<P>Other barostat-related keywords are <I>pchain</I>, <I>mtk</I>, <I>ploop</I>,
<I>nreset</I>, <I>drag</I>, and <I>dilate</I>, which are discussed below.
</P>
<P>Orthogonal simulation boxes have 3 adjustable dimensions (x,y,z).
Triclinic (non-orthogonal) simulation boxes have 6 adjustable
dimensions (x,y,z,xy,xz,yz). 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.
</P>
<P>The target pressures for each of the 6 components of the stress tensor
can be specified independently via the <I>x</I>, <I>y</I>, <I>z</I>, <I>xy</I>, <I>xz</I>, <I>yz</I>
keywords, which correspond to the 6 simulation box dimensions. For
each component, the external pressure or tensor component at each
timestep is a ramped value during the run from <I>Pstart</I> to <I>Pstop</I>.
If a target pressure is specified for a component, then the
corresponding box dimension will change during a simulation. For
example, if the <I>y</I> keyword is used, the y-box length will change. If
the <I>xy</I> keyword is used, the xy tilt factor will change. A box
dimension will not change if that component is not specified, although
you have the option to change that dimension via the <A HREF = "fix_deform.html">fix
deform</A> command.
</P>
<P>Note that in order to use the <I>xy</I>, <I>xz</I>, or <I>yz</I> keywords, the
simulation box must be triclinic, even if its initial tilt factors are
0.0.
</P>
<P>For all barostat keywords, the <I>Pdamp</I> parameter operates like the
<I>Tdamp</I> parameter, determining the time scale on which pressure is
relaxed. For example, a value of 10.0 means to relax the pressure in
a timespan of (roughly) 10 time units (e.g. tau or fmsec or psec - see
the <A HREF = "units.html">units</A> command).
</P>
<P>IMPORTANT NOTE: A Nose-Hoover barostat will not work well for
arbitrary values of <I>Pdamp</I>. If <I>Pdamp</I> is too small, the pressure
and volume can fluctuate wildly; if it is too large, the pressure will
take a very long time to equilibrate. A good choice for many models
is a <I>Pdamp</I> of around 1000 timesteps. Note that this is NOT the same
as 1000 time units for most <A HREF = "units.html">units</A> settings.
</P>
<P>Regardless of what atoms are in the fix group, a global pressure or
stress tensor is computed for all atoms. Similarly, when the size of
the simulation box is changed, all atoms are re-scaled to new
positions, unless the keyword <I>dilate</I> is specified with a value of
<I>partial</I>, in which case only the atoms in the fix group are
re-scaled. The latter can be useful for leaving the coordinates of
atoms in a solid substrate unchanged and controlling the pressure of a
surrounding fluid.
</P>
<HR>
<P>The <I>couple</I> keyword allows two or three of the diagonal components of
the pressure tensor to be "coupled" together. The value specified
with the keyword determines which are coupled. For example, <I>xz</I>
means the <I>Pxx</I> and <I>Pzz</I> components of the stress tensor are coupled.
<I>Xyz</I> means all 3 diagonal components are coupled. Coupling means two
things: the instantaneous stress will be computed as an average of the
corresponding diagonal components, and the coupled box dimensions will
be changed together in lockstep, meaning coupled dimensions will be
dilated or contracted by the same percentage every timestep. The
<I>Pstart</I>, <I>Pstop</I>, <I>Pdamp</I> parameters for any coupled dimensions must
be identical. <I>Couple xyz</I> can be used for a 2d simulation; the <I>z</I>
dimension is simply ignored.
</P>
<HR>
<P>The <I>iso</I>, <I>aniso</I>, and <I>tri</I> keywords are simply shortcuts that are
equivalent to specifying several other keywords together.
</P>
<P>The keyword <I>iso</I> means couple all 3 diagonal components together when
pressure is computed (hydrostatic pressure), and dilate/contract the
dimensions together. Using "iso Pstart Pstop Pdamp" is the same as
specifying these 4 keywords:
</P>
<PRE>x Pstart Pstop Pdamp
y Pstart Pstop Pdamp
z Pstart Pstop Pdamp
couple xyz
</PRE>
<P>The keyword <I>aniso</I> means <I>x</I>, <I>y</I>, and <I>z</I> dimensions are controlled
independently using the <I>Pxx</I>, <I>Pyy</I>, and <I>Pzz</I> components of the
stress tensor as the driving forces, and the specified scalar external
pressure. Using "aniso Pstart Pstop Pdamp" is the same as specifying
these 4 keywords:
</P>
<PRE>x Pstart Pstop Pdamp
y Pstart Pstop Pdamp
z Pstart Pstop Pdamp
couple none
</PRE>
<P>The keyword <I>tri</I> means <I>x</I>, <I>y</I>, <I>z</I>, <I>xy</I>, <I>xz</I>, and <I>yz</I> dimensions
are controlled independently using their individual stress components
as the driving forces, and the specified scalar pressure as the
external normal stress. Using "tri Pstart Pstop Pdamp" is the same as
specifying these 7 keywords:
</P>
<PRE>x Pstart Pstop Pdamp
y Pstart Pstop Pdamp
z Pstart Pstop Pdamp
xy 0.0 0.0 Pdamp
yz 0.0 0.0 Pdamp
xz 0.0 0.0 Pdamp
couple none
</PRE>
<HR>
<P>In some cases (e.g. for solids) the pressure (volume) and/or
temperature of the system can oscillate undesirably when a Nose/Hoover
barostat and thermostat is applied. The optional <I>drag</I> keyword will
damp these oscillations, although it alters the Nose/Hoover equations.
A value of 0.0 (no drag) leaves the Nose/Hoover formalism unchanged.
A non-zero value adds a drag term; the larger the value specified, the
greater the damping effect. Performing a short run and monitoring the
pressure and temperature is the best way to determine if the drag term
is working. Typically a value between 0.2 to 2.0 is sufficient to
damp oscillations after a few periods. Note that use of the drag
keyword will interfere with energy conservation and will also change
the distribution of positions and velocities so that they do not
correspond to the nominal NVT, NPT, or NPH ensembles.
</P>
<P>An alternative way to control initial oscillations is to use chain
thermostats. The keyword <I>tchain</I> determines the number of thermostats
in the particle thermostat. A value of 1 corresponds to the original
Nose-Hoover thermostat. The keyword <I>pchain</I> specifies the number of
thermostats in the chain thermostatting the barostat degrees of
freedom. A value of 0 corresponds to no thermostatting of the
barostat variables.
</P>
<P>The <I>mtk</I> keyword controls whether or not the correction terms due to
Martyna, Tuckerman, and Klein are included in the equations of motion
<A HREF = "#Martyna">(Martyna)</A>. Specifying <I>no</I> reproduces the original
Hoover barostat, whose volume probability distribution function
differs from the true NPT and NPH ensembles by a factor of 1/V. Hence
using <I>yes</I> is more correct, but in many cases the difference is
negligible.
</P>
<P>The keyword <I>tloop</I> can be used to improve the accuracy of integration
scheme at little extra cost. The initial and final updates of the
thermostat variables are broken up into <I>tloop</I> substeps, each of
length <I>dt</I>/<I>tloop</I>. This corresponds to using a first-order
Suzuki-Yoshida scheme <A HREF = "#Tuckerman2006">(Tuckerman2006)</A>. The keyword
<I>ploop</I> does the same thing for the barostat thermostat.
</P>
<P>The keyword <I>nreset</I> controls how often the reference dimensions used
to define the strain energy are reset. If this keyword is not used,
or is given a value of zero, then the reference dimensions are set to
those of the initial simulation domain and are never changed. If the
simulation domain changes significantly during the simulation, then
the final average pressure tensor will differ significantly from the
specified values of the external stress tensor. A value of <I>nstep</I>
means that every <I>nstep</I> timesteps, the reference dimensions are set
to those of the current simulation domain.
</P>
<P>The <I>scaleyz</I>, <I>scalexz</I>, and <I>scalexy</I> keywords control whether or
not the corresponding tilt factors are scaled with the
associated box dimensions
when barostatting triclinic periodic cells.
The default values <I>yes</I> will turn on scaling, which corresponds to
adjusting the linear dimensions of the cell while preserving its shape.
Choosing <I>no</I> ensures that the tilt factors are not scaled with the
box dimensions. See below for restrictions and default values in different
situations. In older versions of LAMMPS, scaling of tilt factors was not
performed. The old behavior can be recovered by setting all three
scale keywords to <I>no</I>.
</P>
<HR>
<P>IMPORTANT NOTE: Using a barostat coupled to tilt dimensions <I>xy</I>,
<I>xz</I>, <I>yz</I> can sometimes result in arbitrarily large values of the
tilt dimensions, i.e. a dramatically deformed simulation box. LAMMPS
allows the tilt factors to grow a little beyond the normal limit
of half the box length (0.6 times the box length), and then performs
flipping or re-shaping to an equivalent periodic cell. The re-shaping
operation is described in more detail in the doc page for
<A HREF = "fix_deform.html">fix deform</A>. Both the barostat dynamics and
the atom trajectories are unaffected by this operation. However,
if a tilt factor is incremented by a large amount (1.5 times the
box length) on a single timestep, LAMMPS can not accomodate
this event and will terminate the simulation
with an error. This error typically
indicates that there is something badly wrong with how the simulation
was constructed, such as specifying values of <I>Pstart</I> that are
too far from the current stress value, or specifying a timestep that
is too large. Triclinic barostatting should be used with
care. This also is true for other barostat styles, although they tend
to be more forgiving of insults. In particular, it is important to
recognize that equilibrium liquids can not support a shear stress and
that equilibrium solids can not support shear stresses that exceed the yield stress.
</P>
<P>IMPORTANT NOTE: Unlike the <A HREF = "fix_temp_berendsen.html">fix
temp/berendsen</A> command which performs
thermostatting but NO time integration, these fixes perform
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, the <I>temp</I> options for
fix nvt and fix npt should not normally be used on atoms that also
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>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting and barostatting.
</P>
<HR>
<P>These fixes compute a temperature and pressure 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:
</P>
<PRE>compute fix-ID_temp group-ID temp
compute fix-ID_press group-ID pressure fix-ID_temp
</PRE>
<PRE>compute fix-ID_temp all temp
compute fix-ID_press all pressure fix-ID_temp
</PRE>
<P>See the <A HREF = "compute_temp.html">compute temp</A> and <A HREF = "compute_pressure.html">compute
pressure</A> commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press". For fix nvt, the group for the new computes
is the same as the fix group. For fix nph and fix npt, the group for
the new computes is "all" since pressure is computed for the entire
system.
</P>
<P>Note that these are NOT the computes used by thermodynamic output (see
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>
and <I>thermo_press</I>. This means you can change the attributes of this
fix's temperature or pressure via the
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
or pressure during thermodynamic output via the <A HREF = "thermo_style.html">thermo_style
custom</A> command using the appropriate compute-ID.
It also means that changing attributes of <I>thermo_temp</I> or
<I>thermo_press</I> will have no effect on this fix.
</P>
<P>Like other fixes that perform thermostatting, fix nvt and fix npt can
be used with <A HREF = "compute.html">compute commands</A> that calculate a
temperature after removing a "bias" from the atom velocities.
E.g. removing the center-of-mass velocity from a group of atoms or
only calculating temperature on the x-component of velocity or only
calculating temperature for atoms in a geometric region. This is not
done by default, but only if the <A HREF = "fix_modify.html">fix_modify</A> command
is used to assign a temperature compute to this fix that includes such
a bias term. See the doc pages for individual <A HREF = "compute.html">compute
commands</A> to determine which ones include a bias. In
this case, the thermostat works in the following manner: the current
temperature is calculated taking the bias into account, bias is
removed from each atom, thermostatting is performed on the remaining
thermal degrees of freedom, and the bias is added back in.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>These fixes writes the state of all the thermostat and barostat
variables to <A HREF = "restart.html">binary restart files</A>. 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>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> and <I>press</I> options are
supported by these fixes. You can use them to assign a
<A HREF = "compute.html">compute</A> you have defined to this fix which will be used
in its thermostatting or barostatting procedure, as described above.
If you do this, note that the kinetic energy derived from the compute
temperature should be consistent with the virial term computed using
all atoms for the pressure. LAMMPS will warn you if you choose to
compute temperature on a subset of atoms.
</P>
<P>IMPORTANT NOTE: If both the <I>temp</I> and <I>press</I> keywords are used in a
single thermo_modify command (or in two separate commands), then the
order in which the keywords are specified is important. Note that a
<A HREF = "compute_pressure.html">pressure compute</A> defines its own temperature
compute as an argument when it is specified. The <I>temp</I> keyword will
override this (for the pressure compute being used by fix npt), but
only if the <I>temp</I> keyword comes after the <I>press</I> keyword. If the
<I>temp</I> keyword comes before the <I>press</I> keyword, then the new pressure
compute specified by the <I>press</I> keyword will be unaffected by the
<I>temp</I> setting.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by these
fixes to add the energy change induced by Nose/Hoover thermostatting
and barostatting to the system's potential energy as part of
<A HREF = "thermo_style.html">thermodynamic output</A>.
</P>
<P>These fixes compute a global scalar and a global vector of quantities,
-which can be accessed by various <A HREF = "Section_howto.html#4_15">output
+which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
commands</A>. The scalar value calculated by
these fixes is "extensive"; the vector values are "intensive".
</P>
<P>The scalar is the cumulative energy change due to the fix.
</P>
<P>The vector stores internal Nose/Hoover thermostat and barostat
variables. The number and meaning of the vector values depends on
which fix is used and the settings for keywords <I>tchain</I> and <I>pchain</I>,
which specify the number of Nose/Hoover chains for the thermostat and
barostat. If no thermostatting is done, then <I>tchain</I> is 0. If no
barostatting is done, then <I>pchain</I> is 0. In the following list,
"ndof" is 0, 1, 3, or 6, and is the number of degrees of freedom in
the barostat. Its value is 0 if no barostat is used, else its value
is 6 if any off-diagonal stress tensor component is barostatted, else
its value is 1 if <I>couple xyz</I> is used or <I>couple xy</I> for a 2d
simulation, otherwise its value is 3.
</P>
<P>The order of values in the global vector and their meaning is as
follows. The notation means there are tchain values for eta, followed
by tchain for eta_dot, followed by ndof for omega, etc:
</P>
<UL><LI>eta[tchain] = particle thermostat displacements (unitless)
<LI>eta_dot[tchain] = particle thermostat velocities (1/time units)
<LI>omega[ndof] = barostat displacements (unitless)
<LI>omega_dot[ndof] = barostat velocities (1/time units)
<LI>etap[pchain] = barostat thermostat displacements (unitless)
<LI>etap_dot[pchain] = barostat thermostat velocities (1/time units)
<LI>PE_eta[tchain] = potential energy of each particle thermostat displacement (energy units)
<LI>KE_eta_dot[tchain] = kinetic energy of each particle thermostat velocity (energy units)
<LI>PE_omega[ndof] = potential energy of each barostat displacement (energy units)
<LI>KE_omega_dot[ndof] = kinetic energy of each barostat velocity (energy units)
<LI>PE_etap[pchain] = potential energy of each barostat thermostat displacement (energy units)
<LI>KE_etap_dot[pchain] = kinetic energy of each barostat thermostat velocity (energy units)
<LI>PE_strain[1] = scalar strain energy (energy units)
</UL>
<P>These fixes can ramp their external temperature and pressure over
multiple runs, using the <I>start</I> and <I>stop</I> keywords of the
<A HREF = "run.html">run</A> command. See the <A HREF = "run.html">run</A> command for details of
how to do this.
</P>
<P>These fixes are not invoked during <A HREF = "minimize.html">energy
minimization</A>.
</P>
<P>These fixes can be used with either the <I>verlet</I> or <I>respa</I>
<A HREF = "run_style.html">integrators</A>. When using one of the barostat fixes
with <I>respa</I>, LAMMPS uses an integrator constructed
according to the following factorization of the Liouville propagator
(for two rRESPA levels):
</P>
<CENTER><IMG SRC = "Eqs/fix_nh1.jpg">
</CENTER>
<P>This factorization differs somewhat from that of Tuckerman et al., in that
the barostat is only updated at the outermost rRESPA level, whereas
Tuckerman's factorization requires splitting the pressure into pieces
corresponding to the forces computed at each rRESPA level. In theory, the
latter method will exhibit better numerical stability. In practice,
because Pdamp is normally chosen to be a large multiple of the
outermost rRESPA timestep, the barostat dynamics are not the
limiting factor for numerical stability. Both
factorizations are time-reversible and can be shown to preserve the phase
space measure of the underlying non-Hamiltonian equations of motion.
</P>
<P><B>Restrictions:</B>
</P>
<P>Non-periodic dimensions cannot be barostatted. <I>Z</I>, <I>xz</I>, and <I>yz</I>,
cannot be barostatted 2D simulations. <I>Xy</I>, <I>xz</I>, and <I>yz</I> can only
be barostatted if the simulation domain is triclinic and the 2nd
dimension in the keyword (<I>y</I> dimension in <I>xy</I>) is periodic. 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.
</P>
<P>For the <I>temp</I> keyword, the final Tstop cannot be 0.0 since it would
make the external T = 0.0 at some timestep during the simulation which
is not allowed in the Nose/Hoover formulation.
</P>
<P>The <I>scaleyz yes</I> and <I>scalexz yes</I> keyword/value pairs can not be used
for 2D simulations. <I>scaleyz yes</I>, <I>scalexz yes</I>, and <I>scalexy yes</I> options
can only be used if the 2nd dimension in the keyword is periodic,
and if the tilt factor is not coupled to the barostat via keywords
<I>tri</I>, <I>yz</I>, <I>xz</I>, and <I>xy</I>.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nve.html">fix nve</A>, <A HREF = "fix_modify.html">fix_modify</A>, <A HREF = "run_style.html">run_style</A>
</P>
<P><B>Default:</B>
</P>
<P>The keyword defaults are tchain = 3, pchain = 3, mtk = yes, tloop =
ploop = 1, nreset = 0, drag = 0.0, dilate = all, couple = none,
scaleyz = scalexz = scalexy = yes if periodic in 2nd dimension and
not coupled to barostat, otherwise no.
</P>
<HR>
<A NAME = "Martyna"></A>
<P><B>(Martyna)</B> Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994).
</P>
<A NAME = "Parrinello"></A>
<P><B>(Parrinello)</B> Parrinello and Rahman, J Appl Phys, 52, 7182 (1981).
</P>
<A NAME = "Tuckerman"></A>
<P><B>(Tuckerman)</B> Tuckerman, Alejandre, Lopez-Rendon, Jochim, and
Martyna, J Phys A: Math Gen, 39, 5629 (2006).
</P>
<A NAME = "Shinoda"></A>
<P><B>(Shinoda)</B> Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
</P>
</HTML>
diff --git a/doc/fix_nh.txt b/doc/fix_nh.txt
index 0f766fb9d..6c6ca6072 100644
--- a/doc/fix_nh.txt
+++ b/doc/fix_nh.txt
@@ -1,529 +1,529 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix nvt command :h3
fix nvt/cuda command :h3
fix npt command :h3
fix npt/cuda command :h3
fix nph command :h3
[Syntax:]
fix ID group-ID style_name keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
style_name = {nvt} or {npt} or {nph} :l
one or more keyword value pairs may be appended
keyword = {temp} or {iso} or {aniso} or {tri} or {x} or {y} or {z} or {xy} or {yz} or {xz} or {couple} or {tchain} or {pchain} or {mtk} or {tloop} or {ploop} or {nreset} or {drag} or {dilate}
{temp} values = Tstart Tstop Tdamp
Tstart,Tstop = external temperature at start/end of run
Tdamp = temperature damping parameter (time units)
{iso} or {aniso} or {tri} values = Pstart Pstop Pdamp
Pstart,Pstop = scalar external pressure at start/end of run (pressure units)
Pdamp = pressure damping parameter (time units)
{x} or {y} or {z} or {xy} or {yz} or {xz} values = Pstart Pstop Pdamp
Pstart,Pstop = external stress tensor component at start/end of run (pressure units)
Pdamp = stress damping parameter (time units)
{couple} = {none} or {xyz} or {xy} or {yz} or {xz}
{tchain} value = length of thermostat chain (1 = single thermostat)
{pchain} values = length of thermostat chain on barostat (0 = no thermostat)
{mtk} value = {yes} or {no} = add in MTK adjustment term or not
{tloop} value = number of sub-cycles to perform on thermostat
{ploop} value = number of sub-cycles to perform on barostat thermostat
{nreset} value = reset reference cell every this many timesteps
{drag} value = drag factor added to barostat/thermostat (0.0 = no drag)
{dilate} value = {all} or {partial}
{scaleyz} value = {yes} or {no} = scale yz with lz
{scalexz} value = {yes} or {no} = scale xz with lz
{scalexy} value = {yes} or {no} = scale xy with ly :pre
:ule
[Examples:]
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
fix 2 jello npt temp 300.0 300.0 100.0 tri 5.0 5.0 1000.0
fix 2 ice nph 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
[Description:]
These commands perform time integration on Nose-Hoover style
non-Hamiltonian equations of motion which 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 {xy}, {xz} and {yz}
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.
The equations of motion used are those of Shinoda et al. in
"(Shinoda)"_#Shinoda, which combine the hydrostatic equations of
Martyna, Tobias and Klein in "(Martyna)"_#Martyna with the strain
energy proposed by Parrinello and Rahman in
"(Parrinello)"_#Parrinello. The time integration schemes closely
follow the time-reversible measure-preserving Verlet and
rRESPA integrators derived by Tuckerman et al. in "(Tuckerman)"_#Tuckerman.
:line
The thermostat for fix styles {nvt} and {npt} is specified using the
{temp} keyword. Other thermostat-related keywords are {tchain},
{tloop} and {drag}, which are discussed below.
The thermostat is applied to only the translational degrees of freedom
for the particles. The translational degrees of freedom can also have
a bias velocity removed before thermostatting takes place; see the
description below. The desired temperature at each timestep is a
ramped value during the run from {Tstart} to {Tstop}. The {Tdamp}
parameter is specified in time units and determines how rapidly the
temperature is relaxed. For example, a value of 10.0 means to relax
the temperature in a timespan of (roughly) 10 time units (e.g. tau or
fmsec or psec - see the "units"_units.html command). The atoms in the
fix group are the only ones whose velocities and positions are updated
by the velocity/position update portion of the integration.
IMPORTANT NOTE: A Nose-Hoover thermostat will not work well for
arbitrary values of {Tdamp}. If {Tdamp} is too small, the temperature
can fluctuate wildly; if it is too large, the temperature will take a
very long time to equilibrate. A good choice for many models is a
{Tdamp} of around 100 timesteps. Note that this is NOT the same as
100 time units for most "units"_units.html settings.
:line
The barostat for fix styles {npt} and {nph} is specified using one or
more of the {iso}, {aniso}, {tri}, {x}, {y}, {z}, {xy}, {xz}, {yz},
and {couple} keywords. These keywords give you the ability to specify
all 6 components of an external stress tensor, and to couple various
of these components together so that the dimensions they represent are
varied together during a constant-pressure simulation.
Other barostat-related keywords are {pchain}, {mtk}, {ploop},
{nreset}, {drag}, and {dilate}, which are discussed below.
Orthogonal simulation boxes have 3 adjustable dimensions (x,y,z).
Triclinic (non-orthogonal) simulation boxes have 6 adjustable
dimensions (x,y,z,xy,xz,yz). The "create_box"_create_box.html, "read
data"_read_data.html, and "read_restart"_read_restart.html commands
specify whether the simulation box is orthogonal or non-orthogonal
(triclinic) and explain the meaning of the xy,xz,yz tilt factors.
The target pressures for each of the 6 components of the stress tensor
can be specified independently via the {x}, {y}, {z}, {xy}, {xz}, {yz}
keywords, which correspond to the 6 simulation box dimensions. For
each component, the external pressure or tensor component at each
timestep is a ramped value during the run from {Pstart} to {Pstop}.
If a target pressure is specified for a component, then the
corresponding box dimension will change during a simulation. For
example, if the {y} keyword is used, the y-box length will change. If
the {xy} keyword is used, the xy tilt factor will change. A box
dimension will not change if that component is not specified, although
you have the option to change that dimension via the "fix
deform"_fix_deform.html command.
Note that in order to use the {xy}, {xz}, or {yz} keywords, the
simulation box must be triclinic, even if its initial tilt factors are
0.0.
For all barostat keywords, the {Pdamp} parameter operates like the
{Tdamp} parameter, determining the time scale on which pressure is
relaxed. For example, a value of 10.0 means to relax the pressure in
a timespan of (roughly) 10 time units (e.g. tau or fmsec or psec - see
the "units"_units.html command).
IMPORTANT NOTE: A Nose-Hoover barostat will not work well for
arbitrary values of {Pdamp}. If {Pdamp} is too small, the pressure
and volume can fluctuate wildly; if it is too large, the pressure will
take a very long time to equilibrate. A good choice for many models
is a {Pdamp} of around 1000 timesteps. Note that this is NOT the same
as 1000 time units for most "units"_units.html settings.
Regardless of what atoms are in the fix group, a global pressure or
stress tensor is computed for all atoms. Similarly, when the size of
the simulation box is changed, all atoms are re-scaled to new
positions, unless the keyword {dilate} is specified with a value of
{partial}, in which case only the atoms in the fix group are
re-scaled. The latter can be useful for leaving the coordinates of
atoms in a solid substrate unchanged and controlling the pressure of a
surrounding fluid.
:line
The {couple} keyword allows two or three of the diagonal components of
the pressure tensor to be "coupled" together. The value specified
with the keyword determines which are coupled. For example, {xz}
means the {Pxx} and {Pzz} components of the stress tensor are coupled.
{Xyz} means all 3 diagonal components are coupled. Coupling means two
things: the instantaneous stress will be computed as an average of the
corresponding diagonal components, and the coupled box dimensions will
be changed together in lockstep, meaning coupled dimensions will be
dilated or contracted by the same percentage every timestep. The
{Pstart}, {Pstop}, {Pdamp} parameters for any coupled dimensions must
be identical. {Couple xyz} can be used for a 2d simulation; the {z}
dimension is simply ignored.
:line
The {iso}, {aniso}, and {tri} keywords are simply shortcuts that are
equivalent to specifying several other keywords together.
The keyword {iso} means couple all 3 diagonal components together when
pressure is computed (hydrostatic pressure), and dilate/contract the
dimensions together. Using "iso Pstart Pstop Pdamp" is the same as
specifying these 4 keywords:
x Pstart Pstop Pdamp
y Pstart Pstop Pdamp
z Pstart Pstop Pdamp
couple xyz :pre
The keyword {aniso} means {x}, {y}, and {z} dimensions are controlled
independently using the {Pxx}, {Pyy}, and {Pzz} components of the
stress tensor as the driving forces, and the specified scalar external
pressure. Using "aniso Pstart Pstop Pdamp" is the same as specifying
these 4 keywords:
x Pstart Pstop Pdamp
y Pstart Pstop Pdamp
z Pstart Pstop Pdamp
couple none :pre
The keyword {tri} means {x}, {y}, {z}, {xy}, {xz}, and {yz} dimensions
are controlled independently using their individual stress components
as the driving forces, and the specified scalar pressure as the
external normal stress. Using "tri Pstart Pstop Pdamp" is the same as
specifying these 7 keywords:
x Pstart Pstop Pdamp
y Pstart Pstop Pdamp
z Pstart Pstop Pdamp
xy 0.0 0.0 Pdamp
yz 0.0 0.0 Pdamp
xz 0.0 0.0 Pdamp
couple none :pre
:line
In some cases (e.g. for solids) the pressure (volume) and/or
temperature of the system can oscillate undesirably when a Nose/Hoover
barostat and thermostat is applied. The optional {drag} keyword will
damp these oscillations, although it alters the Nose/Hoover equations.
A value of 0.0 (no drag) leaves the Nose/Hoover formalism unchanged.
A non-zero value adds a drag term; the larger the value specified, the
greater the damping effect. Performing a short run and monitoring the
pressure and temperature is the best way to determine if the drag term
is working. Typically a value between 0.2 to 2.0 is sufficient to
damp oscillations after a few periods. Note that use of the drag
keyword will interfere with energy conservation and will also change
the distribution of positions and velocities so that they do not
correspond to the nominal NVT, NPT, or NPH ensembles.
An alternative way to control initial oscillations is to use chain
thermostats. The keyword {tchain} determines the number of thermostats
in the particle thermostat. A value of 1 corresponds to the original
Nose-Hoover thermostat. The keyword {pchain} specifies the number of
thermostats in the chain thermostatting the barostat degrees of
freedom. A value of 0 corresponds to no thermostatting of the
barostat variables.
The {mtk} keyword controls whether or not the correction terms due to
Martyna, Tuckerman, and Klein are included in the equations of motion
"(Martyna)"_#Martyna. Specifying {no} reproduces the original
Hoover barostat, whose volume probability distribution function
differs from the true NPT and NPH ensembles by a factor of 1/V. Hence
using {yes} is more correct, but in many cases the difference is
negligible.
The keyword {tloop} can be used to improve the accuracy of integration
scheme at little extra cost. The initial and final updates of the
thermostat variables are broken up into {tloop} substeps, each of
length {dt}/{tloop}. This corresponds to using a first-order
Suzuki-Yoshida scheme "(Tuckerman2006)"_#Tuckerman2006. The keyword
{ploop} does the same thing for the barostat thermostat.
The keyword {nreset} controls how often the reference dimensions used
to define the strain energy are reset. If this keyword is not used,
or is given a value of zero, then the reference dimensions are set to
those of the initial simulation domain and are never changed. If the
simulation domain changes significantly during the simulation, then
the final average pressure tensor will differ significantly from the
specified values of the external stress tensor. A value of {nstep}
means that every {nstep} timesteps, the reference dimensions are set
to those of the current simulation domain.
The {scaleyz}, {scalexz}, and {scalexy} keywords control whether or
not the corresponding tilt factors are scaled with the
associated box dimensions
when barostatting triclinic periodic cells.
The default values {yes} will turn on scaling, which corresponds to
adjusting the linear dimensions of the cell while preserving its shape.
Choosing {no} ensures that the tilt factors are not scaled with the
box dimensions. See below for restrictions and default values in different
situations. In older versions of LAMMPS, scaling of tilt factors was not
performed. The old behavior can be recovered by setting all three
scale keywords to {no}.
:line
IMPORTANT NOTE: Using a barostat coupled to tilt dimensions {xy},
{xz}, {yz} can sometimes result in arbitrarily large values of the
tilt dimensions, i.e. a dramatically deformed simulation box. LAMMPS
allows the tilt factors to grow a little beyond the normal limit
of half the box length (0.6 times the box length), and then performs
flipping or re-shaping to an equivalent periodic cell. The re-shaping
operation is described in more detail in the doc page for
"fix deform"_fix_deform.html. Both the barostat dynamics and
the atom trajectories are unaffected by this operation. However,
if a tilt factor is incremented by a large amount (1.5 times the
box length) on a single timestep, LAMMPS can not accomodate
this event and will terminate the simulation
with an error. This error typically
indicates that there is something badly wrong with how the simulation
was constructed, such as specifying values of {Pstart} that are
too far from the current stress value, or specifying a timestep that
is too large. Triclinic barostatting should be used with
care. This also is true for other barostat styles, although they tend
to be more forgiving of insults. In particular, it is important to
recognize that equilibrium liquids can not support a shear stress and
that equilibrium solids can not support shear stresses that exceed the yield stress.
IMPORTANT NOTE: Unlike the "fix
temp/berendsen"_fix_temp_berendsen.html command which performs
thermostatting but NO time integration, these fixes perform
thermostatting/barostatting AND time integration. Thus you should not
use any other time integration fix, such as "fix nve"_fix_nve.html on
atoms to which this fix is applied. Likewise, the {temp} options for
fix nvt and fix npt should not normally be used on atoms that also
have their temperature controlled by another fix - e.g. by "fix
langevin"_fix_nh.html or "fix temp/rescale"_fix_temp_rescale.html
commands.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting and barostatting.
:line
These fixes compute a temperature and pressure 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:
compute fix-ID_temp group-ID temp
compute fix-ID_press group-ID pressure fix-ID_temp :pre
compute fix-ID_temp all temp
compute fix-ID_press all pressure fix-ID_temp :pre
See the "compute temp"_compute_temp.html and "compute
pressure"_compute_pressure.html commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press". For fix nvt, the group for the new computes
is the same as the fix group. For fix nph and fix npt, the group for
the new computes is "all" since pressure is computed for the entire
system.
Note that these are NOT the computes used by thermodynamic output (see
the "thermo_style"_thermo_style.html command) with ID = {thermo_temp}
and {thermo_press}. This means you can change the attributes of this
fix's temperature or pressure via the
"compute_modify"_compute_modify.html command or print this temperature
or pressure during thermodynamic output via the "thermo_style
custom"_thermo_style.html command using the appropriate compute-ID.
It also means that changing attributes of {thermo_temp} or
{thermo_press} will have no effect on this fix.
Like other fixes that perform thermostatting, fix nvt and fix npt can
be used with "compute commands"_compute.html that calculate a
temperature after removing a "bias" from the atom velocities.
E.g. removing the center-of-mass velocity from a group of atoms or
only calculating temperature on the x-component of velocity or only
calculating temperature for atoms in a geometric region. This is not
done by default, but only if the "fix_modify"_fix_modify.html command
is used to assign a temperature compute to this fix that includes such
a bias term. See the doc pages for individual "compute
commands"_compute.html to determine which ones include a bias. In
this case, the thermostat works in the following manner: the current
temperature is calculated taking the bias into account, bias is
removed from each atom, thermostatting is performed on the remaining
thermal degrees of freedom, and the bias is added back in.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
These fixes writes the state of all the thermostat and barostat
variables to "binary restart files"_restart.html. See the
"read_restart"_read_restart.html 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.
The "fix_modify"_fix_modify.html {temp} and {press} options are
supported by these fixes. You can use them to assign a
"compute"_compute.html you have defined to this fix which will be used
in its thermostatting or barostatting procedure, as described above.
If you do this, note that the kinetic energy derived from the compute
temperature should be consistent with the virial term computed using
all atoms for the pressure. LAMMPS will warn you if you choose to
compute temperature on a subset of atoms.
IMPORTANT NOTE: If both the {temp} and {press} keywords are used in a
single thermo_modify command (or in two separate commands), then the
order in which the keywords are specified is important. Note that a
"pressure compute"_compute_pressure.html defines its own temperature
compute as an argument when it is specified. The {temp} keyword will
override this (for the pressure compute being used by fix npt), but
only if the {temp} keyword comes after the {press} keyword. If the
{temp} keyword comes before the {press} keyword, then the new pressure
compute specified by the {press} keyword will be unaffected by the
{temp} setting.
The "fix_modify"_fix_modify.html {energy} option is supported by these
fixes to add the energy change induced by Nose/Hoover thermostatting
and barostatting to the system's potential energy as part of
"thermodynamic output"_thermo_style.html.
These fixes compute a global scalar and a global vector of quantities,
which can be accessed by various "output
-commands"_Section_howto.html#4_15. The scalar value calculated by
+commands"_Section_howto.html#howto_15. The scalar value calculated by
these fixes is "extensive"; the vector values are "intensive".
The scalar is the cumulative energy change due to the fix.
The vector stores internal Nose/Hoover thermostat and barostat
variables. The number and meaning of the vector values depends on
which fix is used and the settings for keywords {tchain} and {pchain},
which specify the number of Nose/Hoover chains for the thermostat and
barostat. If no thermostatting is done, then {tchain} is 0. If no
barostatting is done, then {pchain} is 0. In the following list,
"ndof" is 0, 1, 3, or 6, and is the number of degrees of freedom in
the barostat. Its value is 0 if no barostat is used, else its value
is 6 if any off-diagonal stress tensor component is barostatted, else
its value is 1 if {couple xyz} is used or {couple xy} for a 2d
simulation, otherwise its value is 3.
The order of values in the global vector and their meaning is as
follows. The notation means there are tchain values for eta, followed
by tchain for eta_dot, followed by ndof for omega, etc:
eta\[tchain\] = particle thermostat displacements (unitless)
eta_dot\[tchain\] = particle thermostat velocities (1/time units)
omega\[ndof\] = barostat displacements (unitless)
omega_dot\[ndof\] = barostat velocities (1/time units)
etap\[pchain\] = barostat thermostat displacements (unitless)
etap_dot\[pchain\] = barostat thermostat velocities (1/time units)
PE_eta\[tchain\] = potential energy of each particle thermostat displacement (energy units)
KE_eta_dot\[tchain\] = kinetic energy of each particle thermostat velocity (energy units)
PE_omega\[ndof\] = potential energy of each barostat displacement (energy units)
KE_omega_dot\[ndof\] = kinetic energy of each barostat velocity (energy units)
PE_etap\[pchain\] = potential energy of each barostat thermostat displacement (energy units)
KE_etap_dot\[pchain\] = kinetic energy of each barostat thermostat velocity (energy units)
PE_strain\[1\] = scalar strain energy (energy units) :ul
These fixes can ramp their external temperature and pressure over
multiple runs, using the {start} and {stop} keywords of the
"run"_run.html command. See the "run"_run.html command for details of
how to do this.
These fixes are not invoked during "energy
minimization"_minimize.html.
These fixes can be used with either the {verlet} or {respa}
"integrators"_run_style.html. When using one of the barostat fixes
with {respa}, LAMMPS uses an integrator constructed
according to the following factorization of the Liouville propagator
(for two rRESPA levels):
:c,image(Eqs/fix_nh1.jpg)
This factorization differs somewhat from that of Tuckerman et al., in that
the barostat is only updated at the outermost rRESPA level, whereas
Tuckerman's factorization requires splitting the pressure into pieces
corresponding to the forces computed at each rRESPA level. In theory, the
latter method will exhibit better numerical stability. In practice,
because Pdamp is normally chosen to be a large multiple of the
outermost rRESPA timestep, the barostat dynamics are not the
limiting factor for numerical stability. Both
factorizations are time-reversible and can be shown to preserve the phase
space measure of the underlying non-Hamiltonian equations of motion.
[Restrictions:]
Non-periodic dimensions cannot be barostatted. {Z}, {xz}, and {yz},
cannot be barostatted 2D simulations. {Xy}, {xz}, and {yz} can only
be barostatted if the simulation domain is triclinic and the 2nd
dimension in the keyword ({y} dimension in {xy}) is periodic. The
"create_box"_create_box.html, "read data"_read_data.html, and
"read_restart"_read_restart.html commands specify whether the
simulation box is orthogonal or non-orthogonal (triclinic) and explain
the meaning of the xy,xz,yz tilt factors.
For the {temp} keyword, the final Tstop cannot be 0.0 since it would
make the external T = 0.0 at some timestep during the simulation which
is not allowed in the Nose/Hoover formulation.
The {scaleyz yes} and {scalexz yes} keyword/value pairs can not be used
for 2D simulations. {scaleyz yes}, {scalexz yes}, and {scalexy yes} options
can only be used if the 2nd dimension in the keyword is periodic,
and if the tilt factor is not coupled to the barostat via keywords
{tri}, {yz}, {xz}, and {xy}.
[Related commands:]
"fix nve"_fix_nve.html, "fix_modify"_fix_modify.html, "run_style"_run_style.html
[Default:]
The keyword defaults are tchain = 3, pchain = 3, mtk = yes, tloop =
ploop = 1, nreset = 0, drag = 0.0, dilate = all, couple = none,
scaleyz = scalexz = scalexy = yes if periodic in 2nd dimension and
not coupled to barostat, otherwise no.
:line
:link(Martyna)
[(Martyna)] Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994).
:link(Parrinello)
[(Parrinello)] Parrinello and Rahman, J Appl Phys, 52, 7182 (1981).
:link(Tuckerman)
[(Tuckerman)] Tuckerman, Alejandre, Lopez-Rendon, Jochim, and
Martyna, J Phys A: Math Gen, 39, 5629 (2006).
:link(Shinoda)
[(Shinoda)] Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
diff --git a/doc/fix_nh_eff.html b/doc/fix_nh_eff.html
index 5677e960c..2b798928d 100644
--- a/doc/fix_nh_eff.html
+++ b/doc/fix_nh_eff.html
@@ -1,158 +1,158 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nvt/eff command
</H3>
<H3>fix npt/eff command
</H3>
<H3>fix nph/eff command
</H3>
<P><B>Syntax:</B>
</P>
<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#2_3">Making
+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.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_nh.html">fix nph</A>, <A HREF = "fix_nh.html">fix npt</A>,
<A HREF = "fix_modify.html">fix_modify</A>, <A HREF = "run_style.html">run_style</A>
</P>
<P><B>Default:</B>
</P>
<P>The keyword defaults are tchain = 3, pchain = 3, mtk = yes, tloop =
ploop = 1, nreset = 0, drag = 0.0, dilate = all, and couple = none.
</P>
<HR>
<A NAME = "Martyna"></A>
<P><B>(Martyna)</B> Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994).
</P>
<A NAME = "Parrinello"></A>
<P><B>(Parrinello)</B> Parrinello and Rahman, J Appl Phys, 52, 7182 (1981).
</P>
<A NAME = "Tuckerman"></A>
<P><B>(Tuckerman)</B> Tuckerman, Alejandre, Lopez-Rendon, Jochim, and
Martyna, J Phys A: Math Gen, 39, 5629 (2006).
</P>
<A NAME = "Shinoda"></A>
<P><B>(Shinoda)</B> Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
</P>
</HTML>
diff --git a/doc/fix_nh_eff.txt b/doc/fix_nh_eff.txt
index 3d7a261e7..9c7a9db43 100644
--- a/doc/fix_nh_eff.txt
+++ b/doc/fix_nh_eff.txt
@@ -1,144 +1,144 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix nvt/eff command :h3
fix npt/eff command :h3
fix nph/eff command :h3
[Syntax:]
fix ID group-ID style_name keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
style_name = {nvt/eff} or {npt/eff} or {nph/eff} :l
one or more keyword value pairs may be appended
keyword = {temp} or {iso} or {aniso} or {tri} or {x} or {y} or {z} or {xy} or {yz} or {xz} or {couple} or {tchain} or {pchain} or {mtk} or {tloop} or {ploop} or {nreset} or {drag} or {dilate}
{temp} values = Tstart Tstop Tdamp
Tstart,Tstop = external temperature at start/end of run
Tdamp = temperature damping parameter (time units)
{iso} or {aniso} or {tri} values = Pstart Pstop Pdamp
Pstart,Pstop = scalar external pressure at start/end of run (pressure units)
Pdamp = pressure damping parameter (time units)
{x} or {y} or {z} or {xy} or {yz} or {xz} values = Pstart Pstop Pdamp
Pstart,Pstop = external stress tensor component at start/end of run (pressure units)
Pdamp = stress damping parameter (time units)
{couple} = {none} or {xyz} or {xy} or {yz} or {xz}
{tchain} value = length of thermostat chain (1 = single thermostat)
{pchain} values = length of thermostat chain on barostat (0 = no thermostat)
{mtk} value = {yes} or {no} = add in MTK adjustment term or not
{tloop} value = number of sub-cycles to perform on thermostat
{ploop} value = number of sub-cycles to perform on barostat thermostat
{nreset} value = reset reference cell every this many timesteps
{drag} value = drag factor added to barostat/thermostat (0.0 = no drag)
{dilate} value = {all} or {partial} :pre
:ule
[Examples:]
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
[Description:]
These commands perform time integration on Nose-Hoover style
non-Hamiltonian equations of motion for nuclei and electrons in the
group for the "electron force field"_pair_eff.html 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 {xy},
{xz} and {yz} 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.
The operation of these fixes is exactly like that described by the
"fix nvt, npt, and nph"_fix_nh.html 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 "fix nvt, npt, and nph"_fix_nh.html
doc page), are performed with computes that include the eFF contribution
to the temperature or kinetic energy from the electron radial velocity.
IMPORTANT NOTE: there are two different pressures that can be reported
for eFF when defining the pair_style (see "pair
eff/cut"_pair_eff_cut.html 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).
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 "velocity"_velocity.html
command, so the the user must allow for these degrees of freedom to
equilibrate (i.e. equi-partitioning of energy) through time
integration.
[Restart, fix_modify, output, run start/stop, minimize info:]
See the doc page for the "fix nvt, npt, and nph"_fix_nh.html commands
for details.
[Restrictions:]
This fix is part of the "user-eff" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
Other restriction discussed on the doc page for the "fix nvt, npt, and
nph"_fix_nh.html commands also apply.
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.
[Related commands:]
"fix nvt"_fix_nh.html, "fix nph"_fix_nh.html, "fix npt"_fix_nh.html,
"fix_modify"_fix_modify.html, "run_style"_run_style.html
[Default:]
The keyword defaults are tchain = 3, pchain = 3, mtk = yes, tloop =
ploop = 1, nreset = 0, drag = 0.0, dilate = all, and couple = none.
:line
:link(Martyna)
[(Martyna)] Martyna, Tobias and Klein, J Chem Phys, 101, 4177 (1994).
:link(Parrinello)
[(Parrinello)] Parrinello and Rahman, J Appl Phys, 52, 7182 (1981).
:link(Tuckerman)
[(Tuckerman)] Tuckerman, Alejandre, Lopez-Rendon, Jochim, and
Martyna, J Phys A: Math Gen, 39, 5629 (2006).
:link(Shinoda)
[(Shinoda)] Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
diff --git a/doc/fix_nph_asphere.html b/doc/fix_nph_asphere.html
index fb9fe89e1..060e17ec9 100644
--- a/doc/fix_nph_asphere.html
+++ b/doc/fix_nph_asphere.html
@@ -1,134 +1,134 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nph/asphere command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID nph/asphere args keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>nph/asphere = style name of this fix command
<LI>additional barostat related keyword/value pairs from the <A HREF = "fix_nh.html">fix nph</A> command can be appended
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all nph/asphere iso 0.0 0.0 1000.0
fix 2 all nph/asphere x 5.0 5.0 1000.0
fix 2 all nph/asphere x 5.0 5.0 1000.0 drag 0.2
fix 2 water nph/asphere aniso 0.0 0.0 1000.0 dilate partial
</PRE>
<P><B>Description:</B>
</P>
<P>Perform constant NPH integration to update position, velocity,
orientation, and angular velocity each timestep for aspherical or
ellipsoidal particles in the group using a Nose/Hoover pressure
barostat. P is pressure; H is enthalpy. This creates a system
trajectory consistent with the isenthalpic ensemble.
</P>
<P>This fix differs from the <A HREF = "fix_nh.html">fix nph</A> command, which assumes
point particles and only updates their position and velocity.
</P>
<P>Additional parameters affecting the barostat are specified by keywords
and values documented with the <A HREF = "fix_nh.html">fix nph</A> command. See,
for example, discussion of the <I>aniso</I>, and <I>dilate</I> keywords.
</P>
<P>The particles in the fix group are the only ones whose velocities and
positions are updated by the velocity/position update portion of the
NPH integration.
</P>
<P>Regardless of what particles are in the fix group, a global pressure is
computed for all particles. Similarly, when the size of the simulation
box is changed, all particles are re-scaled to new positions, unless the
keyword <I>dilate</I> is specified with a value of <I>partial</I>, in which case
only the particles in the fix group are re-scaled. The latter can be
useful for leaving the coordinates of particles in a solid substrate
unchanged and controlling the pressure of a surrounding fluid.
</P>
<HR>
<P>This fix computes a temperature and pressure each timestep. To do
this, the fix creates its own computes of style "temp/asphere" and
"pressure", as if these commands had been issued:
</P>
<PRE>compute fix-ID_temp all temp/asphere
compute fix-ID_press all pressure fix-ID_temp
</PRE>
<P>See the <A HREF = "compute_temp_asphere.html">compute temp/asphere</A> and <A HREF = "compute_pressure.html">compute
pressure</A> commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press", and the group for the new computes is "all"
since pressure is computed for the entire system.
</P>
<P>Note that these are NOT the computes used by thermodynamic output (see
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>
and <I>thermo_press</I>. This means you can change the attributes of this
fix's temperature or pressure via the
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
or pressure during thermodynamic output via the <A HREF = "thermo_style.html">thermo_style
custom</A> command using the appropriate compute-ID.
It also means that changing attributes of <I>thermo_temp</I> or
<I>thermo_press</I> will have no effect on this fix.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the state of the Nose/Hoover barostat to <A HREF = "restart.html">binary
restart files</A>. 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>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> and <I>press</I> options are
supported by this fix. You can use them to assign a
<A HREF = "compute.html">compute</A> you have defined to this fix which will be used
in its thermostatting or barostatting procedure. If you do this, note
that the kinetic energy derived from the compute temperature should be
consistent with the virial term computed using all atoms for the
pressure. LAMMPS will warn you if you choose to compute temperature
on a subset of atoms.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy change induced by Nose/Hoover barostatting to
the system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>.
</P>
<P>This fix computes the same global scalar and global vector of
quantities as does the <A HREF = "fix_nh.html">fix nph</A> command.
</P>
<P>This fix can ramp its target pressure over multiple runs, using the
<I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this.
</P>
<P>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 "asphere" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>This fix requires that atoms store torque and angular momementum and a
quaternion as defined by the <A HREF = "atom_style.html">atom_style ellipsoid</A>
command.
</P>
<P>All particles in the group must be finite-size. They cannot be point
particles, but they can be aspherical or spherical as defined by their
shape attribute.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nh.html">fix nph</A>, <A HREF = "fix_nve_asphere.html">fix nve_asphere</A>, <A HREF = "fix_nvt_asphere.html">fix
nvt_asphere</A>, <A HREF = "fix_npt_asphere.html">fix
npt_asphere</A>, <A HREF = "fix_modify.html">fix_modify</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_nph_asphere.txt b/doc/fix_nph_asphere.txt
index e866b685f..99954fc68 100755
--- a/doc/fix_nph_asphere.txt
+++ b/doc/fix_nph_asphere.txt
@@ -1,129 +1,129 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix nph/asphere command :h3
[Syntax:]
fix ID group-ID nph/asphere args keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command
nph/asphere = style name of this fix command
additional barostat related keyword/value pairs from the "fix nph"_fix_nh.html command can be appended :ul
[Examples:]
fix 1 all nph/asphere iso 0.0 0.0 1000.0
fix 2 all nph/asphere x 5.0 5.0 1000.0
fix 2 all nph/asphere x 5.0 5.0 1000.0 drag 0.2
fix 2 water nph/asphere aniso 0.0 0.0 1000.0 dilate partial :pre
[Description:]
Perform constant NPH integration to update position, velocity,
orientation, and angular velocity each timestep for aspherical or
ellipsoidal particles in the group using a Nose/Hoover pressure
barostat. P is pressure; H is enthalpy. This creates a system
trajectory consistent with the isenthalpic ensemble.
This fix differs from the "fix nph"_fix_nh.html command, which assumes
point particles and only updates their position and velocity.
Additional parameters affecting the barostat are specified by keywords
and values documented with the "fix nph"_fix_nh.html command. See,
for example, discussion of the {aniso}, and {dilate} keywords.
The particles in the fix group are the only ones whose velocities and
positions are updated by the velocity/position update portion of the
NPH integration.
Regardless of what particles are in the fix group, a global pressure is
computed for all particles. Similarly, when the size of the simulation
box is changed, all particles are re-scaled to new positions, unless the
keyword {dilate} is specified with a value of {partial}, in which case
only the particles in the fix group are re-scaled. The latter can be
useful for leaving the coordinates of particles in a solid substrate
unchanged and controlling the pressure of a surrounding fluid.
:line
This fix computes a temperature and pressure each timestep. To do
this, the fix creates its own computes of style "temp/asphere" and
"pressure", as if these commands had been issued:
compute fix-ID_temp all temp/asphere
compute fix-ID_press all pressure fix-ID_temp :pre
See the "compute temp/asphere"_compute_temp_asphere.html and "compute
pressure"_compute_pressure.html commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press", and the group for the new computes is "all"
since pressure is computed for the entire system.
Note that these are NOT the computes used by thermodynamic output (see
the "thermo_style"_thermo_style.html command) with ID = {thermo_temp}
and {thermo_press}. This means you can change the attributes of this
fix's temperature or pressure via the
"compute_modify"_compute_modify.html command or print this temperature
or pressure during thermodynamic output via the "thermo_style
custom"_thermo_style.html command using the appropriate compute-ID.
It also means that changing attributes of {thermo_temp} or
{thermo_press} will have no effect on this fix.
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the state of the Nose/Hoover barostat to "binary
restart files"_restart.html. See the "read_restart"_read_restart.html
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.
The "fix_modify"_fix_modify.html {temp} and {press} options are
supported by this fix. You can use them to assign a
"compute"_compute.html you have defined to this fix which will be used
in its thermostatting or barostatting procedure. If you do this, note
that the kinetic energy derived from the compute temperature should be
consistent with the virial term computed using all atoms for the
pressure. LAMMPS will warn you if you choose to compute temperature
on a subset of atoms.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy change induced by Nose/Hoover barostatting to
the system's potential energy as part of "thermodynamic
output"_thermo_style.html.
This fix computes the same global scalar and global vector of
quantities as does the "fix nph"_fix_nh.html command.
This fix can ramp its target pressure over multiple runs, using the
{start} and {stop} keywords of the "run"_run.html command. See the
"run"_run.html command for details of how to do this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix is part of the "asphere" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
This fix requires that atoms store torque and angular momementum and a
quaternion as defined by the "atom_style ellipsoid"_atom_style.html
command.
All particles in the group must be finite-size. They cannot be point
particles, but they can be aspherical or spherical as defined by their
shape attribute.
[Related commands:]
"fix nph"_fix_nh.html, "fix nve_asphere"_fix_nve_asphere.html, "fix
nvt_asphere"_fix_nvt_asphere.html, "fix
npt_asphere"_fix_npt_asphere.html, "fix_modify"_fix_modify.html
[Default:] none
diff --git a/doc/fix_npt_asphere.html b/doc/fix_npt_asphere.html
index ff67e9729..dcfc1ae0c 100644
--- a/doc/fix_npt_asphere.html
+++ b/doc/fix_npt_asphere.html
@@ -1,158 +1,158 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix npt/asphere command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID npt/asphere keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>npt/asphere = style name of this fix command
<LI>additional thermostat and barostat related keyword/value pairs from the <A HREF = "fix_nh.html">fix npt</A> command can be appended
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all npt/asphere temp 300.0 300.0 100.0 iso 0.0 0.0 1000.0
fix 2 all npt/asphere temp 300.0 300.0 100.0 x 5.0 5.0 1000.0
fix 2 all npt/asphere temp 300.0 300.0 100.0 x 5.0 5.0 1000.0 drag 0.2
fix 2 water npt/asphere temp 300.0 300.0 100.0 aniso 0.0 0.0 1000.0 dilate partial
</PRE>
<P><B>Description:</B>
</P>
<P>Perform constant NPT integration to update position, velocity,
orientation, and angular velocity each timestep for aspherical or
ellipsoidal particles in the group using a Nose/Hoover temperature
thermostat and Nose/Hoover pressure barostat. P is pressure; T is
temperature. This creates a system trajectory consistent with the
isothermal-isobaric ensemble.
</P>
<P>This fix differs from the <A HREF = "fix_nh.html">fix npt</A> command, which
assumes point particles and only updates their position and velocity.
</P>
<P>The thermostat is applied to both the translational and rotational
degrees of freedom for the aspherical particles, assuming a compute is
used which calculates a temperature that includes the rotational
degrees of freedom (see below). The translational degrees of freedom
can also have a bias velocity removed from them before thermostatting
takes place; see the description below.
</P>
<P>Additional parameters affecting the thermostat and barostat are
specified by keywords and values documented with the <A HREF = "fix_nh.html">fix
npt</A> command. See, for example, discussion of the <I>temp</I>,
<I>iso</I>, <I>aniso</I>, and <I>dilate</I> keywords.
</P>
<P>The particles in the fix group are the only ones whose velocities and
positions are updated by the velocity/position update portion of the
NPT integration.
</P>
<P>Regardless of what particles are in the fix group, a global pressure is
computed for all particles. Similarly, when the size of the simulation
box is changed, all particles are re-scaled to new positions, unless the
keyword <I>dilate</I> is specified with a value of <I>partial</I>, in which case
only the particles in the fix group are re-scaled. The latter can be
useful for leaving the coordinates of particles in a solid substrate
unchanged and controlling the pressure of a surrounding fluid.
</P>
<HR>
<P>This fix computes a temperature and pressure each timestep. To do
this, the fix creates its own computes of style "temp/asphere" and
"pressure", as if these commands had been issued:
</P>
<PRE>compute fix-ID_temp all temp/asphere
compute fix-ID_press all pressure fix-ID_temp
</PRE>
<P>See the <A HREF = "compute_temp_asphere.html">compute temp/asphere</A> and <A HREF = "compute_pressure.html">compute
pressure</A> commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press", and the group for the new computes is "all"
since pressure is computed for the entire system.
</P>
<P>Note that these are NOT the computes used by thermodynamic output (see
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>
and <I>thermo_press</I>. This means you can change the attributes of this
fix's temperature or pressure via the
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
or pressure during thermodynamic output via the <A HREF = "thermo_style.html">thermo_style
custom</A> command using the appropriate compute-ID.
It also means that changing attributes of <I>thermo_temp</I> or
<I>thermo_press</I> will have no effect on this fix.
</P>
<P>Like other fixes that perform thermostatting, this fix can be used
with <A HREF = "compute.html">compute commands</A> that calculate a temperature
after removing a "bias" from the atom velocities. E.g. removing the
center-of-mass velocity from a group of atoms or only calculating
temperature on the x-component of velocity or only calculating
temperature for atoms in a geometric region. This is not done by
default, but only if the <A HREF = "fix_modify.html">fix_modify</A> command is used
to assign a temperature compute to this fix that includes such a bias
term. See the doc pages for individual <A HREF = "compute.html">compute
commands</A> to determine which ones include a bias. In
this case, the thermostat works in the following manner: the current
temperature is calculated taking the bias into account, bias is
removed from each atom, thermostatting is performed on the remaining
thermal degrees of freedom, and the bias is added back in.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the state of the Nose/Hoover thermostat and barostat
to <A HREF = "restart.html">binary restart files</A>. 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>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> and <I>press</I> options are
supported by this fix. You can use them to assign a
<A HREF = "compute.html">compute</A> you have defined to this fix which will be used
in its thermostatting or barostatting procedure. If you do this, note
that the kinetic energy derived from the compute temperature should be
consistent with the virial term computed using all atoms for the
pressure. LAMMPS will warn you if you choose to compute temperature
on a subset of atoms.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy change induced by Nose/Hoover thermostatting and
barostatting to the system's potential energy as part of
<A HREF = "thermo_style.html">thermodynamic output</A>.
</P>
<P>This fix computes the same global scalar and global vector of
quantities as does the <A HREF = "fix_nh.html">fix npt</A> command.
</P>
<P>This fix can ramp its target temperature and pressure over multiple
runs, using the <I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A>
command. See the <A HREF = "run.html">run</A> command for details of how to do
this.
</P>
<P>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 "asphere" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>This fix requires that atoms store torque and angular momementum and a
quaternion as defined by the <A HREF = "atom_style.html">atom_style ellipsoid</A>
command.
</P>
<P>All particles in the group must be finite-size. They cannot be point
particles, but they can be aspherical or spherical as defined by their
shape attribute.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nh.html">fix npt</A>, <A HREF = "fix_nve_asphere.html">fix nve_asphere</A>, <A HREF = "fix_nvt_asphere.html">fix
nvt_asphere</A>, <A HREF = "fix_modify.html">fix_modify</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_npt_asphere.txt b/doc/fix_npt_asphere.txt
index 0ca79dd51..a3b61b539 100755
--- a/doc/fix_npt_asphere.txt
+++ b/doc/fix_npt_asphere.txt
@@ -1,153 +1,153 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix npt/asphere command :h3
[Syntax:]
fix ID group-ID npt/asphere keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command
npt/asphere = style name of this fix command
additional thermostat and barostat related keyword/value pairs from the "fix npt"_fix_nh.html command can be appended :ul
[Examples:]
fix 1 all npt/asphere temp 300.0 300.0 100.0 iso 0.0 0.0 1000.0
fix 2 all npt/asphere temp 300.0 300.0 100.0 x 5.0 5.0 1000.0
fix 2 all npt/asphere temp 300.0 300.0 100.0 x 5.0 5.0 1000.0 drag 0.2
fix 2 water npt/asphere temp 300.0 300.0 100.0 aniso 0.0 0.0 1000.0 dilate partial :pre
[Description:]
Perform constant NPT integration to update position, velocity,
orientation, and angular velocity each timestep for aspherical or
ellipsoidal particles in the group using a Nose/Hoover temperature
thermostat and Nose/Hoover pressure barostat. P is pressure; T is
temperature. This creates a system trajectory consistent with the
isothermal-isobaric ensemble.
This fix differs from the "fix npt"_fix_nh.html command, which
assumes point particles and only updates their position and velocity.
The thermostat is applied to both the translational and rotational
degrees of freedom for the aspherical particles, assuming a compute is
used which calculates a temperature that includes the rotational
degrees of freedom (see below). The translational degrees of freedom
can also have a bias velocity removed from them before thermostatting
takes place; see the description below.
Additional parameters affecting the thermostat and barostat are
specified by keywords and values documented with the "fix
npt"_fix_nh.html command. See, for example, discussion of the {temp},
{iso}, {aniso}, and {dilate} keywords.
The particles in the fix group are the only ones whose velocities and
positions are updated by the velocity/position update portion of the
NPT integration.
Regardless of what particles are in the fix group, a global pressure is
computed for all particles. Similarly, when the size of the simulation
box is changed, all particles are re-scaled to new positions, unless the
keyword {dilate} is specified with a value of {partial}, in which case
only the particles in the fix group are re-scaled. The latter can be
useful for leaving the coordinates of particles in a solid substrate
unchanged and controlling the pressure of a surrounding fluid.
:line
This fix computes a temperature and pressure each timestep. To do
this, the fix creates its own computes of style "temp/asphere" and
"pressure", as if these commands had been issued:
compute fix-ID_temp all temp/asphere
compute fix-ID_press all pressure fix-ID_temp :pre
See the "compute temp/asphere"_compute_temp_asphere.html and "compute
pressure"_compute_pressure.html commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press", and the group for the new computes is "all"
since pressure is computed for the entire system.
Note that these are NOT the computes used by thermodynamic output (see
the "thermo_style"_thermo_style.html command) with ID = {thermo_temp}
and {thermo_press}. This means you can change the attributes of this
fix's temperature or pressure via the
"compute_modify"_compute_modify.html command or print this temperature
or pressure during thermodynamic output via the "thermo_style
custom"_thermo_style.html command using the appropriate compute-ID.
It also means that changing attributes of {thermo_temp} or
{thermo_press} will have no effect on this fix.
Like other fixes that perform thermostatting, this fix can be used
with "compute commands"_compute.html that calculate a temperature
after removing a "bias" from the atom velocities. E.g. removing the
center-of-mass velocity from a group of atoms or only calculating
temperature on the x-component of velocity or only calculating
temperature for atoms in a geometric region. This is not done by
default, but only if the "fix_modify"_fix_modify.html command is used
to assign a temperature compute to this fix that includes such a bias
term. See the doc pages for individual "compute
commands"_compute.html to determine which ones include a bias. In
this case, the thermostat works in the following manner: the current
temperature is calculated taking the bias into account, bias is
removed from each atom, thermostatting is performed on the remaining
thermal degrees of freedom, and the bias is added back in.
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the state of the Nose/Hoover thermostat and barostat
to "binary restart files"_restart.html. See the
"read_restart"_read_restart.html 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.
The "fix_modify"_fix_modify.html {temp} and {press} options are
supported by this fix. You can use them to assign a
"compute"_compute.html you have defined to this fix which will be used
in its thermostatting or barostatting procedure. If you do this, note
that the kinetic energy derived from the compute temperature should be
consistent with the virial term computed using all atoms for the
pressure. LAMMPS will warn you if you choose to compute temperature
on a subset of atoms.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy change induced by Nose/Hoover thermostatting and
barostatting to the system's potential energy as part of
"thermodynamic output"_thermo_style.html.
This fix computes the same global scalar and global vector of
quantities as does the "fix npt"_fix_nh.html command.
This fix can ramp its target temperature and pressure over multiple
runs, using the {start} and {stop} keywords of the "run"_run.html
command. See the "run"_run.html command for details of how to do
this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix is part of the "asphere" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
This fix requires that atoms store torque and angular momementum and a
quaternion as defined by the "atom_style ellipsoid"_atom_style.html
command.
All particles in the group must be finite-size. They cannot be point
particles, but they can be aspherical or spherical as defined by their
shape attribute.
[Related commands:]
"fix npt"_fix_nh.html, "fix nve_asphere"_fix_nve_asphere.html, "fix
nvt_asphere"_fix_nvt_asphere.html, "fix_modify"_fix_modify.html
[Default:] none
diff --git a/doc/fix_nve.html b/doc/fix_nve.html
index 5b9b63049..14f94a659 100644
--- a/doc/fix_nve.html
+++ b/doc/fix_nve.html
@@ -1,75 +1,75 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nve command
</H3>
<H3>fix nve/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID nve
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>nve = style name of this fix command
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all nve
</PRE>
<P><B>Description:</B>
</P>
<P>Perform constant NVE integration to update position and velocity for
atoms in the group each timestep. V is volume; E is energy. This
creates a system trajectory consistent with the microcanonical
ensemble.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</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>. 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#4_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.
+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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_nh.html">fix npt</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_nve.txt b/doc/fix_nve.txt
index c60d3b123..b6aa2fc0d 100644
--- a/doc/fix_nve.txt
+++ b/doc/fix_nve.txt
@@ -1,69 +1,69 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix nve command :h3
fix nve/cuda command :h3
[Syntax:]
fix ID group-ID nve :pre
ID, group-ID are documented in "fix"_fix.html command
nve = style name of this fix command :ul
[Examples:]
fix 1 all nve :pre
[Description:]
Perform constant NVE integration to update position and velocity for
atoms in the group each timestep. V is volume; E is energy. This
creates a system trajectory consistent with the microcanonical
ensemble.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix nvt"_fix_nh.html, "fix npt"_fix_nh.html
[Default:] none
diff --git a/doc/fix_nve_asphere.html b/doc/fix_nve_asphere.html
index d37e65976..03bafd876 100644
--- a/doc/fix_nve_asphere.html
+++ b/doc/fix_nve_asphere.html
@@ -1,65 +1,65 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nve/asphere command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID nve/asphere
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>nve/asphere = style name of this fix command
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all nve/asphere
</PRE>
<P><B>Description:</B>
</P>
<P>Perform constant NVE integration to update position, velocity,
orientation, and angular velocity for aspherical particles in the
group each timestep. V is volume; E is energy. This creates a system
trajectory consistent with the microcanonical ensemble.
</P>
<P>This fix differs from the <A HREF = "fix_nve.html">fix nve</A> command, which
assumes point particles and only updates their position and velocity.
</P>
<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>. 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#4_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.
+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 "asphere" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>This fix requires that atoms store torque and angular momementum and a
quaternion as defined by the <A HREF = "atom_style.html">atom_style ellipsoid</A>
command.
</P>
<P>All particles in the group must be finite-size. They cannot be point
particles, but they can be aspherical or spherical as defined by their
shape attribute.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nve.html">fix nve</A>, <A HREF = "fix_nve_sphere.html">fix nve/sphere</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_nve_asphere.txt b/doc/fix_nve_asphere.txt
index 27b5392ce..29902973f 100755
--- a/doc/fix_nve_asphere.txt
+++ b/doc/fix_nve_asphere.txt
@@ -1,60 +1,60 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix nve/asphere command :h3
[Syntax:]
fix ID group-ID nve/asphere :pre
ID, group-ID are documented in "fix"_fix.html command
nve/asphere = style name of this fix command :ul
[Examples:]
fix 1 all nve/asphere :pre
[Description:]
Perform constant NVE integration to update position, velocity,
orientation, and angular velocity for aspherical particles in the
group each timestep. V is volume; E is energy. This creates a system
trajectory consistent with the microcanonical ensemble.
This fix differs from the "fix nve"_fix_nve.html command, which
assumes point particles and only updates their position and velocity.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix is part of the "asphere" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
This fix requires that atoms store torque and angular momementum and a
quaternion as defined by the "atom_style ellipsoid"_atom_style.html
command.
All particles in the group must be finite-size. They cannot be point
particles, but they can be aspherical or spherical as defined by their
shape attribute.
[Related commands:]
"fix nve"_fix_nve.html, "fix nve/sphere"_fix_nve_sphere.html
[Default:] none
diff --git a/doc/fix_nve_eff.html b/doc/fix_nve_eff.html
index 28a9a3201..dcc053450 100644
--- a/doc/fix_nve_eff.html
+++ b/doc/fix_nve_eff.html
@@ -1,59 +1,59 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nve/eff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID nve/eff
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>nve/eff = style name of this fix command
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all nve/eff
</PRE>
<P><B>Description:</B>
</P>
<P>Perform constant NVE integration to update position and velocity for
nuclei and electrons in the group for the <A HREF = "pair_eff.html">electron force
field</A> model. V is volume; E is energy. This creates a
system trajectory consistent with the microcanonical ensemble.
</P>
<P>The operation of this fix is exactly like that described by the <A HREF = "fix_nve.html">fix
nve</A> command, except that the radius and radial velocity
of electrons are also updated.
</P>
<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>. 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#4_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.
+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 "user-eff" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nve.html">fix nve</A>, <A HREF = "fix_nh_eff.html">fix nvt/eff</A>, <A HREF = "fix_nh_eff.html">fix
npt/eff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_nve_eff.txt b/doc/fix_nve_eff.txt
index 33f257c98..f500bc198 100644
--- a/doc/fix_nve_eff.txt
+++ b/doc/fix_nve_eff.txt
@@ -1,54 +1,54 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix nve/eff command :h3
[Syntax:]
fix ID group-ID nve/eff :pre
ID, group-ID are documented in "fix"_fix.html command
nve/eff = style name of this fix command :ul
[Examples:]
fix 1 all nve/eff :pre
[Description:]
Perform constant NVE integration to update position and velocity for
nuclei and electrons in the group for the "electron force
field"_pair_eff.html model. V is volume; E is energy. This creates a
system trajectory consistent with the microcanonical ensemble.
The operation of this fix is exactly like that described by the "fix
nve"_fix_nve.html command, except that the radius and radial velocity
of electrons are also updated.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix is part of the "user-eff" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"fix nve"_fix_nve.html, "fix nvt/eff"_fix_nh_eff.html, "fix
npt/eff"_fix_nh_eff.html
[Default:] none
diff --git a/doc/fix_nve_limit.html b/doc/fix_nve_limit.html
index 2713bb1e7..ae9d726d2 100644
--- a/doc/fix_nve_limit.html
+++ b/doc/fix_nve_limit.html
@@ -1,82 +1,82 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nve/limit command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID nve/limit xmax
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>nve = style name of this fix command
<LI>xmax = maximum distance an atom can move in one timestep (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all nve/limit 0.1
</PRE>
<P><B>Description:</B>
</P>
<P>Perform constant NVE updates of position and velocity for atoms in the
group each timestep. A limit is imposed on the maximum distance an
atom can move in one timestep. This is useful when starting a
simulation with a configuration containing highly overlapped atoms.
Normally this would generate huge forces which would blow atoms out of
the simulation box, causing LAMMPS to stop with an error.
</P>
<P>Using this fix can overcome that problem. Forces on atoms must still
be computable (which typically means 2 atoms must have a separation
distance > 0.0). But large velocities generated by large forces are
reset to a value that corresponds to a displacement of length <I>xmax</I>
in a single timestep. <I>Xmax</I> is specified in distance units; see the
<A HREF = "units.html">units</A> command for details. The value of <I>xmax</I> should be
consistent with the neighbor skin distance and the frequency of
neighbor list re-building, so that pairwise interactions are not
missed on successive timesteps as atoms move. See the
<A HREF = "neighbor.html">neighbor</A> and <A HREF = "neigh_modify.html">neigh_modify</A> commands
for details.
</P>
<P>Note that if a velocity reset occurs the integrator will not conserve
energy. On steps where no velocity resets occur, this integrator is
exactly like the <A HREF = "fix_nve.html">fix nve</A> command. Since forces are
unaltered, pressures computed by thermodynamic output will still be
very large for overlapped configurations.
</P>
<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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the count of
-how many updates of atom's velocity/position were limited by the
-maximum distance criterion. This should be roughly the number of
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
+count of how many updates of atom's velocity/position were limited by
+the maximum distance criterion. This should be roughly the number of
atoms so affected, except that updates occur at both the beginning and
end of a timestep in a velocity Verlet timestepping algorithm. This
is a cumulative quantity for the current run, but is re-initialized to
zero each time a run is performed. The scalar value calculated by
this fix is "extensive".
</P>
<P>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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nve.html">fix nve</A>, <A HREF = "fix_nve_noforce.html">fix nve/noforce</A>,
<A HREF = "pair_soft.html">pair_style soft</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_nve_limit.txt b/doc/fix_nve_limit.txt
index 3d3a36d9c..79cb7c30f 100644
--- a/doc/fix_nve_limit.txt
+++ b/doc/fix_nve_limit.txt
@@ -1,77 +1,77 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix nve/limit command :h3
[Syntax:]
fix ID group-ID nve/limit xmax :pre
ID, group-ID are documented in "fix"_fix.html command
nve = style name of this fix command
xmax = maximum distance an atom can move in one timestep (distance units) :ul
[Examples:]
fix 1 all nve/limit 0.1 :pre
[Description:]
Perform constant NVE updates of position and velocity for atoms in the
group each timestep. A limit is imposed on the maximum distance an
atom can move in one timestep. This is useful when starting a
simulation with a configuration containing highly overlapped atoms.
Normally this would generate huge forces which would blow atoms out of
the simulation box, causing LAMMPS to stop with an error.
Using this fix can overcome that problem. Forces on atoms must still
be computable (which typically means 2 atoms must have a separation
distance > 0.0). But large velocities generated by large forces are
reset to a value that corresponds to a displacement of length {xmax}
in a single timestep. {Xmax} is specified in distance units; see the
"units"_units.html command for details. The value of {xmax} should be
consistent with the neighbor skin distance and the frequency of
neighbor list re-building, so that pairwise interactions are not
missed on successive timesteps as atoms move. See the
"neighbor"_neighbor.html and "neigh_modify"_neigh_modify.html commands
for details.
Note that if a velocity reset occurs the integrator will not conserve
energy. On steps where no velocity resets occur, this integrator is
exactly like the "fix nve"_fix_nve.html command. Since forces are
unaltered, pressures computed by thermodynamic output will still be
very large for overlapped configurations.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the count of
-how many updates of atom's velocity/position were limited by the
-maximum distance criterion. This should be roughly the number of
+"output commands"_Section_howto.html#howto_15. The scalar is the
+count of how many updates of atom's velocity/position were limited by
+the maximum distance criterion. This should be roughly the number of
atoms so affected, except that updates occur at both the beginning and
end of a timestep in a velocity Verlet timestepping algorithm. This
is a cumulative quantity for the current run, but is re-initialized to
zero each time a run is performed. The scalar value calculated by
this fix is "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix nve"_fix_nve.html, "fix nve/noforce"_fix_nve_noforce.html,
"pair_style soft"_pair_soft.html
[Default:] none
diff --git a/doc/fix_nve_noforce.html b/doc/fix_nve_noforce.html
index 01c32cb80..8150e5668 100644
--- a/doc/fix_nve_noforce.html
+++ b/doc/fix_nve_noforce.html
@@ -1,59 +1,59 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nve/noforce command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID nve
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>nve/noforce = style name of this fix command
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 3 wall nve/noforce
</PRE>
<P><B>Description:</B>
</P>
<P>Perform updates of position, but not velocity for atoms in the group
each timestep. In other words, the force on the atoms is ignored and
their velocity is not updated. The atom velocities are used to update
their positions.
</P>
<P>This can be useful for wall atoms, when you set their velocities, and
want the wall to move (or stay stationary) in a prescribed fashion.
</P>
<P>This can also be accomplished via the <A HREF = "fix_setforce.html">fix setforce</A>
command, but with fix nve/noforce, the forces on the wall atoms are
unchanged, and can thus be printed by the <A HREF = "dump.html">dump</A> command or
queried with an equal-style <A HREF = "variable.html">variable</A> that uses the
fcm() group function to compute the total force on the group of atoms.
</P>
<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>. 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#4_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.
+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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nve.html">fix nve</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_nve_noforce.txt b/doc/fix_nve_noforce.txt
index 61abe4e16..a0dbcc80f 100644
--- a/doc/fix_nve_noforce.txt
+++ b/doc/fix_nve_noforce.txt
@@ -1,54 +1,54 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix nve/noforce command :h3
[Syntax:]
fix ID group-ID nve :pre
ID, group-ID are documented in "fix"_fix.html command
nve/noforce = style name of this fix command :ul
[Examples:]
fix 3 wall nve/noforce :pre
[Description:]
Perform updates of position, but not velocity for atoms in the group
each timestep. In other words, the force on the atoms is ignored and
their velocity is not updated. The atom velocities are used to update
their positions.
This can be useful for wall atoms, when you set their velocities, and
want the wall to move (or stay stationary) in a prescribed fashion.
This can also be accomplished via the "fix setforce"_fix_setforce.html
command, but with fix nve/noforce, the forces on the wall atoms are
unchanged, and can thus be printed by the "dump"_dump.html command or
queried with an equal-style "variable"_variable.html that uses the
fcm() group function to compute the total force on the group of atoms.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix nve"_fix_nve.html
[Default:] none
diff --git a/doc/fix_nve_sphere.html b/doc/fix_nve_sphere.html
index e0289f2ac..887985242 100644
--- a/doc/fix_nve_sphere.html
+++ b/doc/fix_nve_sphere.html
@@ -1,79 +1,79 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nve/sphere command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID nve/sphere
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>nve/sphere = style name of this fix command
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>update</I>
<PRE> <I>update</I> value = <I>dipole</I>
dipole = update orientation of dipole moment during integration
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all nve/sphere
fix 1 all nve/sphere update dipole
</PRE>
<P><B>Description:</B>
</P>
<P>Perform constant NVE integration to update position, velocity, and
angular velocity for extended spherical particles in the group each
timestep. V is volume; E is energy. This creates a system trajectory
consistent with the microcanonical ensemble.
</P>
<P>This fix differs from the <A HREF = "fix_nve.html">fix nve</A> command, which
assumes point particles and only updates their position and velocity.
</P>
<P>If the <I>update</I> keyword is used with the <I>dipole</I> value, then the
orientation of the dipole moment of each particle is also updated
during the time integration. This option should be used for models
where a dipole moment is assigned to particles via use of the
<A HREF = "atom_style.html">atom_style dipole</A> command.
</P>
<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>. 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#4_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.
+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 requires that atoms store torque and angular velocity (omega)
and a radius as defined by the <A HREF = "atom_style.html">atom_style sphere</A>
command. If the <I>dipole</I> keyword is used, then they must also store a
dipole moment as defined by the <A HREF = "atom_style.html">atom_style dipole</A>
command.
</P>
<P>All particles in the group must be finite-size spheres. They cannot
be point particles.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nve.html">fix nve</A>, <A HREF = "fix_nve_asphere.html">fix nve/asphere</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_nve_sphere.txt b/doc/fix_nve_sphere.txt
index c579ed5fb..05080e58a 100755
--- a/doc/fix_nve_sphere.txt
+++ b/doc/fix_nve_sphere.txt
@@ -1,69 +1,69 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix nve/sphere command :h3
[Syntax:]
fix ID group-ID nve/sphere :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
nve/sphere = style name of this fix command :l
zero or more keyword/value pairs may be appended :l
keyword = {update} :l
{update} value = {dipole}
dipole = update orientation of dipole moment during integration :pre
:ule
[Examples:]
fix 1 all nve/sphere
fix 1 all nve/sphere update dipole :pre
[Description:]
Perform constant NVE integration to update position, velocity, and
angular velocity for extended spherical particles in the group each
timestep. V is volume; E is energy. This creates a system trajectory
consistent with the microcanonical ensemble.
This fix differs from the "fix nve"_fix_nve.html command, which
assumes point particles and only updates their position and velocity.
If the {update} keyword is used with the {dipole} value, then the
orientation of the dipole moment of each particle is also updated
during the time integration. This option should be used for models
where a dipole moment is assigned to particles via use of the
"atom_style dipole"_atom_style.html command.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix requires that atoms store torque and angular velocity (omega)
and a radius as defined by the "atom_style sphere"_atom_style.html
command. If the {dipole} keyword is used, then they must also store a
dipole moment as defined by the "atom_style dipole"_atom_style.html
command.
All particles in the group must be finite-size spheres. They cannot
be point particles.
[Related commands:]
"fix nve"_fix_nve.html, "fix nve/asphere"_fix_nve_asphere.html
[Default:] none
diff --git a/doc/fix_nvt_asphere.html b/doc/fix_nvt_asphere.html
index 134178020..dd3a8e7e7 100644
--- a/doc/fix_nvt_asphere.html
+++ b/doc/fix_nvt_asphere.html
@@ -1,134 +1,134 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nvt/asphere command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID nvt/asphere keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>nvt/asphere = style name of this fix command
<LI>additional thermostat related keyword/value pairs from the <A HREF = "fix_nh.html">fix nvt</A> command can be appended
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all nvt/asphere temp 300.0 300.0 100.0
fix 1 all nvt/asphere temp 300.0 300.0 100.0 drag 0.2
</PRE>
<P><B>Description:</B>
</P>
<P>Perform constant NVT integration to update position, velocity,
orientation, and angular velocity each timestep for aspherical or
ellipsoidal particles in the group using a Nose/Hoover temperature
thermostat. V is volume; T is temperature. This creates a system
trajectory consistent with the canonical ensemble.
</P>
<P>This fix differs from the <A HREF = "fix_nh.html">fix nvt</A> command, which
assumes point particles and only updates their position and velocity.
</P>
<P>The thermostat is applied to both the translational and rotational
degrees of freedom for the aspherical particles, assuming a compute is
used which calculates a temperature that includes the rotational
degrees of freedom (see below). The translational degrees of freedom
can also have a bias velocity removed from them before thermostatting
takes place; see the description below.
</P>
<P>Additional parameters affecting the thermostat are specified by
keywords and values documented with the <A HREF = "fix_nh.html">fix nvt</A>
command. See, for example, discussion of the <I>temp</I> and <I>drag</I>
keywords.
</P>
<P>This fix computes a temperature each timestep. To do this, the fix
creates its own compute of style "temp/asphere", as if this command
had been issued:
</P>
<PRE>compute fix-ID_temp group-ID temp/asphere
</PRE>
<P>See the <A HREF = "compute_temp_asphere.html">compute temp/asphere</A> command for
details. Note that the ID of the new compute is the fix-ID +
underscore + "temp", and the group for the new compute is the same as
the fix group.
</P>
<P>Note that this is NOT the compute used by thermodynamic output (see
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>.
This means you can change the attributes of this fix's temperature
(e.g. its degrees-of-freedom) via the
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
during thermodynamic output via the <A HREF = "thermo_style.html">thermo_style
custom</A> command using the appropriate compute-ID.
It also means that changing attributes of <I>thermo_temp</I> will have no
effect on this fix.
</P>
<P>Like other fixes that perform thermostatting, this fix can be used
with <A HREF = "compute.html">compute commands</A> that calculate a temperature
after removing a "bias" from the atom velocities. E.g. removing the
center-of-mass velocity from a group of atoms or only calculating
temperature on the x-component of velocity or only calculating
temperature for atoms in a geometric region. This is not done by
default, but only if the <A HREF = "fix_modify.html">fix_modify</A> command is used
to assign a temperature compute to this fix that includes such a bias
term. See the doc pages for individual <A HREF = "compute.html">compute
commands</A> to determine which ones include a bias. In
this case, the thermostat works in the following manner: the current
temperature is calculated taking the bias into account, bias is
removed from each atom, thermostatting is performed on the remaining
thermal degrees of freedom, and the bias is added back in.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the state of the Nose/Hoover thermostat to <A HREF = "restart.html">binary
restart files</A>. 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>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> option is supported by this
fix. You can use it to assign a <A HREF = "compute.html">compute</A> you have
defined to this fix which will be used in its thermostatting
procedure.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy change induced by Nose/Hoover thermostatting to
the system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>.
</P>
<P>This fix computes the same global scalar and global vector of
quantities as does the <A HREF = "fix_nh.html">fix nvt</A> command.
</P>
<P>This fix can ramp its target temperature over multiple runs, using the
<I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this.
</P>
<P>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 "asphere" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>This fix requires that atoms store torque and angular momementum and a
quaternion as defined by the <A HREF = "atom_style.html">atom_style ellipsoid</A>
command.
</P>
<P>All particles in the group must be finite-size. They cannot be point
particles, but they can be aspherical or spherical as defined by their
shape attribute.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_nve_asphere.html">fix nve_asphere</A>, <A HREF = "fix_npt_asphere.html">fix
npt_asphere</A>, <A HREF = "fix_modify.html">fix_modify</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_nvt_asphere.txt b/doc/fix_nvt_asphere.txt
index 29247cff6..1b910fd38 100755
--- a/doc/fix_nvt_asphere.txt
+++ b/doc/fix_nvt_asphere.txt
@@ -1,129 +1,129 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix nvt/asphere command :h3
[Syntax:]
fix ID group-ID nvt/asphere keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command
nvt/asphere = style name of this fix command
additional thermostat related keyword/value pairs from the "fix nvt"_fix_nh.html command can be appended :ul
[Examples:]
fix 1 all nvt/asphere temp 300.0 300.0 100.0
fix 1 all nvt/asphere temp 300.0 300.0 100.0 drag 0.2 :pre
[Description:]
Perform constant NVT integration to update position, velocity,
orientation, and angular velocity each timestep for aspherical or
ellipsoidal particles in the group using a Nose/Hoover temperature
thermostat. V is volume; T is temperature. This creates a system
trajectory consistent with the canonical ensemble.
This fix differs from the "fix nvt"_fix_nh.html command, which
assumes point particles and only updates their position and velocity.
The thermostat is applied to both the translational and rotational
degrees of freedom for the aspherical particles, assuming a compute is
used which calculates a temperature that includes the rotational
degrees of freedom (see below). The translational degrees of freedom
can also have a bias velocity removed from them before thermostatting
takes place; see the description below.
Additional parameters affecting the thermostat are specified by
keywords and values documented with the "fix nvt"_fix_nh.html
command. See, for example, discussion of the {temp} and {drag}
keywords.
This fix computes a temperature each timestep. To do this, the fix
creates its own compute of style "temp/asphere", as if this command
had been issued:
compute fix-ID_temp group-ID temp/asphere :pre
See the "compute temp/asphere"_compute_temp_asphere.html command for
details. Note that the ID of the new compute is the fix-ID +
underscore + "temp", and the group for the new compute is the same as
the fix group.
Note that this is NOT the compute used by thermodynamic output (see
the "thermo_style"_thermo_style.html command) with ID = {thermo_temp}.
This means you can change the attributes of this fix's temperature
(e.g. its degrees-of-freedom) via the
"compute_modify"_compute_modify.html command or print this temperature
during thermodynamic output via the "thermo_style
custom"_thermo_style.html command using the appropriate compute-ID.
It also means that changing attributes of {thermo_temp} will have no
effect on this fix.
Like other fixes that perform thermostatting, this fix can be used
with "compute commands"_compute.html that calculate a temperature
after removing a "bias" from the atom velocities. E.g. removing the
center-of-mass velocity from a group of atoms or only calculating
temperature on the x-component of velocity or only calculating
temperature for atoms in a geometric region. This is not done by
default, but only if the "fix_modify"_fix_modify.html command is used
to assign a temperature compute to this fix that includes such a bias
term. See the doc pages for individual "compute
commands"_compute.html to determine which ones include a bias. In
this case, the thermostat works in the following manner: the current
temperature is calculated taking the bias into account, bias is
removed from each atom, thermostatting is performed on the remaining
thermal degrees of freedom, and the bias is added back in.
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the state of the Nose/Hoover thermostat to "binary
restart files"_restart.html. See the "read_restart"_read_restart.html
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.
The "fix_modify"_fix_modify.html {temp} option is supported by this
fix. You can use it to assign a "compute"_compute.html you have
defined to this fix which will be used in its thermostatting
procedure.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy change induced by Nose/Hoover thermostatting to
the system's potential energy as part of "thermodynamic
output"_thermo_style.html.
This fix computes the same global scalar and global vector of
quantities as does the "fix nvt"_fix_nh.html command.
This fix can ramp its target temperature over multiple runs, using the
{start} and {stop} keywords of the "run"_run.html command. See the
"run"_run.html command for details of how to do this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix is part of the "asphere" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
This fix requires that atoms store torque and angular momementum and a
quaternion as defined by the "atom_style ellipsoid"_atom_style.html
command.
All particles in the group must be finite-size. They cannot be point
particles, but they can be aspherical or spherical as defined by their
shape attribute.
[Related commands:]
"fix nvt"_fix_nh.html, "fix nve_asphere"_fix_nve_asphere.html, "fix
npt_asphere"_fix_npt_asphere.html, "fix_modify"_fix_modify.html
[Default:] none
diff --git a/doc/fix_nvt_sllod_eff.html b/doc/fix_nvt_sllod_eff.html
index e1fdf0c04..947c19051 100644
--- a/doc/fix_nvt_sllod_eff.html
+++ b/doc/fix_nvt_sllod_eff.html
@@ -1,100 +1,100 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix nvt/sllod/eff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID nvt/sllod/eff keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>nvt/sllod/eff = style name of this fix command
<LI>additional thermostat related keyword/value pairs from the <A HREF = "fix_nh_eff.html">fix nvt/eff</A> command can be appended
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all nvt/sllod/eff temp 300.0 300.0 0.1
fix 1 all nvt/sllod/eff temp 300.0 300.0 0.1 drag 0.2
</PRE>
<P><B>Description:</B>
</P>
<P>Perform constant NVT integration to update positions and velocities
each timestep for nuclei and electrons in the group for the <A HREF = "pair_eff.html">electron
force field</A> model, using a Nose/Hoover temperature
thermostat. V is volume; T is temperature. This creates a system
trajectory consistent with the canonical ensemble.
</P>
<P>The operation of this fix is exactly like that described by the <A HREF = "fix_nvt_sllod.html">fix
nvt/sllod</A> command, except that the radius and
radial velocity of electrons are also updated and thermostatted.
Likewise the temperature calculated by the fix, using the compute it
creates (as discussed in the <A HREF = "fix_nh.html">fix nvt, npt, and nph</A> doc
page), is performed with a <A HREF = "compute_temp_deform_eff.html">compute
temp/deform/eff</A> commmand that includes
the eFF contribution to the temperature from the electron radial
velocity.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the state of the Nose/Hoover thermostat to <A HREF = "restart.html">binary
restart files</A>. 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>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> option is supported by this
fix. You can use it to assign a <A HREF = "compute.html">compute</A> you have
defined to this fix which will be used in its thermostatting
procedure.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy change induced by Nose/Hoover thermostatting to
the system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>.
</P>
<P>This fix computes the same global scalar and global vector of
quantities as does the <A HREF = "fix_nh_eff.html">fix nvt/eff</A> command.
</P>
<P>This fix can ramp its target temperature over multiple runs, using the
<I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this.
</P>
<P>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 "user-eff" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>This fix works best without Nose-Hoover chain thermostats, i.e. using
tchain = 1. Setting tchain to larger values can result in poor
equilibration.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nve_eff.html">fix nve/eff</A>, <A HREF = "fix_nh_eff.html">fix nvt/eff</A>, <A HREF = "fix_langevin_eff.html">fix
langevin/eff</A>, <A HREF = "fix_nvt_sllod.html">fix
nvt/sllod</A>, <A HREF = "fix_modify.html">fix_modify</A>, <A HREF = "compute_temp_deform_eff.html">compute
temp/deform/eff</A>
</P>
<P><B>Default:</B>
</P>
<P>Same as <A HREF = "fix_nh_eff.html">fix nvt/eff</A>, except tchain = 1.
</P>
<HR>
<A NAME = "Tuckerman"></A>
<P><B>(Tuckerman)</B> Tuckerman, Mundy, Balasubramanian, Klein, J Chem Phys,
106, 5615 (1997).
</P>
</HTML>
diff --git a/doc/fix_nvt_sllod_eff.txt b/doc/fix_nvt_sllod_eff.txt
index 697640a5b..23ed2ba73 100644
--- a/doc/fix_nvt_sllod_eff.txt
+++ b/doc/fix_nvt_sllod_eff.txt
@@ -1,94 +1,94 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix nvt/sllod/eff command :h3
[Syntax:]
fix ID group-ID nvt/sllod/eff keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command
nvt/sllod/eff = style name of this fix command
additional thermostat related keyword/value pairs from the "fix nvt/eff"_fix_nh_eff.html command can be appended :ul
[Examples:]
fix 1 all nvt/sllod/eff temp 300.0 300.0 0.1
fix 1 all nvt/sllod/eff temp 300.0 300.0 0.1 drag 0.2 :pre
[Description:]
Perform constant NVT integration to update positions and velocities
each timestep for nuclei and electrons in the group for the "electron
force field"_pair_eff.html model, using a Nose/Hoover temperature
thermostat. V is volume; T is temperature. This creates a system
trajectory consistent with the canonical ensemble.
The operation of this fix is exactly like that described by the "fix
nvt/sllod"_fix_nvt_sllod.html command, except that the radius and
radial velocity of electrons are also updated and thermostatted.
Likewise the temperature calculated by the fix, using the compute it
creates (as discussed in the "fix nvt, npt, and nph"_fix_nh.html doc
page), is performed with a "compute
temp/deform/eff"_compute_temp_deform_eff.html commmand that includes
the eFF contribution to the temperature from the electron radial
velocity.
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the state of the Nose/Hoover thermostat to "binary
restart files"_restart.html. See the "read_restart"_read_restart.html
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.
The "fix_modify"_fix_modify.html {temp} option is supported by this
fix. You can use it to assign a "compute"_compute.html you have
defined to this fix which will be used in its thermostatting
procedure.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy change induced by Nose/Hoover thermostatting to
the system's potential energy as part of "thermodynamic
output"_thermo_style.html.
This fix computes the same global scalar and global vector of
quantities as does the "fix nvt/eff"_fix_nh_eff.html command.
This fix can ramp its target temperature over multiple runs, using the
{start} and {stop} keywords of the "run"_run.html command. See the
"run"_run.html command for details of how to do this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix is part of the "user-eff" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
This fix works best without Nose-Hoover chain thermostats, i.e. using
tchain = 1. Setting tchain to larger values can result in poor
equilibration.
[Related commands:]
"fix nve/eff"_fix_nve_eff.html, "fix nvt/eff"_fix_nh_eff.html, "fix
langevin/eff"_fix_langevin_eff.html, "fix
nvt/sllod"_fix_nvt_sllod.html, "fix_modify"_fix_modify.html, "compute
temp/deform/eff"_compute_temp_deform_eff.html
[Default:]
Same as "fix nvt/eff"_fix_nh_eff.html, except tchain = 1.
:line
:link(Tuckerman)
[(Tuckerman)] Tuckerman, Mundy, Balasubramanian, Klein, J Chem Phys,
106, 5615 (1997).
diff --git a/doc/fix_orient_fcc.html b/doc/fix_orient_fcc.html
index 99ab333ec..65be97ec4 100644
--- a/doc/fix_orient_fcc.html
+++ b/doc/fix_orient_fcc.html
@@ -1,184 +1,184 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix orient/fcc command
</H3>
<PRE>fix ID group-ID orient/fcc nstats dir alat dE cutlo cuthi file0 file1
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>nstats = print stats every this many steps, 0 = never
<LI>dir = 0/1 for which crystal is used as reference
<LI>alat = fcc cubic lattice constant (distance units)
<LI>dE = energy added to each atom (energy units)
<LI>cutlo,cuthi = values between 0.0 and 1.0, cutlo < cuthi
<LI>file0,file1 = files that specify orientation of each grain
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix gb all orient/fcc 0 1 4.032008 0.001 0.25 0.75 xi.vec chi.vec
</PRE>
<P><B>Description:</B>
</P>
<P>The fix applies an orientation-dependent force to atoms near a planar
grain boundary which can be used to induce grain boundary migration
(in the direction perpendicular to the grain boundary plane). The
motivation and explanation of this force and its application are
described in <A HREF = "#Janssens">(Janssens)</A>. The force is only applied to
atoms in the fix group.
</P>
<P>The basic idea is that atoms in one grain (on one side of the
boundary) have a potential energy dE added to them. Atoms in the
other grain have 0.0 potential energy added. Atoms near the boundary
(whose neighbor environment is intermediate between the two grain
orientations) have an energy between 0.0 and dE added. This creates
an effective driving force to reduce the potential energy of atoms
near the boundary by pushing them towards one of the grain
orientations. For dir = 1 and dE > 0, the boundary will thus move so
that the grain described by file0 grows and the grain described by
file1 shrinks. Thus this fix is designed for simulations of two-grain
systems, either with one grain boundary and free surfaces parallel to
the boundary, or a system with periodic boundary conditions and two
equal and opposite grain boundaries. In either case, the entire
system can displace during the simulation, and such motion should be
accounted for in measuring the grain boundary velocity.
</P>
<P>The potential energy added to atom I is given by these formulas
</P>
<CENTER><IMG SRC = "Eqs/fix_orient_fcc.jpg">
</CENTER>
<P>which are fully explained in <A HREF = "#Janssens">(Janssens)</A>. The order
parameter Xi for atom I in equation (1) is a sum over the 12 nearest
neighbors of atom I. Rj is the vector from atom I to its neighbor J,
and RIj is a vector in the reference (perfect) crystal. That is, if
dir = 0/1, then RIj is a vector to an atom coord from file 0/1.
Equation (2) gives the expected value of the order parameter XiIJ in
the other grain. Hi and lo cutoffs are defined in equations (3) and
(4), using the input parameters <I>cutlo</I> and <I>cuthi</I> as thresholds to
avoid adding grain boundary energy when the deviation in the order
parameter from 0 or 1 is small (e.g. due to thermal fluctuations in a
perfect crystal). The added potential energy Ui for atom I is given
in equation (6) where it is interpolated between 0 and dE using the
two threshold Xi values and the Wi value of equation (5).
</P>
<P>The derivative of this energy expression gives the force on each atom
which thus depends on the orientation of its neighbors relative to the
2 grain orientations. Only atoms near the grain boundary feel a net
force which tends to drive them to one of the two grain orientations.
</P>
<P>In equation (1), the reference vector used for each neighbor is the
reference vector closest to the actual neighbor position. This means
it is possible two different neighbors will use the same reference
vector. In such cases, the atom in question is far from a perfect
orientation and will likely receive the full dE addition, so the
effect of duplicate reference vector usage is small.
</P>
<P>The <I>dir</I> parameter determines which grain wants to grow at the
expense of the other. A value of 0 means the first grain will shrink;
a value of 1 means it will grow. This assumes that <I>dE</I> is positive.
The reverse will be true if <I>dE</I> is negative.
</P>
<P>The <I>alat</I> parameter is the cubic lattice constant for the fcc
material and is only used to compute a cutoff distance of 1.57 * alat
/ sqrt(2) for finding the 12 nearest neighbors of each atom (which
should be valid for an fcc crystal). A longer/shorter cutoff can be
imposed by adjusting <I>alat</I>. If a particular atom has less than 12
neighbors within the cutoff, the order parameter of equation (1) is
effectively multiplied by 12 divided by the actual number of neighbors
within the cutoff.
</P>
<P>The <I>dE</I> parameter is the maximum amount of additional energy added to
each atom in the grain which wants to shrink.
</P>
<P>The <I>cutlo</I> and <I>cuthi</I> parameters are used to reduce the force added
to bulk atoms in each grain far away from the boundary. An atom in
the bulk surrounded by neighbors at the ideal grain orientation would
compute an order parameter of 0 or 1 and have no force added.
However, thermal vibrations in the solid will cause the order
parameters to be greater than 0 or less than 1. The cutoff parameters
mask this effect, allowing forces to only be added to atoms with
order-parameters between the cutoff values.
</P>
<P><I>File0</I> and <I>file1</I> are filenames for the two grains which each
contain 6 vectors (6 lines with 3 values per line) which specify the
grain orientations. Each vector is a displacement from a central atom
(0,0,0) to a nearest neighbor atom in an fcc lattice at the proper
orientation. The vector lengths should all be identical since an fcc
lattice has a coordination number of 12. Only 6 are listed due to
symmetry, so the list must include one from each pair of
equal-and-opposite neighbors. A pair of orientation files for a
Sigma=5 tilt boundary are show below.
</P>
<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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the potential energy of atom interactions with the grain
boundary driving force to the system's potential energy as part of
<A HREF = "thermo_style.html">thermodynamic output</A>.
</P>
<P>This fix calculates a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
potential energy change due to this fix. The scalar value calculated
by this fix is "extensive".
</P>
<P>This fix also calculates a per-atom array which can be accessed by
-various <A HREF = "Section_howto.html#4_15">output commands</A>. The array stores
-the order parameter Xi and normalized order parameter (0 to 1) for
-each atom. The per-atom values can be accessed on any timestep.
+various <A HREF = "Section_howto.html#howto_15">output commands</A>. The array
+stores the order parameter Xi and normalized order parameter (0 to 1)
+for each atom. The per-atom values can be accessed on any timestep.
</P>
<P>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 should only be used with fcc lattices.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_modify.html">fix_modify</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Janssens"></A>
<P><B>(Janssens)</B> Janssens, Olmsted, Holm, Foiles, Plimpton, Derlet, Nature
Materials, 5, 124-127 (2006).
</P>
<HR>
<P>For illustration purposes, here are example files that specify a
Sigma=5 <100> tilt boundary. This is for a lattice constant of 3.5706
Angs.
</P>
<P>file0:
</P>
<PRE> 0.798410432046075 1.785300000000000 1.596820864092150
-0.798410432046075 1.785300000000000 -1.596820864092150
2.395231296138225 0.000000000000000 0.798410432046075
0.798410432046075 0.000000000000000 -2.395231296138225
1.596820864092150 1.785300000000000 -0.798410432046075
1.596820864092150 -1.785300000000000 -0.798410432046075
</PRE>
<P>file1:
</P>
<PRE> -0.798410432046075 1.785300000000000 1.596820864092150
0.798410432046075 1.785300000000000 -1.596820864092150
0.798410432046075 0.000000000000000 2.395231296138225
2.395231296138225 0.000000000000000 -0.798410432046075
1.596820864092150 1.785300000000000 0.798410432046075
1.596820864092150 -1.785300000000000 0.798410432046075
</PRE>
</HTML>
diff --git a/doc/fix_orient_fcc.txt b/doc/fix_orient_fcc.txt
index 4b634e8d5..bde9f08dd 100644
--- a/doc/fix_orient_fcc.txt
+++ b/doc/fix_orient_fcc.txt
@@ -1,178 +1,178 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix orient/fcc command :h3
fix ID group-ID orient/fcc nstats dir alat dE cutlo cuthi file0 file1 :pre
ID, group-ID are documented in "fix"_fix.html command
nstats = print stats every this many steps, 0 = never
dir = 0/1 for which crystal is used as reference
alat = fcc cubic lattice constant (distance units)
dE = energy added to each atom (energy units)
cutlo,cuthi = values between 0.0 and 1.0, cutlo < cuthi
file0,file1 = files that specify orientation of each grain :ul
[Examples:]
fix gb all orient/fcc 0 1 4.032008 0.001 0.25 0.75 xi.vec chi.vec :pre
[Description:]
The fix applies an orientation-dependent force to atoms near a planar
grain boundary which can be used to induce grain boundary migration
(in the direction perpendicular to the grain boundary plane). The
motivation and explanation of this force and its application are
described in "(Janssens)"_#Janssens. The force is only applied to
atoms in the fix group.
The basic idea is that atoms in one grain (on one side of the
boundary) have a potential energy dE added to them. Atoms in the
other grain have 0.0 potential energy added. Atoms near the boundary
(whose neighbor environment is intermediate between the two grain
orientations) have an energy between 0.0 and dE added. This creates
an effective driving force to reduce the potential energy of atoms
near the boundary by pushing them towards one of the grain
orientations. For dir = 1 and dE > 0, the boundary will thus move so
that the grain described by file0 grows and the grain described by
file1 shrinks. Thus this fix is designed for simulations of two-grain
systems, either with one grain boundary and free surfaces parallel to
the boundary, or a system with periodic boundary conditions and two
equal and opposite grain boundaries. In either case, the entire
system can displace during the simulation, and such motion should be
accounted for in measuring the grain boundary velocity.
The potential energy added to atom I is given by these formulas
:c,image(Eqs/fix_orient_fcc.jpg)
which are fully explained in "(Janssens)"_#Janssens. The order
parameter Xi for atom I in equation (1) is a sum over the 12 nearest
neighbors of atom I. Rj is the vector from atom I to its neighbor J,
and RIj is a vector in the reference (perfect) crystal. That is, if
dir = 0/1, then RIj is a vector to an atom coord from file 0/1.
Equation (2) gives the expected value of the order parameter XiIJ in
the other grain. Hi and lo cutoffs are defined in equations (3) and
(4), using the input parameters {cutlo} and {cuthi} as thresholds to
avoid adding grain boundary energy when the deviation in the order
parameter from 0 or 1 is small (e.g. due to thermal fluctuations in a
perfect crystal). The added potential energy Ui for atom I is given
in equation (6) where it is interpolated between 0 and dE using the
two threshold Xi values and the Wi value of equation (5).
The derivative of this energy expression gives the force on each atom
which thus depends on the orientation of its neighbors relative to the
2 grain orientations. Only atoms near the grain boundary feel a net
force which tends to drive them to one of the two grain orientations.
In equation (1), the reference vector used for each neighbor is the
reference vector closest to the actual neighbor position. This means
it is possible two different neighbors will use the same reference
vector. In such cases, the atom in question is far from a perfect
orientation and will likely receive the full dE addition, so the
effect of duplicate reference vector usage is small.
The {dir} parameter determines which grain wants to grow at the
expense of the other. A value of 0 means the first grain will shrink;
a value of 1 means it will grow. This assumes that {dE} is positive.
The reverse will be true if {dE} is negative.
The {alat} parameter is the cubic lattice constant for the fcc
material and is only used to compute a cutoff distance of 1.57 * alat
/ sqrt(2) for finding the 12 nearest neighbors of each atom (which
should be valid for an fcc crystal). A longer/shorter cutoff can be
imposed by adjusting {alat}. If a particular atom has less than 12
neighbors within the cutoff, the order parameter of equation (1) is
effectively multiplied by 12 divided by the actual number of neighbors
within the cutoff.
The {dE} parameter is the maximum amount of additional energy added to
each atom in the grain which wants to shrink.
The {cutlo} and {cuthi} parameters are used to reduce the force added
to bulk atoms in each grain far away from the boundary. An atom in
the bulk surrounded by neighbors at the ideal grain orientation would
compute an order parameter of 0 or 1 and have no force added.
However, thermal vibrations in the solid will cause the order
parameters to be greater than 0 or less than 1. The cutoff parameters
mask this effect, allowing forces to only be added to atoms with
order-parameters between the cutoff values.
{File0} and {file1} are filenames for the two grains which each
contain 6 vectors (6 lines with 3 values per line) which specify the
grain orientations. Each vector is a displacement from a central atom
(0,0,0) to a nearest neighbor atom in an fcc lattice at the proper
orientation. The vector lengths should all be identical since an fcc
lattice has a coordination number of 12. Only 6 are listed due to
symmetry, so the list must include one from each pair of
equal-and-opposite neighbors. A pair of orientation files for a
Sigma=5 tilt boundary are show below.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the potential energy of atom interactions with the grain
boundary driving force to the system's potential energy as part of
"thermodynamic output"_thermo_style.html.
This fix calculates a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the
+"output commands"_Section_howto.html#howto_15. The scalar is the
potential energy change due to this fix. The scalar value calculated
by this fix is "extensive".
This fix also calculates a per-atom array which can be accessed by
-various "output commands"_Section_howto.html#4_15. The array stores
-the order parameter Xi and normalized order parameter (0 to 1) for
-each atom. The per-atom values can be accessed on any timestep.
+various "output commands"_Section_howto.html#howto_15. The array
+stores the order parameter Xi and normalized order parameter (0 to 1)
+for each atom. The per-atom values can be accessed on any timestep.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
This fix should only be used with fcc lattices.
[Related commands:]
"fix_modify"_fix_modify.html
[Default:] none
:line
:link(Janssens)
[(Janssens)] Janssens, Olmsted, Holm, Foiles, Plimpton, Derlet, Nature
Materials, 5, 124-127 (2006).
:line
For illustration purposes, here are example files that specify a
Sigma=5 <100> tilt boundary. This is for a lattice constant of 3.5706
Angs.
file0:
0.798410432046075 1.785300000000000 1.596820864092150
-0.798410432046075 1.785300000000000 -1.596820864092150
2.395231296138225 0.000000000000000 0.798410432046075
0.798410432046075 0.000000000000000 -2.395231296138225
1.596820864092150 1.785300000000000 -0.798410432046075
1.596820864092150 -1.785300000000000 -0.798410432046075 :pre
file1:
-0.798410432046075 1.785300000000000 1.596820864092150
0.798410432046075 1.785300000000000 -1.596820864092150
0.798410432046075 0.000000000000000 2.395231296138225
2.395231296138225 0.000000000000000 -0.798410432046075
1.596820864092150 1.785300000000000 0.798410432046075
1.596820864092150 -1.785300000000000 0.798410432046075 :pre
diff --git a/doc/fix_planeforce.html b/doc/fix_planeforce.html
index aefcd57f8..d2e465c61 100644
--- a/doc/fix_planeforce.html
+++ b/doc/fix_planeforce.html
@@ -1,56 +1,56 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix planeforce command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID planeforce x y z
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>lineforce = style name of this fix command
<LI>x y z = 3-vector that is normal to the plane
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix hold boundary planeforce 1.0 0.0 0.0
</PRE>
<P><B>Description:</B>
</P>
<P>Adjust the forces on each atom in the group so that only the
components of force in the plane specified by the normal vector
(x,y,z) remain. This is done by subtracting out the component of
force perpendicular to the plane.
</P>
<P>If the initial velocity of the atom is 0.0 (or in the plane), then it
should continue to move in the plane thereafter.
</P>
<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>. 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#4_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.
+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.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_lineforce.html">fix lineforce</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_planeforce.txt b/doc/fix_planeforce.txt
index a36c0f889..133ed61bd 100644
--- a/doc/fix_planeforce.txt
+++ b/doc/fix_planeforce.txt
@@ -1,53 +1,53 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix planeforce command :h3
[Syntax:]
fix ID group-ID planeforce x y z :pre
ID, group-ID are documented in "fix"_fix.html command
lineforce = style name of this fix command
x y z = 3-vector that is normal to the plane :ul
[Examples:]
fix hold boundary planeforce 1.0 0.0 0.0 :pre
[Description:]
Adjust the forces on each atom in the group so that only the
components of force in the plane specified by the normal vector
(x,y,z) remain. This is done by subtracting out the component of
force perpendicular to the plane.
If the initial velocity of the atom is 0.0 (or in the plane), then it
should continue to move in the plane thereafter.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command.
[Restrictions:] none
[Related commands:]
"fix lineforce"_fix_lineforce.html
[Default:] none
diff --git a/doc/fix_poems.html b/doc/fix_poems.html
index 11806aa60..3a6e47ff0 100644
--- a/doc/fix_poems.html
+++ b/doc/fix_poems.html
@@ -1,146 +1,146 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix poems
</H3>
<P>Syntax:
</P>
<PRE>fix ID group-ID poems keyword values
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>poems = style name of this fix command
<LI>keyword = <I>group</I> or <I>file</I> or <I>molecule</I>
<PRE> <I>group</I> values = list of group IDs
<I>molecule</I> values = none
<I>file</I> values = filename
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 3 fluid poems group clump1 clump2 clump3
fix 3 fluid poems file cluster.list
</PRE>
<P><B>Description:</B>
</P>
<P>Treats one or more sets of atoms as coupled rigid bodies. This means
that each timestep the total force and torque on each rigid body is
computed and the coordinates and velocities of the atoms are updated
so that the collection of bodies move as a coupled set. This can be
useful for treating a large biomolecule as a collection of connected,
coarse-grained particles.
</P>
<P>The coupling, associated motion constraints, and time integration is
performed by the software package <A HREF = "http://www.rpi.edu/~anderk5/lab">Parallelizable Open source
Efficient Multibody Software (POEMS)</A> which computes the
constrained rigid-body motion of articulated (jointed) multibody
systems <A HREF = "#Anderson">(Anderson)</A>. POEMS was written and is distributed
by Prof Kurt Anderson, his graduate student Rudranarayan Mukherjee,
and other members of his group at Rensselaer Polytechnic Institute
(RPI). Rudranarayan developed the LAMMPS/POEMS interface. For
copyright information on POEMS and other details, please refer to the
documents in the poems directory distributed with LAMMPS.
</P>
<P>This fix updates the positions and velocities of the rigid atoms with
a constant-energy time integration, so you should not update the same
atoms via other fixes (e.g. nve, nvt, npt, temp/rescale, langevin).
</P>
<P>Each body must have a non-degenerate inertia tensor, which means if
must contain at least 3 non-collinear atoms. Which atoms are in which
bodies can be defined via several options.
</P>
<P>For option <I>group</I>, each of the listed groups is treated as a rigid
body. Note that only atoms that are also in the fix group are
included in each rigid body.
</P>
<P>For option <I>molecule</I>, each set of atoms in the group with a different
molecule ID is treated as a rigid body.
</P>
<P>For option <I>file</I>, sets of atoms are read from the specified file and
each set is treated as a rigid body. Each line of the file specifies
a rigid body in the following format:
</P>
<P>ID type atom1-ID atom2-ID atom3-ID ...
</P>
<P>ID as an integer from 1 to M (the number of rigid bodies). Type is
any integer; it is not used by the fix poems command. The remaining
arguments are IDs of atoms in the rigid body, each typically from 1 to
N (the number of atoms in the system). Only atoms that are also in
the fix group are included in each rigid body. Blank lines and lines
that begin with '#' are skipped.
</P>
<P>A connection between a pair of rigid bodies is inferred if one atom is
common to both bodies. The POEMS solver treats that atom as a
spherical joint with 3 degrees of freedom. Currently, a collection of
bodies can only be connected by joints as a linear chain. The entire
collection of rigid bodies can represent one or more chains. Other
connection topologies (tree, ring) are not allowed, but will be added
later. Note that if no joints exist, it is more efficient to use the
<A HREF = "fix_rigid.html">fix rigid</A> command to simulate the system.
</P>
<P>When the poems fix is defined, it will print out statistics on the
total # of clusters, bodies, joints, atoms involved. A cluster in
this context means a set of rigid bodies connected by joints.
</P>
<P>For computational efficiency, you should turn off pairwise and bond
interactions within each rigid body, as they no longer contribute to
the motion. The "neigh_modify exclude" and "delete_bonds" commands
can be used to do this if each rigid body is a group.
</P>
<P>For computational efficiency, you should only define one fix poems
which includes all the desired rigid bodies. LAMMPS will allow
multiple poems fixes to be defined, but it is more expensive.
</P>
<P>The degrees-of-freedom removed by coupled rigid bodies are accounted
for in temperature and pressure computations. Similarly, the rigid
body contribution to the pressure virial is also accounted for. The
latter is only correct if forces within the bodies have been turned
off, and there is only a single fix poems defined.
</P>
<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>. 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#4_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.
+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 "poems" package. It is only enabled if LAMMPS
was built with that package, which also requires the POEMS library be
-built and linked with LAMMPS. See the <A HREF = "Section_start.html#2_3">Making
+built and linked with LAMMPS. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_rigid.html">fix rigid</A>, <A HREF = "delete_bonds.html">delete_bonds</A>,
<A HREF = "neigh_modify.html">neigh_modify</A> exclude
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Anderson"></A>
<P><B>(Anderson)</B> Anderson, Mukherjee, Critchley, Ziegler, and Lipton
"POEMS: Parallelizable Open-source Efficient Multibody Software ",
Engineering With Computers (2006). (<A HREF = "http://dx.doi.org/10.1007/s00366-006-0026-x">link to
paper</A>)
</P>
</HTML>
diff --git a/doc/fix_poems.txt b/doc/fix_poems.txt
index f37f1dd89..244b5ff0f 100644
--- a/doc/fix_poems.txt
+++ b/doc/fix_poems.txt
@@ -1,136 +1,136 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix poems :h3
Syntax:
fix ID group-ID poems keyword values :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
poems = style name of this fix command :l
keyword = {group} or {file} or {molecule} :l
{group} values = list of group IDs
{molecule} values = none
{file} values = filename :pre
:ule
[Examples:]
fix 3 fluid poems group clump1 clump2 clump3
fix 3 fluid poems file cluster.list :pre
[Description:]
Treats one or more sets of atoms as coupled rigid bodies. This means
that each timestep the total force and torque on each rigid body is
computed and the coordinates and velocities of the atoms are updated
so that the collection of bodies move as a coupled set. This can be
useful for treating a large biomolecule as a collection of connected,
coarse-grained particles.
The coupling, associated motion constraints, and time integration is
performed by the software package "Parallelizable Open source
Efficient Multibody Software (POEMS)"_poems which computes the
constrained rigid-body motion of articulated (jointed) multibody
systems "(Anderson)"_#Anderson. POEMS was written and is distributed
by Prof Kurt Anderson, his graduate student Rudranarayan Mukherjee,
and other members of his group at Rensselaer Polytechnic Institute
(RPI). Rudranarayan developed the LAMMPS/POEMS interface. For
copyright information on POEMS and other details, please refer to the
documents in the poems directory distributed with LAMMPS.
:link(poems,http://www.rpi.edu/~anderk5/lab)
This fix updates the positions and velocities of the rigid atoms with
a constant-energy time integration, so you should not update the same
atoms via other fixes (e.g. nve, nvt, npt, temp/rescale, langevin).
Each body must have a non-degenerate inertia tensor, which means if
must contain at least 3 non-collinear atoms. Which atoms are in which
bodies can be defined via several options.
For option {group}, each of the listed groups is treated as a rigid
body. Note that only atoms that are also in the fix group are
included in each rigid body.
For option {molecule}, each set of atoms in the group with a different
molecule ID is treated as a rigid body.
For option {file}, sets of atoms are read from the specified file and
each set is treated as a rigid body. Each line of the file specifies
a rigid body in the following format:
ID type atom1-ID atom2-ID atom3-ID ...
ID as an integer from 1 to M (the number of rigid bodies). Type is
any integer; it is not used by the fix poems command. The remaining
arguments are IDs of atoms in the rigid body, each typically from 1 to
N (the number of atoms in the system). Only atoms that are also in
the fix group are included in each rigid body. Blank lines and lines
that begin with '#' are skipped.
A connection between a pair of rigid bodies is inferred if one atom is
common to both bodies. The POEMS solver treats that atom as a
spherical joint with 3 degrees of freedom. Currently, a collection of
bodies can only be connected by joints as a linear chain. The entire
collection of rigid bodies can represent one or more chains. Other
connection topologies (tree, ring) are not allowed, but will be added
later. Note that if no joints exist, it is more efficient to use the
"fix rigid"_fix_rigid.html command to simulate the system.
When the poems fix is defined, it will print out statistics on the
total # of clusters, bodies, joints, atoms involved. A cluster in
this context means a set of rigid bodies connected by joints.
For computational efficiency, you should turn off pairwise and bond
interactions within each rigid body, as they no longer contribute to
the motion. The "neigh_modify exclude" and "delete_bonds" commands
can be used to do this if each rigid body is a group.
For computational efficiency, you should only define one fix poems
which includes all the desired rigid bodies. LAMMPS will allow
multiple poems fixes to be defined, but it is more expensive.
The degrees-of-freedom removed by coupled rigid bodies are accounted
for in temperature and pressure computations. Similarly, the rigid
body contribution to the pressure virial is also accounted for. The
latter is only correct if forces within the bodies have been turned
off, and there is only a single fix poems defined.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix is part of the "poems" package. It is only enabled if LAMMPS
was built with that package, which also requires the POEMS library be
built and linked with LAMMPS. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"fix rigid"_fix_rigid.html, "delete_bonds"_delete_bonds.html,
"neigh_modify"_neigh_modify.html exclude
[Default:] none
:line
:link(Anderson)
[(Anderson)] Anderson, Mukherjee, Critchley, Ziegler, and Lipton
"POEMS: Parallelizable Open-source Efficient Multibody Software ",
Engineering With Computers (2006). ("link to
paper"_http://dx.doi.org/10.1007/s00366-006-0026-x)
diff --git a/doc/fix_pour.html b/doc/fix_pour.html
index 897040268..9e85bba92 100644
--- a/doc/fix_pour.html
+++ b/doc/fix_pour.html
@@ -1,151 +1,151 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix pour command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID pour N type seed keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>pour = style name of this fix command
<LI>N = # of atoms to insert
<LI>type = atom type to assign to inserted atoms
<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>diam</I> or <I>dens</I> or <I>vol</I> or <I>rate</I> or <I>vel</I>
<PRE> <I>region</I> value = region-ID
region-ID = ID of region to use as insertion volume
<I>diam</I> values = lo hi
lo,hi = range of diameters for inserted particles (distance units)
<I>dens</I> values = lo hi
lo,hi = range of densities for inserted particles
<I>vol</I> values = fraction Nattempt
fraction = desired volume fraction for filling insertion volume
Nattempt = max # of insertion attempts per atom
<I>rate</I> value = V
V = z velocity (3d) or y velocity (2d) at which
insertion volume moves (velocity units)
<I>vel</I> values (3d) = vxlo vxhi vylo vyhi vz
<I>vel</I> values (2d) = vxlo vxhi vy
vxlo,vxhi = range of x velocities for inserted particles (velocity units)
vylo,vyhi = range of y velocities for inserted particles (velocity units)
vz = z velocity (3d) assigned to inserted particles (velocity units)
vy = y velocity (2d) assigned to inserted particles (velocity units)
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 3 all pour 1000 2 29494 region myblock
fix 2 all pour 10000 1 19985583 region disk vol 0.33 100 rate 1.0 diam 0.9 1.1
</PRE>
<P><B>Description:</B>
</P>
<P>Insert particles into a granular run every few timesteps within a
specified region until N particles have been inserted. This is useful
for simulating the pouring of particles into a container under the
influence of gravity.
</P>
<P>Inserted particles are assigned the specified atom type and are
assigned to two groups: the default group "all" and the group
specified in the fix pour command (which can also be "all").
</P>
<P>This 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 of type <I>block</I> or a z-axis
<I>cylinder</I> and must be defined with side = <I>in</I>. The cylinder style
of region can only be used with 3d simulations.
</P>
<P>Each timestep particles are inserted, they are placed randomly inside
the insertion volume so as to mimic a stream of poured particles. The
larger the volume, the more particles that can be inserted at any one
timestep. Particles are inserted again after enough time has elapsed
that the previously inserted particles fall out of the insertion
volume under the influence of gravity. Insertions continue every so
many timesteps until the desired # of particles has been inserted.
</P>
<P>All other keywords are optional with defaults as shown below. The
<I>diam</I>, <I>dens</I>, and <I>vel</I> options enable inserted particles to have a
range of diameters or densities or xy velocities. The specific values
for a particular inserted particle will be chosen randomly and
uniformly between the specified bounds. The <I>vz</I> or <I>vy</I> value for
option <I>vel</I> assigns a z-velocity (3d) or y-velocity (2d) to each
inserted particle.
</P>
<P>The <I>vol</I> option specifies what volume fraction of the insertion
volume will be filled with particles. The higher the value, the more
particles are inserted each timestep. Since inserted particles cannot
overlap, the maximum volume fraction should be no higher than about
0.6. Each timestep particles are inserted, LAMMPS will make up to a
total of M tries to insert the new particles without overlaps, where M
= # of inserted particles * Nattempt. If LAMMPS is unsuccessful at
completing all insertions, it prints a warning.
</P>
<P>The <I>rate</I> option moves the insertion volume in the z direction (3d)
or y direction (2d). This enables pouring particles from a
successively higher height over time.
</P>
<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>. This means you must be careful when restarting a
pouring simulation, when the restart file was written in the middle of
the pouring operation. Specifically, you should use a new fix pour
command in the input script for the restarted simulation that
continues the operation. You will need to adjust the arguments of the
original fix pour command to do this.
</P>
<P>Also note that because the state of the random number generator is not
saved in restart files, you cannot do "exact" restarts with this fix,
where the simulation continues on the same as if no restart had taken
place. However, in a statistical sense, a restarted simulation should
produce the same behavior if you adjust the fix pour parameters
appropriately.
</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#4_15">output commands</A>. No
+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 "granular" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>For 3d simulations, a gravity fix in the -z direction must be defined
for use in conjunction with this fix. For 2d simulations, gravity
must be defined in the -y direction.
</P>
<P>The specified insertion region cannot be a "dynamic" region, as
defined by the <A HREF = "region.html">region</A> command.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_deposit.html">fix_deposit</A>, <A HREF = "fix_gravity.html">fix_gravity</A>,
<A HREF = "region.html">region</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are diam = 1.0 1.0, dens = 1.0 1.0, vol = 0.25 50,
rate = 0.0, vel = 0.0 0.0 0.0 0.0 0.0.
</P>
</HTML>
diff --git a/doc/fix_pour.txt b/doc/fix_pour.txt
index 54e22b66c..56d4e6f73 100644
--- a/doc/fix_pour.txt
+++ b/doc/fix_pour.txt
@@ -1,138 +1,138 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix pour command :h3
[Syntax:]
fix ID group-ID pour N type seed keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
pour = style name of this fix command :l
N = # of atoms to insert :l
type = atom type to assign to inserted atoms :l
seed = random # seed (positive integer) :l
one or more keyword/value pairs may be appended to args :l
keyword = {region} or {diam} or {dens} or {vol} or {rate} or {vel} :l
{region} value = region-ID
region-ID = ID of region to use as insertion volume
{diam} values = lo hi
lo,hi = range of diameters for inserted particles (distance units)
{dens} values = lo hi
lo,hi = range of densities for inserted particles
{vol} values = fraction Nattempt
fraction = desired volume fraction for filling insertion volume
Nattempt = max # of insertion attempts per atom
{rate} value = V
V = z velocity (3d) or y velocity (2d) at which
insertion volume moves (velocity units)
{vel} values (3d) = vxlo vxhi vylo vyhi vz
{vel} values (2d) = vxlo vxhi vy
vxlo,vxhi = range of x velocities for inserted particles (velocity units)
vylo,vyhi = range of y velocities for inserted particles (velocity units)
vz = z velocity (3d) assigned to inserted particles (velocity units)
vy = y velocity (2d) assigned to inserted particles (velocity units) :pre
:ule
[Examples:]
fix 3 all pour 1000 2 29494 region myblock
fix 2 all pour 10000 1 19985583 region disk vol 0.33 100 rate 1.0 diam 0.9 1.1 :pre
[Description:]
Insert particles into a granular run every few timesteps within a
specified region until N particles have been inserted. This is useful
for simulating the pouring of particles into a container under the
influence of gravity.
Inserted particles are assigned the specified atom type and are
assigned to two groups: the default group "all" and the group
specified in the fix pour command (which can also be "all").
This command must use the {region} keyword to define an insertion
volume. The specified region must have been previously defined with a
"region"_region.html command. It must be of type {block} or a z-axis
{cylinder} and must be defined with side = {in}. The cylinder style
of region can only be used with 3d simulations.
Each timestep particles are inserted, they are placed randomly inside
the insertion volume so as to mimic a stream of poured particles. The
larger the volume, the more particles that can be inserted at any one
timestep. Particles are inserted again after enough time has elapsed
that the previously inserted particles fall out of the insertion
volume under the influence of gravity. Insertions continue every so
many timesteps until the desired # of particles has been inserted.
All other keywords are optional with defaults as shown below. The
{diam}, {dens}, and {vel} options enable inserted particles to have a
range of diameters or densities or xy velocities. The specific values
for a particular inserted particle will be chosen randomly and
uniformly between the specified bounds. The {vz} or {vy} value for
option {vel} assigns a z-velocity (3d) or y-velocity (2d) to each
inserted particle.
The {vol} option specifies what volume fraction of the insertion
volume will be filled with particles. The higher the value, the more
particles are inserted each timestep. Since inserted particles cannot
overlap, the maximum volume fraction should be no higher than about
0.6. Each timestep particles are inserted, LAMMPS will make up to a
total of M tries to insert the new particles without overlaps, where M
= # of inserted particles * Nattempt. If LAMMPS is unsuccessful at
completing all insertions, it prints a warning.
The {rate} option moves the insertion volume in the z direction (3d)
or y direction (2d). This enables pouring particles from a
successively higher height over time.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. This means you must be careful when restarting a
pouring simulation, when the restart file was written in the middle of
the pouring operation. Specifically, you should use a new fix pour
command in the input script for the restarted simulation that
continues the operation. You will need to adjust the arguments of the
original fix pour command to do this.
Also note that because the state of the random number generator is not
saved in restart files, you cannot do "exact" restarts with this fix,
where the simulation continues on the same as if no restart had taken
place. However, in a statistical sense, a restarted simulation should
produce the same behavior if you adjust the fix pour parameters
appropriately.
None of the "fix_modify"_fix_modify.html options are relevant to this
fix. No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#4_15. No
+access by various "output commands"_Section_howto.html#howto_15. No
parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
This fix is part of the "granular" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
For 3d simulations, a gravity fix in the -z direction must be defined
for use in conjunction with this fix. For 2d simulations, gravity
must be defined in the -y direction.
The specified insertion region cannot be a "dynamic" region, as
defined by the "region"_region.html command.
[Related commands:]
"fix_deposit"_fix_deposit.html, "fix_gravity"_fix_gravity.html,
"region"_region.html
[Default:]
The option defaults are diam = 1.0 1.0, dens = 1.0 1.0, vol = 0.25 50,
rate = 0.0, vel = 0.0 0.0 0.0 0.0 0.0.
diff --git a/doc/fix_press_berendsen.html b/doc/fix_press_berendsen.html
index e86d9be9a..673c1b343 100644
--- a/doc/fix_press_berendsen.html
+++ b/doc/fix_press_berendsen.html
@@ -1,227 +1,227 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix press/berendsen command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID press/berendsen keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>press/berendsen = 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>x</I> or <I>y</I> or <I>z</I> or <I>couple</I> or <I>dilate</I> or <I>modulus</I>
<I>iso</I> or <I>aniso</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> 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>modulus</I> value = bulk modulus of system (pressure units)
<I>dilate</I> value = <I>all</I> or <I>partial</I>
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all press/berendsen iso 0.0 0.0 1000.0
fix 2 all press/berendsen aniso 0.0 0.0 1000.0 dilate partial
</PRE>
<P><B>Description:</B>
</P>
<P>Reset the pressure of the system by using a Berendsen barostat
<A HREF = "#Berendsen">(Berendsen)</A>, which rescales the system volume and
(optionally) the atoms coordinates within the simulation box every
timestep.
</P>
<P>Regardless of what atoms are in the fix group, a global pressure is
computed for all atoms. Similarly, when the size of the simulation
box is changed, all atoms are re-scaled to new positions, unless the
keyword <I>dilate</I> is specified with a value of <I>partial</I>, in which case
only the atoms in the fix group are re-scaled. The latter can be
useful for leaving the coordinates of atoms in a solid substrate
unchanged and controlling the pressure of a surrounding fluid.
</P>
<P>IMPORTANT NOTE: Unlike the <A HREF = "fix_nh.html">fix npt</A> or <A HREF = "fix_nh.html">fix
nph</A> commands which perform Nose/Hoover barostatting AND
time integration, this fix does NOT perform time integration. It only
modifies the box size and atom coordinates to effect barostatting.
Thus you must use a separate time integration fix, like <A HREF = "fix_nve.html">fix
nve</A> or <A HREF = "fix_nh.html">fix nvt</A> to actually update the
positions and velocities of atoms. This fix can be used in
conjunction with thermostatting fixes to control the temperature, such
as <A HREF = "fix_nh.html">fix nvt</A> or <A HREF = "fix_langevin.html">fix langevin</A> or <A HREF = "fix_temp_berendsen.html">fix
temp/berendsen</A>.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting and barostatting.
</P>
<HR>
<P>The barostat is specified using one or more of the <I>iso</I>, <I>aniso</I>,
<I>x</I>, <I>y</I>, <I>z</I>, and <I>couple</I> keywords. These keywords give you the
ability to specify the 3 diagonal components of an external stress
tensor, and to couple various of these components together so that the
dimensions they represent are varied together during a
constant-pressure simulation. Unlike the <A HREF = "fix_nh.html">fix npt</A> and
<A HREF = "fix_nh.html">fix nph</A> commands, this fix cannot be used with triclinic
(non-orthogonal) simulation boxes to control all 6 components of the
general pressure tensor.
</P>
<P>The target pressures for each of the 3 diagonal components of the
stress tensor can be specified independently via the <I>x</I>, <I>y</I>, <I>z</I>,
keywords, which correspond to the 3 simulation box dimensions. For
each component, the external pressure or tensor component at each
timestep is a ramped value during the run from <I>Pstart</I> to <I>Pstop</I>.
If a target pressure is specified for a component, then the
corresponding box dimension will change during a simulation. For
example, if the <I>y</I> keyword is used, the y-box length will change. A
box dimension will not change if that component is not specified,
although you have the option to change that dimension via the <A HREF = "fix_deform.html">fix
deform</A> command.
</P>
<P>For all barostat keywords, the <I>Pdamp</I> parameter determines the time
scale on which pressure is relaxed. For example, a value of 1000.0
means to relax the pressure in a timespan of (roughly) 1000 time units
(tau or fmsec or psec - see the <A HREF = "units.html">units</A> command).
</P>
<P>IMPORTANT NOTE: The relaxation time is actually also a function of the
bulk modulus of the system (inverse of isothermal compressibility).
The bulk modulus has units of pressure and is the amount of pressure
that would need to be applied (isotropically) to reduce the volume of
the system by a factor of 2 (assuming the bulk modulus was a constant,
independent of density, which it's not). The bulk modulus can be set
via the keyword <I>modulus</I>. The <I>Pdamp</I> parameter is effectively
multiplied by the bulk modulus, so if the pressure is relaxing faster
than expected or desired, increasing the bulk modulus has the same
effect as increasing <I>Pdamp</I>. The converse is also true. LAMMPS does
not attempt to guess a correct value of the bulk modulus; it just uses
10.0 as a default value which gives reasonable relaxation for a
Lennard-Jones liquid, but will be way off for other materials and way
too small for solids. Thus you should experiment to find appropriate
values of <I>Pdamp</I> and/or the <I>modulus</I> when using this fix.
</P>
<HR>
<P>The <I>couple</I> keyword allows two or three of the diagonal components of
the pressure tensor to be "coupled" together. The value specified
with the keyword determines which are coupled. For example, <I>xz</I>
means the <I>Pxx</I> and <I>Pzz</I> components of the stress tensor are coupled.
<I>Xyz</I> means all 3 diagonal components are coupled. Coupling means two
things: the instantaneous stress will be computed as an average of the
corresponding diagonal components, and the coupled box dimensions will
be changed together in lockstep, meaning coupled dimensions will be
dilated or contracted by the same percentage every timestep. The
<I>Pstart</I>, <I>Pstop</I>, <I>Pdamp</I> parameters for any coupled dimensions must
be identical. <I>Couple xyz</I> can be used for a 2d simulation; the <I>z</I>
dimension is simply ignored.
</P>
<HR>
<P>The <I>iso</I> and <I>aniso</I> keywords are simply shortcuts that are
equivalent to specifying several other keywords together.
</P>
<P>The keyword <I>iso</I> means couple all 3 diagonal components together when
pressure is computed (hydrostatic pressure), and dilate/contract the
dimensions together. Using "iso Pstart Pstop Pdamp" is the same as
specifying these 4 keywords:
</P>
<PRE>x Pstart Pstop Pdamp
y Pstart Pstop Pdamp
z Pstart Pstop Pdamp
couple xyz
</PRE>
<P>The keyword <I>aniso</I> means <I>x</I>, <I>y</I>, and <I>z</I> dimensions are controlled
independently using the <I>Pxx</I>, <I>Pyy</I>, and <I>Pzz</I> components of the
stress tensor as the driving forces, and the specified scalar external
pressure. Using "aniso Pstart Pstop Pdamp" is the same as specifying
these 4 keywords:
</P>
<PRE>x Pstart Pstop Pdamp
y Pstart Pstop Pdamp
z Pstart Pstop Pdamp
couple none
</PRE>
<HR>
<P>This fix computes a temperature and pressure each timestep. To do
this, the fix creates its own computes of style "temp" and "pressure",
as if these commands had been issued:
</P>
<PRE>compute fix-ID_temp group-ID temp
compute fix-ID_press group-ID pressure fix-ID_temp
</PRE>
<P>See the <A HREF = "compute_temp.html">compute temp</A> and <A HREF = "compute_pressure.html">compute
pressure</A> commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press", and the group for the new computes is the same
as the fix group.
</P>
<P>Note that these are NOT the computes used by thermodynamic output (see
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>
and <I>thermo_press</I>. This means you can change the attributes of this
fix's temperature or pressure via the
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
or pressure during thermodynamic output via the <A HREF = "thermo_style.html">thermo_style
custom</A> command using the appropriate compute-ID.
It also means that changing attributes of <I>thermo_temp</I> or
<I>thermo_press</I> will have no effect on this fix.
</P>
<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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> and <I>press</I> options are
supported by this fix. You can use them to assign a
<A HREF = "compute.html">compute</A> you have defined to this fix which will be used
in its temperature and pressure calculations. If you do this, note
that the kinetic energy derived from the compute temperature should be
consistent with the virial term computed using all atoms for the
pressure. LAMMPS will warn you if you choose to compute temperature
on a subset of atoms.
</P>
<P>No global or per-atom quantities are stored by this fix for access by
-various <A HREF = "Section_howto.html#4_15">output commands</A>.
+various <A HREF = "Section_howto.html#howto_15">output commands</A>.
</P>
<P>This fix can ramp its target pressure over multiple runs, using the
<I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this.
</P>
<P>This fix is not invoked during <A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>Any dimension being adjusted by this fix must be periodic.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nve.html">fix nve</A>, <A HREF = "fix_nh.html">fix nph</A>, <A HREF = "fix_nh.html">fix
npt</A>, <A HREF = "fix_temp_berendsen.html">fix temp/berendsen</A>,
<A HREF = "fix_modify.html">fix_modify</A>
</P>
<P><B>Default:</B>
</P>
<P>The keyword defaults are dilate = all, modulus = 10.0 in units of
pressure for whatever <A HREF = "units.html">units</A> are defined.
</P>
<HR>
<A NAME = "Berendsen"></A>
<P><B>(Berendsen)</B> Berendsen, Postma, van Gunsteren, DiNola, Haak, J Chem
Phys, 81, 3684 (1984).
</P>
</HTML>
diff --git a/doc/fix_press_berendsen.txt b/doc/fix_press_berendsen.txt
index b3dbf3ea7..eda073703 100644
--- a/doc/fix_press_berendsen.txt
+++ b/doc/fix_press_berendsen.txt
@@ -1,219 +1,219 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix press/berendsen command :h3
[Syntax:]
fix ID group-ID press/berendsen keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
press/berendsen = style name of this fix command :l
one or more keyword value pairs may be appended
keyword = {iso} or {aniso} or {x} or {y} or {z} or {couple} or {dilate} or {modulus}
{iso} or {aniso} values = Pstart Pstop Pdamp
Pstart,Pstop = scalar external pressure at start/end of run (pressure units)
Pdamp = pressure damping parameter (time units)
{x} or {y} or {z} values = Pstart Pstop Pdamp
Pstart,Pstop = external stress tensor component at start/end of run (pressure units)
Pdamp = stress damping parameter (time units)
{couple} = {none} or {xyz} or {xy} or {yz} or {xz}
{modulus} value = bulk modulus of system (pressure units)
{dilate} value = {all} or {partial} :pre
:ule
[Examples:]
fix 1 all press/berendsen iso 0.0 0.0 1000.0
fix 2 all press/berendsen aniso 0.0 0.0 1000.0 dilate partial :pre
[Description:]
Reset the pressure of the system by using a Berendsen barostat
"(Berendsen)"_#Berendsen, which rescales the system volume and
(optionally) the atoms coordinates within the simulation box every
timestep.
Regardless of what atoms are in the fix group, a global pressure is
computed for all atoms. Similarly, when the size of the simulation
box is changed, all atoms are re-scaled to new positions, unless the
keyword {dilate} is specified with a value of {partial}, in which case
only the atoms in the fix group are re-scaled. The latter can be
useful for leaving the coordinates of atoms in a solid substrate
unchanged and controlling the pressure of a surrounding fluid.
IMPORTANT NOTE: Unlike the "fix npt"_fix_nh.html or "fix
nph"_fix_nh.html commands which perform Nose/Hoover barostatting AND
time integration, this fix does NOT perform time integration. It only
modifies the box size and atom coordinates to effect barostatting.
Thus you must use a separate time integration fix, like "fix
nve"_fix_nve.html or "fix nvt"_fix_nh.html to actually update the
positions and velocities of atoms. This fix can be used in
conjunction with thermostatting fixes to control the temperature, such
as "fix nvt"_fix_nh.html or "fix langevin"_fix_langevin.html or "fix
temp/berendsen"_fix_temp_berendsen.html.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting and barostatting.
:line
The barostat is specified using one or more of the {iso}, {aniso},
{x}, {y}, {z}, and {couple} keywords. These keywords give you the
ability to specify the 3 diagonal components of an external stress
tensor, and to couple various of these components together so that the
dimensions they represent are varied together during a
constant-pressure simulation. Unlike the "fix npt"_fix_nh.html and
"fix nph"_fix_nh.html commands, this fix cannot be used with triclinic
(non-orthogonal) simulation boxes to control all 6 components of the
general pressure tensor.
The target pressures for each of the 3 diagonal components of the
stress tensor can be specified independently via the {x}, {y}, {z},
keywords, which correspond to the 3 simulation box dimensions. For
each component, the external pressure or tensor component at each
timestep is a ramped value during the run from {Pstart} to {Pstop}.
If a target pressure is specified for a component, then the
corresponding box dimension will change during a simulation. For
example, if the {y} keyword is used, the y-box length will change. A
box dimension will not change if that component is not specified,
although you have the option to change that dimension via the "fix
deform"_fix_deform.html command.
For all barostat keywords, the {Pdamp} parameter determines the time
scale on which pressure is relaxed. For example, a value of 1000.0
means to relax the pressure in a timespan of (roughly) 1000 time units
(tau or fmsec or psec - see the "units"_units.html command).
IMPORTANT NOTE: The relaxation time is actually also a function of the
bulk modulus of the system (inverse of isothermal compressibility).
The bulk modulus has units of pressure and is the amount of pressure
that would need to be applied (isotropically) to reduce the volume of
the system by a factor of 2 (assuming the bulk modulus was a constant,
independent of density, which it's not). The bulk modulus can be set
via the keyword {modulus}. The {Pdamp} parameter is effectively
multiplied by the bulk modulus, so if the pressure is relaxing faster
than expected or desired, increasing the bulk modulus has the same
effect as increasing {Pdamp}. The converse is also true. LAMMPS does
not attempt to guess a correct value of the bulk modulus; it just uses
10.0 as a default value which gives reasonable relaxation for a
Lennard-Jones liquid, but will be way off for other materials and way
too small for solids. Thus you should experiment to find appropriate
values of {Pdamp} and/or the {modulus} when using this fix.
:line
The {couple} keyword allows two or three of the diagonal components of
the pressure tensor to be "coupled" together. The value specified
with the keyword determines which are coupled. For example, {xz}
means the {Pxx} and {Pzz} components of the stress tensor are coupled.
{Xyz} means all 3 diagonal components are coupled. Coupling means two
things: the instantaneous stress will be computed as an average of the
corresponding diagonal components, and the coupled box dimensions will
be changed together in lockstep, meaning coupled dimensions will be
dilated or contracted by the same percentage every timestep. The
{Pstart}, {Pstop}, {Pdamp} parameters for any coupled dimensions must
be identical. {Couple xyz} can be used for a 2d simulation; the {z}
dimension is simply ignored.
:line
The {iso} and {aniso} keywords are simply shortcuts that are
equivalent to specifying several other keywords together.
The keyword {iso} means couple all 3 diagonal components together when
pressure is computed (hydrostatic pressure), and dilate/contract the
dimensions together. Using "iso Pstart Pstop Pdamp" is the same as
specifying these 4 keywords:
x Pstart Pstop Pdamp
y Pstart Pstop Pdamp
z Pstart Pstop Pdamp
couple xyz :pre
The keyword {aniso} means {x}, {y}, and {z} dimensions are controlled
independently using the {Pxx}, {Pyy}, and {Pzz} components of the
stress tensor as the driving forces, and the specified scalar external
pressure. Using "aniso Pstart Pstop Pdamp" is the same as specifying
these 4 keywords:
x Pstart Pstop Pdamp
y Pstart Pstop Pdamp
z Pstart Pstop Pdamp
couple none :pre
:line
This fix computes a temperature and pressure each timestep. To do
this, the fix creates its own computes of style "temp" and "pressure",
as if these commands had been issued:
compute fix-ID_temp group-ID temp
compute fix-ID_press group-ID pressure fix-ID_temp :pre
See the "compute temp"_compute_temp.html and "compute
pressure"_compute_pressure.html commands for details. Note that the
IDs of the new computes are the fix-ID + underscore + "temp" or fix_ID
+ underscore + "press", and the group for the new computes is the same
as the fix group.
Note that these are NOT the computes used by thermodynamic output (see
the "thermo_style"_thermo_style.html command) with ID = {thermo_temp}
and {thermo_press}. This means you can change the attributes of this
fix's temperature or pressure via the
"compute_modify"_compute_modify.html command or print this temperature
or pressure during thermodynamic output via the "thermo_style
custom"_thermo_style.html command using the appropriate compute-ID.
It also means that changing attributes of {thermo_temp} or
{thermo_press} will have no effect on this fix.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {temp} and {press} options are
supported by this fix. You can use them to assign a
"compute"_compute.html you have defined to this fix which will be used
in its temperature and pressure calculations. If you do this, note
that the kinetic energy derived from the compute temperature should be
consistent with the virial term computed using all atoms for the
pressure. LAMMPS will warn you if you choose to compute temperature
on a subset of atoms.
No global or per-atom quantities are stored by this fix for access by
-various "output commands"_Section_howto.html#4_15.
+various "output commands"_Section_howto.html#howto_15.
This fix can ramp its target pressure over multiple runs, using the
{start} and {stop} keywords of the "run"_run.html command. See the
"run"_run.html command for details of how to do this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
Any dimension being adjusted by this fix must be periodic.
[Related commands:]
"fix nve"_fix_nve.html, "fix nph"_fix_nh.html, "fix
npt"_fix_nh.html, "fix temp/berendsen"_fix_temp_berendsen.html,
"fix_modify"_fix_modify.html
[Default:]
The keyword defaults are dilate = all, modulus = 10.0 in units of
pressure for whatever "units"_units.html are defined.
:line
:link(Berendsen)
[(Berendsen)] Berendsen, Postma, van Gunsteren, DiNola, Haak, J Chem
Phys, 81, 3684 (1984).
diff --git a/doc/fix_print.html b/doc/fix_print.html
index 5a4282a77..98b233769 100644
--- a/doc/fix_print.html
+++ b/doc/fix_print.html
@@ -1,100 +1,100 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix print command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID print N string keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>print = style name of this fix command
<LI>N = print every N steps
<LI>string = text string to print with optional variable names
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>file</I> or <I>append</I> or <I>screen</I> or <I>title</I>
<PRE> <I>file</I> value = filename
<I>append</I> value = filename
<I>screen</I> value = <I>yes</I> or <I>no</I>
<I>title</I> value = string
string = text to print as 1st line of output file
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix extra all print 100 "Coords of marker atom = $x $y $z"
fix extra all print 100 "Coords of marker atom = $x $y $z" file coord.txt
</PRE>
<P><B>Description:</B>
</P>
<P>Print a text string every N steps during a simulation run. This can
be used for diagnostic purposes or as a debugging tool to monitor some
quantity during a run. The text string must be a single argument, so
it should be enclosed in double quotes if it is more than one word.
If it contains variables it must be enclosed in double quotes to
insure they are not evaluated when the input script line is read, but
will instead be evaluated each time the string is printed.
</P>
<P>See the <A HREF = "variable.html">variable</A> command for a description of <I>equal</I>
style variables which are the most useful ones to use with the fix
print command, since they are evaluated afresh each timestep that the
fix print line is output. Equal-style variables calculate formulas
involving mathematical operations, atom properties, group properties,
thermodynamic properties, global values calculated by a
<A HREF = "compute.html">compute</A> or <A HREF = "fix.html">fix</A>, or references to other
<A HREF = "variable.html">variables</A>.
</P>
<P>If the <I>file</I> or <I>append</I> keyword is used, a filename is specified to
which the output generated by this fix will be written. If <I>file</I> is
used, then the filename is overwritten if it already exists. If
<I>append</I> is used, then the filename is appended to if it already
exists, or created if it does not exist.
</P>
<P>If the <I>screen</I> keyword is used, output by this fix to the screen and
logfile can be turned on or off as desired.
</P>
<P>The <I>title</I> keyword allow specification of the string that will be
printed as the first line of the output file, assuming the <I>file</I>
keyword was used. By default, the title line is as follows:
</P>
<PRE># Fix print output for fix ID
</PRE>
<P>where ID is replaced with the fix-ID.
</P>
<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>. 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#4_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.
+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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "variable.html">variable</A>, <A HREF = "print.html">print</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are no file output, screen = yes, and title string
as described above.
</P>
</HTML>
diff --git a/doc/fix_print.txt b/doc/fix_print.txt
index 7827bc6ae..0ac44ef9b 100644
--- a/doc/fix_print.txt
+++ b/doc/fix_print.txt
@@ -1,88 +1,88 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix print command :h3
[Syntax:]
fix ID group-ID print N string keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
print = style name of this fix command :l
N = print every N steps :l
string = text string to print with optional variable names :l
zero or more keyword/value pairs may be appended :l
keyword = {file} or {append} or {screen} or {title} :l
{file} value = filename
{append} value = filename
{screen} value = {yes} or {no}
{title} value = string
string = text to print as 1st line of output file :pre
:ule
[Examples:]
fix extra all print 100 "Coords of marker atom = $x $y $z"
fix extra all print 100 "Coords of marker atom = $x $y $z" file coord.txt :pre
[Description:]
Print a text string every N steps during a simulation run. This can
be used for diagnostic purposes or as a debugging tool to monitor some
quantity during a run. The text string must be a single argument, so
it should be enclosed in double quotes if it is more than one word.
If it contains variables it must be enclosed in double quotes to
insure they are not evaluated when the input script line is read, but
will instead be evaluated each time the string is printed.
See the "variable"_variable.html command for a description of {equal}
style variables which are the most useful ones to use with the fix
print command, since they are evaluated afresh each timestep that the
fix print line is output. Equal-style variables calculate formulas
involving mathematical operations, atom properties, group properties,
thermodynamic properties, global values calculated by a
"compute"_compute.html or "fix"_fix.html, or references to other
"variables"_variable.html.
If the {file} or {append} keyword is used, a filename is specified to
which the output generated by this fix will be written. If {file} is
used, then the filename is overwritten if it already exists. If
{append} is used, then the filename is appended to if it already
exists, or created if it does not exist.
If the {screen} keyword is used, output by this fix to the screen and
logfile can be turned on or off as desired.
The {title} keyword allow specification of the string that will be
printed as the first line of the output file, assuming the {file}
keyword was used. By default, the title line is as follows:
# Fix print output for fix ID :pre
where ID is replaced with the fix-ID.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"variable"_variable.html, "print"_print.html
[Default:]
The option defaults are no file output, screen = yes, and title string
as described above.
diff --git a/doc/fix_qeq_comb.html b/doc/fix_qeq_comb.html
index 45ab968c3..b6c5d437f 100644
--- a/doc/fix_qeq_comb.html
+++ b/doc/fix_qeq_comb.html
@@ -1,117 +1,117 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix qeq/comb command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID qeq/comb Nevery precision keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>qeq/comb = style name of this fix command
<LI>Nevery = perform charge equilibration every this many steps
<LI>precision = convergence criterion for charge equilibration
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>file</I>
<PRE> <I>file</I> value = filename
filename = name of file to write QEQ equilibration info to
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 surface qeq/comb 10 0.0001
</PRE>
<P><B>Description:</B>
</P>
<P>Perform charge equilibration (QeQ) in conjunction with the COMB
(Charge-Optimized Many-Body) potential as described in
<A HREF = "#COMB_1">(COMB_1)</A> and <A HREF = "#COMB_2">(COMB_2)</A>. It performs the charge
equilibration portion of the calculation using the so-called QEq
method, whereby the charge on each atom is adjusted to minimize the
energy of the system. This fix can only be used with the COMB
potential; see the <A HREF = "fix_qeq_reqx.html">fix qeq/reax</A> command for a QeQ
calculation that can be used with any potential.
</P>
<P>Only charges on the atoms in the specified group are equilibrated.
The fix relies on the pair style (COMB in this case) to calculate the
per-atom electronegativity (effective force on the charges). An
electronegativity equalization calculation (or QEq) is performed in an
interative fashion, which in parallel requires communication at each
iteration for processors to exchange charge information about nearby
atoms with each other. See <A HREF = "#Rappe_and_Goddard">Rappe_and_Goddard</A> and
<A HREF = "#Rick_and_Stuart">Rick_and_Stuart</A> for details.
</P>
<P>During a run, charge equilibration is peformed every <I>Nevery</I> time
steps. Charge equilibration is also always enforced on the first step
of each run. The <I>precision</I> argument controls the tolerance for the
difference in electronegativity for all atoms during charge
equilibration. <I>Precision</I> is a trade-off between the cost of
performing charge equilibration (more iterations) and accuracy.
</P>
<P>If the <I>file</I> keyword is used, then information about each
equilibration calculation is written to the specifed file.
</P>
<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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix produces a per-atom vector which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The vector stores the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The vector stores the
gradient of the charge on each atom. The per-atom values be accessed
on any timestep.
</P>
<P>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 command currently only supports <A HREF = "pair_comb.html">pair style <I>comb</I></A>.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_comb.html">pair_style comb</A>
</P>
<P><B>Default:</B>
</P>
<P>No file output is performed.
</P>
<HR>
<A NAME = "COMB_1"></A>
<P><B>(COMB_1)</B> J. Yu, S. B. Sinnott, S. R. Phillpot, Phys Rev B, 75, 085311 (2007),
</P>
<A NAME = "COMB_2"></A>
<P><B>(COMB_2)</B> T.-R. Shan, B. D. Devine, T. W. Kemper, S. B. Sinnott, S. R.
Phillpot, Phys Rev B, 81, 125328 (2010).
</P>
<A NAME = "Rappe_and_Goddard"></A>
<P><B>(Rappe_and_Goddard)</B> A. K. Rappe, W. A. Goddard, J Phys Chem 95, 3358
(1991).
</P>
<A NAME = "Rick_and_Stuart"></A>
<P><B>(Rick_and_Stuart)</B> S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys
101, 16141 (1994).
</P>
</HTML>
diff --git a/doc/fix_qeq_comb.txt b/doc/fix_qeq_comb.txt
index 36deb87ab..8c8e53d03 100644
--- a/doc/fix_qeq_comb.txt
+++ b/doc/fix_qeq_comb.txt
@@ -1,101 +1,101 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix qeq/comb command :h3
[Syntax:]
fix ID group-ID qeq/comb Nevery precision keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
qeq/comb = style name of this fix command :l
Nevery = perform charge equilibration every this many steps :l
precision = convergence criterion for charge equilibration :l
zero or more keyword/value pairs may be appended :l
keyword = {file} :l
{file} value = filename
filename = name of file to write QEQ equilibration info to :pre
:ule
[Examples:]
fix 1 surface qeq/comb 10 0.0001 :pre
[Description:]
Perform charge equilibration (QeQ) in conjunction with the COMB
(Charge-Optimized Many-Body) potential as described in
"(COMB_1)"_#COMB_1 and "(COMB_2)"_#COMB_2. It performs the charge
equilibration portion of the calculation using the so-called QEq
method, whereby the charge on each atom is adjusted to minimize the
energy of the system. This fix can only be used with the COMB
potential; see the "fix qeq/reax"_fix_qeq_reqx.html command for a QeQ
calculation that can be used with any potential.
Only charges on the atoms in the specified group are equilibrated.
The fix relies on the pair style (COMB in this case) to calculate the
per-atom electronegativity (effective force on the charges). An
electronegativity equalization calculation (or QEq) is performed in an
interative fashion, which in parallel requires communication at each
iteration for processors to exchange charge information about nearby
atoms with each other. See "Rappe_and_Goddard"_#Rappe_and_Goddard and
"Rick_and_Stuart"_#Rick_and_Stuart for details.
During a run, charge equilibration is peformed every {Nevery} time
steps. Charge equilibration is also always enforced on the first step
of each run. The {precision} argument controls the tolerance for the
difference in electronegativity for all atoms during charge
equilibration. {Precision} is a trade-off between the cost of
performing charge equilibration (more iterations) and accuracy.
If the {file} keyword is used, then information about each
equilibration calculation is written to the specifed file.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix produces a per-atom vector which can be accessed by various
-"output commands"_Section_howto.html#4_15. The vector stores the
+"output commands"_Section_howto.html#howto_15. The vector stores the
gradient of the charge on each atom. The per-atom values be accessed
on any timestep.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
This fix command currently only supports "pair style {comb}"_pair_comb.html.
[Related commands:]
"pair_style comb"_pair_comb.html
[Default:]
No file output is performed.
:line
:link(COMB_1)
[(COMB_1)] J. Yu, S. B. Sinnott, S. R. Phillpot, Phys Rev B, 75, 085311 (2007),
:link(COMB_2)
[(COMB_2)] T.-R. Shan, B. D. Devine, T. W. Kemper, S. B. Sinnott, S. R.
Phillpot, Phys Rev B, 81, 125328 (2010).
:link(Rappe_and_Goddard)
[(Rappe_and_Goddard)] A. K. Rappe, W. A. Goddard, J Phys Chem 95, 3358
(1991).
:link(Rick_and_Stuart)
[(Rick_and_Stuart)] S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys
101, 16141 (1994).
diff --git a/doc/fix_qeq_reax.html b/doc/fix_qeq_reax.html
index c241e30a0..65ed93d0d 100644
--- a/doc/fix_qeq_reax.html
+++ b/doc/fix_qeq_reax.html
@@ -1,95 +1,100 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix qeq/reax command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID qeq/reax Nevery cutlo cuthi tolerance params
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>qeq/reax = style name of this fix command
<LI>Nevery = perform QEq every this many steps
<LI>cutlo,cuthi = lo and hi cutoff for Taper radius
<LI>tolerance = precision to which charges will be equilibrated
<LI>params = reax/c or a filename
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all qeq/reax 1 0.0 10.0 1.0e-6 reax/c
fix 1 all qeq/reax 1 0.0 10.0 1.0e-6 param.qeq
</PRE>
<P><B>Description:</B>
</P>
<P>Perform the charge equilibration (QEq) method as described in <A HREF = "#Rappe_1991">(Rappe
and Goddard, 1991)</A> and formulated in <A HREF = "#Nakano_1997">(Nakano,
1997)</A>. It is typically used in conjunction with the
ReaxFF force field model as implemented in the <A HREF = "pair_reax_c.html">pair_style
reax/c</A> command, but it can be used with any
potential in LAMMPS, so long as it defines and uses charges on each
atom. The <A HREF = "fix_qeq_comb.html">fix qeq/comb</A> command should be used to
perform charge equliibration with the <A HREF = "pair_comb.html">COMB potential</A>.
+For more technical details about the charge equilibration performed by
+fix qeq/reax, see the "(Aktulga)" paper.
</P>
<P>The QEq method minimizes the electrostatic energy of the system by
adjusting the partial charge on individual atoms based on interactions
with their neighbors. It reqires some parameters for each atom type.
If the <I>params</I> setting above is the word "reax/c", then these are
extracted from the <A HREF = "pair_reax_c.html">pair_style reax/c</A> command and
the ReaxFF force field file it reads in. If a file name is specified
for <I>params</I>, then the parameters are taken from the specified file
and the file must contain one line for each atom type. The latter
form must be used when performing QeQ with a non-ReaxFF potential.
Each line should be formatted as follows:
</P>
<PRE>itype chi eta gamma
</PRE>
<P>where <I>itype</I> is the atom type from 1 to Ntypes, <I>chi</I> denotes the
electronegativity in eV, <I>eta</I> denotes the self-Coulomb
potential in eV, and <I>gamma</I> denotes the valence orbital
exponent. Note that these 3 quantities are also in the ReaxFF
potential file, except that eta is defined here as twice the eta value
in the ReaxFF file. Note that unlike the rest of LAMMPS, the units
of this fix are hard-coded to be A, eV, and electronic charge.
</P>
<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>. No global scalar or vector or per-atom
-quantities are stored by this fix for access by various <A HREF = "Section_howto.html#4_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.
+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.
</P>
<P>This fix is invoked during <A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This fix is part of the "user-reaxc" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_reax_c.html">pair_style reax/c</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Rappe_1991"></A>
<P><B>(Rappe)</B> Rappe and Goddard III, Journal of Physical Chemistry, 105,
3358-3363 (1991).
</P>
<A NAME = "Nakano_1997"></A>
<P><B>(Nakano)</B> Nakano, Computer Physics Communications, 104, 59-69 (1997).
</P>
+<P>:link(Aktulga) <B>(Aktulga)</B> Aktulga, Fogarty, Pandit, Grama, Parallel
+Computing, to appear (2011).
+</P>
</HTML>
diff --git a/doc/fix_qeq_reax.txt b/doc/fix_qeq_reax.txt
index 6c6b95b1c..8daf358fa 100644
--- a/doc/fix_qeq_reax.txt
+++ b/doc/fix_qeq_reax.txt
@@ -1,88 +1,93 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix qeq/reax command :h3
[Syntax:]
fix ID group-ID qeq/reax Nevery cutlo cuthi tolerance params :pre
ID, group-ID are documented in "fix"_fix.html command
qeq/reax = style name of this fix command
Nevery = perform QEq every this many steps
cutlo,cuthi = lo and hi cutoff for Taper radius
tolerance = precision to which charges will be equilibrated
params = reax/c or a filename :ul
[Examples:]
fix 1 all qeq/reax 1 0.0 10.0 1.0e-6 reax/c
fix 1 all qeq/reax 1 0.0 10.0 1.0e-6 param.qeq :pre
[Description:]
Perform the charge equilibration (QEq) method as described in "(Rappe
and Goddard, 1991)"_#Rappe_1991 and formulated in "(Nakano,
1997)"_#Nakano_1997. It is typically used in conjunction with the
ReaxFF force field model as implemented in the "pair_style
reax/c"_pair_reax_c.html command, but it can be used with any
potential in LAMMPS, so long as it defines and uses charges on each
atom. The "fix qeq/comb"_fix_qeq_comb.html command should be used to
perform charge equliibration with the "COMB potential"_pair_comb.html.
+For more technical details about the charge equilibration performed by
+fix qeq/reax, see the "(Aktulga)" paper.
The QEq method minimizes the electrostatic energy of the system by
adjusting the partial charge on individual atoms based on interactions
with their neighbors. It reqires some parameters for each atom type.
If the {params} setting above is the word "reax/c", then these are
extracted from the "pair_style reax/c"_pair_reax_c.html command and
the ReaxFF force field file it reads in. If a file name is specified
for {params}, then the parameters are taken from the specified file
and the file must contain one line for each atom type. The latter
form must be used when performing QeQ with a non-ReaxFF potential.
Each line should be formatted as follows:
itype chi eta gamma :pre
where {itype} is the atom type from 1 to Ntypes, {chi} denotes the
electronegativity in eV, {eta} denotes the self-Coulomb
potential in eV, and {gamma} denotes the valence orbital
exponent. Note that these 3 quantities are also in the ReaxFF
potential file, except that eta is defined here as twice the eta value
in the ReaxFF file. Note that unlike the rest of LAMMPS, the units
of this fix are hard-coded to be A, eV, and electronic charge.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. No global scalar or vector or per-atom
quantities are stored by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix is part of the "user-reaxc" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"pair_style reax/c"_pair_reax_c.html
[Default:] none
:line
:link(Rappe_1991)
[(Rappe)] Rappe and Goddard III, Journal of Physical Chemistry, 105,
3358-3363 (1991).
:link(Nakano_1997)
[(Nakano)] Nakano, Computer Physics Communications, 104, 59-69 (1997).
+
+:link(Aktulga) [(Aktulga)] Aktulga, Fogarty, Pandit, Grama, Parallel
+Computing, to appear (2011).
diff --git a/doc/fix_reax_bonds.html b/doc/fix_reax_bonds.html
index 113b2c982..0eb4c2691 100644
--- a/doc/fix_reax_bonds.html
+++ b/doc/fix_reax_bonds.html
@@ -1,64 +1,64 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix reax/bonds command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID reax/bonds Nevery filename
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>reax/bonds = style name of this fix command
<LI>Nevery = output interval in timesteps
<LI>filename = name of output file
</UL>
<P><B>Examples:</B>
</P>
<P>fix 1 all reax/bonds 100 bonds.tatb
</P>
<P><B>Description:</B>
</P>
<P>Write out the bond information computed by the ReaxFF potential
specified by <A HREF = "pair_reax.html">pair_style reax</A>. The bond information
is written to <I>filename</I> on timesteps that are multiples of <I>Nevery</I>,
including timestep 0.
</P>
<P>The format of the output file should be self-explantory.
</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>. 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#4_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.
+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 requires that the <A HREF = "pair_reax.html">pair_style reax</A> be
invoked. This fix is part of the "reax" package. It is only enabled
if LAMMPS was built with that package, which also requires the REAX
-library be built and linked with LAMMPS. See the <A HREF = "Section_start.html#2_3">Making
+library be built and linked with LAMMPS. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_reax.html">pair_style reax</A>
</P>
<P><B>Default:</B>
</P>
<P>none
</P>
</HTML>
diff --git a/doc/fix_reax_bonds.txt b/doc/fix_reax_bonds.txt
index 7414083e0..1a42f8aa7 100644
--- a/doc/fix_reax_bonds.txt
+++ b/doc/fix_reax_bonds.txt
@@ -1,59 +1,59 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix reax/bonds command :h3
[Syntax:]
fix ID group-ID reax/bonds Nevery filename :pre
ID, group-ID are documented in "fix"_fix.html command
reax/bonds = style name of this fix command
Nevery = output interval in timesteps
filename = name of output file :ul
[Examples:]
fix 1 all reax/bonds 100 bonds.tatb
[Description:]
Write out the bond information computed by the ReaxFF potential
specified by "pair_style reax"_pair_reax.html. The bond information
is written to {filename} on timesteps that are multiples of {Nevery},
including timestep 0.
The format of the output file should be self-explantory.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix requires that the "pair_style reax"_pair_reax.html be
invoked. This fix is part of the "reax" package. It is only enabled
if LAMMPS was built with that package, which also requires the REAX
library be built and linked with LAMMPS. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"pair_style reax"_pair_reax.html
[Default:]
none
diff --git a/doc/fix_recenter.html b/doc/fix_recenter.html
index d4a08370d..f62b28906 100644
--- a/doc/fix_recenter.html
+++ b/doc/fix_recenter.html
@@ -1,125 +1,125 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix recenter command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID recenter x y z keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>recenter = style name of this fix command
<LI>x,y,z = constrain center-of-mass to these coords (distance units), any coord can also be NULL or INIT (see below)
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>shift</I> or <I>units</I>
<PRE> <I>shift</I> value = group-ID
group-ID = group of atoms whose coords are shifted
<I>units</I> value = <I>box</I> or <I>lattice</I> or <I>fraction</I>
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all recenter 0.0 0.5 0.0
fix 1 all recenter INIT INIT NULL
fix 1 all recenter INIT 0.0 0.0 units box
</PRE>
<P><B>Description:</B>
</P>
<P>Constrain the center-of-mass position of a group of atoms by adjusting
the coordinates of the atoms every timestep. This is simply a small
shift that does not alter the dynamics of the system or change the
relative coordinates of any pair of atoms in the group. This can be
used to insure the entire collection of atoms (or a portion of them)
do not drift during the simulation due to random perturbations
(e.g. <A HREF = "fix_langevin.html">fix langevin</A> thermostatting).
</P>
<P>Distance units for the x,y,z values are determined by the setting of
the <I>units</I> keyword, as discussed below. One or more x,y,z values can
also be specified as NULL, which means exclude that dimension from
this operation. Or it can be specified as INIT which means to
constrain the center-of-mass to its initial value at the beginning of
the run.
</P>
<P>The center-of-mass (COM) is computed for the group specified by the
fix. If the current COM is different than the specified x,y,z, then a
group of atoms has their coordinates shifted by the difference. By
default the shifted group is also the group specified by the fix. A
different group can be shifted by using the <I>shift</I> keyword. For
example, the COM could be computed on a protein to keep it in the
center of the simulation box. But the entire system (protein + water)
could be shifted.
</P>
<P>If the <I>units</I> keyword is set to <I>box</I>, then the distance units of
x,y,z are defined by the <A HREF = "units.html">units</A> command - e.g. Angstroms
for <I>real</I> units. 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. A <I>fraction</I> value
means a fractional distance between the lo/hi box boundaries, e.g. 0.5
= middle of the box. The default is to use lattice units.
</P>
<P>Note that the <A HREF = "velocity.html">velocity</A> command can be used to create
velocities with zero aggregate linear and/or angular momentum.
</P>
<P>IMPORTANT NOTE: This fix performs its operations at the same point in
the timestep as other time integration fixes, such as <A HREF = "fix_nve.html">fix
nve</A>, <A HREF = "fix_nh.html">fix nvt</A>, or <A HREF = "fix_nh.html">fix npt</A>.
Thus fix recenter should normally be the last such fix specified in
the input script, since the adjustments it makes to atom coordinates
should come after the changes made by time integration. LAMMPS will
warn you if your fixes are not ordered this way.
</P>
<P>IMPORTANT NOTE: If you use this fix on a small group of atoms (e.g. a
molecule in solvent) without using the <I>shift</I> keyword to adjust the
positions of all atoms in the system, then the results can be
unpredictable. For example, if the molecule is pushed in one
direction by the solvent, its velocity will increase. But its
coordinates will be recentered, meaning it is pushed back towards the
force. Thus over time, the velocity and temperature of the molecule
could become very large (though it won't appear to be moving due to
the recentering). If you are thermostatting the entire system, then
the solvent would be cooled to compensate. A better solution for this
simulation scenario is to use the <A HREF = "fix_spring.html">fix spring</A> command
to tether the molecule in place.
</P>
<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>. 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#4_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.
+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 should not be used with an x,y,z setting that causes a large
shift in the system on the 1st timestep, due to the requested COM
being very different from the initial COM. This could cause atoms to
be lost, especially in parallel. Instead, use the
<A HREF = "displace_atoms.html">displace_atoms</A> command, which can be used to
move atoms a large distance.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_momentum.html">fix momentum</A>, <A HREF = "velocity.html">velocity</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are adjust = fix group-ID, and units = lattice.
</P>
</HTML>
diff --git a/doc/fix_recenter.txt b/doc/fix_recenter.txt
index 6040f5178..5242c0fa4 100644
--- a/doc/fix_recenter.txt
+++ b/doc/fix_recenter.txt
@@ -1,115 +1,115 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix recenter command :h3
[Syntax:]
fix ID group-ID recenter x y z keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
recenter = style name of this fix command :l
x,y,z = constrain center-of-mass to these coords (distance units), \
any coord can also be NULL or INIT (see below) :l
zero or more keyword/value pairs may be appended :l
keyword = {shift} or {units} :l
{shift} value = group-ID
group-ID = group of atoms whose coords are shifted
{units} value = {box} or {lattice} or {fraction} :pre
:ule
[Examples:]
fix 1 all recenter 0.0 0.5 0.0
fix 1 all recenter INIT INIT NULL
fix 1 all recenter INIT 0.0 0.0 units box :pre
[Description:]
Constrain the center-of-mass position of a group of atoms by adjusting
the coordinates of the atoms every timestep. This is simply a small
shift that does not alter the dynamics of the system or change the
relative coordinates of any pair of atoms in the group. This can be
used to insure the entire collection of atoms (or a portion of them)
do not drift during the simulation due to random perturbations
(e.g. "fix langevin"_fix_langevin.html thermostatting).
Distance units for the x,y,z values are determined by the setting of
the {units} keyword, as discussed below. One or more x,y,z values can
also be specified as NULL, which means exclude that dimension from
this operation. Or it can be specified as INIT which means to
constrain the center-of-mass to its initial value at the beginning of
the run.
The center-of-mass (COM) is computed for the group specified by the
fix. If the current COM is different than the specified x,y,z, then a
group of atoms has their coordinates shifted by the difference. By
default the shifted group is also the group specified by the fix. A
different group can be shifted by using the {shift} keyword. For
example, the COM could be computed on a protein to keep it in the
center of the simulation box. But the entire system (protein + water)
could be shifted.
If the {units} keyword is set to {box}, then the distance units of
x,y,z are defined by the "units"_units.html command - e.g. Angstroms
for {real} units. A {lattice} value means the distance units are in
lattice spacings. The "lattice"_lattice.html command must have been
previously used to define the lattice spacing. A {fraction} value
means a fractional distance between the lo/hi box boundaries, e.g. 0.5
= middle of the box. The default is to use lattice units.
Note that the "velocity"_velocity.html command can be used to create
velocities with zero aggregate linear and/or angular momentum.
IMPORTANT NOTE: This fix performs its operations at the same point in
the timestep as other time integration fixes, such as "fix
nve"_fix_nve.html, "fix nvt"_fix_nh.html, or "fix npt"_fix_nh.html.
Thus fix recenter should normally be the last such fix specified in
the input script, since the adjustments it makes to atom coordinates
should come after the changes made by time integration. LAMMPS will
warn you if your fixes are not ordered this way.
IMPORTANT NOTE: If you use this fix on a small group of atoms (e.g. a
molecule in solvent) without using the {shift} keyword to adjust the
positions of all atoms in the system, then the results can be
unpredictable. For example, if the molecule is pushed in one
direction by the solvent, its velocity will increase. But its
coordinates will be recentered, meaning it is pushed back towards the
force. Thus over time, the velocity and temperature of the molecule
could become very large (though it won't appear to be moving due to
the recentering). If you are thermostatting the entire system, then
the solvent would be cooled to compensate. A better solution for this
simulation scenario is to use the "fix spring"_fix_spring.html command
to tether the molecule in place.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix should not be used with an x,y,z setting that causes a large
shift in the system on the 1st timestep, due to the requested COM
being very different from the initial COM. This could cause atoms to
be lost, especially in parallel. Instead, use the
"displace_atoms"_displace_atoms.html command, which can be used to
move atoms a large distance.
[Related commands:]
"fix momentum"_fix_momentum.html, "velocity"_velocity.html
[Default:]
The option defaults are adjust = fix group-ID, and units = lattice.
diff --git a/doc/fix_restrain.html b/doc/fix_restrain.html
new file mode 100644
index 000000000..d42f07cc0
--- /dev/null
+++ b/doc/fix_restrain.html
@@ -0,0 +1,150 @@
+<HTML>
+<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
+</CENTER>
+
+
+
+
+
+
+<HR>
+
+<H3>fix restrain command
+</H3>
+<P><B>Syntax:</B>
+</P>
+<PRE>fix ID group-ID restrain Kstart Kstop keyword value(s)
+</PRE>
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+
+<LI>restrain = style name of this fix command
+
+<LI>Kstart, Kstop = restraint coefficient at start/end of run (energy
+units)
+
+<LI>one keyword with one or more sets of parameter values may be appended to args
+
+<LI>keyword = <I>dihedral</I>
+
+<PRE> <I>dihedral</I> value = atom1 atom2 atom3 atom4 target
+ atom1,atom2,atom3,atom4 = IDs of 4 atoms in restrained dihedral
+ target = target value for specified dihedral angle (degrees)
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix holdem all restrain 2000.0 2000.0 dihedral 1 2 3 4 120.0
+fix texas_holdem all restrain 0.0 2000.0 dihedral 1 2 3 4 120.0 1 2 3 5 -120.0 1 2 3 6 0.0
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Restrain the motion of the specified atoms by making them part of a
+bond or angle or dihedral interaction whose strength can vary over
+time during a simulation. This is functionally equivalent to creating
+a bond or angle or dihedral for the atoms in a data file, as specified
+by the <A HREF = "read_data.html">read_data</A> command, albeit with a time-varying
+pre-factor coefficient. For the purpose of forcefield
+parameter-fitting or mapping a molecular potential energy surface,
+this fix reduces the hassle and risk associated with modifying data
+files. In other words, use this fix to temporarily force a molecule
+to adopt a particular conformation. To form a permanent bond or angle
+or dihedral, modify the data file.
+</P>
+<P>The first example above applies a restraint to hold the dihedral angle
+formed by atoms 1, 2, 3, and 4 near 120 degrees using a constant
+restraint coefficient. The second example applies similar restraints
+to multiple dihedral angles using a restraint coefficient that
+increases from 0.0 to 2000.0 over the course of the run.
+</P>
+<P>IMPORTANT NOTE: Adding a force to atoms implies a change in their
+potential energy as they move due to the applied force field. For
+dynamics via the <A HREF = "run.html">run</A> command, this energy can be added to
+the system's potential energy for thermodynamic output (see below).
+For energy minimization via the <A HREF = "minimize.html">minimize</A> command, this
+energy must be added to the system's potential energy to formulate a
+self-consistent minimization problem (see below).
+</P>
+<P>In order for a restraint to be effective, the restraint force must
+typically be significantly larger than the forces associated with
+conventional forcefield terms. If the restraint is applied during a
+dynamics run (as opposed to during an energy minimization), a large
+restraint coefficient can significantly reduce the stable timestep
+size, especially if the atoms are initially far from the preferred
+conformation. You may need to experiment to determine what value of K
+works best for a given application.
+</P>
+<P>For the case of finding a minimum energy structure for a single
+molecule with particular restratins (e.g. for fitting forcefield
+parameters or constructing a potential energy surface), commands such
+as the following might be useful:
+</P>
+<PRE># minimize molecule energy with restraints
+velocity all create 600.0 8675309 mom yes rot yes dist gaussian
+fix NVE all nve
+fix TFIX all langevin 600.0 0.0 100 24601
+fix REST all restrain 0.0 5000.0 dihedral 2 1 3 8 $<I>angle1</I> 3 1 2 9 $<I>angle2</I>
+fix_modify REST energy yes
+run 10000
+fix TFIX all langevin 0.0 0.0 100 24601
+fix REST all restrain 5000.0 5000.0 dihedral 2 1 3 8 $<I>angle1</I> 3 1 2 9 $<I>angle2</I>
+fix_modify REST energy yes
+run 10000
+# sanity check for convergence
+minimize 1e-6 1e-9 1000 100000
+# report unrestrained energies
+unfix REST
+run 0
+</PRE>
+<HR>
+
+<P>The <I>dihedral</I> keyword applies a dihedral restraint to the specified
+atoms using a simplified form of the function used in <A HREF = "dihedral_charmm.html">dihedral_style
+charmm</A>. Specifically, the potential associated
+with the restraint is
+</P>
+<CENTER><IMG SRC = "Eqs/dihedral_charmm.jpg">
+</CENTER>
+<P>with the following coefficients:
+</P>
+<UL><LI>K (energy) = K (specified above)
+<LI>n = 1
+<LI>d (degrees) = 180.0 + target (specified above)
+</UL>
+<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>.
+</P>
+<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
+fix to add the potential energy associated with this fix to the
+system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
+output</A>.
+</P>
+<P>IMPORTANT NOTE: If you want the fictitious potential energy associated
+with the added forces to be included in the total potential energy of
+the system (the quantity being minimized), you MUST enable the
+<A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option for this fix.
+</P>
+<P>This fix computes a global scalar, which can be accessed by various
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
+potential energy discussed above. The scalar value calculated by this
+fix is "extensive".
+</P>
+<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
+the <A HREF = "run.html">run</A> command.
+</P>
+<P><B>Restrictions:</B>
+</P>
+<P>The group-ID specified by this fix is ignored.
+</P>
+<P>Currently, only dihedral restraints are allowed, but modification of
+the code to allow angle and bond restraints would be straightforward.
+</P>
+<P><B>Related commands:</B> none
+</P>
+<P><B>Default:</B> none
+</P>
+</HTML>
diff --git a/doc/fix_restrain.txt b/doc/fix_restrain.txt
new file mode 100644
index 000000000..f70eded73
--- /dev/null
+++ b/doc/fix_restrain.txt
@@ -0,0 +1,139 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+fix restrain command :h3
+
+[Syntax:]
+
+fix ID group-ID restrain Kstart Kstop keyword value(s) :pre
+
+ID, group-ID are documented in "fix"_fix.html command :ulb,l
+restrain = style name of this fix command :l
+Kstart, Kstop = restraint coefficient at start/end of run (energy
+units) :l
+one keyword with one or more sets of parameter values may be appended to args :l
+keyword = {dihedral} :l
+ {dihedral} value = atom1 atom2 atom3 atom4 target
+ atom1,atom2,atom3,atom4 = IDs of 4 atoms in restrained dihedral
+ target = target value for specified dihedral angle (degrees) :pre
+:ule
+
+[Examples:]
+
+fix holdem all restrain 2000.0 2000.0 dihedral 1 2 3 4 120.0
+fix texas_holdem all restrain 0.0 2000.0 dihedral 1 2 3 4 120.0 1 2 3 5 -120.0 1 2 3 6 0.0 :pre
+
+[Description:]
+
+Restrain the motion of the specified atoms by making them part of a
+bond or angle or dihedral interaction whose strength can vary over
+time during a simulation. This is functionally equivalent to creating
+a bond or angle or dihedral for the atoms in a data file, as specified
+by the "read_data"_read_data.html command, albeit with a time-varying
+pre-factor coefficient. For the purpose of forcefield
+parameter-fitting or mapping a molecular potential energy surface,
+this fix reduces the hassle and risk associated with modifying data
+files. In other words, use this fix to temporarily force a molecule
+to adopt a particular conformation. To form a permanent bond or angle
+or dihedral, modify the data file.
+
+The first example above applies a restraint to hold the dihedral angle
+formed by atoms 1, 2, 3, and 4 near 120 degrees using a constant
+restraint coefficient. The second example applies similar restraints
+to multiple dihedral angles using a restraint coefficient that
+increases from 0.0 to 2000.0 over the course of the run.
+
+IMPORTANT NOTE: Adding a force to atoms implies a change in their
+potential energy as they move due to the applied force field. For
+dynamics via the "run"_run.html command, this energy can be added to
+the system's potential energy for thermodynamic output (see below).
+For energy minimization via the "minimize"_minimize.html command, this
+energy must be added to the system's potential energy to formulate a
+self-consistent minimization problem (see below).
+
+In order for a restraint to be effective, the restraint force must
+typically be significantly larger than the forces associated with
+conventional forcefield terms. If the restraint is applied during a
+dynamics run (as opposed to during an energy minimization), a large
+restraint coefficient can significantly reduce the stable timestep
+size, especially if the atoms are initially far from the preferred
+conformation. You may need to experiment to determine what value of K
+works best for a given application.
+
+For the case of finding a minimum energy structure for a single
+molecule with particular restratins (e.g. for fitting forcefield
+parameters or constructing a potential energy surface), commands such
+as the following might be useful:
+
+# minimize molecule energy with restraints
+velocity all create 600.0 8675309 mom yes rot yes dist gaussian
+fix NVE all nve
+fix TFIX all langevin 600.0 0.0 100 24601
+fix REST all restrain 0.0 5000.0 dihedral 2 1 3 8 ${angle1} 3 1 2 9 ${angle2}
+fix_modify REST energy yes
+run 10000
+fix TFIX all langevin 0.0 0.0 100 24601
+fix REST all restrain 5000.0 5000.0 dihedral 2 1 3 8 ${angle1} 3 1 2 9 ${angle2}
+fix_modify REST energy yes
+run 10000
+# sanity check for convergence
+minimize 1e-6 1e-9 1000 100000
+# report unrestrained energies
+unfix REST
+run 0 :pre
+
+:line
+
+The {dihedral} keyword applies a dihedral restraint to the specified
+atoms using a simplified form of the function used in "dihedral_style
+charmm"_dihedral_charmm.html. Specifically, the potential associated
+with the restraint is
+
+:c,image(Eqs/dihedral_charmm.jpg)
+
+with the following coefficients:
+
+K (energy) = K (specified above)
+n = 1
+d (degrees) = 180.0 + target (specified above) :ul
+
+:line
+
+[Restart, fix_modify, output, run start/stop, minimize info:]
+
+No information about this fix is written to "binary restart
+files"_restart.html.
+
+The "fix_modify"_fix_modify.html {energy} option is supported by this
+fix to add the potential energy associated with this fix to the
+system's potential energy as part of "thermodynamic
+output"_thermo_style.html.
+
+IMPORTANT NOTE: If you want the fictitious potential energy associated
+with the added forces to be included in the total potential energy of
+the system (the quantity being minimized), you MUST enable the
+"fix_modify"_fix_modify.html {energy} option for this fix.
+
+This fix computes a global scalar, which can be accessed by various
+"output commands"_Section_howto.html#howto_15. The scalar is the
+potential energy discussed above. The scalar value calculated by this
+fix is "extensive".
+
+No parameter of this fix can be used with the {start/stop} keywords of
+the "run"_run.html command.
+
+[Restrictions:]
+
+The group-ID specified by this fix is ignored.
+
+Currently, only dihedral restraints are allowed, but modification of
+the code to allow angle and bond restraints would be straightforward.
+
+[Related commands:] none
+
+[Default:] none
diff --git a/doc/fix_rigid.html b/doc/fix_rigid.html
index 9abf8effc..6d9236115 100644
--- a/doc/fix_rigid.html
+++ b/doc/fix_rigid.html
@@ -1,401 +1,402 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix rigid command
</H3>
<H3>fix rigid/nve command
</H3>
<H3>fix rigid/nvt command
</H3>
<P><B>Syntax:</B>
</P>
<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>
<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>tparam</I> or <I>force</I> or <I>torque</I>
<PRE> <I>langevin</I> values = Tstart Tstop Tperiod seed
Tstart,Tstop = desired temperature at start/stop of run (temperature units)
Tdamp = temperature damping parameter (time units)
seed = random number seed to use for white noise (positive integer)
<I>temp</I> values = Tstart Tstop Tdamp
Tstart,Tstop = desired temperature at start/stop of run (temperature units)
Tdamp = temperature damping parameter (time units)
<I>tparam</I> values = Tchain Titer Torder
Tchain = length of Nose/Hoover thermostat chain
Titer = number of thermostat iterations performed
Torder = 3 or 5 = Yoshida-Suzuki integration parameters
<I>force</I> values = M xflag yflag zflag
M = which rigid body from 1-Nbody (see asterisk form below)
xflag,yflag,zflag = off/on if component of center-of-mass force is active
<I>torque</I> values = M xflag yflag zflag
M = which rigid body from 1-Nbody (see asterisk form below)
xflag,yflag,zflag = off/on if component of center-of-mass torque is active
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 clump rigid single
fix 1 clump rigid single force 1 off off on langevin 1.0 1.0 1.0 428984
fix 1 polychains rigid/nvt molecule temp 1.0 1.0 5.0
fix 1 polychains rigid molecule force 1*5 off off off force 6*10 off off on
fix 2 fluid rigid group 3 clump1 clump2 clump3 torque * off off off
</PRE>
<P><B>Description:</B>
</P>
<P>Treat one or more sets of atoms as independent rigid bodies. This
means that each timestep the total force and torque on each rigid body
is computed as the sum of the forces and torques on its constituent
particles and the coordinates, velocities, and orientations of the
atoms in each body are updated so that the body moves and rotates as a
single entity.
</P>
<P>Examples of large rigid bodies are a large colloidal particle, or
portions of a large biomolecule such as a protein.
</P>
<P>Example of small rigid bodies are patchy nanoparticles, such as those
modeled in <A HREF = "#Zhang">this paper</A> by Sharon Glotzer's group, clumps of
granular particles, lipid molecules consiting of one or more point
dipoles connected to other spheroids or ellipsoids, and coarse-grain
models of nano or colloidal particles consisting of a small number of
constituent particles. Note that the <A HREF = "fix_shake.html">fix shake</A>
command can also be used to rigidify small molecules of 2, 3, or 4
atoms, e.g. water molecules. That fix treats the constituent atoms as
point masses.
</P>
<P>These fixes also update the positions and velocities of the atoms in
each rigid body via time integration. The <I>rigid</I> and <I>rigid/nve</I>
styles do this via constant NVE integration. The only difference is
that the <I>rigid</I> style uses an integration technique based on
Richardson iterations. The <I>rigid/nve</I> style uses the methods
described in the paper by <A HREF = "#Miller">Miller</A>, which are thought to
provide better energy conservation than an iterative approach.
</P>
<P>The <I>rigid/nvt</I> style performs constant NVT integration using a
Nose/Hoover thermostat with chains as described originally in
<A HREF = "#Hoover">(Hoover)</A> and <A HREF = "#Martyna">(Martyna)</A>, which thermostats both
the translational and rotational degrees of freedom of the rigid
bodies. The rigid-body algorithm used by <I>rigid/nvt</I> is described in
the paper by <A HREF = "#Kamberaj">Kamberaj</A>.
</P>
<P>IMPORTANT NOTE: You should not update the atoms in rigid bodies via
other time-integration fixes (e.g. nve, nvt, npt), or you will be
integrating their motion more than once each timestep.
</P>
<P>IMPORTANT NOTE: These fixes are overkill if you simply want to hold a
collection of atoms stationary or have them move with a constant
velocity. A simpler way to hold atoms stationary is to not include
those atoms in your time integration fix. E.g. use "fix 1 mobile nve"
instead of "fix 1 all nve", where "mobile" is the group of atoms that
you want to move. You can move atoms with a constant velocity by
assigning them an initial velocity (via the <A HREF = "velocity.html">velocity</A>
command), setting the force on them to 0.0 (via the <A HREF = "fix_setforce.html">fix
setforce</A> command), and integrating them as usual
(e.g. via the <A HREF = "fix_nve.html">fix nve</A> command).
</P>
<HR>
<P>The constituent particles within a rigid body can be point particles
(the default in LAMMPS) or finite-size particles, such as spheres and
ellipsoids. See the <A HREF = "atom_style.html">atom_style sphere and ellipsoid</A>
commands for more details on these kinds of particles. Finite-size
particles contribute differently to the moment of inertia of a rigid
body than do point particles. Finite-size particles can also
experience torque (e.g. due to <A HREF = "pair_gran.html">frictional granular
interactions</A>) and have an orientation. These
contributions are accounted for by these fixes.
</P>
<P>Forces between particles within a body do not contribute to the
external force or torque on the body. Thus for computational
efficiency, you may wish to turn off pairwise and bond interactions
between particles within each rigid body. The <A HREF = "neigh_modify.html">neigh_modify
exclude</A> and <A HREF = "delete_bonds.html">delete_bonds</A>
commands are used to do this. For finite-size particles this also
means the particles can be highly overlapped when creating the rigid
body.
</P>
<HR>
<P>Each body must have two or more atoms. An atom can belong to at most
one rigid body. Which atoms are in which bodies can be defined via
several options.
</P>
<P>For bodystyle <I>single</I> the entire fix group of atoms is treated as one
rigid body.
</P>
<P>For bodystyle <I>molecule</I>, each set of atoms in the fix group with a
different molecule ID is treated as a rigid body.
</P>
<P>For bodystyle <I>group</I>, each of the listed groups is treated as a
separate rigid body. Only atoms that are also in the fix group are
included in each rigid body.
</P>
<P>IMPORTANT NOTE: To compute the initial center-of-mass position and
other properties of each rigid body, the image flags for each atom in
the body are used to "unwrap" the atom coordinates. Thus you must
insure that these image flags are consistent so that the unwrapping
creates a valid rigid body (one where the atoms are close together),
particularly if the atoms in a single rigid body straddle a periodic
boundary. This means the input data file or restart file must define
the image flags for each atom consistently or that you have used the
<A HREF = "set.html">set</A> command to specify them correctly. If a dimension is
non-periodic then the image flag of each atom must be 0 in that
dimension, else an error is generated.
</P>
<P>By default, each rigid body is acted on by other atoms which induce an
external force and torque on its center of mass, causing it to
translate and rotate. Components of the external center-of-mass force
and torque can be turned off by the <I>force</I> and <I>torque</I> keywords.
This may be useful if you wish a body to rotate but not translate, or
vice versa, or if you wish it to rotate or translate continuously
unaffected by interactions with other particles. Note that if you
expect a rigid body not to move or rotate by using these keywords, you
must insure its initial center-of-mass translational or angular
velocity is 0.0. Otherwise the initial translational or angular
momentum the body has will persist.
</P>
<P>An xflag, yflag, or zflag set to <I>off</I> means turn off the component of
force of torque in that dimension. A setting of <I>on</I> means turn on
the component, which is the default. Which rigid body(s) the settings
apply to is determined by the first argument of the <I>force</I> and
<I>torque</I> keywords. It can be an integer M from 1 to Nbody, where
Nbody is the number of rigid bodies defined. A wild-card asterisk can
be used in place of, or in conjunction with, the M argument to set the
flags for multiple rigid bodies. This takes the form "*" or "*n" or
"n*" or "m*n". If N = the number of rigid bodies, then an asterisk
with no numeric values means all bodies from 1 to N. A leading
asterisk means all bodies from 1 to n (inclusive). A trailing
asterisk means all bodies from n to N (inclusive). A middle asterisk
means all types from m to n (inclusive). Note that you can use the
<I>force</I> or <I>torque</I> keywords as many times as you like. If a
particular rigid body has its component flags set multiple times, the
settings from the final keyword are used.
</P>
<P>For computational efficiency, you may wish to turn off pairwise and
bond interactions within each rigid body, as they no longer contribute
to the motion. The <A HREF = "neigh_modify.html">neigh_modify exclude</A> and
<A HREF = "delete_bonds.html">delete_bonds</A> commands are used to do this.
</P>
<P>For computational efficiency, you should typically define one fix
rigid which includes all the desired rigid bodies. LAMMPS will allow
multiple rigid fixes to be defined, but it is more expensive.
</P>
<HR>
<P>The keyword/value option pairs are used in the following ways.
</P>
<P>The <I>langevin</I> and <I>temp</I> and <I>tparam</I> keywords perform thermostatting
of the rigid bodies, altering both their translational and rotational
degrees of freedom. What is meant by "temperature" of a collection of
rigid bodies and how it can be monitored via the fix output is
discussed below.
</P>
<P>The <I>langevin</I> keyword applies a Langevin thermostat to the constant
NVE time integration performed by either the <I>rigid</I> or <I>rigid/nve</I>
styles. It cannot be used with the <I>rigid/nvt</I> style. The desired
temperature at each timestep is a ramped value during the run from
<I>Tstart</I> to <I>Tstop</I>. The <I>Tdamp</I> parameter is specified in time units
and determines how rapidly the temperature is relaxed. For example, a
value of 100.0 means to relax the temperature in a timespan of
(roughly) 100 time units (tau or fmsec or psec - see the
<A HREF = "units.html">units</A> command). The random # <I>seed</I> must be a positive
integer. The way the Langevin thermostatting operates is explained on
the <A HREF = "fix_langevin.html">fix langevin</A> doc page.
</P>
<P>The <I>temp</I> and <I>tparam</I> keywords apply a Nose/Hoover thermostat to the
NVT time integration performed by the <I>rigid/nvt</I> style. They cannot
be used with the <I>rigid</I> or <I>rigid/nve</I> styles. The desired
temperature at each timestep is a ramped value during the run from
<I>Tstart</I> to <I>Tstop</I>. The <I>Tdamp</I> parameter is specified in time units
and determines how rapidly the temperature is relaxed. For example, a
value of 100.0 means to relax the temperature in a timespan of
(roughly) 100 time units (tau or fmsec or psec - see the
<A HREF = "units.html">units</A> command).
</P>
<P>Nose/Hoover chains are used in conjunction with this thermostat. The
<I>tparam</I> keyword can optionally be used to change the chain settings
used. <I>Tchain</I> is the number of thermostats in the Nose Hoover chain.
This value, along with <I>Tdamp</I> can be varied to dampen undesirable
oscillations in temperature that can occur in a simulation. As a rule
of thumb, increasing the chain length should lead to smaller
oscillations.
</P>
<P>IMPORTANT NOTE: There are alternate ways to thermostat a system of
rigid bodies. You can use <A HREF = "fix_langevin.html">fix langevin</A> to treat
the individual particles in the rigid bodies as effectively immersed
in an implicit solvent, e.g. a Brownian dynamics model. For hybrid
systems with both rigid bodies and solvent particles, you can
thermostat only the solvent particles that surround one or more rigid
bodies by appropriate choice of groups in the compute and fix commands
for temperature and thermostatting. The solvent interactions with the
rigid bodies should then effectively thermostat the rigid body
temperature as well without use of the Langevin or Nose/Hoover options
associated with the fix rigid commands.
</P>
<HR>
<P>The keyword/value option pairs are used in the following ways.
</P>
<P>If you use a <A HREF = "compute.html">temperature compute</A> with a group that
includes particles in rigid bodies, the degrees-of-freedom removed by
each rigid body are accounted for in the temperature (and pressure)
computation, but only if the temperature group includes all the
particles in a particular rigid body.
</P>
<P>A 3d rigid body has 6 degrees of freedom (3 translational, 3
rotational), except for a collection of point particles lying on a
straight line, which has only 5, e.g a dimer. A 2d rigid body has 3
degrees of freedom (2 translational, 1 rotational).
</P>
<P>IMPORTANT NOTE: You may wish to explicitly subtract additional
degrees-of-freedom if you use the <I>force</I> and <I>torque</I> keywords to
eliminate certain motions of one or more rigid bodies. LAMMPS does
not do this automatically.
</P>
<P>The rigid body contribution to the pressure of the system (virial) is
also accounted for by this fix.
</P>
<P>IMPORTANT NOTE: The periodic image flags of atoms in rigid bodies are
altered so that the rigid body can be reconstructed correctly when it
straddles periodic boundaries. The atom image flags are not
incremented/decremented as they would be for non-rigid atoms as the
rigid body crosses periodic boundaries. This means you cannot
interpret them as you normally would. For example, the image flag
values written to a <A HREF = "dump.html">dump file</A> will be different than they
would be if the atoms were not in a rigid body. Likewise the <A HREF = "compute_msd.html">compute
msd</A> will not compute the expected mean-squared
displacement for such atoms if the body moves across periodic
boundaries. It also means that if you have bonds between a pair of
rigid bodies and the bond straddles a periodic boundary, you cannot
use the <A HREF = "replicate.html">replicate</A> command to increase the system
size. Note that this fix does define image flags for each rigid body,
which are incremented when the rigid body crosses a periodic boundary
in the usual way. These image flags have the same meaning as atom
images (see the "dump" command) and can be accessed and output as
described below.
</P>
<HR>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>No information about the <I>rigid</I> and <I>rigid/nve</I> fixes are written to
<A HREF = "restart.html">binary restart files</A>. For style <I>rigid/nvt</I> the state
of the Nose/Hoover thermostat is written to <A HREF = "restart.html">binary restart
files</A>. 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>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by the
rigid/nvt fix to add the energy change induced by the thermostatting
to the system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>.
</P>
<P>The rigid and rigid/nve fixes computes a global scalar which can be
-accessed by various <A HREF = "Section_howto.html#4_15">output commands</A>. The
-scalar value calculated by these fixes is "intensive". The scalar is
-the current temperature of the collection of rigid bodies. This is
+accessed by various <A HREF = "Section_howto.html#howto_15">output commands</A>.
+The scalar value calculated by these fixes is "intensive". The scalar
+is the current temperature of the collection of rigid bodies. This is
averaged over all rigid bodies and their translational and rotational
degrees of freedom. The translational energy of a rigid body is 1/2 m
v^2, where m = total mass of the body and v = the velocity of its
center of mass. The rotational energy of a rigid body is 1/2 I w^2,
where I = the moment of inertia tensor of the body and w = its angular
velocity. Degrees of freedom constrained by the <I>force</I> and <I>torque</I>
keywords are removed from this calculation.
</P>
<P>The rigid/nvt fix computes a global scalar which can be accessed by
-various <A HREF = "Section_howto.html#4_15">output commands</A>. The scalar value
-calculated by the rigid/nvt fix is "extensive". The scalar is the
-cumulative energy change due to the thermostatting the fix performs.
+various <A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar
+value calculated by the rigid/nvt fix is "extensive". The scalar is
+the cumulative energy change due to the thermostatting the fix
+performs.
</P>
<P>All of these fixes compute a global array of values which can be
-accessed by various <A HREF = "Section_howto.html#4_15">output commands</A>. The
-number of rows in the array is equal to the number of rigid bodies.
-The number of columns is 15. Thus for each rigid body, 15 values are
-stored: the xyz coords of the center of mass (COM), the xyz components
-of the COM velocity, the xyz components of the force acting on the
-COM, the xyz components of the torque acting on the COM, and the xyz
-image flags of the COM, which have the same meaning as image flags for
-atom positions (see the "dump" command). The force and torque values
-in the array are not affected by the <I>force</I> and <I>torque</I> keywords in
-the fix rigid command; they reflect values before any changes are made
-by those keywords.
+accessed by various <A HREF = "Section_howto.html#howto_15">output commands</A>.
+The number of rows in the array is equal to the number of rigid
+bodies. The number of columns is 15. Thus for each rigid body, 15
+values are stored: the xyz coords of the center of mass (COM), the xyz
+components of the COM velocity, the xyz components of the force acting
+on the COM, the xyz components of the torque acting on the COM, and
+the xyz image flags of the COM, which have the same meaning as image
+flags for atom positions (see the "dump" command). The force and
+torque values in the array are not affected by the <I>force</I> and
+<I>torque</I> keywords in the fix rigid command; they reflect values before
+any changes are made by those keywords.
</P>
<P>The ordering of the rigid bodies (by row in the array) is as follows.
For the <I>single</I> keyword there is just one rigid body. For the
<I>molecule</I> keyword, the bodies are ordered by ascending molecule ID.
For the <I>group</I> keyword, the list of group IDs determines the ordering
of bodies.
</P>
<P>The array values calculated by these fixes are "intensive", meaning
they are independent of the number of atoms in the simulation.
</P>
<P>No parameter of these fixes can be used with the <I>start/stop</I> keywords
of the <A HREF = "run.html">run</A> command. These fixes are not invoked during
<A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>These fixes performs an MPI_Allreduce each timestep that is
proportional in length to the number of rigid bodies. Hence they will
not scale well in parallel if large numbers of rigid bodies are
simulated.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "delete_bonds.html">delete_bonds</A>, <A HREF = "neigh_modify.html">neigh_modify</A>
exclude
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are force * on on on and torque * on on on,
meaning all rigid bodies are acted on by center-of-mass force and
torque. Also Tchain = 10, Titer = 1, Torder = 3.
</P>
<HR>
<A NAME = "Hoover"></A>
<P><B>(Hoover)</B> Hoover, Phys Rev A, 31, 1695 (1985).
</P>
<A NAME = "Kamberaj"></A>
<P><B>(Kamberaj)</B> Kamberaj, Low, Neal, J Chem Phys, 122, 224114 (2005).
</P>
<A NAME = "Martyna"></A>
<P><B>(Martyna)</B> Martyna, Klein, Tuckerman, J Chem Phys, 97, 2635 (1992);
Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117.
</P>
<A NAME = "Miller"></A>
<P><B>(Miller)</B> Miller, Eleftheriou, Pattnaik, Ndirango, and Newns,
J Chem Phys, 116, 8649 (2002).
</P>
<A NAME = "Zhang"></A>
<P><B>(Zhang)</B> Zhang, Glotzer, Nanoletters, 4, 1407-1413 (2004).
</P>
</HTML>
diff --git a/doc/fix_rigid.txt b/doc/fix_rigid.txt
index 9130c881e..a6e50b2c0 100644
--- a/doc/fix_rigid.txt
+++ b/doc/fix_rigid.txt
@@ -1,383 +1,384 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix rigid command :h3
fix rigid/nve command :h3
fix rigid/nvt command :h3
[Syntax:]
fix ID group-ID style bodystyle args keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
style = {rigid} or {rigid/nve} or {rigid/nvt} :l
bodystyle = {single} or {molecule} or {group} :l
{single} args = none
{molecule} args = none
{group} args = N groupID1 groupID2 ...
N = # of groups
groupID1, groupID2, ... = list of N group IDs :pre
zero or more keyword/value pairs may be appended :l
keyword = {langevin} or {temp} or {tparam} or {force} or {torque} :l
{langevin} values = Tstart Tstop Tperiod seed
Tstart,Tstop = desired temperature at start/stop of run (temperature units)
Tdamp = temperature damping parameter (time units)
seed = random number seed to use for white noise (positive integer)
{temp} values = Tstart Tstop Tdamp
Tstart,Tstop = desired temperature at start/stop of run (temperature units)
Tdamp = temperature damping parameter (time units)
{tparam} values = Tchain Titer Torder
Tchain = length of Nose/Hoover thermostat chain
Titer = number of thermostat iterations performed
Torder = 3 or 5 = Yoshida-Suzuki integration parameters
{force} values = M xflag yflag zflag
M = which rigid body from 1-Nbody (see asterisk form below)
xflag,yflag,zflag = off/on if component of center-of-mass force is active
{torque} values = M xflag yflag zflag
M = which rigid body from 1-Nbody (see asterisk form below)
xflag,yflag,zflag = off/on if component of center-of-mass torque is active :pre
:ule
[Examples:]
fix 1 clump rigid single
fix 1 clump rigid single force 1 off off on langevin 1.0 1.0 1.0 428984
fix 1 polychains rigid/nvt molecule temp 1.0 1.0 5.0
fix 1 polychains rigid molecule force 1*5 off off off force 6*10 off off on
fix 2 fluid rigid group 3 clump1 clump2 clump3 torque * off off off :pre
[Description:]
Treat one or more sets of atoms as independent rigid bodies. This
means that each timestep the total force and torque on each rigid body
is computed as the sum of the forces and torques on its constituent
particles and the coordinates, velocities, and orientations of the
atoms in each body are updated so that the body moves and rotates as a
single entity.
Examples of large rigid bodies are a large colloidal particle, or
portions of a large biomolecule such as a protein.
Example of small rigid bodies are patchy nanoparticles, such as those
modeled in "this paper"_#Zhang by Sharon Glotzer's group, clumps of
granular particles, lipid molecules consiting of one or more point
dipoles connected to other spheroids or ellipsoids, and coarse-grain
models of nano or colloidal particles consisting of a small number of
constituent particles. Note that the "fix shake"_fix_shake.html
command can also be used to rigidify small molecules of 2, 3, or 4
atoms, e.g. water molecules. That fix treats the constituent atoms as
point masses.
These fixes also update the positions and velocities of the atoms in
each rigid body via time integration. The {rigid} and {rigid/nve}
styles do this via constant NVE integration. The only difference is
that the {rigid} style uses an integration technique based on
Richardson iterations. The {rigid/nve} style uses the methods
described in the paper by "Miller"_#Miller, which are thought to
provide better energy conservation than an iterative approach.
The {rigid/nvt} style performs constant NVT integration using a
Nose/Hoover thermostat with chains as described originally in
"(Hoover)"_#Hoover and "(Martyna)"_#Martyna, which thermostats both
the translational and rotational degrees of freedom of the rigid
bodies. The rigid-body algorithm used by {rigid/nvt} is described in
the paper by "Kamberaj"_#Kamberaj.
IMPORTANT NOTE: You should not update the atoms in rigid bodies via
other time-integration fixes (e.g. nve, nvt, npt), or you will be
integrating their motion more than once each timestep.
IMPORTANT NOTE: These fixes are overkill if you simply want to hold a
collection of atoms stationary or have them move with a constant
velocity. A simpler way to hold atoms stationary is to not include
those atoms in your time integration fix. E.g. use "fix 1 mobile nve"
instead of "fix 1 all nve", where "mobile" is the group of atoms that
you want to move. You can move atoms with a constant velocity by
assigning them an initial velocity (via the "velocity"_velocity.html
command), setting the force on them to 0.0 (via the "fix
setforce"_fix_setforce.html command), and integrating them as usual
(e.g. via the "fix nve"_fix_nve.html command).
:line
The constituent particles within a rigid body can be point particles
(the default in LAMMPS) or finite-size particles, such as spheres and
ellipsoids. See the "atom_style sphere and ellipsoid"_atom_style.html
commands for more details on these kinds of particles. Finite-size
particles contribute differently to the moment of inertia of a rigid
body than do point particles. Finite-size particles can also
experience torque (e.g. due to "frictional granular
interactions"_pair_gran.html) and have an orientation. These
contributions are accounted for by these fixes.
Forces between particles within a body do not contribute to the
external force or torque on the body. Thus for computational
efficiency, you may wish to turn off pairwise and bond interactions
between particles within each rigid body. The "neigh_modify
exclude"_neigh_modify.html and "delete_bonds"_delete_bonds.html
commands are used to do this. For finite-size particles this also
means the particles can be highly overlapped when creating the rigid
body.
:line
Each body must have two or more atoms. An atom can belong to at most
one rigid body. Which atoms are in which bodies can be defined via
several options.
For bodystyle {single} the entire fix group of atoms is treated as one
rigid body.
For bodystyle {molecule}, each set of atoms in the fix group with a
different molecule ID is treated as a rigid body.
For bodystyle {group}, each of the listed groups is treated as a
separate rigid body. Only atoms that are also in the fix group are
included in each rigid body.
IMPORTANT NOTE: To compute the initial center-of-mass position and
other properties of each rigid body, the image flags for each atom in
the body are used to "unwrap" the atom coordinates. Thus you must
insure that these image flags are consistent so that the unwrapping
creates a valid rigid body (one where the atoms are close together),
particularly if the atoms in a single rigid body straddle a periodic
boundary. This means the input data file or restart file must define
the image flags for each atom consistently or that you have used the
"set"_set.html command to specify them correctly. If a dimension is
non-periodic then the image flag of each atom must be 0 in that
dimension, else an error is generated.
By default, each rigid body is acted on by other atoms which induce an
external force and torque on its center of mass, causing it to
translate and rotate. Components of the external center-of-mass force
and torque can be turned off by the {force} and {torque} keywords.
This may be useful if you wish a body to rotate but not translate, or
vice versa, or if you wish it to rotate or translate continuously
unaffected by interactions with other particles. Note that if you
expect a rigid body not to move or rotate by using these keywords, you
must insure its initial center-of-mass translational or angular
velocity is 0.0. Otherwise the initial translational or angular
momentum the body has will persist.
An xflag, yflag, or zflag set to {off} means turn off the component of
force of torque in that dimension. A setting of {on} means turn on
the component, which is the default. Which rigid body(s) the settings
apply to is determined by the first argument of the {force} and
{torque} keywords. It can be an integer M from 1 to Nbody, where
Nbody is the number of rigid bodies defined. A wild-card asterisk can
be used in place of, or in conjunction with, the M argument to set the
flags for multiple rigid bodies. This takes the form "*" or "*n" or
"n*" or "m*n". If N = the number of rigid bodies, then an asterisk
with no numeric values means all bodies from 1 to N. A leading
asterisk means all bodies from 1 to n (inclusive). A trailing
asterisk means all bodies from n to N (inclusive). A middle asterisk
means all types from m to n (inclusive). Note that you can use the
{force} or {torque} keywords as many times as you like. If a
particular rigid body has its component flags set multiple times, the
settings from the final keyword are used.
For computational efficiency, you may wish to turn off pairwise and
bond interactions within each rigid body, as they no longer contribute
to the motion. The "neigh_modify exclude"_neigh_modify.html and
"delete_bonds"_delete_bonds.html commands are used to do this.
For computational efficiency, you should typically define one fix
rigid which includes all the desired rigid bodies. LAMMPS will allow
multiple rigid fixes to be defined, but it is more expensive.
:line
The keyword/value option pairs are used in the following ways.
The {langevin} and {temp} and {tparam} keywords perform thermostatting
of the rigid bodies, altering both their translational and rotational
degrees of freedom. What is meant by "temperature" of a collection of
rigid bodies and how it can be monitored via the fix output is
discussed below.
The {langevin} keyword applies a Langevin thermostat to the constant
NVE time integration performed by either the {rigid} or {rigid/nve}
styles. It cannot be used with the {rigid/nvt} style. The desired
temperature at each timestep is a ramped value during the run from
{Tstart} to {Tstop}. The {Tdamp} parameter is specified in time units
and determines how rapidly the temperature is relaxed. For example, a
value of 100.0 means to relax the temperature in a timespan of
(roughly) 100 time units (tau or fmsec or psec - see the
"units"_units.html command). The random # {seed} must be a positive
integer. The way the Langevin thermostatting operates is explained on
the "fix langevin"_fix_langevin.html doc page.
The {temp} and {tparam} keywords apply a Nose/Hoover thermostat to the
NVT time integration performed by the {rigid/nvt} style. They cannot
be used with the {rigid} or {rigid/nve} styles. The desired
temperature at each timestep is a ramped value during the run from
{Tstart} to {Tstop}. The {Tdamp} parameter is specified in time units
and determines how rapidly the temperature is relaxed. For example, a
value of 100.0 means to relax the temperature in a timespan of
(roughly) 100 time units (tau or fmsec or psec - see the
"units"_units.html command).
Nose/Hoover chains are used in conjunction with this thermostat. The
{tparam} keyword can optionally be used to change the chain settings
used. {Tchain} is the number of thermostats in the Nose Hoover chain.
This value, along with {Tdamp} can be varied to dampen undesirable
oscillations in temperature that can occur in a simulation. As a rule
of thumb, increasing the chain length should lead to smaller
oscillations.
IMPORTANT NOTE: There are alternate ways to thermostat a system of
rigid bodies. You can use "fix langevin"_fix_langevin.html to treat
the individual particles in the rigid bodies as effectively immersed
in an implicit solvent, e.g. a Brownian dynamics model. For hybrid
systems with both rigid bodies and solvent particles, you can
thermostat only the solvent particles that surround one or more rigid
bodies by appropriate choice of groups in the compute and fix commands
for temperature and thermostatting. The solvent interactions with the
rigid bodies should then effectively thermostat the rigid body
temperature as well without use of the Langevin or Nose/Hoover options
associated with the fix rigid commands.
:line
The keyword/value option pairs are used in the following ways.
If you use a "temperature compute"_compute.html with a group that
includes particles in rigid bodies, the degrees-of-freedom removed by
each rigid body are accounted for in the temperature (and pressure)
computation, but only if the temperature group includes all the
particles in a particular rigid body.
A 3d rigid body has 6 degrees of freedom (3 translational, 3
rotational), except for a collection of point particles lying on a
straight line, which has only 5, e.g a dimer. A 2d rigid body has 3
degrees of freedom (2 translational, 1 rotational).
IMPORTANT NOTE: You may wish to explicitly subtract additional
degrees-of-freedom if you use the {force} and {torque} keywords to
eliminate certain motions of one or more rigid bodies. LAMMPS does
not do this automatically.
The rigid body contribution to the pressure of the system (virial) is
also accounted for by this fix.
IMPORTANT NOTE: The periodic image flags of atoms in rigid bodies are
altered so that the rigid body can be reconstructed correctly when it
straddles periodic boundaries. The atom image flags are not
incremented/decremented as they would be for non-rigid atoms as the
rigid body crosses periodic boundaries. This means you cannot
interpret them as you normally would. For example, the image flag
values written to a "dump file"_dump.html will be different than they
would be if the atoms were not in a rigid body. Likewise the "compute
msd"_compute_msd.html will not compute the expected mean-squared
displacement for such atoms if the body moves across periodic
boundaries. It also means that if you have bonds between a pair of
rigid bodies and the bond straddles a periodic boundary, you cannot
use the "replicate"_replicate.html command to increase the system
size. Note that this fix does define image flags for each rigid body,
which are incremented when the rigid body crosses a periodic boundary
in the usual way. These image flags have the same meaning as atom
images (see the "dump" command) and can be accessed and output as
described below.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about the {rigid} and {rigid/nve} fixes are written to
"binary restart files"_restart.html. For style {rigid/nvt} the state
of the Nose/Hoover thermostat is written to "binary restart
files"_restart.html. See the "read_restart"_read_restart.html 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.
The "fix_modify"_fix_modify.html {energy} option is supported by the
rigid/nvt fix to add the energy change induced by the thermostatting
to the system's potential energy as part of "thermodynamic
output"_thermo_style.html.
The rigid and rigid/nve fixes computes a global scalar which can be
-accessed by various "output commands"_Section_howto.html#4_15. The
-scalar value calculated by these fixes is "intensive". The scalar is
-the current temperature of the collection of rigid bodies. This is
+accessed by various "output commands"_Section_howto.html#howto_15.
+The scalar value calculated by these fixes is "intensive". The scalar
+is the current temperature of the collection of rigid bodies. This is
averaged over all rigid bodies and their translational and rotational
degrees of freedom. The translational energy of a rigid body is 1/2 m
v^2, where m = total mass of the body and v = the velocity of its
center of mass. The rotational energy of a rigid body is 1/2 I w^2,
where I = the moment of inertia tensor of the body and w = its angular
velocity. Degrees of freedom constrained by the {force} and {torque}
keywords are removed from this calculation.
The rigid/nvt fix computes a global scalar which can be accessed by
-various "output commands"_Section_howto.html#4_15. The scalar value
-calculated by the rigid/nvt fix is "extensive". The scalar is the
-cumulative energy change due to the thermostatting the fix performs.
+various "output commands"_Section_howto.html#howto_15. The scalar
+value calculated by the rigid/nvt fix is "extensive". The scalar is
+the cumulative energy change due to the thermostatting the fix
+performs.
All of these fixes compute a global array of values which can be
-accessed by various "output commands"_Section_howto.html#4_15. The
-number of rows in the array is equal to the number of rigid bodies.
-The number of columns is 15. Thus for each rigid body, 15 values are
-stored: the xyz coords of the center of mass (COM), the xyz components
-of the COM velocity, the xyz components of the force acting on the
-COM, the xyz components of the torque acting on the COM, and the xyz
-image flags of the COM, which have the same meaning as image flags for
-atom positions (see the "dump" command). The force and torque values
-in the array are not affected by the {force} and {torque} keywords in
-the fix rigid command; they reflect values before any changes are made
-by those keywords.
+accessed by various "output commands"_Section_howto.html#howto_15.
+The number of rows in the array is equal to the number of rigid
+bodies. The number of columns is 15. Thus for each rigid body, 15
+values are stored: the xyz coords of the center of mass (COM), the xyz
+components of the COM velocity, the xyz components of the force acting
+on the COM, the xyz components of the torque acting on the COM, and
+the xyz image flags of the COM, which have the same meaning as image
+flags for atom positions (see the "dump" command). The force and
+torque values in the array are not affected by the {force} and
+{torque} keywords in the fix rigid command; they reflect values before
+any changes are made by those keywords.
The ordering of the rigid bodies (by row in the array) is as follows.
For the {single} keyword there is just one rigid body. For the
{molecule} keyword, the bodies are ordered by ascending molecule ID.
For the {group} keyword, the list of group IDs determines the ordering
of bodies.
The array values calculated by these fixes are "intensive", meaning
they are independent of the number of atoms in the simulation.
No parameter of these fixes can be used with the {start/stop} keywords
of the "run"_run.html command. These fixes are not invoked during
"energy minimization"_minimize.html.
[Restrictions:]
These fixes performs an MPI_Allreduce each timestep that is
proportional in length to the number of rigid bodies. Hence they will
not scale well in parallel if large numbers of rigid bodies are
simulated.
[Related commands:]
"delete_bonds"_delete_bonds.html, "neigh_modify"_neigh_modify.html
exclude
[Default:]
The option defaults are force * on on on and torque * on on on,
meaning all rigid bodies are acted on by center-of-mass force and
torque. Also Tchain = 10, Titer = 1, Torder = 3.
:line
:link(Hoover)
[(Hoover)] Hoover, Phys Rev A, 31, 1695 (1985).
:link(Kamberaj)
[(Kamberaj)] Kamberaj, Low, Neal, J Chem Phys, 122, 224114 (2005).
:link(Martyna)
[(Martyna)] Martyna, Klein, Tuckerman, J Chem Phys, 97, 2635 (1992);
Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117.
:link(Miller)
[(Miller)] Miller, Eleftheriou, Pattnaik, Ndirango, and Newns,
J Chem Phys, 116, 8649 (2002).
:link(Zhang)
[(Zhang)] Zhang, Glotzer, Nanoletters, 4, 1407-1413 (2004).
diff --git a/doc/fix_setforce.html b/doc/fix_setforce.html
index 234db2821..e2194f2a4 100644
--- a/doc/fix_setforce.html
+++ b/doc/fix_setforce.html
@@ -1,129 +1,129 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix setforce command
</H3>
<H3>fix setforce/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID setforce fx fy fz keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>setforce = style name of this fix command
<LI>fx,fy,fz = force component values
<LI>any of fx,fy,fz can be a variable (see below)
<LI>zero or more keyword/value pairs may be appended to args
<LI>keyword = <I>region</I>
<PRE> <I>region</I> value = region-ID
region-ID = ID of region atoms must be in to have added force
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix freeze indenter setforce 0.0 0.0 0.0
fix 2 edge setforce NULL 0.0 0.0
fix 2 edge setforce NULL 0.0 v_oscillate
</PRE>
<P><B>Description:</B>
</P>
<P>Set each component of force on each atom in the group to the specified
values fx,fy,fz. This erases all previously computed forces on the
atom, though additional fixes could add new forces. This command can
be used to freeze certain atoms in the simulation by zeroing their
force, either for running dynamics or performing an energy
minimization. For dynamics, this assumes their initial velocity is
also zero.
</P>
<P>Any of the fx,fy,fz values can be specified as NULL which means do not
alter the force component in that dimension.
</P>
<P>Any of the 3 quantities defining the force components can be specified
as an equal-style or atom-style <A HREF = "variable.html">variable</A>, namely <I>fx</I>,
<I>fy</I>, <I>fz</I>. 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 each timestep, and its value used to determine the
force component.
</P>
<P>Equal-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. Thus it is easy to specify a time-dependent force field.
</P>
<P>Atom-style variables can specify the same formulas as equal-style
variables but can also include per-atom values, such as atom
coordinates. Thus it is easy to specify a spatially-dependent force
field with optional time-dependence as well.
</P>
<P>If the <I>region</I> keyword is used, the atom must also be in the
specified geometric <A HREF = "region.html">region</A> in order to have force added
to it.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global 3-vector of forces, which can be accessed
-by various <A HREF = "Section_howto.html#4_15">output commands</A>. This is the
+by various <A HREF = "Section_howto.html#howto_15">output commands</A>. This is the
total force on the group of atoms before the forces on individual
atoms are changed by the fix. The vector values calculated by this
fix are "extensive".
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command, but you cannot set
forces to any value besides zero when performing a minimization. Use
the <A HREF = "fix_addforce.html">fix addforce</A> command if you want to apply a
non-zero force to atoms during a minimization.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_addforce.html">fix addforce</A>, <A HREF = "fix_aveforce.html">fix aveforce</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_setforce.txt b/doc/fix_setforce.txt
index 9d578060b..ee6f78341 100644
--- a/doc/fix_setforce.txt
+++ b/doc/fix_setforce.txt
@@ -1,116 +1,116 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix setforce command :h3
fix setforce/cuda command :h3
[Syntax:]
fix ID group-ID setforce fx fy fz keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
setforce = style name of this fix command :l
fx,fy,fz = force component values :l
any of fx,fy,fz can be a variable (see below) :l
zero or more keyword/value pairs may be appended to args :l
keyword = {region} :l
{region} value = region-ID
region-ID = ID of region atoms must be in to have added force :pre
:ule
[Examples:]
fix freeze indenter setforce 0.0 0.0 0.0
fix 2 edge setforce NULL 0.0 0.0
fix 2 edge setforce NULL 0.0 v_oscillate :pre
[Description:]
Set each component of force on each atom in the group to the specified
values fx,fy,fz. This erases all previously computed forces on the
atom, though additional fixes could add new forces. This command can
be used to freeze certain atoms in the simulation by zeroing their
force, either for running dynamics or performing an energy
minimization. For dynamics, this assumes their initial velocity is
also zero.
Any of the fx,fy,fz values can be specified as NULL which means do not
alter the force component in that dimension.
Any of the 3 quantities defining the force components can be specified
as an equal-style or atom-style "variable"_variable.html, namely {fx},
{fy}, {fz}. 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 each timestep, and its value used to determine the
force component.
Equal-style variables can specify formulas with various mathematical
functions, and include "thermo_style"_thermo_style.html command
keywords for the simulation box parameters and timestep and elapsed
time. Thus it is easy to specify a time-dependent force field.
Atom-style variables can specify the same formulas as equal-style
variables but can also include per-atom values, such as atom
coordinates. Thus it is easy to specify a spatially-dependent force
field with optional time-dependence as well.
If the {region} keyword is used, the atom must also be in the
specified geometric "region"_region.html in order to have force added
to it.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global 3-vector of forces, which can be accessed
-by various "output commands"_Section_howto.html#4_15. This is the
+by various "output commands"_Section_howto.html#howto_15. This is the
total force on the group of atoms before the forces on individual
atoms are changed by the fix. The vector values calculated by this
fix are "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command, but you cannot set
forces to any value besides zero when performing a minimization. Use
the "fix addforce"_fix_addforce.html command if you want to apply a
non-zero force to atoms during a minimization.
[Restrictions:] none
[Related commands:]
"fix addforce"_fix_addforce.html, "fix aveforce"_fix_aveforce.html
[Default:] none
diff --git a/doc/fix_shake.html b/doc/fix_shake.html
index aaf07a9f3..80ec33ddf 100644
--- a/doc/fix_shake.html
+++ b/doc/fix_shake.html
@@ -1,139 +1,139 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix shake command
</H3>
<H3>fix shake/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID shake tol iter N keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>shake = style name of this fix command
<LI>tol = accuracy tolerance of SHAKE solution
<LI>iter = max # of iterations in each SHAKE solution
<LI>N = print SHAKE statistics every this many timesteps (0 = never)
<LI>one or more keyword/value pairs are appended
<LI>keyword = <I>b</I> or <I>a</I> or <I>t</I> or <I>m</I>
<PRE> <I>b</I> values = one or more bond types
<I>a</I> values = one or more angle types
<I>t</I> values = one or more atom types
<I>m</I> value = one or more mass values
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 sub shake 0.0001 20 10 b 4 19 a 3 5 2
fix 1 sub shake 0.0001 20 10 t 5 6 m 1.0 a 31
</PRE>
<P><B>Description:</B>
</P>
<P>Apply bond and angle constraints to specified bonds and angles in the
simulation. This typically enables a longer timestep.
</P>
<P>Each timestep the specified bonds and angles are reset to their
equilibrium lengths and angular values via the well-known SHAKE
algorithm. This is done by applying an additional constraint force so
that the new positions preserve the desired atom separations. The
equations for the additional force are solved via an iterative method
that typically converges to an accurate solution in a few iterations.
The desired tolerance (e.g. 1.0e-4 = 1 part in 10000) and maximum # of
iterations are specified as arguments. Setting the N argument will
print statistics to the screen and log file about regarding the
lengths of bonds and angles that are being constrained. Small delta
values mean SHAKE is doing a good job.
</P>
<P>In LAMMPS, only small clusters of atoms can be constrained. This is
so the constraint calculation for a cluster can be performed by a
single processor, to enable good parallel performance. A cluster is
defined as a central atom connected to others in the cluster by
constrained bonds. LAMMPS allows for the following kinds of clusters
to be constrained: one central atom bonded to 1 or 2 or 3 atoms, or
one central atom bonded to 2 others and the angle between the 3 atoms
also constrained. This means water molecules or CH2 or CH3 groups may
be constrained, but not all the C-C backbone bonds of a long polymer
chain.
</P>
<P>The <I>b</I> keyword lists bond types that will be constrained. The <I>t</I>
keyword lists atom types. All bonds connected to an atom of the
specified type will be constrained. The <I>m</I> keyword lists atom
masses. All bonds connected to atoms of the specified masses will be
constrained (within a fudge factor of MASSDELTA specified in
fix_shake.cpp). The <I>a</I> keyword lists angle types. If both bonds in
the angle are constrained then the angle will also be constrained if
its type is in the list.
</P>
<P>For all keywords, a particular bond is only constrained if both atoms
in the bond are in the group specified with the SHAKE fix.
</P>
<P>The degrees-of-freedom removed by SHAKE bonds and angles are accounted
for in temperature and pressure computations. Similarly, the SHAKE
contribution to the pressure of the system (virial) is also accounted
for.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</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>. 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#4_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.
+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>For computational efficiency, there can only be one shake fix defined
in a simulation.
</P>
<P>If you use a tolerance that is too large or a max-iteration count that
is too small, the constraints will not be enforced very strongly,
which can lead to poor energy conservation. You can test for this in
your system by running a constant NVE simulation with a particular set
of SHAKE parameters and monitoring the energy versus time.
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_shake.txt b/doc/fix_shake.txt
index eb7398031..320a02a15 100644
--- a/doc/fix_shake.txt
+++ b/doc/fix_shake.txt
@@ -1,125 +1,125 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix shake command :h3
fix shake/cuda command :h3
[Syntax:]
fix ID group-ID shake tol iter N keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
shake = style name of this fix command :l
tol = accuracy tolerance of SHAKE solution :l
iter = max # of iterations in each SHAKE solution :l
N = print SHAKE statistics every this many timesteps (0 = never) :l
one or more keyword/value pairs are appended :l
keyword = {b} or {a} or {t} or {m} :l
{b} values = one or more bond types
{a} values = one or more angle types
{t} values = one or more atom types
{m} value = one or more mass values :pre
:ule
[Examples:]
fix 1 sub shake 0.0001 20 10 b 4 19 a 3 5 2
fix 1 sub shake 0.0001 20 10 t 5 6 m 1.0 a 31 :pre
[Description:]
Apply bond and angle constraints to specified bonds and angles in the
simulation. This typically enables a longer timestep.
Each timestep the specified bonds and angles are reset to their
equilibrium lengths and angular values via the well-known SHAKE
algorithm. This is done by applying an additional constraint force so
that the new positions preserve the desired atom separations. The
equations for the additional force are solved via an iterative method
that typically converges to an accurate solution in a few iterations.
The desired tolerance (e.g. 1.0e-4 = 1 part in 10000) and maximum # of
iterations are specified as arguments. Setting the N argument will
print statistics to the screen and log file about regarding the
lengths of bonds and angles that are being constrained. Small delta
values mean SHAKE is doing a good job.
In LAMMPS, only small clusters of atoms can be constrained. This is
so the constraint calculation for a cluster can be performed by a
single processor, to enable good parallel performance. A cluster is
defined as a central atom connected to others in the cluster by
constrained bonds. LAMMPS allows for the following kinds of clusters
to be constrained: one central atom bonded to 1 or 2 or 3 atoms, or
one central atom bonded to 2 others and the angle between the 3 atoms
also constrained. This means water molecules or CH2 or CH3 groups may
be constrained, but not all the C-C backbone bonds of a long polymer
chain.
The {b} keyword lists bond types that will be constrained. The {t}
keyword lists atom types. All bonds connected to an atom of the
specified type will be constrained. The {m} keyword lists atom
masses. All bonds connected to atoms of the specified masses will be
constrained (within a fudge factor of MASSDELTA specified in
fix_shake.cpp). The {a} keyword lists angle types. If both bonds in
the angle are constrained then the angle will also be constrained if
its type is in the list.
For all keywords, a particular bond is only constrained if both atoms
in the bond are in the group specified with the SHAKE fix.
The degrees-of-freedom removed by SHAKE bonds and angles are accounted
for in temperature and pressure computations. Similarly, the SHAKE
contribution to the pressure of the system (virial) is also accounted
for.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
For computational efficiency, there can only be one shake fix defined
in a simulation.
If you use a tolerance that is too large or a max-iteration count that
is too small, the constraints will not be enforced very strongly,
which can lead to poor energy conservation. You can test for this in
your system by running a constant NVE simulation with a particular set
of SHAKE parameters and monitoring the energy versus time.
[Related commands:] none
[Default:] none
diff --git a/doc/fix_smd.html b/doc/fix_smd.html
index d6ed169f7..cf56e43fe 100644
--- a/doc/fix_smd.html
+++ b/doc/fix_smd.html
@@ -1,162 +1,162 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix smd command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID smd type values keyword values
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>smd = style name of this fix command
<LI>mode = <I>cvel</I> or <I>cfor</I> to select constant velocity or constant force SMD
<PRE> <I>cvel</I> values = K vel
K = spring constant (force/distance units)
vel = velocity of pulling (distance/time units)
<I>cfor</I> values = force
force = pulling force (force units)
</PRE>
<LI>keyword = <I>tether</I> or <I>couple</I>
<PRE> <I>tether</I> values = x y z R0
x,y,z = point to which spring is tethered
R0 = distance of end of spring from tether point (distance units)
<I>couple</I> values = group-ID2 x y z R0
group-ID2 = 2nd group to couple to fix group with a spring
x,y,z = direction of spring, automatically computed with 'auto'
R0 = distance of end of spring (distance units)
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix pull cterm smd cvel 20.0 -0.00005 tether NULL NULL 100.0 0.0
fix pull cterm smd cvel 20.0 -0.0001 tether 25.0 25 25.0 0.0
fix stretch cterm smd cvel 20.0 0.0001 couple nterm auto auto auto 0.0
fix pull cterm smd cfor 5.0 tether 25.0 25.0 25.0 0.0
</PRE>
<P><B>Description:</B>
</P>
<P>This fix implements several options of steered MD (SMD) as reviewed in
<A HREF = "#Izrailev">(Izrailev)</A>, which allows to induce conformational changes
in systems and to compute the potential of mean force (PMF) along the
assumed reaction coordinate <A HREF = "#Park">(Park)</A> based on Jarzynski's
equality <A HREF = "#Jarzynski">(Jarzynski)</A>. This fix borrows a lot from <A HREF = "fix_spring.html">fix
spring</A> and <A HREF = "fix_setforce.html">fix setforce</A>.
</P>
<P>You can apply a moving spring force to a group of atoms (<I>tether</I>
style) or between two groups of atoms (<I>couple</I> style). The spring
can then be used in either constant velocity (<I>cvel</I>) mode or in
constant force (<I>cfor</I>) mode to induce transitions in your systems.
When running in <I>tether</I> style, you may need some way to fix some
other part of the system (e.g. via <A HREF = "fix_spring_self.html">fix
spring/self</A>)
</P>
<P>The <I>tether</I> style attaches a spring between a point at a distance of
R0 away from a fixed point <I>x,y,z</I> and the center of mass of the fix
group of atoms. A restoring force of magnitude K (R - R0) Mi / M is
applied to each atom in the group where <I>K</I> is the spring constant, Mi
is the mass of the atom, and M is the total mass of all atoms in the
group. Note that <I>K</I> thus represents the total force on the group of
atoms, not a per-atom force.
</P>
<P>In <I>cvel</I> mode the distance R is incremented or decremented
monotonously according to the pulling (or pushing) velocity.
In <I>cfor</I> mode a constant force is added and the actual distance
in direction of the spring is recorded.
</P>
<P>The <I>couple</I> style links two groups of atoms together. The first
group is the fix group; the second is specified by group-ID2. The
groups are coupled together by a spring that is at equilibrium when
the two groups are displaced by a vector in direction <I>x,y,z</I> with
respect to each other and at a distance R0 from that displacement.
Note that <I>x,y,z</I> only provides a direction and will be internally
normalized. But since it represents the <I>absolute</I> displacement of
group-ID2 relative to the fix group, (1,1,0) is a different spring
than (-1,-1,0). For each vector component, the displacement can be
described with the <I>auto</I> parameter. In this case the direction is
recomputed in every step, which can be useful for steering a local
process where the whole object undergoes some other change. When the
relative positions and distance between the two groups are not in
equilibrium, the same spring force described above is applied to atoms
in each of the two groups.
</P>
<P>For both the <I>tether</I> and <I>couple</I> styles, any of the x,y,z values can
be specified as NULL which means do not include that dimension in the
distance calculation or force application.
</P>
<P>For constant velocity pulling (<I>cvel</I> mode), the running integral
over the pulling force in direction of the spring is recorded and
can then later be used to compute the potential of mean force (PMF)
by averaging over multiple independent trajectories along the same
pulling path.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>The fix stores the direction of the spring, current pulling target
distance and the running PMF to <A HREF = "restart.html">binary restart files</A>.
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.
</P>
<P>This fix computes a vector list of 7 quantities, which can be accessed
-by various <A HREF = "Section_howto.html#4_15">output commands</A>. The quantities
-in the vector are in this order: the x-, y-, and z-component of the
-pulling force, the total force in direction of the pull, the
-equilibrium distance of the spring, the distance between the two
-reference points, and finally the accumulated PMF (the sum of pulling
-forces times displacement).
+by various <A HREF = "Section_howto.html#howto_15">output commands</A>. The
+quantities in the vector are in this order: the x-, y-, and
+z-component of the pulling force, the total force in direction of the
+pull, the equilibrium distance of the spring, the distance between the
+two reference points, and finally the accumulated PMF (the sum of
+pulling forces times displacement).
</P>
<P>The force is the total force on the group of atoms by the spring. In
the case of the <I>couple</I> style, it is the force on the fix group
(group-ID) or the negative of the force on the 2nd group (group-ID2).
The vector values calculated by this fix are "extensive".
</P>
<P>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 "user-misc" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_drag.html">fix drag</A>, <A HREF = "fix_spring.html">fix spring</A>,
<A HREF = "fix_spring_self.html">fix spring/self</A>,
<A HREF = "fix_spring_rg.html">fix spring/rg</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Israilev"></A>
<P><B>(Izrailev)</B> Izrailev, Stepaniants, Isralewitz, Kosztin, Lu, Molnar,
Wriggers, Schulten. Computational Molecular Dynamics: Challenges,
Methods, Ideas, volume 4 of Lecture Notes in Computational Science and
Engineering, pp. 39-65. Springer-Verlag, Berlin, 1998.
</P>
<P><B>(Park)</B>
Park, Schulten, J. Chem. Phys. 120 (13), 5946 (2004)
</P>
<P><B>(Jarzynski)</B>
Jarzynski, Phys. Rev. Lett. 78, 2690 (1997)
</P>
</HTML>
diff --git a/doc/fix_smd.txt b/doc/fix_smd.txt
index a2a1b4d1c..f4ff6bd80 100644
--- a/doc/fix_smd.txt
+++ b/doc/fix_smd.txt
@@ -1,150 +1,150 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix smd command :h3
[Syntax:]
fix ID group-ID smd type values keyword values :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
smd = style name of this fix command :l
mode = {cvel} or {cfor} to select constant velocity or constant force SMD :l
{cvel} values = K vel
K = spring constant (force/distance units)
vel = velocity of pulling (distance/time units)
{cfor} values = force
force = pulling force (force units) :pre
keyword = {tether} or {couple} :l
{tether} values = x y z R0
x,y,z = point to which spring is tethered
R0 = distance of end of spring from tether point (distance units)
{couple} values = group-ID2 x y z R0
group-ID2 = 2nd group to couple to fix group with a spring
x,y,z = direction of spring, automatically computed with 'auto'
R0 = distance of end of spring (distance units) :pre
:ule
[Examples:]
fix pull cterm smd cvel 20.0 -0.00005 tether NULL NULL 100.0 0.0
fix pull cterm smd cvel 20.0 -0.0001 tether 25.0 25 25.0 0.0
fix stretch cterm smd cvel 20.0 0.0001 couple nterm auto auto auto 0.0
fix pull cterm smd cfor 5.0 tether 25.0 25.0 25.0 0.0 :pre
[Description:]
This fix implements several options of steered MD (SMD) as reviewed in
"(Izrailev)"_#Izrailev, which allows to induce conformational changes
in systems and to compute the potential of mean force (PMF) along the
assumed reaction coordinate "(Park)"_#Park based on Jarzynski's
equality "(Jarzynski)"_#Jarzynski. This fix borrows a lot from "fix
spring"_fix_spring.html and "fix setforce"_fix_setforce.html.
You can apply a moving spring force to a group of atoms ({tether}
style) or between two groups of atoms ({couple} style). The spring
can then be used in either constant velocity ({cvel}) mode or in
constant force ({cfor}) mode to induce transitions in your systems.
When running in {tether} style, you may need some way to fix some
other part of the system (e.g. via "fix
spring/self"_fix_spring_self.html)
The {tether} style attaches a spring between a point at a distance of
R0 away from a fixed point {x,y,z} and the center of mass of the fix
group of atoms. A restoring force of magnitude K (R - R0) Mi / M is
applied to each atom in the group where {K} is the spring constant, Mi
is the mass of the atom, and M is the total mass of all atoms in the
group. Note that {K} thus represents the total force on the group of
atoms, not a per-atom force.
In {cvel} mode the distance R is incremented or decremented
monotonously according to the pulling (or pushing) velocity.
In {cfor} mode a constant force is added and the actual distance
in direction of the spring is recorded.
The {couple} style links two groups of atoms together. The first
group is the fix group; the second is specified by group-ID2. The
groups are coupled together by a spring that is at equilibrium when
the two groups are displaced by a vector in direction {x,y,z} with
respect to each other and at a distance R0 from that displacement.
Note that {x,y,z} only provides a direction and will be internally
normalized. But since it represents the {absolute} displacement of
group-ID2 relative to the fix group, (1,1,0) is a different spring
than (-1,-1,0). For each vector component, the displacement can be
described with the {auto} parameter. In this case the direction is
recomputed in every step, which can be useful for steering a local
process where the whole object undergoes some other change. When the
relative positions and distance between the two groups are not in
equilibrium, the same spring force described above is applied to atoms
in each of the two groups.
For both the {tether} and {couple} styles, any of the x,y,z values can
be specified as NULL which means do not include that dimension in the
distance calculation or force application.
For constant velocity pulling ({cvel} mode), the running integral
over the pulling force in direction of the spring is recorded and
can then later be used to compute the potential of mean force (PMF)
by averaging over multiple independent trajectories along the same
pulling path.
[Restart, fix_modify, output, run start/stop, minimize info:]
The fix stores the direction of the spring, current pulling target
distance and the running PMF to "binary restart files"_restart.html.
See the "read_restart"_read_restart.html 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.
None of the "fix_modify"_fix_modify.html options are relevant to this
fix.
This fix computes a vector list of 7 quantities, which can be accessed
-by various "output commands"_Section_howto.html#4_15. The quantities
-in the vector are in this order: the x-, y-, and z-component of the
-pulling force, the total force in direction of the pull, the
-equilibrium distance of the spring, the distance between the two
-reference points, and finally the accumulated PMF (the sum of pulling
-forces times displacement).
+by various "output commands"_Section_howto.html#howto_15. The
+quantities in the vector are in this order: the x-, y-, and
+z-component of the pulling force, the total force in direction of the
+pull, the equilibrium distance of the spring, the distance between the
+two reference points, and finally the accumulated PMF (the sum of
+pulling forces times displacement).
The force is the total force on the group of atoms by the spring. In
the case of the {couple} style, it is the force on the fix group
(group-ID) or the negative of the force on the 2nd group (group-ID2).
The vector values calculated by this fix are "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
This fix is part of the "user-misc" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"fix drag"_fix_drag.html, "fix spring"_fix_spring.html,
"fix spring/self"_fix_spring_self.html,
"fix spring/rg"_fix_spring_rg.html
[Default:] none
:line
:link(Israilev)
[(Izrailev)] Izrailev, Stepaniants, Isralewitz, Kosztin, Lu, Molnar,
Wriggers, Schulten. Computational Molecular Dynamics: Challenges,
Methods, Ideas, volume 4 of Lecture Notes in Computational Science and
Engineering, pp. 39-65. Springer-Verlag, Berlin, 1998.
[(Park)]
Park, Schulten, J. Chem. Phys. 120 (13), 5946 (2004)
[(Jarzynski)]
Jarzynski, Phys. Rev. Lett. 78, 2690 (1997)
diff --git a/doc/fix_spring.html b/doc/fix_spring.html
index d8f83fa3f..542c3f82b 100644
--- a/doc/fix_spring.html
+++ b/doc/fix_spring.html
@@ -1,140 +1,140 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix spring command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID spring keyword values
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>spring = style name of this fix command
<LI>keyword = <I>tether</I> or <I>couple</I>
<PRE> <I>tether</I> values = K x y z R0
K = spring constant (force/distance units)
x,y,z = point to which spring is tethered
R0 = equilibrium distance from tether point (distance units)
<I>couple</I> values = group-ID2 K x y z R0
group-ID2 = 2nd group to couple to fix group with a spring
K = spring constant (force/distance units)
x,y,z = direction of spring
R0 = equilibrium distance of spring (distance units)
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix pull ligand spring tether 50.0 0.0 0.0 0.0 0.0
fix pull ligand spring tether 50.0 0.0 0.0 0.0 5.0
fix pull ligand spring tether 50.0 NULL NULL 2.0 3.0
fix 5 bilayer1 spring couple bilayer2 100.0 NULL NULL 10.0 0.0
fix longitudinal pore spring couple ion 100.0 NULL NULL -20.0 0.0
fix radial pore spring couple ion 100.0 0.0 0.0 NULL 5.0
</PRE>
<P><B>Description:</B>
</P>
<P>Apply a spring force to a group of atoms or between two groups of
atoms. This is useful for applying an umbrella force to a small
molecule or lightly tethering a large group of atoms (e.g. all the
solvent or a large molecule) to the center of the simulation box so
that it doesn't wander away over the course of a long simulation. It
can also be used to hold the centers of mass of two groups of atoms at
a given distance or orientation with respect to each other.
</P>
<P>The <I>tether</I> style attaches a spring between a fixed point <I>x,y,z</I> and
the center of mass of the fix group of atoms. The equilibrium
position of the spring is R0. At each timestep the distance R from
the center of mass of the group of atoms to the tethering point is
computed, taking account of wrap-around in a periodic simulation box.
A restoring force of magnitude K (R - R0) Mi / M is applied to each
atom in the group where <I>K</I> is the spring constant, Mi is the mass of
the atom, and M is the total mass of all atoms in the group. Note
that <I>K</I> thus represents the total force on the group of atoms, not a
per-atom force.
</P>
<P>The <I>couple</I> style links two groups of atoms together. The first
group is the fix group; the second is specified by group-ID2. The
groups are coupled together by a spring that is at equilibrium when
the two groups are displaced by a vector <I>x,y,z</I> with respect to each
other and at a distance R0 from that displacement. Note that <I>x,y,z</I>
is the equilibrium displacement of group-ID2 relative to the fix
group. Thus (1,1,0) is a different spring than (-1,-1,0). When the
relative positions and distance between the two groups are not in
equilibrium, the same spring force described above is applied to atoms
in each of the two groups.
</P>
<P>For both the <I>tether</I> and <I>couple</I> styles, any of the x,y,z values can
be specified as NULL which means do not include that dimension in the
distance calculation or force application.
</P>
<P>The first example above pulls the ligand towards the point (0,0,0).
The second example holds the ligand near the surface of a sphere of
radius 5 around the point (0,0,0). The third example holds the ligand
a distance 3 away from the z=2 plane (on either side).
</P>
<P>The fourth example holds 2 bilayers a distance 10 apart in z. For the
last two examples, imagine a pore (a slab of atoms with a cylindrical
hole cut out) oriented with the pore axis along z, and an ion moving
within the pore. The fifth example holds the ion a distance of -20
below the z = 0 center plane of the pore (umbrella sampling). The
last example holds the ion a distance 5 away from the pore axis
(assuming the center-of-mass of the pore in x,y is the pore axis).
</P>
<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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy stored in the spring to the system's potential
energy as part of <A HREF = "thermo_style.html">thermodynamic output</A>.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the spring
-energy = 0.5 * K * r^2.
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
+spring energy = 0.5 * K * r^2.
</P>
<P>This fix also computes global 4-vector which can be accessed by
-various <A HREF = "Section_howto.html#4_15">output commands</A>. The first 3
+various <A HREF = "Section_howto.html#howto_15">output commands</A>. The first 3
quantities in the vector are xyz components of the total force added
to the group of atoms by the spring. In the case of the <I>couple</I>
style, it is the force on the fix group (group-ID) or the negative of
the force on the 2nd group (group-ID2). The 4th quantity in the
vector is the magnitude of the force added by the spring, as a
positive value if (r-R0) > 0 and a negative value if (r-R0) < 0. This
sign convention can be useful when using the spring force to compute a
potential of mean force (PMF).
</P>
<P>The scalar and vector values calculated by this fix are "extensive".
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command.
</P>
<P>IMPORTANT NOTE: If you want the spring energy to be included in the
total potential energy of the system (the quantity being minimized),
you MUST enable the <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option for
this fix.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_drag.html">fix drag</A>, <A HREF = "fix_spring_self.html">fix spring/self</A>,
<A HREF = "fix_spring_rg.html">fix spring/rg</A>, <A HREF = "fix_smd.html">fix smd</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_spring.txt b/doc/fix_spring.txt
index cf8478b32..d3e8ee3d4 100644
--- a/doc/fix_spring.txt
+++ b/doc/fix_spring.txt
@@ -1,131 +1,131 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix spring command :h3
[Syntax:]
fix ID group-ID spring keyword values :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
spring = style name of this fix command :l
keyword = {tether} or {couple} :l
{tether} values = K x y z R0
K = spring constant (force/distance units)
x,y,z = point to which spring is tethered
R0 = equilibrium distance from tether point (distance units)
{couple} values = group-ID2 K x y z R0
group-ID2 = 2nd group to couple to fix group with a spring
K = spring constant (force/distance units)
x,y,z = direction of spring
R0 = equilibrium distance of spring (distance units) :pre
:ule
[Examples:]
fix pull ligand spring tether 50.0 0.0 0.0 0.0 0.0
fix pull ligand spring tether 50.0 0.0 0.0 0.0 5.0
fix pull ligand spring tether 50.0 NULL NULL 2.0 3.0
fix 5 bilayer1 spring couple bilayer2 100.0 NULL NULL 10.0 0.0
fix longitudinal pore spring couple ion 100.0 NULL NULL -20.0 0.0
fix radial pore spring couple ion 100.0 0.0 0.0 NULL 5.0 :pre
[Description:]
Apply a spring force to a group of atoms or between two groups of
atoms. This is useful for applying an umbrella force to a small
molecule or lightly tethering a large group of atoms (e.g. all the
solvent or a large molecule) to the center of the simulation box so
that it doesn't wander away over the course of a long simulation. It
can also be used to hold the centers of mass of two groups of atoms at
a given distance or orientation with respect to each other.
The {tether} style attaches a spring between a fixed point {x,y,z} and
the center of mass of the fix group of atoms. The equilibrium
position of the spring is R0. At each timestep the distance R from
the center of mass of the group of atoms to the tethering point is
computed, taking account of wrap-around in a periodic simulation box.
A restoring force of magnitude K (R - R0) Mi / M is applied to each
atom in the group where {K} is the spring constant, Mi is the mass of
the atom, and M is the total mass of all atoms in the group. Note
that {K} thus represents the total force on the group of atoms, not a
per-atom force.
The {couple} style links two groups of atoms together. The first
group is the fix group; the second is specified by group-ID2. The
groups are coupled together by a spring that is at equilibrium when
the two groups are displaced by a vector {x,y,z} with respect to each
other and at a distance R0 from that displacement. Note that {x,y,z}
is the equilibrium displacement of group-ID2 relative to the fix
group. Thus (1,1,0) is a different spring than (-1,-1,0). When the
relative positions and distance between the two groups are not in
equilibrium, the same spring force described above is applied to atoms
in each of the two groups.
For both the {tether} and {couple} styles, any of the x,y,z values can
be specified as NULL which means do not include that dimension in the
distance calculation or force application.
The first example above pulls the ligand towards the point (0,0,0).
The second example holds the ligand near the surface of a sphere of
radius 5 around the point (0,0,0). The third example holds the ligand
a distance 3 away from the z=2 plane (on either side).
The fourth example holds 2 bilayers a distance 10 apart in z. For the
last two examples, imagine a pore (a slab of atoms with a cylindrical
hole cut out) oriented with the pore axis along z, and an ion moving
within the pore. The fifth example holds the ion a distance of -20
below the z = 0 center plane of the pore (umbrella sampling). The
last example holds the ion a distance 5 away from the pore axis
(assuming the center-of-mass of the pore in x,y is the pore axis).
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy stored in the spring to the system's potential
energy as part of "thermodynamic output"_thermo_style.html.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the spring
-energy = 0.5 * K * r^2.
+"output commands"_Section_howto.html#howto_15. The scalar is the
+spring energy = 0.5 * K * r^2.
This fix also computes global 4-vector which can be accessed by
-various "output commands"_Section_howto.html#4_15. The first 3
+various "output commands"_Section_howto.html#howto_15. The first 3
quantities in the vector are xyz components of the total force added
to the group of atoms by the spring. In the case of the {couple}
style, it is the force on the fix group (group-ID) or the negative of
the force on the 2nd group (group-ID2). The 4th quantity in the
vector is the magnitude of the force added by the spring, as a
positive value if (r-R0) > 0 and a negative value if (r-R0) < 0. This
sign convention can be useful when using the spring force to compute a
potential of mean force (PMF).
The scalar and vector values calculated by this fix are "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command.
IMPORTANT NOTE: If you want the spring energy to be included in the
total potential energy of the system (the quantity being minimized),
you MUST enable the "fix_modify"_fix_modify.html {energy} option for
this fix.
[Restrictions:] none
[Related commands:]
"fix drag"_fix_drag.html, "fix spring/self"_fix_spring_self.html,
"fix spring/rg"_fix_spring_rg.html, "fix smd"_fix_smd.html
[Default:] none
diff --git a/doc/fix_spring_rg.html b/doc/fix_spring_rg.html
index e2ceba3de..535e088be 100644
--- a/doc/fix_spring_rg.html
+++ b/doc/fix_spring_rg.html
@@ -1,72 +1,72 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix spring/rg command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID spring/rg K RG0
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>spring/rg = style name of this fix command
<LI>K = harmonic force constant (force/distance units)
<LI>RG0 = target radius of gyration to constrain to (distance units)
</UL>
<PRE> if RG0 = NULL, use the current RG as the target value
</PRE>
<P><B>Examples:</B>
</P>
<PRE>fix 1 protein spring/rg 5.0 10.0
fix 2 micelle spring/rg 5.0 NULL
</PRE>
<P><B>Description:</B>
</P>
<P>Apply a harmonic restraining force to atoms in the group to affect
their central moment about the center of mass (radius of gyration).
This fix is useful to encourage a protein or polymer to fold/unfold
and also when sampling along the radius of gyration as a reaction
coordinate (i.e. for protein folding).
</P>
<P>The radius of gyration is defined as RG in the first formula. The
energy of the constraint and associated force on each atom is given by
the second and third formulas, when the group is at a different RG
than the target value RG0.
</P>
<CENTER><IMG SRC = "Eqs/fix_spring_rg.jpg">
</CENTER>
<P>The (xi - center-of-mass) term is computed taking into account
periodic boundary conditions, m_i is the mass of the atom, and M is
the mass of the entire group. Note that K is thus a force constant
for the aggregate force on the group of atoms, not a per-atom force.
</P>
<P>If RG0 is specified as NULL, then the RG of the group is computed at
the time the fix is specified, and that value is used as the target.
</P>
<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>. 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#4_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.
+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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_spring.html">fix spring</A>, <A HREF = "fix_spring_self.html">fix spring/self</A>
<A HREF = "fix_drag.html">fix drag</A>, <A HREF = "fix_smd.html">fix smd</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_spring_rg.txt b/doc/fix_spring_rg.txt
index c87fd486f..768ed0cc4 100644
--- a/doc/fix_spring_rg.txt
+++ b/doc/fix_spring_rg.txt
@@ -1,66 +1,66 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix spring/rg command :h3
[Syntax:]
fix ID group-ID spring/rg K RG0 :pre
ID, group-ID are documented in "fix"_fix.html command
spring/rg = style name of this fix command
K = harmonic force constant (force/distance units)
RG0 = target radius of gyration to constrain to (distance units) :ul
if RG0 = NULL, use the current RG as the target value :pre
[Examples:]
fix 1 protein spring/rg 5.0 10.0
fix 2 micelle spring/rg 5.0 NULL :pre
[Description:]
Apply a harmonic restraining force to atoms in the group to affect
their central moment about the center of mass (radius of gyration).
This fix is useful to encourage a protein or polymer to fold/unfold
and also when sampling along the radius of gyration as a reaction
coordinate (i.e. for protein folding).
The radius of gyration is defined as RG in the first formula. The
energy of the constraint and associated force on each atom is given by
the second and third formulas, when the group is at a different RG
than the target value RG0.
:c,image(Eqs/fix_spring_rg.jpg)
The (xi - center-of-mass) term is computed taking into account
periodic boundary conditions, m_i is the mass of the atom, and M is
the mass of the entire group. Note that K is thus a force constant
for the aggregate force on the group of atoms, not a per-atom force.
If RG0 is specified as NULL, then the RG of the group is computed at
the time the fix is specified, and that value is used as the target.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix spring"_fix_spring.html, "fix spring/self"_fix_spring_self.html
"fix drag"_fix_drag.html, "fix smd"_fix_smd.html
[Default:] none
diff --git a/doc/fix_spring_self.html b/doc/fix_spring_self.html
index 69d612edc..a3c68e9dd 100644
--- a/doc/fix_spring_self.html
+++ b/doc/fix_spring_self.html
@@ -1,74 +1,74 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix spring/self command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID spring/self K
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>spring/self = style name of this fix command
<LI>K = spring constant (force/distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix tether boundary-atoms spring/self 10.0
</PRE>
<P><B>Description:</B>
</P>
<P>Apply a spring force independently to each atom in the group to tether
it to its initial position. The initial position for each atom is its
location at the time the fix command was issued. At each timestep,
the magnitude of the force on each atom is -Kr, where r is the
displacement of the atom from its current position to its initial
position.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the original coordinates of tethered atoms to <A HREF = "restart.html">binary
restart files</A>, so that the spring effect will be the
same in a restarted simulation. 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>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy stored in the per-atom springs to the system's
potential energy as part of <A HREF = "thermo_style.html">thermodynamic output</A>.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is an energy
-which is the sum of the spring energy for each atom, where the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is an
+energy which is the sum of the spring energy for each atom, where the
per-atom energy is 0.5 * K * r^2. The scalar value calculated by this
fix is "extensive".
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command.
</P>
<P>IMPORTANT NOTE: If you want the per-atom spring energy to be included
in the total potential energy of the system (the quantity being
minimized), you MUST enable the <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I>
option for this fix.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_drag.html">fix drag</A>, <A HREF = "fix_spring.html">fix spring</A>,
<A HREF = "fix_smd.html">fix smd</A>, <A HREF = "fix_spring_rg.html">fix spring/rg</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_spring_self.txt b/doc/fix_spring_self.txt
index fe385f5db..6911c3909 100644
--- a/doc/fix_spring_self.txt
+++ b/doc/fix_spring_self.txt
@@ -1,69 +1,69 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix spring/self command :h3
[Syntax:]
fix ID group-ID spring/self K :pre
ID, group-ID are documented in "fix"_fix.html command
spring/self = style name of this fix command
K = spring constant (force/distance units) :ul
[Examples:]
fix tether boundary-atoms spring/self 10.0 :pre
[Description:]
Apply a spring force independently to each atom in the group to tether
it to its initial position. The initial position for each atom is its
location at the time the fix command was issued. At each timestep,
the magnitude of the force on each atom is -Kr, where r is the
displacement of the atom from its current position to its initial
position.
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the original coordinates of tethered atoms to "binary
restart files"_restart.html, so that the spring effect will be the
same in a restarted simulation. See the
"read_restart"_read_restart.html 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.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy stored in the per-atom springs to the system's
potential energy as part of "thermodynamic output"_thermo_style.html.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is an energy
-which is the sum of the spring energy for each atom, where the
+"output commands"_Section_howto.html#howto_15. The scalar is an
+energy which is the sum of the spring energy for each atom, where the
per-atom energy is 0.5 * K * r^2. The scalar value calculated by this
fix is "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command.
IMPORTANT NOTE: If you want the per-atom spring energy to be included
in the total potential energy of the system (the quantity being
minimized), you MUST enable the "fix_modify"_fix_modify.html {energy}
option for this fix.
[Restrictions:] none
[Related commands:]
"fix drag"_fix_drag.html, "fix spring"_fix_spring.html,
"fix smd"_fix_smd.html, "fix spring/rg"_fix_spring_rg.html
[Default:] none
diff --git a/doc/fix_srd.html b/doc/fix_srd.html
index 4ee5d1cfe..a563e6561 100644
--- a/doc/fix_srd.html
+++ b/doc/fix_srd.html
@@ -1,378 +1,378 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix srd command
</H3>
<P><B>Syntax:</B>
</P>
<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>stream</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)
<I>cubic</I> values = style tolerance
style = <I>error</I> or <I>warn</I>
tolerance = fractional difference allowed (0 <= tol <= 1)
<I>shift</I> values = style seed
style = <I>no</I> or <I>yes</I> or <I>possible</I>
seed = random # seed (positive integer)
<I>stream</I> value = <I>yes</I> or <I>no</I> = whether or not streaming velocity is added for shear deformation
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 srd srd 10 big 1.0 0.25 482984
fix 1 srd srd 10 big 0.5 0.25 482984 collision slip search 0.5
</PRE>
<P><B>Description:</B>
</P>
<P>Treat a group of partilces as stochastic rotation dynamics (SRD)
particles that serve as a background solvent when interacting with big
(colloidal) particles in groupbig-ID. The SRD formalism is described
in <A HREF = "#Hecht">(Hecht)</A>. The key idea behind using SRD particles as a
cheap coarse-grained solvent is that SRD particles do not interact
with each other, but only with the solute particles, which in LAMMPS
can be spheroids, ellipsoids, or rigid bodies containing multiples
spherioids and ellipsoids. The collision and rotation properties of
the model imbue the SRD particles with fluid-like properties,
including an effective viscosity. Thus simulations with large solute
particles can be run more quickly, to measure solute propoerties like
diffusivity and viscosity in a background fluid. The usual LAMMPS
fixes for such simulations, such as <A HREF = "fix_deform.html">fix deform</A>, <A HREF = "fix_viscosity.html">fix
viscosity</A>, and <A HREF = "fix_nvt_sllod.html">fix nvt/sllod</A>,
can be used in conjunction with the SRD model.
</P>
<P>For more details on how the SRD model is implemented in LAMMPS, <A HREF = "#Petersen">this
paper</A> describes the implementation and usage of pure SRD
fluids. <A HREF = "#Lechman">This paper</A>, which is nearly complete, describes
the implementation and usage of mixture systems (solute particles in
an SRD fluid). See the examples/srd directory for sample input
scripts using SRD particles in both settings.
</P>
<P>This fix does 2 things:
</P>
<P>(1) It advects the SRD particles, performing collisions between SRD
and big particles or walls every timestep, imparting force and torque
to the big particles. Collisions also change the position and
velocity of SRD particles.
</P>
<P>(2) It resets the velocity distribution of SRD particles via random
rotations every N timesteps.
</P>
<P>SRD particles have a mass, temperature, characteristic timestep
dt_SRD, and mean free path between collisions (lamda). The
fundamental equation relating these 4 quantities is
</P>
<PRE>lamda = dt_SRD * sqrt(Kboltz * Tsrd / mass)
</PRE>
<P>The mass of SRD particles is set by the <A HREF = "mass.html">mass</A> command
elsewhere in the input script. The SRD timestep dt_SRD is N times the
step dt defined by the <A HREF = "timestep.html">timestep</A> command. Big
particles move in the normal way via a time integration <A HREF = "fix.html">fix</A>
with a short timestep dt. SRD particles advect with a large timestep
dt_SRD >= dt.
</P>
<P>If the <I>lamda</I> keyword is not specified, the the SRD temperature
<I>Tsrd</I> is used in the above formula to compute lamda. If the <I>lamda</I>
keyword is specified, then the <I>Tsrd</I> setting is ignored and the above
equation is used to compute the SRD temperature.
</P>
<P>The characteristic length scale for the SRD fluid is set by <I>hgrid</I>
which is used to bin SRD particles for purposes of resetting their
velocities. Normally hgrid is set to be 1/4 of the big particle
diameter or smaller, to adequately resolve fluid properties around the
big particles.
</P>
<P>Lamda cannot be smaller than 0.6 * hgrid, else an error is generated
(unless the <I>shift</I> keyword is used, see below). The velocities of
SRD particles are bounded by Vmax, which is set so that an SRD
particle will not advect further than Dmax = 4*lamda in dt_SRD. This
means that roughly speaking, Dmax should not be larger than a big
particle diameter, else SRDs may pass thru big particles without
colliding. A warning is generated if this is the case.
</P>
<P>Collisions between SRD particles and big particles or walls are
modeled as a lightweight SRD point particle hitting a heavy big
particle of given diameter or a wall at a point on its surface and
bouncing off with a new velocity. The collision changes the momentum
of the SRD particle. It imparts a force and torque to the big
particle. It imparts a force to a wall. Static or moving SRD walls
are setup via the <A HREF = "fix_wall_srd.html">fix wall/srd</A> command. For the
remainder of this doc page, a collision of an SRD particle with a wall
can be viewed as a collision with a big particle of infinite radius
and mass.
</P>
<P>The <I>collision</I> keyword sets the style of collisions. The <I>slip</I>
style means that the tangential component of the SRD particle momentum
is preserved. Thus a force is imparted to a big particle, but no
torque. The normal component of the new SRD velocity is sampled from
a Gaussian distribution at temperature <I>Tsrd</I>.
</P>
<P>For the <I>noslip</I> style, both the normal and tangential components of
the new SRD velocity are sampled from a Gaussian distribution at
temperature <I>Tsrd</I>. Additionally, a new tangential direction for the
SRD velocity is chosen randomly. This collision style imparts torque
to a big particle. Thus a time integrator <A HREF = "fix.html">fix</A> that rotates
the big particles appropriately should be used.
</P>
<HR>
<P>The <I>overlap</I> keyword should be set to <I>yes</I> if two (or more) big
particles can ever overlap. This depends on the pair potential
interaction used for big-big interactions, or could be the case if
multiple big particles are held together as rigid bodies via the <A HREF = "fix_rigid.html">fix
rigid</A> command. If the <I>overlap</I> keyword is <I>no</I> and
big particles do in fact overlap, then SRD/big collisions can generate
an error if an SRD ends up inside two (or more) big particles at once.
How this error is treated is determined by the <I>inside</I> keyword.
Running with <I>overlap</I> set to <I>no</I> allows for faster collision
checking, so it should only be set to <I>yes</I> if needed.
</P>
<P>The <I>inside</I> keyword determines how a collision is treated if the
computation determines that the timestep started with the SRD particle
already inside a big particle. If the setting is <I>error</I> then this
generates an error message and LAMMPS stops. If the setting is <I>warn</I>
then this generates a warning message and the code continues. If the
setting is <I>ignore</I> then no message is generated. One of the output
quantities logged by the fix (see below) tallies the number of such
events, so it can be monitored. Note that once an SRD particle is
inside a big particle, it may remain there for several steps until it
drifts outside the big particle.
</P>
<P>The <I>exact</I> keyword determines how accurately collisions are computed.
A setting of <I>yes</I> computes the time and position of each collision as
SRD and big particles move together. A setting of <I>no</I> estimates the
position of each collision based on the end-of-timestep positions of
the SRD and big particle. If <I>overlap</I> is set to yes, the setting of
the <I>exact</I> keyword is ignored since time-accurate collisions are
needed.
</P>
<P>The <I>radius</I> keyword scales the effective size of big particles. If
big particles will overlap as they undergo dynamics, then this keyword
can be used to scale down their effective collision radius by an
amount <I>rfactor</I>, so that SRD particle will only collide with one big
particle at a time. For example, in a Lennard-Jones system at a
temperature of 1.0 (in reduced LJ units), the minimum separation
bewteen two big particles is as small as about 0.88 sigma. Thus an
<I>rfactor</I> value of 0.85 should prevent dual collisions.
</P>
<P>The <I>bounce</I> keyword can be used to limit the maximum number of
collisions an SRD particle undergoes in a single timestep as it
bounces between nearby big particles. Note that if the limit is
reached, the SRD can be left inside a big particle. A setting of 0 is
the same as no limit.
</P>
<HR>
<P>There are 2 kinds of bins created and maintained when running an SRD
simulation. The first are "SRD bins" which are used to bin SRD
particles and reset their velocities, as discussed above. The second
are "search bins" which are used to identify SRD/big particle
collisions.
</P>
<P>The <I>search</I> keyword can be used to choose a search bin size for
identifying SRD/big particle collisions. The default is to use the
<I>hgrid</I> parameter for SRD bins as the search bin size. Choosing a
smaller or large value may be more efficient, depending on the
problem. But, in a statistical sense, it should not change the
simulation results.
</P>
<P>The <I>cubic</I> keyword can be used to generate an error or warning when
the bin size chosen by LAMMPS creates SRD bins that are non-cubic or
different than the requested value of <I>hgrid</I> by a specified
<I>tolerance</I>. Note that using non-cubic SRD bins can lead to
undetermined behavior when rotating the velocities of SRD particles,
hence LAMMPS tries to protect you from this problem.
</P>
<P>LAMMPS attempts to set the SRD bin size to exactly <I>hgrid</I>. However,
there must be an integer number of bins in each dimension of the
simulation box. Thus the actual bin size will depend on the size and
shape of the overall simulation box. The actual bin size is printed
as part of the SRD output when a simulation begins.
</P>
<P>If the actual bin size in non-cubic by an amount exceeding the
tolerance, an error or warning is printed, depending on the style of
the <I>cubic</I> keyword. Likewise, if the actual bin size differs from
the requested <I>hgrid</I> value by an amount exceeding the tolerance, then
an error or warning is printed. The <I>tolerance</I> is a fractional
difference. E.g. a tolerance setting of 0.01 on the shape means that
if the ratio of any 2 bin dimensions exceeds (1 +/- tolerance) then an
error or warning is generated. Similarly, if the ratio of any bin
dimension with <I>hgrid</I> exceeds (1 +/- tolerance), then an error or
warning is generated.
</P>
<P>IMPORTANT NOTE: The fix srd command can be used with simluations the
size and/or shape of the simulation box changes. This can be due to
non-periodic boundary conditions or the use of fixes such as the <A HREF = "fix_deform.html">fix
deform</A> or <A HREF = "fix_wall_srd.html">fix wall/srd</A> commands
to impose a shear on an SRD fluid or an interaction with an external
wall. If the box size changes then the size of SRD bins must be
recalculated every reneighboring. This is not necessary if only the
box shape changes. This re-binning is always done so as to fit an
integer number of bins in the current box dimension, whether it be a
fixed, shrink-wrapped, or periodic boundary, as set by the
<A HREF = "boundary.html">boundary</A> command. If the box size or shape changes,
then the size of the search bins must be recalculated avery
reneighboring. Note that changing the SRD bin size may alter the
properties of the SRD fluid, such as its viscosity.
</P>
<P>The <I>shift</I> keyword determines whether the coordinates of SRD
particles are randomly shifted when binned for purposes of rotating
their velocities. When no shifting is performed, SRD particles are
binned and the velocity distribution of the set of SRD particles in
each bin is adjusted via a rotation operator. This is a statistically
valid operation if SRD particles move sufficiently far between
successive rotations. This is determined by their mean-free path
lamda. If lamda is less than 0.6 of the SRD bin size, then shifting
is required. A shift means that all of the SRD particles are shifted
by a vector whose coordinates are chosen randomly in the range [-1/2
bin size, 1/2 bin size]. Note that all particles are shifted by the
same vector. The specified random number seed is used to generate
these vectors. This operation sufficiently randomizes which SRD
particles are in the same bin, even if lamda is small.
</P>
<P>If the <I>shift</I> style is set to <I>no</I>, then no shifting is performed,
but bin data will be communicated if bins overlap processor
boundaries. An error will be generated if lamda < 0.6 of the SRD bin
size. If the <I>shift</I> style is set to <I>possible</I>, then shifting is
performed only if lamda < 0.6 of the SRD bin size. A warning is
generated to let you know this is occurring. If the <I>shift</I> style is
set to <I>yes</I> then shifting is performed regardless of the magnitude of
lamda.
</P>
<P>The shift seed is not used if the <I>shift</I> style is set to <I>no</I>, but
must still be specified.
</P>
<P>Note that shifting of SRD coordinates requires extra communication,
hence it should not normally be enabled unless required.
</P>
<P>The <I>stream</I> keyword should be used when SRD particles are used with
the <A HREF = "fix_deform.html">fix deform</A> command to perform a simulation
undergoing shear, e.g. to measure a viscosity. If the <I>stream</I> style
is set to <I>yes</I>, then the mean velocity of each bin of SRD particles
is set to the streaming velocity of the deforming box, each time SRD
velocities are reset, every N timesteps. If the <I>stream</I> style is set
to <I>no</I>, then the mean velocity is unchanged, which may mean that it
takes a long time for the SRD fluid to come to equilibrium with a
velocity profile that matches the simulation box deformation.
</P>
<HR>
<P>IMPORTANT NOTE: This fix is normally used for simulations with a huge
number of SRD particles relative to the number of big particles,
e.g. 100 to 1. In this scenario, computations that involve only big
particles (neighbor list creation, communication, time integration)
can slow down dramatically due to the large number of background SRD
particles.
</P>
<P>Three other input script commands will largely overcome this effect,
speeding up an SRD simulation by a significant amount. These are the
<A HREF = "atom_modify.html">atom_modify first</A>, <A HREF = "neigh_modify.html">neigh_modify
include</A>, and <A HREF = "communicate.html">communicate group</A>
commands. Each takes a group-ID as an argument, which in this case
should be the group-ID of the big solute particles.
</P>
<P>Additionally, when a <A HREF = "pair_style.html">pair_style</A> for big/big particle
interactions is specified, the <A HREF = "pair_coeff.html">pair_coeff</A> command
should be used to turn off big/SRD interactions, e.g. by setting their
epsilon or cutoff length to 0.0.
</P>
<P>The "delete_atoms overlap" command may be useful in setting up an SRD
simulation to insure there are no initial overlaps between big and SRD
particles.
</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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix tabulates several SRD statistics which are stored in a vector
-of length 12, which can be accessed by various <A HREF = "Section_howto.html#4_15">output
-commands</A>. The vector values calculated by
-this fix are "intensive", meaning they do not scale with the size of
-the simulation. Technically, the first 8 do scale with the size of
+of length 12, which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. The vector values calculated
+by this fix are "intensive", meaning they do not scale with the size
+of the simulation. Technically, the first 8 do scale with the size of
the simulation, but treating them as intensive means they are not
scaled when printed as part of thermodyanmic output.
</P>
<P>These are the 12 quantities. All are values for the current timestep,
except the last three which are cummulative quantities since the
beginning of the run.
</P>
<UL><LI>(1) # of SRD/big collision checks performed
<LI>(2) # of SRDs which had a collision
<LI>(3) # of SRD/big colllisions (including multiple bounces)
<LI>(4) # of SRD particles inside a big particle
<LI>(5) # of SRD particles whose velocity was rescaled to be < Vmax
<LI>(6) # of bins for collision searching
<LI>(7) # of bins for SRD velocity rotation
<LI>(8) # of bins in which SRD temperature was computed
<LI>(9) SRD temperature
<LI>(10) # of SRD particles which have undergone max # of bounces
<LI>(11) max # of bounces any SRD particle has had in a single step
<LI>(12) # of reneighborings dues to SRD particles moving too far
</UL>
<P>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 command can only be used if LAMMPS was built with the "srd"
-package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info on packages.
+package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_wall_srd.html">fix wall/srd</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are lamda inferred from Tsrd, collision = noslip,
overlap = no, inside = error, exact = yes, radius = 1.0, bounce = 0,
search = hgrid, cubic = error 0.01, shift = no, stream = yes.
</P>
<HR>
<A NAME = "Hecht"></A>
<P><B>(Hecht)</B> Hecht, Harting, Ihle, Herrmann, Phys Rev E, 72, 011408 (2005).
</P>
<A NAME = "Petersen"></A>
<P><B>(Petersen)</B> Petersen, Lechman, Plimpton, Grest, in' t Veld, Schunk, J
Chem Phys, 132, 174106 (2010).
</P>
<A NAME = "Lechman"></A>
<P><B>(Lechman)</B> Lechman, et al, in preparation (2010).
</P>
</HTML>
diff --git a/doc/fix_srd.txt b/doc/fix_srd.txt
index 759e1e852..12cd5332d 100644
--- a/doc/fix_srd.txt
+++ b/doc/fix_srd.txt
@@ -1,367 +1,367 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix srd command :h3
[Syntax:]
fix ID group-ID srd N groupbig-ID Tsrd hgrid seed keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command
srd = style name of this fix command
N = reset SRD particle velocities every this many timesteps
groupbig-ID = ID of group of large particles that SRDs interact with
Tsrd = temperature of SRD particles (temperature units)
hgrid = grid spacing for SRD grouping (distance units)
seed = random # seed (positive integer) :ul
zero or more keyword/value pairs may be appended :ulb,l
keyword = {lamda} or {collision} or {overlap} or {inside} or {exact} or {radius} or {bounce} or {search} or {cubic} or {shift} or {stream} :l
{lamda} value = mean free path of SRD particles (distance units)
{collision} value = {noslip} or {slip} = collision model
{overlap} value = {yes} or {no} = whether big particles may overlap
{inside} value = {error} or {warn} or {ignore} = how SRD particles which end up inside a big particle are treated
{exact} value = {yes} or {no}
{radius} value = rfactor = scale collision radius by this factor
{bounce} value = Nbounce = max # of collisions an SRD particle can undergo in one timestep
{search} value = sgrid = grid spacing for collision partner searching (distance units)
{cubic} values = style tolerance
style = {error} or {warn}
tolerance = fractional difference allowed (0 <= tol <= 1)
{shift} values = style seed
style = {no} or {yes} or {possible}
seed = random # seed (positive integer)
{stream} value = {yes} or {no} = whether or not streaming velocity is added for shear deformation :pre
:ule
[Examples:]
fix 1 srd srd 10 big 1.0 0.25 482984
fix 1 srd srd 10 big 0.5 0.25 482984 collision slip search 0.5 :pre
[Description:]
Treat a group of partilces as stochastic rotation dynamics (SRD)
particles that serve as a background solvent when interacting with big
(colloidal) particles in groupbig-ID. The SRD formalism is described
in "(Hecht)"_#Hecht. The key idea behind using SRD particles as a
cheap coarse-grained solvent is that SRD particles do not interact
with each other, but only with the solute particles, which in LAMMPS
can be spheroids, ellipsoids, or rigid bodies containing multiples
spherioids and ellipsoids. The collision and rotation properties of
the model imbue the SRD particles with fluid-like properties,
including an effective viscosity. Thus simulations with large solute
particles can be run more quickly, to measure solute propoerties like
diffusivity and viscosity in a background fluid. The usual LAMMPS
fixes for such simulations, such as "fix deform"_fix_deform.html, "fix
viscosity"_fix_viscosity.html, and "fix nvt/sllod"_fix_nvt_sllod.html,
can be used in conjunction with the SRD model.
For more details on how the SRD model is implemented in LAMMPS, "this
paper"_#Petersen describes the implementation and usage of pure SRD
fluids. "This paper"_#Lechman, which is nearly complete, describes
the implementation and usage of mixture systems (solute particles in
an SRD fluid). See the examples/srd directory for sample input
scripts using SRD particles in both settings.
This fix does 2 things:
(1) It advects the SRD particles, performing collisions between SRD
and big particles or walls every timestep, imparting force and torque
to the big particles. Collisions also change the position and
velocity of SRD particles.
(2) It resets the velocity distribution of SRD particles via random
rotations every N timesteps.
SRD particles have a mass, temperature, characteristic timestep
dt_SRD, and mean free path between collisions (lamda). The
fundamental equation relating these 4 quantities is
lamda = dt_SRD * sqrt(Kboltz * Tsrd / mass) :pre
The mass of SRD particles is set by the "mass"_mass.html command
elsewhere in the input script. The SRD timestep dt_SRD is N times the
step dt defined by the "timestep"_timestep.html command. Big
particles move in the normal way via a time integration "fix"_fix.html
with a short timestep dt. SRD particles advect with a large timestep
dt_SRD >= dt.
If the {lamda} keyword is not specified, the the SRD temperature
{Tsrd} is used in the above formula to compute lamda. If the {lamda}
keyword is specified, then the {Tsrd} setting is ignored and the above
equation is used to compute the SRD temperature.
The characteristic length scale for the SRD fluid is set by {hgrid}
which is used to bin SRD particles for purposes of resetting their
velocities. Normally hgrid is set to be 1/4 of the big particle
diameter or smaller, to adequately resolve fluid properties around the
big particles.
Lamda cannot be smaller than 0.6 * hgrid, else an error is generated
(unless the {shift} keyword is used, see below). The velocities of
SRD particles are bounded by Vmax, which is set so that an SRD
particle will not advect further than Dmax = 4*lamda in dt_SRD. This
means that roughly speaking, Dmax should not be larger than a big
particle diameter, else SRDs may pass thru big particles without
colliding. A warning is generated if this is the case.
Collisions between SRD particles and big particles or walls are
modeled as a lightweight SRD point particle hitting a heavy big
particle of given diameter or a wall at a point on its surface and
bouncing off with a new velocity. The collision changes the momentum
of the SRD particle. It imparts a force and torque to the big
particle. It imparts a force to a wall. Static or moving SRD walls
are setup via the "fix wall/srd"_fix_wall_srd.html command. For the
remainder of this doc page, a collision of an SRD particle with a wall
can be viewed as a collision with a big particle of infinite radius
and mass.
The {collision} keyword sets the style of collisions. The {slip}
style means that the tangential component of the SRD particle momentum
is preserved. Thus a force is imparted to a big particle, but no
torque. The normal component of the new SRD velocity is sampled from
a Gaussian distribution at temperature {Tsrd}.
For the {noslip} style, both the normal and tangential components of
the new SRD velocity are sampled from a Gaussian distribution at
temperature {Tsrd}. Additionally, a new tangential direction for the
SRD velocity is chosen randomly. This collision style imparts torque
to a big particle. Thus a time integrator "fix"_fix.html that rotates
the big particles appropriately should be used.
:line
The {overlap} keyword should be set to {yes} if two (or more) big
particles can ever overlap. This depends on the pair potential
interaction used for big-big interactions, or could be the case if
multiple big particles are held together as rigid bodies via the "fix
rigid"_fix_rigid.html command. If the {overlap} keyword is {no} and
big particles do in fact overlap, then SRD/big collisions can generate
an error if an SRD ends up inside two (or more) big particles at once.
How this error is treated is determined by the {inside} keyword.
Running with {overlap} set to {no} allows for faster collision
checking, so it should only be set to {yes} if needed.
The {inside} keyword determines how a collision is treated if the
computation determines that the timestep started with the SRD particle
already inside a big particle. If the setting is {error} then this
generates an error message and LAMMPS stops. If the setting is {warn}
then this generates a warning message and the code continues. If the
setting is {ignore} then no message is generated. One of the output
quantities logged by the fix (see below) tallies the number of such
events, so it can be monitored. Note that once an SRD particle is
inside a big particle, it may remain there for several steps until it
drifts outside the big particle.
The {exact} keyword determines how accurately collisions are computed.
A setting of {yes} computes the time and position of each collision as
SRD and big particles move together. A setting of {no} estimates the
position of each collision based on the end-of-timestep positions of
the SRD and big particle. If {overlap} is set to yes, the setting of
the {exact} keyword is ignored since time-accurate collisions are
needed.
The {radius} keyword scales the effective size of big particles. If
big particles will overlap as they undergo dynamics, then this keyword
can be used to scale down their effective collision radius by an
amount {rfactor}, so that SRD particle will only collide with one big
particle at a time. For example, in a Lennard-Jones system at a
temperature of 1.0 (in reduced LJ units), the minimum separation
bewteen two big particles is as small as about 0.88 sigma. Thus an
{rfactor} value of 0.85 should prevent dual collisions.
The {bounce} keyword can be used to limit the maximum number of
collisions an SRD particle undergoes in a single timestep as it
bounces between nearby big particles. Note that if the limit is
reached, the SRD can be left inside a big particle. A setting of 0 is
the same as no limit.
:line
There are 2 kinds of bins created and maintained when running an SRD
simulation. The first are "SRD bins" which are used to bin SRD
particles and reset their velocities, as discussed above. The second
are "search bins" which are used to identify SRD/big particle
collisions.
The {search} keyword can be used to choose a search bin size for
identifying SRD/big particle collisions. The default is to use the
{hgrid} parameter for SRD bins as the search bin size. Choosing a
smaller or large value may be more efficient, depending on the
problem. But, in a statistical sense, it should not change the
simulation results.
The {cubic} keyword can be used to generate an error or warning when
the bin size chosen by LAMMPS creates SRD bins that are non-cubic or
different than the requested value of {hgrid} by a specified
{tolerance}. Note that using non-cubic SRD bins can lead to
undetermined behavior when rotating the velocities of SRD particles,
hence LAMMPS tries to protect you from this problem.
LAMMPS attempts to set the SRD bin size to exactly {hgrid}. However,
there must be an integer number of bins in each dimension of the
simulation box. Thus the actual bin size will depend on the size and
shape of the overall simulation box. The actual bin size is printed
as part of the SRD output when a simulation begins.
If the actual bin size in non-cubic by an amount exceeding the
tolerance, an error or warning is printed, depending on the style of
the {cubic} keyword. Likewise, if the actual bin size differs from
the requested {hgrid} value by an amount exceeding the tolerance, then
an error or warning is printed. The {tolerance} is a fractional
difference. E.g. a tolerance setting of 0.01 on the shape means that
if the ratio of any 2 bin dimensions exceeds (1 +/- tolerance) then an
error or warning is generated. Similarly, if the ratio of any bin
dimension with {hgrid} exceeds (1 +/- tolerance), then an error or
warning is generated.
IMPORTANT NOTE: The fix srd command can be used with simluations the
size and/or shape of the simulation box changes. This can be due to
non-periodic boundary conditions or the use of fixes such as the "fix
deform"_fix_deform.html or "fix wall/srd"_fix_wall_srd.html commands
to impose a shear on an SRD fluid or an interaction with an external
wall. If the box size changes then the size of SRD bins must be
recalculated every reneighboring. This is not necessary if only the
box shape changes. This re-binning is always done so as to fit an
integer number of bins in the current box dimension, whether it be a
fixed, shrink-wrapped, or periodic boundary, as set by the
"boundary"_boundary.html command. If the box size or shape changes,
then the size of the search bins must be recalculated avery
reneighboring. Note that changing the SRD bin size may alter the
properties of the SRD fluid, such as its viscosity.
The {shift} keyword determines whether the coordinates of SRD
particles are randomly shifted when binned for purposes of rotating
their velocities. When no shifting is performed, SRD particles are
binned and the velocity distribution of the set of SRD particles in
each bin is adjusted via a rotation operator. This is a statistically
valid operation if SRD particles move sufficiently far between
successive rotations. This is determined by their mean-free path
lamda. If lamda is less than 0.6 of the SRD bin size, then shifting
is required. A shift means that all of the SRD particles are shifted
by a vector whose coordinates are chosen randomly in the range \[-1/2
bin size, 1/2 bin size\]. Note that all particles are shifted by the
same vector. The specified random number seed is used to generate
these vectors. This operation sufficiently randomizes which SRD
particles are in the same bin, even if lamda is small.
If the {shift} style is set to {no}, then no shifting is performed,
but bin data will be communicated if bins overlap processor
boundaries. An error will be generated if lamda < 0.6 of the SRD bin
size. If the {shift} style is set to {possible}, then shifting is
performed only if lamda < 0.6 of the SRD bin size. A warning is
generated to let you know this is occurring. If the {shift} style is
set to {yes} then shifting is performed regardless of the magnitude of
lamda.
The shift seed is not used if the {shift} style is set to {no}, but
must still be specified.
Note that shifting of SRD coordinates requires extra communication,
hence it should not normally be enabled unless required.
The {stream} keyword should be used when SRD particles are used with
the "fix deform"_fix_deform.html command to perform a simulation
undergoing shear, e.g. to measure a viscosity. If the {stream} style
is set to {yes}, then the mean velocity of each bin of SRD particles
is set to the streaming velocity of the deforming box, each time SRD
velocities are reset, every N timesteps. If the {stream} style is set
to {no}, then the mean velocity is unchanged, which may mean that it
takes a long time for the SRD fluid to come to equilibrium with a
velocity profile that matches the simulation box deformation.
:line
IMPORTANT NOTE: This fix is normally used for simulations with a huge
number of SRD particles relative to the number of big particles,
e.g. 100 to 1. In this scenario, computations that involve only big
particles (neighbor list creation, communication, time integration)
can slow down dramatically due to the large number of background SRD
particles.
Three other input script commands will largely overcome this effect,
speeding up an SRD simulation by a significant amount. These are the
"atom_modify first"_atom_modify.html, "neigh_modify
include"_neigh_modify.html, and "communicate group"_communicate.html
commands. Each takes a group-ID as an argument, which in this case
should be the group-ID of the big solute particles.
Additionally, when a "pair_style"_pair_style.html for big/big particle
interactions is specified, the "pair_coeff"_pair_coeff.html command
should be used to turn off big/SRD interactions, e.g. by setting their
epsilon or cutoff length to 0.0.
The "delete_atoms overlap" command may be useful in setting up an SRD
simulation to insure there are no initial overlaps between big and SRD
particles.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix tabulates several SRD statistics which are stored in a vector
of length 12, which can be accessed by various "output
-commands"_Section_howto.html#4_15. The vector values calculated by
-this fix are "intensive", meaning they do not scale with the size of
-the simulation. Technically, the first 8 do scale with the size of
+commands"_Section_howto.html#howto_15. The vector values calculated
+by this fix are "intensive", meaning they do not scale with the size
+of the simulation. Technically, the first 8 do scale with the size of
the simulation, but treating them as intensive means they are not
scaled when printed as part of thermodyanmic output.
These are the 12 quantities. All are values for the current timestep,
except the last three which are cummulative quantities since the
beginning of the run.
(1) # of SRD/big collision checks performed
(2) # of SRDs which had a collision
(3) # of SRD/big colllisions (including multiple bounces)
(4) # of SRD particles inside a big particle
(5) # of SRD particles whose velocity was rescaled to be < Vmax
(6) # of bins for collision searching
(7) # of bins for SRD velocity rotation
(8) # of bins in which SRD temperature was computed
(9) SRD temperature
(10) # of SRD particles which have undergone max # of bounces
(11) max # of bounces any SRD particle has had in a single step
(12) # of reneighborings dues to SRD particles moving too far :ul
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
This command can only be used if LAMMPS was built with the "srd"
-package. See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info on packages.
+package. See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
[Related commands:]
"fix wall/srd"_fix_wall_srd.html
[Default:]
The option defaults are lamda inferred from Tsrd, collision = noslip,
overlap = no, inside = error, exact = yes, radius = 1.0, bounce = 0,
search = hgrid, cubic = error 0.01, shift = no, stream = yes.
:line
:link(Hecht)
[(Hecht)] Hecht, Harting, Ihle, Herrmann, Phys Rev E, 72, 011408 (2005).
:link(Petersen)
[(Petersen)] Petersen, Lechman, Plimpton, Grest, in' t Veld, Schunk, J
Chem Phys, 132, 174106 (2010).
:link(Lechman)
[(Lechman)] Lechman, et al, in preparation (2010).
diff --git a/doc/fix_store_force.html b/doc/fix_store_force.html
index 8fcd4f8cd..f73bdf65b 100644
--- a/doc/fix_store_force.html
+++ b/doc/fix_store_force.html
@@ -1,77 +1,77 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix store/force command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID store/force
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>store/force = style name of this fix command
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all store/force
</PRE>
<P><B>Description:</B>
</P>
<P>Store the forces on atoms in the group at the point during each
timestep when the fix is invoked, as described below. This is useful
for storing forces before constraints or other boundary conditions are
computed which modify the forces, so that unmodified forces can be
-<A HREF = "dump.html">written to a dump file</A> or accessed by other <A HREF = "Section_howto.html#4_15">output
+<A HREF = "dump.html">written to a dump file</A> or accessed by other <A HREF = "Section_howto.html#howto_15">output
commands</A> that use per-atom quantities.
</P>
<P>This fix is invoked at the point in the velocity-Verlet timestepping
immediately after <A HREF = "pair_style.html">pair</A>, <A HREF = "bond_style.html">bond</A>,
<A HREF = "angle_style.html">angle</A>, <A HREF = "dihedral_style.html">dihedral</A>,
<A HREF = "improper_style.html">improper</A>, and <A HREF = "kspace_style.html">long-range</A>
forces have been calculated. It is the point in the timestep when
various fixes that compute constraint forces are calculated and
potentially modify the force on each atom. Examples of such fixes are
<A HREF = "fix_shake.html">fix shake</A>, <A HREF = "fix_wall.html">fix wall</A>, and <A HREF = "fix_indent.html">fix
indent</A>.
</P>
<P>IMPORTANT NOTE: The order in which various fixes are applied which
operate at the same point during the timestep, is the same as the
order they are specified in the input script. Thus normally, if you
want to store per-atom forces due to force field interactions, before
constraints are applied, you should list this fix first within that
set of fixes, i.e. before other fixes that apply constraints.
However, if you wish to include certain constraints (e.g. fix shake)
in the stored force, then it could be specified after some fixes and
before others.
</P>
<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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix produces a per-atom array which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The number of columns for
-each atom is 3, and the columns store the x,y,z forces on each atom.
-The per-atom values be accessed on any timestep.
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The number of columns
+for each atom is 3, and the columns store the x,y,z forces on each
+atom. The per-atom values be accessed on any timestep.
</P>
<P>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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_store_state.html">fix store_state</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_store_force.txt b/doc/fix_store_force.txt
index 12a810db6..e77a60cf2 100644
--- a/doc/fix_store_force.txt
+++ b/doc/fix_store_force.txt
@@ -1,72 +1,72 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix store/force command :h3
[Syntax:]
fix ID group-ID store/force :pre
ID, group-ID are documented in "fix"_fix.html command
store/force = style name of this fix command :ul
[Examples:]
fix 1 all store/force :pre
[Description:]
Store the forces on atoms in the group at the point during each
timestep when the fix is invoked, as described below. This is useful
for storing forces before constraints or other boundary conditions are
computed which modify the forces, so that unmodified forces can be
"written to a dump file"_dump.html or accessed by other "output
-commands"_Section_howto.html#4_15 that use per-atom quantities.
+commands"_Section_howto.html#howto_15 that use per-atom quantities.
This fix is invoked at the point in the velocity-Verlet timestepping
immediately after "pair"_pair_style.html, "bond"_bond_style.html,
"angle"_angle_style.html, "dihedral"_dihedral_style.html,
"improper"_improper_style.html, and "long-range"_kspace_style.html
forces have been calculated. It is the point in the timestep when
various fixes that compute constraint forces are calculated and
potentially modify the force on each atom. Examples of such fixes are
"fix shake"_fix_shake.html, "fix wall"_fix_wall.html, and "fix
indent"_fix_indent.html.
IMPORTANT NOTE: The order in which various fixes are applied which
operate at the same point during the timestep, is the same as the
order they are specified in the input script. Thus normally, if you
want to store per-atom forces due to force field interactions, before
constraints are applied, you should list this fix first within that
set of fixes, i.e. before other fixes that apply constraints.
However, if you wish to include certain constraints (e.g. fix shake)
in the stored force, then it could be specified after some fixes and
before others.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix produces a per-atom array which can be accessed by various
-"output commands"_Section_howto.html#4_15. The number of columns for
-each atom is 3, and the columns store the x,y,z forces on each atom.
-The per-atom values be accessed on any timestep.
+"output commands"_Section_howto.html#howto_15. The number of columns
+for each atom is 3, and the columns store the x,y,z forces on each
+atom. The per-atom values be accessed on any timestep.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix store_state"_fix_store_state.html
[Default:] none
diff --git a/doc/fix_store_state.html b/doc/fix_store_state.html
index 210a552d2..067ad38ae 100644
--- a/doc/fix_store_state.html
+++ b/doc/fix_store_state.html
@@ -1,138 +1,139 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix store/state command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID store/state N input1 input2 ... keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>store/state = style name of this fix command
<LI>N = store atom attributes every N steps, N = 0 for initial store only
<LI>input = one or more atom attributes
<PRE> possible attributes = id, mol, type, mass,
x, y, z, xs, ys, zs, xu, yu, zu, ix, iy, iz,
vx, vy, vz, fx, fy, fz,
q, mux, muy, muz,
radius, omegax, omegay, omegaz,
angmomx, angmomy, angmomz, tqx, tqy, tqz
c_ID, c_ID[N], f_ID, f_ID[N], v_name
</PRE>
<PRE> id = atom ID
mol = molecule ID
type = atom type
mass = atom mass
x,y,z = unscaled atom coordinates
xs,ys,zs = scaled atom coordinates
xu,yu,zu = unwrapped atom coordinates
ix,iy,iz = box image that the atom is in
vx,vy,vz = atom velocities
fx,fy,fz = forces on atoms
q = atom charge
mux,muy,muz = orientation of dipolar atom
radius = radius of extended spherical particle
omegax,omegay,omegaz = angular velocity of extended particle
angmomx,angmomy,angmomz = angular momentum of extended particle
tqx,tqy,tqz = torque on extended particles
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/value pairs may be appended
<LI>keyword = <I>com</I>
<PRE> <I>com</I> value = <I>yes</I> or <I>no</I>
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all store/state 0 x y z
fix 1 all store/state 0 xu yu zu com yes
fix 2 all store/state 1000 vx vy vz
</PRE>
<P><B>Description:</B>
</P>
<P>Define a fix that stores attributes for each atom in the group at the
time the fix is defined. If <I>N</I> is 0, then the values are never
updated, so this is a way of archiving an atom attribute at a given
time for future use in a calculation or output. See the discussion of
-<A HREF = "Section_howto.html#4_15">output commands</A> that take fixes as inputs.
-And see for example, the <A HREF = "compute_reduce.html">compute reduce</A>, <A HREF = "fix_ave_atom.html">fix
-ave/atom</A>, <A HREF = "fix_ave_histo.html">fix ave/histo</A>, <A HREF = "fix_ave_spatial.html">fix
-ave/spatial</A>, and <A HREF = "variable.html">atom-style
-variable</A> commands.
+<A HREF = "Section_howto.html#howto_15">output commands</A> that take fixes as
+inputs. And see for example, the <A HREF = "compute_reduce.html">compute
+reduce</A>, <A HREF = "fix_ave_atom.html">fix ave/atom</A>, <A HREF = "fix_ave_histo.html">fix
+ave/histo</A>, <A HREF = "fix_ave_spatial.html">fix ave/spatial</A>,
+and <A HREF = "variable.html">atom-style variable</A> commands.
</P>
<P>If <I>N</I> is not zero, then the attributes will be updated every <I>N</I>
steps.
</P>
<P>IMPORTANT NOTE: Actually, only atom attributes specified by keywords
like <I>xu</I> or <I>vy</I> are initially stored immediately at the point in
your input script when the fix is defined. Attributes specified by a
compute, fix, or variable are not initially stored until the first run
following the fix definition begins. This is because calculating
those attributes may require quantities that are not defined in
between runs.
</P>
<P>The list of possible attributes is the same as that used by the <A HREF = "dump.html">dump
custom</A> command, which describes their meaning.
</P>
<P>If the <I>com</I> keyword is set to <I>yes</I> then the <I>xu</I>, <I>yu</I>, and <I>zu</I>
inputs store the position of each atom relative to the center-of-mass
of the group of atoms, instead of storing the absolute position. This
option is used by the <A HREF = "compute_msd.html">compute msd</A> command.
</P>
<P>The requested values are stored in a per-atom vector or array as
discussed below. Zeroes are stored for atoms not in the specified
group.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the per-atom values it stores to <A HREF = "restart.html">binary restart
files</A>, so that the values can be restored when a
simulation is restarted. 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.
</P>
<P>If a single input is specified, this fix produces a per-atom vector.
If multiple inputs are specified, a per-atom array is produced where
the number of columns for each atom is the number of inputs. These
-can be accessed by various <A HREF = "Section_howto.html#4_15">output commands</A>.
-The per-atom values be accessed on any timestep.
+can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. The per-atom values be
+accessed on any timestep.
</P>
<P>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> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "dump.html">dump custom</A>, <A HREF = "compute_property_atom.html">compute
property/atom</A>, <A HREF = "variable.html">variable</A>
</P>
<P><B>Default:</B>
</P>
<P>The option default is com = no.
</P>
</HTML>
diff --git a/doc/fix_store_state.txt b/doc/fix_store_state.txt
index fd5b4858a..05b6d8878 100644
--- a/doc/fix_store_state.txt
+++ b/doc/fix_store_state.txt
@@ -1,126 +1,127 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix store/state command :h3
[Syntax:]
fix ID group-ID store/state N input1 input2 ... keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
store/state = style name of this fix command :l
N = store atom attributes every N steps, N = 0 for initial store only :l
input = one or more atom attributes :l
possible attributes = id, mol, type, mass,
x, y, z, xs, ys, zs, xu, yu, zu, ix, iy, iz,
vx, vy, vz, fx, fy, fz,
q, mux, muy, muz,
radius, omegax, omegay, omegaz,
angmomx, angmomy, angmomz, tqx, tqy, tqz
c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :pre
id = atom ID
mol = molecule ID
type = atom type
mass = atom mass
x,y,z = unscaled atom coordinates
xs,ys,zs = scaled atom coordinates
xu,yu,zu = unwrapped atom coordinates
ix,iy,iz = box image that the atom is in
vx,vy,vz = atom velocities
fx,fy,fz = forces on atoms
q = atom charge
mux,muy,muz = orientation of dipolar atom
radius = radius of extended spherical particle
omegax,omegay,omegaz = angular velocity of extended particle
angmomx,angmomy,angmomz = angular momentum of extended particle
tqx,tqy,tqz = torque on extended particles
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
zero or more keyword/value pairs may be appended :l
keyword = {com} :l
{com} value = {yes} or {no} :pre
:ule
[Examples:]
fix 1 all store/state 0 x y z
fix 1 all store/state 0 xu yu zu com yes
fix 2 all store/state 1000 vx vy vz :pre
[Description:]
Define a fix that stores attributes for each atom in the group at the
time the fix is defined. If {N} is 0, then the values are never
updated, so this is a way of archiving an atom attribute at a given
time for future use in a calculation or output. See the discussion of
-"output commands"_Section_howto.html#4_15 that take fixes as inputs.
-And see for example, the "compute reduce"_compute_reduce.html, "fix
-ave/atom"_fix_ave_atom.html, "fix ave/histo"_fix_ave_histo.html, "fix
-ave/spatial"_fix_ave_spatial.html, and "atom-style
-variable"_variable.html commands.
+"output commands"_Section_howto.html#howto_15 that take fixes as
+inputs. And see for example, the "compute
+reduce"_compute_reduce.html, "fix ave/atom"_fix_ave_atom.html, "fix
+ave/histo"_fix_ave_histo.html, "fix ave/spatial"_fix_ave_spatial.html,
+and "atom-style variable"_variable.html commands.
If {N} is not zero, then the attributes will be updated every {N}
steps.
IMPORTANT NOTE: Actually, only atom attributes specified by keywords
like {xu} or {vy} are initially stored immediately at the point in
your input script when the fix is defined. Attributes specified by a
compute, fix, or variable are not initially stored until the first run
following the fix definition begins. This is because calculating
those attributes may require quantities that are not defined in
between runs.
The list of possible attributes is the same as that used by the "dump
custom"_dump.html command, which describes their meaning.
If the {com} keyword is set to {yes} then the {xu}, {yu}, and {zu}
inputs store the position of each atom relative to the center-of-mass
of the group of atoms, instead of storing the absolute position. This
option is used by the "compute msd"_compute_msd.html command.
The requested values are stored in a per-atom vector or array as
discussed below. Zeroes are stored for atoms not in the specified
group.
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the per-atom values it stores to "binary restart
files"_restart.html, so that the values can be restored when a
simulation is restarted. See the "read_restart"_read_restart.html
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.
None of the "fix_modify"_fix_modify.html options are relevant to this
fix.
If a single input is specified, this fix produces a per-atom vector.
If multiple inputs are specified, a per-atom array is produced where
the number of columns for each atom is the number of inputs. These
-can be accessed by various "output commands"_Section_howto.html#4_15.
-The per-atom values be accessed on any timestep.
+can be accessed by various "output
+commands"_Section_howto.html#howto_15. The per-atom values be
+accessed on any timestep.
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"dump custom"_dump.html, "compute
property/atom"_compute_property_atom.html, "variable"_variable.html
[Default:]
The option default is com = no.
diff --git a/doc/fix_temp_berendsen.html b/doc/fix_temp_berendsen.html
index 9fc9d5f15..70a8f7023 100644
--- a/doc/fix_temp_berendsen.html
+++ b/doc/fix_temp_berendsen.html
@@ -1,166 +1,166 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix temp/berendsen command
</H3>
<H3>fix temp/berendsen/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID temp/berendsen Tstart Tstop Tdamp
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>temp/berendsen = style name of this fix command
<LI>Tstart,Tstop = desired temperature at start/end of run
<LI>Tdamp = temperature damping parameter (time units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all temp/berendsen 300.0 300.0 100.0
</PRE>
<P><B>Description:</B>
</P>
<P>Reset the temperature of a group of atoms by using a Berendsen
thermostat <A HREF = "#Berendsen">(Berendsen)</A>, which rescales their velocities
every timestep.
</P>
<P>The thermostat is applied to only the translational degrees of freedom
for the particles, which is an important consideration if extended
spherical or aspherical particles which have rotational degrees of
freedom are being thermostatted with this fix. The translational
degrees of freedom can also have a bias velocity removed from them
before thermostatting takes place; see the description below.
</P>
<P>The desired temperature at each timestep is a ramped value during the
run from <I>Tstart</I> to <I>Tstop</I>. The <I>Tdamp</I> parameter is specified in
time units and determines how rapidly the temperature is relaxed. For
example, a value of 100.0 means to relax the temperature in a timespan
of (roughly) 100 time units (tau or fmsec or psec - see the
<A HREF = "units.html">units</A> command).
</P>
<P>IMPORTANT NOTE: Unlike the <A HREF = "fix_nh.html">fix nvt</A> command which
performs Nose/Hoover thermostatting AND time integration, this fix
does NOT perform time integration. It only modifies velocities to
effect thermostatting. Thus you must use a separate time integration
fix, like <A HREF = "fix_nve.html">fix nve</A> to actually update the positions of
atoms using the modified velocities. Likewise, this fix should not
normally be used on atoms that also have their temperature controlled
by another fix - e.g. by <A HREF = "fix_nh.html">fix nvt</A> or <A HREF = "fix_langevin.html">fix
langevin</A> commands.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</P>
<P>This fix computes a temperature each timestep. To do this, the fix
creates its own compute of style "temp", as if this command had been
issued:
</P>
<PRE>compute fix-ID_temp group-ID temp
</PRE>
<P>See the <A HREF = "compute_temp.html">compute temp</A> command for details. Note
that the ID of the new compute is the fix-ID + underscore + "temp",
and the group for the new compute is the same as the fix group.
</P>
<P>Note that this is NOT the compute used by thermodynamic output (see
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>.
This means you can change the attributes of this fix's temperature
(e.g. its degrees-of-freedom) via the
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
during thermodynamic output via the <A HREF = "thermo_style.html">thermo_style
custom</A> command using the appropriate compute-ID.
It also means that changing attributes of <I>thermo_temp</I> will have no
effect on this fix.
</P>
<P>Like other fixes that perform thermostatting, this fix can be used
with <A HREF = "compute.html">compute commands</A> that calculate a temperature
after removing a "bias" from the atom velocities. E.g. removing the
center-of-mass velocity from a group of atoms or only calculating
temperature on the x-component of velocity or only calculating
temperature for atoms in a geometric region. This is not done by
default, but only if the <A HREF = "fix_modify.html">fix_modify</A> command is used
to assign a temperature compute to this fix that includes such a bias
term. See the doc pages for individual <A HREF = "compute.html">compute
commands</A> to determine which ones include a bias. In
this case, the thermostat works in the following manner: the current
temperature is calculated taking the bias into account, bias is
removed from each atom, thermostatting is performed on the remaining
thermal degrees of freedom, and the bias is added back in.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> option is supported by this
fix. You can use it to assign a temperature <A HREF = "compute.html">compute</A>
you have defined to this fix which will be used in its thermostatting
procedure, as described above. For consistency, the group used by
this fix and by the compute should be the same.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy change implied by a velocity rescaling to the
system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
cummulative energy change due to this fix. The scalar value
calculated by this fix is "extensive".
</P>
<P>This fix can ramp its target temperature over multiple runs, using the
<I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this.
</P>
<P>This fix is not invoked during <A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_nve.html">fix nve</A>, <A HREF = "fix_nh.html">fix nvt</A>, <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A>, <A HREF = "fix_langevin.html">fix langevin</A>,
<A HREF = "fix_modify.html">fix_modify</A>, <A HREF = "compute_temp.html">compute temp</A>,
<A HREF = "fix_press_berendsen.html">fix press/berendsen</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Berendsen"></A>
<P><B>(Berendsen)</B> Berendsen, Postma, van Gunsteren, DiNola, Haak, J Chem
Phys, 81, 3684 (1984).
</P>
</HTML>
diff --git a/doc/fix_temp_berendsen.txt b/doc/fix_temp_berendsen.txt
index 51da35ce7..5bcb03481 100644
--- a/doc/fix_temp_berendsen.txt
+++ b/doc/fix_temp_berendsen.txt
@@ -1,160 +1,160 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix temp/berendsen command :h3
fix temp/berendsen/cuda command :h3
[Syntax:]
fix ID group-ID temp/berendsen Tstart Tstop Tdamp :pre
ID, group-ID are documented in "fix"_fix.html command
temp/berendsen = style name of this fix command
Tstart,Tstop = desired temperature at start/end of run
Tdamp = temperature damping parameter (time units) :ul
[Examples:]
fix 1 all temp/berendsen 300.0 300.0 100.0 :pre
[Description:]
Reset the temperature of a group of atoms by using a Berendsen
thermostat "(Berendsen)"_#Berendsen, which rescales their velocities
every timestep.
The thermostat is applied to only the translational degrees of freedom
for the particles, which is an important consideration if extended
spherical or aspherical particles which have rotational degrees of
freedom are being thermostatted with this fix. The translational
degrees of freedom can also have a bias velocity removed from them
before thermostatting takes place; see the description below.
The desired temperature at each timestep is a ramped value during the
run from {Tstart} to {Tstop}. The {Tdamp} parameter is specified in
time units and determines how rapidly the temperature is relaxed. For
example, a value of 100.0 means to relax the temperature in a timespan
of (roughly) 100 time units (tau or fmsec or psec - see the
"units"_units.html command).
IMPORTANT NOTE: Unlike the "fix nvt"_fix_nh.html command which
performs Nose/Hoover thermostatting AND time integration, this fix
does NOT perform time integration. It only modifies velocities to
effect thermostatting. Thus you must use a separate time integration
fix, like "fix nve"_fix_nve.html to actually update the positions of
atoms using the modified velocities. Likewise, this fix should not
normally be used on atoms that also have their temperature controlled
by another fix - e.g. by "fix nvt"_fix_nh.html or "fix
langevin"_fix_langevin.html commands.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
This fix computes a temperature each timestep. To do this, the fix
creates its own compute of style "temp", as if this command had been
issued:
compute fix-ID_temp group-ID temp :pre
See the "compute temp"_compute_temp.html command for details. Note
that the ID of the new compute is the fix-ID + underscore + "temp",
and the group for the new compute is the same as the fix group.
Note that this is NOT the compute used by thermodynamic output (see
the "thermo_style"_thermo_style.html command) with ID = {thermo_temp}.
This means you can change the attributes of this fix's temperature
(e.g. its degrees-of-freedom) via the
"compute_modify"_compute_modify.html command or print this temperature
during thermodynamic output via the "thermo_style
custom"_thermo_style.html command using the appropriate compute-ID.
It also means that changing attributes of {thermo_temp} will have no
effect on this fix.
Like other fixes that perform thermostatting, this fix can be used
with "compute commands"_compute.html that calculate a temperature
after removing a "bias" from the atom velocities. E.g. removing the
center-of-mass velocity from a group of atoms or only calculating
temperature on the x-component of velocity or only calculating
temperature for atoms in a geometric region. This is not done by
default, but only if the "fix_modify"_fix_modify.html command is used
to assign a temperature compute to this fix that includes such a bias
term. See the doc pages for individual "compute
commands"_compute.html to determine which ones include a bias. In
this case, the thermostat works in the following manner: the current
temperature is calculated taking the bias into account, bias is
removed from each atom, thermostatting is performed on the remaining
thermal degrees of freedom, and the bias is added back in.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {temp} option is supported by this
fix. You can use it to assign a temperature "compute"_compute.html
you have defined to this fix which will be used in its thermostatting
procedure, as described above. For consistency, the group used by
this fix and by the compute should be the same.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy change implied by a velocity rescaling to the
system's potential energy as part of "thermodynamic
output"_thermo_style.html.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the
+"output commands"_Section_howto.html#howto_15. The scalar is the
cummulative energy change due to this fix. The scalar value
calculated by this fix is "extensive".
This fix can ramp its target temperature over multiple runs, using the
{start} and {stop} keywords of the "run"_run.html command. See the
"run"_run.html command for details of how to do this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix nve"_fix_nve.html, "fix nvt"_fix_nh.html, "fix
temp/rescale"_fix_temp_rescale.html, "fix langevin"_fix_langevin.html,
"fix_modify"_fix_modify.html, "compute temp"_compute_temp.html,
"fix press/berendsen"_fix_press_berendsen.html
[Default:] none
:line
:link(Berendsen)
[(Berendsen)] Berendsen, Postma, van Gunsteren, DiNola, Haak, J Chem
Phys, 81, 3684 (1984).
diff --git a/doc/fix_temp_rescale.html b/doc/fix_temp_rescale.html
index 8bc0e6c2e..5f1787131 100644
--- a/doc/fix_temp_rescale.html
+++ b/doc/fix_temp_rescale.html
@@ -1,166 +1,166 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix temp/rescale command
</H3>
<H3>fix temp/rescale/cuda command
</H3>
<H3>fix temp/rescale/limit/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID temp/rescale N Tstart Tstop window fraction
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>temp/rescale = style name of this fix command
<LI>N = perform rescaling every N steps
<LI>Tstart,Tstop = desired temperature at start/end of run (temperature units)
<LI>window = only rescale if temperature is outside this window (temperature units)
<LI>fraction = rescale to target temperature by this fraction
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 3 flow temp/rescale 100 1.0 1.1 0.02 0.5
fix 3 boundary temp/rescale 1 1.0 1.5 0.05 1.0
fix 3 boundary temp/rescale 1 1.0 1.5 0.05 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>Reset the temperature of a group of atoms by explicitly rescaling
their velocities.
</P>
<P>The rescaling is applied to only the translational degrees of freedom
for the particles, which is an important consideration if extended
spherical or aspherical particles which have rotational degrees of
freedom are being thermostatted with this fix. The translational
degrees of freedom can also have a bias velocity removed from them
before thermostatting takes place; see the description below.
</P>
<P>Rescaling is performed every N timesteps. The target temperature is a
ramped value between the <I>Tstart</I> and <I>Tstop</I> temperatures at the
beginning and end of the run.
</P>
<P>Rescaling is only performed if the difference between the current and
desired temperatures is greater than the <I>window</I> value. The amount
of rescaling that is applied is a <I>fraction</I> (from 0.0 to 1.0) of the
difference between the actual and desired temperature. E.g. if
<I>fraction</I> = 1.0, the temperature is reset to exactly the desired
value.
</P>
<P>IMPORTANT NOTE: Unlike the <A HREF = "fix_nh.html">fix nvt</A> command which
performs Nose/Hoover thermostatting AND time integration, this fix
does NOT perform time integration. It only modifies velocities to
effect thermostatting. Thus you must use a separate time integration
fix, like <A HREF = "fix_nve.html">fix nve</A> to actually update the positions of
atoms using the modified velocities. Likewise, this fix should not
normally be used on atoms that also have their temperature controlled
by another fix - e.g. by <A HREF = "fix_nh.html">fix nvt</A> or <A HREF = "fix_langevin.html">fix
langevin</A> commands.
</P>
-<P>See <A HREF = "Section_howto.html#4_16">this howto section</A> of the manual for a
-discussion of different ways to compute temperature and perform
+<P>See <A HREF = "Section_howto.html#howto_16">this howto section</A> of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
</P>
<P>This fix computes a temperature each timestep. To do this, the fix
creates its own compute of style "temp", as if one of this command had
been issued:
</P>
<PRE>compute fix-ID_temp group-ID temp
</PRE>
<P>See the <A HREF = "compute_temp.html">compute temp</A> for details. Note that the
ID of the new compute is the fix-ID + underscore + "temp", and the
group for the new compute is the same as the fix group.
</P>
<P>Note that this is NOT the compute used by thermodynamic output (see
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>.
This means you can change the attributes of this fix's temperature
(e.g. its degrees-of-freedom) via the
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
during thermodynamic output via the <A HREF = "thermo_style.html">thermo_style
custom</A> command using the appropriate compute-ID.
It also means that changing attributes of <I>thermo_temp</I> will have no
effect on this fix.
</P>
<P>Like other fixes that perform thermostatting, this fix can be used
with <A HREF = "compute.html">compute commands</A> that calculate a temperature
after removing a "bias" from the atom velocities. E.g. removing the
center-of-mass velocity from a group of atoms or only calculating
temperature on the x-component of velocity or only calculating
temperature for atoms in a geometric region. This is not done by
default, but only if the <A HREF = "fix_modify.html">fix_modify</A> command is used
to assign a temperature compute to this fix that includes such a bias
term. See the doc pages for individual <A HREF = "compute.html">compute
commands</A> to determine which ones include a bias. In
this case, the thermostat works in the following manner: the current
temperature is calculated taking the bias into account, bias is
removed from each atom, thermostatting is performed on the remaining
thermal degrees of freedom, and the bias is added back in.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> option is supported by this
fix. You can use it to assign a temperature <A HREF = "compute.html">compute</A>
you have defined to this fix which will be used in its thermostatting
procedure, as described above. For consistency, the group used by
this fix and by the compute should be the same.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy change implied by a velocity rescaling to the
system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
cummulative energy change due to this fix. The scalar value
calculated by this fix is "extensive".
</P>
<P>This fix can ramp its target temperature over multiple runs, using the
<I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this.
</P>
<P>This fix is not invoked during <A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_langevin.html">fix langevin</A>, <A HREF = "fix_nh.html">fix nvt</A>,
<A HREF = "fix_modify.html">fix_modify</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_temp_rescale.txt b/doc/fix_temp_rescale.txt
index 60d45b7c2..1db777f14 100644
--- a/doc/fix_temp_rescale.txt
+++ b/doc/fix_temp_rescale.txt
@@ -1,159 +1,159 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix temp/rescale command :h3
fix temp/rescale/cuda command :h3
fix temp/rescale/limit/cuda command :h3
[Syntax:]
fix ID group-ID temp/rescale N Tstart Tstop window fraction :pre
ID, group-ID are documented in "fix"_fix.html command
temp/rescale = style name of this fix command
N = perform rescaling every N steps
Tstart,Tstop = desired temperature at start/end of run (temperature units)
window = only rescale if temperature is outside this window (temperature units)
fraction = rescale to target temperature by this fraction :ul
[Examples:]
fix 3 flow temp/rescale 100 1.0 1.1 0.02 0.5
fix 3 boundary temp/rescale 1 1.0 1.5 0.05 1.0
fix 3 boundary temp/rescale 1 1.0 1.5 0.05 1.0 :pre
[Description:]
Reset the temperature of a group of atoms by explicitly rescaling
their velocities.
The rescaling is applied to only the translational degrees of freedom
for the particles, which is an important consideration if extended
spherical or aspherical particles which have rotational degrees of
freedom are being thermostatted with this fix. The translational
degrees of freedom can also have a bias velocity removed from them
before thermostatting takes place; see the description below.
Rescaling is performed every N timesteps. The target temperature is a
ramped value between the {Tstart} and {Tstop} temperatures at the
beginning and end of the run.
Rescaling is only performed if the difference between the current and
desired temperatures is greater than the {window} value. The amount
of rescaling that is applied is a {fraction} (from 0.0 to 1.0) of the
difference between the actual and desired temperature. E.g. if
{fraction} = 1.0, the temperature is reset to exactly the desired
value.
IMPORTANT NOTE: Unlike the "fix nvt"_fix_nh.html command which
performs Nose/Hoover thermostatting AND time integration, this fix
does NOT perform time integration. It only modifies velocities to
effect thermostatting. Thus you must use a separate time integration
fix, like "fix nve"_fix_nve.html to actually update the positions of
atoms using the modified velocities. Likewise, this fix should not
normally be used on atoms that also have their temperature controlled
by another fix - e.g. by "fix nvt"_fix_nh.html or "fix
langevin"_fix_langevin.html commands.
-See "this howto section"_Section_howto.html#4_16 of the manual for a
-discussion of different ways to compute temperature and perform
+See "this howto section"_Section_howto.html#howto_16 of the manual for
+a discussion of different ways to compute temperature and perform
thermostatting.
This fix computes a temperature each timestep. To do this, the fix
creates its own compute of style "temp", as if one of this command had
been issued:
compute fix-ID_temp group-ID temp :pre
See the "compute temp"_compute_temp.html for details. Note that the
ID of the new compute is the fix-ID + underscore + "temp", and the
group for the new compute is the same as the fix group.
Note that this is NOT the compute used by thermodynamic output (see
the "thermo_style"_thermo_style.html command) with ID = {thermo_temp}.
This means you can change the attributes of this fix's temperature
(e.g. its degrees-of-freedom) via the
"compute_modify"_compute_modify.html command or print this temperature
during thermodynamic output via the "thermo_style
custom"_thermo_style.html command using the appropriate compute-ID.
It also means that changing attributes of {thermo_temp} will have no
effect on this fix.
Like other fixes that perform thermostatting, this fix can be used
with "compute commands"_compute.html that calculate a temperature
after removing a "bias" from the atom velocities. E.g. removing the
center-of-mass velocity from a group of atoms or only calculating
temperature on the x-component of velocity or only calculating
temperature for atoms in a geometric region. This is not done by
default, but only if the "fix_modify"_fix_modify.html command is used
to assign a temperature compute to this fix that includes such a bias
term. See the doc pages for individual "compute
commands"_compute.html to determine which ones include a bias. In
this case, the thermostat works in the following manner: the current
temperature is calculated taking the bias into account, bias is
removed from each atom, thermostatting is performed on the remaining
thermal degrees of freedom, and the bias is added back in.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {temp} option is supported by this
fix. You can use it to assign a temperature "compute"_compute.html
you have defined to this fix which will be used in its thermostatting
procedure, as described above. For consistency, the group used by
this fix and by the compute should be the same.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy change implied by a velocity rescaling to the
system's potential energy as part of "thermodynamic
output"_thermo_style.html.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the
+"output commands"_Section_howto.html#howto_15. The scalar is the
cummulative energy change due to this fix. The scalar value
calculated by this fix is "extensive".
This fix can ramp its target temperature over multiple runs, using the
{start} and {stop} keywords of the "run"_run.html command. See the
"run"_run.html command for details of how to do this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:] none
[Related commands:]
"fix langevin"_fix_langevin.html, "fix nvt"_fix_nh.html,
"fix_modify"_fix_modify.html
[Default:] none
diff --git a/doc/fix_temp_rescale_eff.html b/doc/fix_temp_rescale_eff.html
index 2eefe238f..24810091e 100644
--- a/doc/fix_temp_rescale_eff.html
+++ b/doc/fix_temp_rescale_eff.html
@@ -1,81 +1,81 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix temp/rescale/eff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID temp/rescale/eff N Tstart Tstop window fraction
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>temp/rescale/eff = style name of this fix command
<LI>N = perform rescaling every N steps
<LI>Tstart,Tstop = desired temperature at start/end of run (temperature units)
<LI>window = only rescale if temperature is outside this window (temperature units)
<LI>fraction = rescale to target temperature by this fraction
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 3 flow temp/rescale/eff 10 1.0 100.0 0.02 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>Reset the temperature of a group of nuclei and electrons in the
<A HREF = "pair_eff.html">electron force field</A> model by explicitly rescaling
their velocities.
</P>
<P>The operation of this fix is exactly like that described by the <A HREF = "fix_temp_rescale.html">fix
temp/rescale</A> command, except that the rescaling
is also applied to the radial electron velocity for electron
particles.
</P>
<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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> option is supported by this
fix. You can use it to assign a temperature <A HREF = "compute.html">compute</A>
you have defined to this fix which will be used in its thermostatting
procedure, as described above. For consistency, the group used by
this fix and by the compute should be the same.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy change implied by a velocity rescaling to the
system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
cummulative energy change due to this fix. The scalar value
calculated by this fix is "extensive".
</P>
<P>This fix can ramp its target temperature over multiple runs, using the
<I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this.
</P>
<P>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 "user-eff" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_langevin_eff.html">fix langevin/eff</A>, <A HREF = "fix_nh_eff.html">fix
nvt/eff</A>, <A HREF = "fix_modify.html">fix_modify</A>,
<A HREF = "fix_temp_rescale.html">fix_temp_rescale</A>,
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_temp_rescale_eff.txt b/doc/fix_temp_rescale_eff.txt
index eef42ce23..184ff3a09 100644
--- a/doc/fix_temp_rescale_eff.txt
+++ b/doc/fix_temp_rescale_eff.txt
@@ -1,76 +1,76 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix temp/rescale/eff command :h3
[Syntax:]
fix ID group-ID temp/rescale/eff N Tstart Tstop window fraction :pre
ID, group-ID are documented in "fix"_fix.html command
temp/rescale/eff = style name of this fix command
N = perform rescaling every N steps
Tstart,Tstop = desired temperature at start/end of run (temperature units)
window = only rescale if temperature is outside this window (temperature units)
fraction = rescale to target temperature by this fraction :ul
[Examples:]
fix 3 flow temp/rescale/eff 10 1.0 100.0 0.02 1.0 :pre
[Description:]
Reset the temperature of a group of nuclei and electrons in the
"electron force field"_pair_eff.html model by explicitly rescaling
their velocities.
The operation of this fix is exactly like that described by the "fix
temp/rescale"_fix_temp_rescale.html command, except that the rescaling
is also applied to the radial electron velocity for electron
particles.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {temp} option is supported by this
fix. You can use it to assign a temperature "compute"_compute.html
you have defined to this fix which will be used in its thermostatting
procedure, as described above. For consistency, the group used by
this fix and by the compute should be the same.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy change implied by a velocity rescaling to the
system's potential energy as part of "thermodynamic
output"_thermo_style.html.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the
+"output commands"_Section_howto.html#howto_15. The scalar is the
cummulative energy change due to this fix. The scalar value
calculated by this fix is "extensive".
This fix can ramp its target temperature over multiple runs, using the
{start} and {stop} keywords of the "run"_run.html command. See the
"run"_run.html command for details of how to do this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
This fix is part of the "user-eff" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"fix langevin/eff"_fix_langevin_eff.html, "fix
nvt/eff"_fix_nh_eff.html, "fix_modify"_fix_modify.html,
"fix_temp_rescale"_fix_temp_rescale.html,
[Default:] none
diff --git a/doc/fix_thermal_conductivity.html b/doc/fix_thermal_conductivity.html
index 72e5508a6..d89d6b9fa 100644
--- a/doc/fix_thermal_conductivity.html
+++ b/doc/fix_thermal_conductivity.html
@@ -1,163 +1,163 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix thermal/conductivity command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID thermal/conductivity N edim Nbin keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>thermal/conductivity = style name of this fix command
<LI>N = perform kinetic energy exchange every N steps
<LI>edim = <I>x</I> or <I>y</I> or <I>z</I> = direction of kinetic energy transfer
<LI>Nbin = # of layers in edim direction (must be even number)
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>swap</I>
<PRE> <I>swap</I> value = Nswap = number of swaps to perform every N steps
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all thermal/conductivity 100 z 20
fix 1 all thermal/conductivity 50 z 20 swap 2
</PRE>
<P><B>Description:</B>
</P>
<P>Use the Muller-Plathe algorithm described in <A HREF = "#Muller-Plathe">this
paper</A> to exchange kinetic energy between two particles
in different regions of the simulation box every N steps. This
induces a temperature gradient in the system. As described below this
enables a thermal conductivity of the fluid to be calculated. This
algorithm is sometimes called a reverse non-equilibrium MD (reverse
NEMD) approach to computing thermal conductivity. This is because the
usual NEMD approach is to impose a temperature gradient on the system
and measure the response as the resulting heat flux. In the
Muller-Plathe method, the heat flux is imposed, and the temperature
gradient is the system's response.
</P>
<P>See the <A HREF = "compute_heat_flux.html">compute heat/flux</A> command for details
on how to compute thermal conductivity in an alternate way, via the
Green-Kubo formalism.
</P>
<P>The simulation box is divided into <I>Nbin</I> layers in the <I>edim</I>
direction, where the layer 1 is at the low end of that dimension and
the layer <I>Nbin</I> is at the high end. Every N steps, Nswap pairs of
atoms are chosen in the following manner. Only atoms in the fix group
are considered. The hottest Nswap atoms in layer 1 are selected.
Similarly, the coldest Nswap atoms in the "middle" layer (see below)
are selected. The two sets of Nswap atoms are paired up and their
velocities are exchanged. This effectively swaps their kinetic
energies, assuming their masses are the same. Over time, this induces
a temperature gradient in the system which can be measured using
commands such as the following, which writes the temperature profile
(assuming z = edim) to the file tmp.profile:
</P>
<PRE>compute ke all ke/atom
variable temp atom c_ke/1.5
fix 3 all ave/spatial 10 100 1000 z lower 0.05 v_temp &
file tmp.profile units reduced
</PRE>
<P>Note that by default, Nswap = 1, though this can be changed by the
optional <I>swap</I> keyword. Setting this parameter appropriately, in
conjunction with the swap rate N, allows the heat flux to be adjusted
across a wide range of values, and the kinetic energy to be exchanged
in large chunks or more smoothly.
</P>
<P>The "middle" layer for velocity swapping is defined as the <I>Nbin</I>/2 +
1 layer. Thus if <I>Nbin</I> = 20, the two swapping layers are 1 and 11.
This should lead to a symmetric temperature profile since the two
layers are separated by the same distance in both directions in a
periodic sense. This is why <I>Nbin</I> is restricted to being an even
number.
</P>
<P>As described below, the total kinetic energy transferred by these
swaps is computed by the fix and can be output. Dividing this
quantity by time and the cross-sectional area of the simulation box
yields a heat flux. The ratio of heat flux to the slope of the
temperature profile is the thermal conductivity of the fluid,
in appopriate units. See the <A HREF = "#Muller-Plathe">Muller-Plathe paper</A> for
details.
</P>
<P>IMPORTANT NOTE: After equilibration, if the temperature gradient you
observe is not linear, then you are likely swapping energy too
frequently and are not in a regime of linear response. In this case
you cannot accurately infer a thermal conductivity and should try
increasing the Nevery parameter.
</P>
<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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
cummulative kinetic energy transferred between the bottom and middle
of the simulation box (in the <I>edim</I> direction) is stored as a scalar
quantity by this fix. This quantity is zeroed when the fix is defined
and accumlates thereafter, once every N steps. The units of the
quantity are energy; see the <A HREF = "units.html">units</A> command for details.
The scalar value calculated by this fix is "intensive".
</P>
<P>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>Swaps conserve both momentum and kinetic energy, even if the masses of
the swapped atoms are not equal. Thus you should not need to
thermostat the system. If you do use a thermostat, you may want to
apply it only to the non-swapped dimensions (other than <I>vdim</I>).
</P>
<P>LAMMPS does not check, but you should not use this fix to swap the
kinetic energy of atoms that are in constrained molecules, e.g. via
<A HREF = "fix_shake.html">fix shake</A> or <A HREF = "fix_rigid.html">fix rigid</A>. This is
because application of the constraints will alter the amount of
transferred momentum. You should, however, be able to use flexible
molecules. See the <A HREF = "#Zhang">Zhang paper</A> for a discussion and results
of this idea.
</P>
<P>When running a simulation with large, massive particles or molecules
in a background solvent, you may want to only exchange kinetic energy
bewteen solvent particles.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_ave_spatial.html">fix ave/spatial</A>, <A HREF = "fix_viscosity.html">fix
viscosity</A>, <A HREF = "compute_heat_flux.html">compute
heat/flux</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are swap = 1.
</P>
<HR>
<A NAME = "Muller-Plathe"></A>
<P><B>(Muller-Plathe)</B> Muller-Plathe, J Chem Phys, 106, 6082 (1997).
</P>
<A NAME = "Zhang"></A>
<P><B>(Zhang)</B> Zhang, Lussetti, de Souza, Muller-Plathe, J Phys Chem B,
109, 15060-15067 (2005).
</P>
</HTML>
diff --git a/doc/fix_thermal_conductivity.txt b/doc/fix_thermal_conductivity.txt
index da0d0c807..19fa15be3 100644
--- a/doc/fix_thermal_conductivity.txt
+++ b/doc/fix_thermal_conductivity.txt
@@ -1,149 +1,149 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix thermal/conductivity command :h3
[Syntax:]
fix ID group-ID thermal/conductivity N edim Nbin keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
thermal/conductivity = style name of this fix command :l
N = perform kinetic energy exchange every N steps :l
edim = {x} or {y} or {z} = direction of kinetic energy transfer :l
Nbin = # of layers in edim direction (must be even number) :l
zero or more keyword/value pairs may be appended :l
keyword = {swap} :l
{swap} value = Nswap = number of swaps to perform every N steps :pre
:ule
[Examples:]
fix 1 all thermal/conductivity 100 z 20
fix 1 all thermal/conductivity 50 z 20 swap 2 :pre
[Description:]
Use the Muller-Plathe algorithm described in "this
paper"_#Muller-Plathe to exchange kinetic energy between two particles
in different regions of the simulation box every N steps. This
induces a temperature gradient in the system. As described below this
enables a thermal conductivity of the fluid to be calculated. This
algorithm is sometimes called a reverse non-equilibrium MD (reverse
NEMD) approach to computing thermal conductivity. This is because the
usual NEMD approach is to impose a temperature gradient on the system
and measure the response as the resulting heat flux. In the
Muller-Plathe method, the heat flux is imposed, and the temperature
gradient is the system's response.
See the "compute heat/flux"_compute_heat_flux.html command for details
on how to compute thermal conductivity in an alternate way, via the
Green-Kubo formalism.
The simulation box is divided into {Nbin} layers in the {edim}
direction, where the layer 1 is at the low end of that dimension and
the layer {Nbin} is at the high end. Every N steps, Nswap pairs of
atoms are chosen in the following manner. Only atoms in the fix group
are considered. The hottest Nswap atoms in layer 1 are selected.
Similarly, the coldest Nswap atoms in the "middle" layer (see below)
are selected. The two sets of Nswap atoms are paired up and their
velocities are exchanged. This effectively swaps their kinetic
energies, assuming their masses are the same. Over time, this induces
a temperature gradient in the system which can be measured using
commands such as the following, which writes the temperature profile
(assuming z = edim) to the file tmp.profile:
compute ke all ke/atom
variable temp atom c_ke/1.5
fix 3 all ave/spatial 10 100 1000 z lower 0.05 v_temp &
file tmp.profile units reduced :pre
Note that by default, Nswap = 1, though this can be changed by the
optional {swap} keyword. Setting this parameter appropriately, in
conjunction with the swap rate N, allows the heat flux to be adjusted
across a wide range of values, and the kinetic energy to be exchanged
in large chunks or more smoothly.
The "middle" layer for velocity swapping is defined as the {Nbin}/2 +
1 layer. Thus if {Nbin} = 20, the two swapping layers are 1 and 11.
This should lead to a symmetric temperature profile since the two
layers are separated by the same distance in both directions in a
periodic sense. This is why {Nbin} is restricted to being an even
number.
As described below, the total kinetic energy transferred by these
swaps is computed by the fix and can be output. Dividing this
quantity by time and the cross-sectional area of the simulation box
yields a heat flux. The ratio of heat flux to the slope of the
temperature profile is the thermal conductivity of the fluid,
in appopriate units. See the "Muller-Plathe paper"_#Muller-Plathe for
details.
IMPORTANT NOTE: After equilibration, if the temperature gradient you
observe is not linear, then you are likely swapping energy too
frequently and are not in a regime of linear response. In this case
you cannot accurately infer a thermal conductivity and should try
increasing the Nevery parameter.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the
+"output commands"_Section_howto.html#howto_15. The scalar is the
cummulative kinetic energy transferred between the bottom and middle
of the simulation box (in the {edim} direction) is stored as a scalar
quantity by this fix. This quantity is zeroed when the fix is defined
and accumlates thereafter, once every N steps. The units of the
quantity are energy; see the "units"_units.html command for details.
The scalar value calculated by this fix is "intensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
Swaps conserve both momentum and kinetic energy, even if the masses of
the swapped atoms are not equal. Thus you should not need to
thermostat the system. If you do use a thermostat, you may want to
apply it only to the non-swapped dimensions (other than {vdim}).
LAMMPS does not check, but you should not use this fix to swap the
kinetic energy of atoms that are in constrained molecules, e.g. via
"fix shake"_fix_shake.html or "fix rigid"_fix_rigid.html. This is
because application of the constraints will alter the amount of
transferred momentum. You should, however, be able to use flexible
molecules. See the "Zhang paper"_#Zhang for a discussion and results
of this idea.
When running a simulation with large, massive particles or molecules
in a background solvent, you may want to only exchange kinetic energy
bewteen solvent particles.
[Related commands:]
"fix ave/spatial"_fix_ave_spatial.html, "fix
viscosity"_fix_viscosity.html, "compute
heat/flux"_compute_heat_flux.html
[Default:]
The option defaults are swap = 1.
:line
:link(Muller-Plathe)
[(Muller-Plathe)] Muller-Plathe, J Chem Phys, 106, 6082 (1997).
:link(Zhang)
[(Zhang)] Zhang, Lussetti, de Souza, Muller-Plathe, J Phys Chem B,
109, 15060-15067 (2005).
diff --git a/doc/fix_tmd.html b/doc/fix_tmd.html
index bf9c8f5d6..c365365f4 100644
--- a/doc/fix_tmd.html
+++ b/doc/fix_tmd.html
@@ -1,138 +1,138 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix tmd command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID tmd rho_final file1 N file2
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>tmd = style name of this fix command
<LI>rho_final = desired value of rho at the end of the run (distance units)
<LI>file1 = filename to read target structure from
<LI>N = dump TMD statistics every this many timesteps, 0 = no dump
<LI>file2 = filename to write TMD statistics to (only needed if N > 0)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all nve
fix 2 tmdatoms tmd 1.0 target_file 100 tmd_dump_file
</PRE>
<P><B>Description:</B>
</P>
<P>Perform targeted molecular dynamics (TMD) on a group of atoms. A
holonomic constraint is used to force the atoms to move towards (or
away from) the target configuration. The parameter "rho" is
monotonically decreased (or increased) from its initial value to
rho_final at the end of the run.
</P>
<P>Rho has distance units and is a measure of the root-mean-squared
distance (RMSD) between the current configuration of the atoms in the
group and the target coordinates listed in file1. Thus a value of
rho_final = 0.0 means move the atoms all the way to the final
structure during the course of the run.
</P>
<P>The target file1 can be ASCII text or a gzipped text file (detected by
a .gz suffix). The format of the target file1 is as follows:
</P>
<PRE>0.0 25.0 xlo xhi
0.0 25.0 ylo yhi
0.0 25.0 zlo zhi
125 24.97311 1.69005 23.46956 0 0 -1
126 1.94691 2.79640 1.92799 1 0 0
127 0.15906 3.46099 0.79121 1 0 0
...
</PRE>
<P>The first 3 lines may or may not be needed, depending on the format of
the atoms to follow. If image flags are included with the atoms, the
1st 3 lo/hi lines must appear in the file. If image flags are not
included, the 1st 3 lines should not appear. The 3 lines contain the
simulation box dimensions for the atom coordinates, in the same format
as in a LAMMPS data file (see the <A HREF = "read_data.html">read_data</A> command).
</P>
<P>The remaining lines each contain an atom ID and its target x,y,z
coordinates. The atom lines (all or none of them) can optionally be
followed by 3 integer values: nx,ny,nz. For periodic dimensions, they
specify which image of the box the atom is considered to be in, i.e. a
value of N (positive or negative) means add N times the box length to
the coordinate to get the true value.
</P>
<P>The atom lines can be listed in any order, but every atom in the group
must be listed in the file. Atoms not in the fix group may also be
listed; they will be ignored.
</P>
<P>TMD statistics are written to file2 every N timesteps, unless N is
specified as 0, which means no statistics.
</P>
<P>The atoms in the fix tmd group should be integrated (via a fix nve,
nvt, npt) along with other atoms in the system.
</P>
<P>Restarts can be used with a fix tmd command. For example, imagine a
10000 timestep run with a rho_initial = 11 and a rho_final = 1. If a
restart file was written after 2000 time steps, then the configuration
in the file would have a rho value of 9. A new 8000 time step run
could be performed with the same rho_final = 1 to complete the
conformational change at the same transition rate. Note that for
restarted runs, the name of the TMD statistics file should be changed
to prevent it being overwritten.
</P>
<P>For more information about TMD, see <A HREF = "#Schlitter1">(Schlitter1)</A> and
<A HREF = "#Schlitter2">(Schlitter2)</A>.
</P>
<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>. 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#4_15">output
+by this fix for access by various <A HREF = "Section_howto.html#howto_15">output
commands</A>.
</P>
<P>This fix can ramp its rho parameter over multiple runs, using the
<I>start</I> and <I>stop</I> keywords of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this.
</P>
<P>This fix is not invoked during <A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>All TMD fixes must be listed in the input script after all integrator
fixes (nve, nvt, npt) are applied. This ensures that atoms are moved
before their positions are corrected to comply with the constraint.
</P>
<P>Atoms that have a TMD fix applied should not be part of a group to
which a SHAKE fix is applied. This is because LAMMPS assumes there
are not multiple competing holonomic constraints applied to the same
atoms.
</P>
<P>To read gzipped target files, you must compile LAMMPS with the
--DLAMMPS_GZIP option - see the <A HREF = "Section_start.html#2_2">Making LAMMPS</A>
-section of the documentation.
+-DLAMMPS_GZIP option - see the <A HREF = "Section_start.html#start_2">Making
+LAMMPS</A> section of the documentation.
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Schlitter1"></A>
<P><B>(Schlitter1)</B> Schlitter, Swegat, Mulders, "Distance-type reaction
coordinates for modelling activated processes", J Molecular Modeling,
7, 171-177 (2001).
</P>
<A NAME = "Schlitter2"></A>
<P><B>(Schlitter2)</B> Schlitter and Klahn, "The free energy of a reaction
coordinate at multiple constraints: a concise formulation", Molecular
Physics, 101, 3439-3443 (2003).
</P>
</HTML>
diff --git a/doc/fix_tmd.txt b/doc/fix_tmd.txt
index 7ff51ce50..71d8d2c76 100644
--- a/doc/fix_tmd.txt
+++ b/doc/fix_tmd.txt
@@ -1,131 +1,131 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix tmd command :h3
[Syntax:]
fix ID group-ID tmd rho_final file1 N file2 :pre
ID, group-ID are documented in "fix"_fix.html command
tmd = style name of this fix command
rho_final = desired value of rho at the end of the run (distance units)
file1 = filename to read target structure from
N = dump TMD statistics every this many timesteps, 0 = no dump
file2 = filename to write TMD statistics to (only needed if N > 0) :ul
[Examples:]
fix 1 all nve
fix 2 tmdatoms tmd 1.0 target_file 100 tmd_dump_file :pre
[Description:]
Perform targeted molecular dynamics (TMD) on a group of atoms. A
holonomic constraint is used to force the atoms to move towards (or
away from) the target configuration. The parameter "rho" is
monotonically decreased (or increased) from its initial value to
rho_final at the end of the run.
Rho has distance units and is a measure of the root-mean-squared
distance (RMSD) between the current configuration of the atoms in the
group and the target coordinates listed in file1. Thus a value of
rho_final = 0.0 means move the atoms all the way to the final
structure during the course of the run.
The target file1 can be ASCII text or a gzipped text file (detected by
a .gz suffix). The format of the target file1 is as follows:
0.0 25.0 xlo xhi
0.0 25.0 ylo yhi
0.0 25.0 zlo zhi
125 24.97311 1.69005 23.46956 0 0 -1
126 1.94691 2.79640 1.92799 1 0 0
127 0.15906 3.46099 0.79121 1 0 0
... :pre
The first 3 lines may or may not be needed, depending on the format of
the atoms to follow. If image flags are included with the atoms, the
1st 3 lo/hi lines must appear in the file. If image flags are not
included, the 1st 3 lines should not appear. The 3 lines contain the
simulation box dimensions for the atom coordinates, in the same format
as in a LAMMPS data file (see the "read_data"_read_data.html command).
The remaining lines each contain an atom ID and its target x,y,z
coordinates. The atom lines (all or none of them) can optionally be
followed by 3 integer values: nx,ny,nz. For periodic dimensions, they
specify which image of the box the atom is considered to be in, i.e. a
value of N (positive or negative) means add N times the box length to
the coordinate to get the true value.
The atom lines can be listed in any order, but every atom in the group
must be listed in the file. Atoms not in the fix group may also be
listed; they will be ignored.
TMD statistics are written to file2 every N timesteps, unless N is
specified as 0, which means no statistics.
The atoms in the fix tmd group should be integrated (via a fix nve,
nvt, npt) along with other atoms in the system.
Restarts can be used with a fix tmd command. For example, imagine a
10000 timestep run with a rho_initial = 11 and a rho_final = 1. If a
restart file was written after 2000 time steps, then the configuration
in the file would have a rho value of 9. A new 8000 time step run
could be performed with the same rho_final = 1 to complete the
conformational change at the same transition rate. Note that for
restarted runs, the name of the TMD statistics file should be changed
to prevent it being overwritten.
For more information about TMD, see "(Schlitter1)"_#Schlitter1 and
"(Schlitter2)"_#Schlitter2.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15.
+commands"_Section_howto.html#howto_15.
This fix can ramp its rho parameter over multiple runs, using the
{start} and {stop} keywords of the "run"_run.html command. See the
"run"_run.html command for details of how to do this.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
All TMD fixes must be listed in the input script after all integrator
fixes (nve, nvt, npt) are applied. This ensures that atoms are moved
before their positions are corrected to comply with the constraint.
Atoms that have a TMD fix applied should not be part of a group to
which a SHAKE fix is applied. This is because LAMMPS assumes there
are not multiple competing holonomic constraints applied to the same
atoms.
To read gzipped target files, you must compile LAMMPS with the
--DLAMMPS_GZIP option - see the "Making LAMMPS"_Section_start.html#2_2
-section of the documentation.
+-DLAMMPS_GZIP option - see the "Making
+LAMMPS"_Section_start.html#start_2 section of the documentation.
[Related commands:] none
[Default:] none
:line
:link(Schlitter1)
[(Schlitter1)] Schlitter, Swegat, Mulders, "Distance-type reaction
coordinates for modelling activated processes", J Molecular Modeling,
7, 171-177 (2001).
:link(Schlitter2)
[(Schlitter2)] Schlitter and Klahn, "The free energy of a reaction
coordinate at multiple constraints: a concise formulation", Molecular
Physics, 101, 3439-3443 (2003).
diff --git a/doc/fix_ttm.html b/doc/fix_ttm.html
index 2c5eb9e00..906e67db1 100644
--- a/doc/fix_ttm.html
+++ b/doc/fix_ttm.html
@@ -1,216 +1,216 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix ttm command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID ttm seed C_e rho_e kappa_e gamma_p gamma_s v_0 Nx Ny Nz T_infile N T_outfile
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>ttm = style name of this fix command
<LI>seed = random number seed to use for white noise (positive integer)
<LI>C_e = electronic specific heat (energy/(electron*temperature) units)
<LI>rho_e = electronic density (electrons/volume units)
<LI>kappa_e = electronic thermal conductivity (energy/(time*distance*temperature) units)
<LI>gamma_p = friction coefficient due to electron-ion interactions (mass/time units)
<LI>gamma_s = friction coefficient due to electronic stopping (mass/time units)
<LI>v_0 = electronic stopping critical velocity (velocity units)
<LI>Nx = number of thermal solve grid points in the x-direction (positive integer)
<LI>Ny = number of thermal solve grid points in the y-direction (positive integer)
<LI>Nz = number of thermal solve grid points in the z-direction (positive integer)
<LI>T_infile = filename to read initial electronic temperature from
<LI>N = dump TTM temperatures every this many timesteps, 0 = no dump
<LI>T_outfile = filename to write TTM temperatures to (only needed if N > 0)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 2 all ttm 699489 1.0 1.0 10 0.1 0.0 2.0 1 12 1 initialTs 1000 T.out
fix 2 all ttm 123456 1.0 1.0 1.0 1.0 1.0 5.0 5 5 5 Te.in 1 Te.out
</PRE>
<P><B>Description:</B>
</P>
<P>Use a two-temperature model (TTM) to represent heat transfer through
and between electronic and atomic subsystems. LAMMPS models the
atomic subsystem as usual with a molecular dynamics model and the
classical force field specified by the user, but the electronic
subsystem is modeled as a continuum, or a background "gas", on a
regular grid. Energy can be transferred spatially within the grid
representing the electrons. Energy can also be transferred between
the electronic and the atomic subsystems. The algorithm underlying
this fix was derived by D. M. Duffy and A. M. Rutherford and is
discussed in two J Physics: Condensed Matter papers: <A HREF = "#Duffy">(Duffy)</A>
and <A HREF = "#Rutherford">(Rutherford)</A>. They used this algorithm in cascade
simulations where a primary knock-on atom (PKA) was initialized with a
high velocity to simulate a radiation event.
</P>
<P>Heat transfer between the electronic and atomic subsystems is carried
out via an inhomogeneous Langevin thermostat. This thermostat differs
from the regular Langevin thermostat (<A HREF = "fix_langevin.html">fix
langevin</A>) in three important ways. First, the
Langevin thermostat is applied uniformly to all atoms in the
user-specified group for a single target temperature, whereas the TTM
fix applies Langevin thermostatting locally to atoms within the
volumes represented by the user-specified grid points with a target
temperature specific to that grid point. Second, the Langevin
thermostat couples the temperature of the atoms to an infinite heat
reservoir, whereas the heat reservoir for fix TTM is finite and
represents the local electrons. Third, the TTM fix allows users to
specify not just one friction coefficient, but rather two independent
friction coefficients: one for the electron-ion interactions
(<I>gamma_p</I>), and one for electron stopping (<I>gamma_s</I>).
</P>
<P>When the friction coefficient due to electron stopping, <I>gamma_s</I>, is
non-zero, electron stopping effects are included for atoms moving
faster than the electron stopping critical velocity, <I>v_0</I>. For
further details about this algorithm, see <A HREF = "#Duffy">(Duffy)</A> and
<A HREF = "#Rutherford">(Rutherford)</A>.
</P>
<P>Energy transport within the electronic subsystem is solved according
to the heat diffusion equation with added source terms for heat
transfer between the subsystems:
</P>
<CENTER><IMG SRC = "Eqs/fix_ttm.jpg">
</CENTER>
<P>where C_e is the specific heat, rho_e is the density, kappa_e is the
thermal conductivity, T is temperature, the "e" and "a" subscripts
represent electronic and atomic subsystems respectively, g_p is the
coupling constant for the electron-ion interaction, and g_s is the
electron stopping coupling parameter. C_e, rho_e, and kappa_e are
specified as parameters to the fix. The other quantities are derived.
The form of the heat diffusion equation used here is almost the same
as that in equation 6 of <A HREF = "#Duffy">(Duffy)</A>, with the exception that the
electronic density is explicitly reprensented, rather than being part
of the the specific heat parameter.
</P>
<P>Currently, this fix assumes that none of the user-supplied parameters
will vary with temperature. This assumption can be relaxed by
modifying the source code to include the desired temperature
dependency and functional form for any of the parameters. Note that
<A HREF = "#Duffy">(Duffy)</A> used a tanh() functional form for the temperature
dependence of the electronic specific heat, but ignored temperature
dependencies of any of the other parameters.
</P>
<P>This fix requires use of periodic boundary conditions and a 3D
simulation. Periodic boundary conditions are also used in the heat
equation solve for the electronic subsystem. This varies from the
approach of <A HREF = "#Rutherford">(Rutherford)</A> where the atomic subsystem was
embedded within a larger continuum representation of the electronic
subsystem.
</P>
<P>The initial electronic temperature input file, <I>T_infile</I>, is a text
file LAMMPS reads in with no header and with four numeric columns
(ix,iy,iz,Temp) and with a number of rows equal to the number of
user-specified grid points (Nx by Ny by Nz). The ix,iy,iz are node
indices from 0 to nxnodes-1, etc. For example, the initial electronic
temperatures on a 1 by 2 by 3 grid could be specified in a <I>T_infile</I>
as follows:
</P>
<PRE>0 0 0 1.0
0 0 1 1.0
0 0 2 1.0
0 1 0 2.0
0 1 1 2.0
0 1 2 2.0
</PRE>
<P>where the electronic temperatures along the y=0 plane have been set to
1.0, and the electronic temperatures along the y=1 plane have been set
to 2.0. The order of lines in this file is no important. If all the
nodal values are not specified, LAMMPS will generate an error.
</P>
<P>The temperature output file, <I>T_oufile</I>, is created and written by
this fix. Temperatures for both the electronic and atomic subsystems
at every node and every N timesteps are output. If N is specified as
zero, no output is generated, and no output filename is needed. The
format of the output is as follows. One long line is written every
output timestep. The timestep itself is given in the first column.
The next Nx*Ny*Nz columns contain the temperatures for the atomic
subsystem, and the final Nx*Ny*Nz columns contain the temperatures for
the electronic subsystem. The ordering of the Nx*Ny*Nz columns is
with the z index varing fastest, y the next fastest, and x the
slowest.
</P>
<P>This fix does not change the coordinates of its atoms; it only scales
their velocities. Thus a time integration fix (e.g. <A HREF = "fix_nve.html">fix
nve</A>) should still be used to time integrate the affected
atoms. This fix should not normally be used on atoms that have their
temperature controlled by another fix - e.g. <A HREF = "fix_nh.html">fix nvt</A> or
<A HREF = "fix_langevin.html">fix langevin</A>.
</P>
-<P>This fix computes 2 output quantities stored in a vector of
-length 2, which can be accessed by various <A HREF = "Section_howto.html#4_15">output
-commands</A>. The first quantity is
-the total energy of the electronic subsystem. The second quantity
-is the energy transferred from the electronic to the atomic subsystem
-on that timestep. Note that the velocity verlet integrator applies the
-fix ttm forces to the atomic subsystem as two half-step velocity
-updates: one on the current timestep and one on the subsequent timestep.
+<P>This fix computes 2 output quantities stored in a vector of length 2,
+which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. The first quantity is the
+total energy of the electronic subsystem. The second quantity is the
+energy transferred from the electronic to the atomic subsystem on that
+timestep. Note that the velocity verlet integrator applies the fix ttm
+forces to the atomic subsystem as two half-step velocity updates: one
+on the current timestep and one on the subsequent timestep.
Consequently, the change in the atomic subsystem energy is lagged by
-half a timestep relative to the change in the electronic subsystem
+half a timestep relative to the change in the electronic subsystem
energy. As a result of this, users may notice slight fluctuations in
-the sum of the atomic and electronic subsystem energies reported at
-the end of the timestep.
+the sum of the atomic and electronic subsystem energies reported at
+the end of the timestep.
</P>
<P>The vector values calculated by this fix are "extensive".
</P>
<P>IMPORTANT NOTE: The current implementation creates a copy of the
electron grid that overlays the entire simulation domain, for each
processor. Values on the grid are summed across all processors. Thus
you should insure that this grid is not too large, else your
simulation could incur high memory and communication costs.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the state of the electronic subsystem and the energy
exchange between the subsystems to <A HREF = "restart.html">binary restart
files</A>. 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>Because the state of the random number generator is not saved in the
restart files, this means you cannot do "exact" restarts with this
fix, where the simulation continues on the same as if no restart had
taken place. However, in a statistical sense, a restarted simulation
should produce the same behavior.
</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#4_15">output commands</A>. No
+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 can only be used for 3d simulations and orthogonal
simlulation boxes. You must use periodic <A HREF = "boundary.html">boundary</A>
conditions with this fix.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_langevin.html">fix langevin</A>, <A HREF = "fix_dt_reset.html">fix dt/reset</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Duffy"></A>
<P><B>(Duffy)</B> D M Duffy and A M Rutherford, J. Phys.: Condens. Matter, 19,
016207-016218 (2007).
</P>
<A NAME = "Rutherford"></A>
<P><B>(Rutherford)</B> A M Rutherford and D M Duffy, J. Phys.:
Condens. Matter, 19, 496201-496210 (2007).
</P>
</HTML>
diff --git a/doc/fix_ttm.txt b/doc/fix_ttm.txt
index ddd76c779..a8fa96f91 100644
--- a/doc/fix_ttm.txt
+++ b/doc/fix_ttm.txt
@@ -1,209 +1,209 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix ttm command :h3
[Syntax:]
fix ID group-ID ttm seed C_e rho_e kappa_e gamma_p gamma_s v_0 Nx Ny Nz T_infile N T_outfile :pre
ID, group-ID are documented in "fix"_fix.html command
ttm = style name of this fix command
seed = random number seed to use for white noise (positive integer)
C_e = electronic specific heat (energy/(electron*temperature) units)
rho_e = electronic density (electrons/volume units)
kappa_e = electronic thermal conductivity (energy/(time*distance*temperature) units)
gamma_p = friction coefficient due to electron-ion interactions (mass/time units)
gamma_s = friction coefficient due to electronic stopping (mass/time units)
v_0 = electronic stopping critical velocity (velocity units)
Nx = number of thermal solve grid points in the x-direction (positive integer)
Ny = number of thermal solve grid points in the y-direction (positive integer)
Nz = number of thermal solve grid points in the z-direction (positive integer)
T_infile = filename to read initial electronic temperature from
N = dump TTM temperatures every this many timesteps, 0 = no dump
T_outfile = filename to write TTM temperatures to (only needed if N > 0) :ul
[Examples:]
fix 2 all ttm 699489 1.0 1.0 10 0.1 0.0 2.0 1 12 1 initialTs 1000 T.out
fix 2 all ttm 123456 1.0 1.0 1.0 1.0 1.0 5.0 5 5 5 Te.in 1 Te.out :pre
[Description:]
Use a two-temperature model (TTM) to represent heat transfer through
and between electronic and atomic subsystems. LAMMPS models the
atomic subsystem as usual with a molecular dynamics model and the
classical force field specified by the user, but the electronic
subsystem is modeled as a continuum, or a background "gas", on a
regular grid. Energy can be transferred spatially within the grid
representing the electrons. Energy can also be transferred between
the electronic and the atomic subsystems. The algorithm underlying
this fix was derived by D. M. Duffy and A. M. Rutherford and is
discussed in two J Physics: Condensed Matter papers: "(Duffy)"_#Duffy
and "(Rutherford)"_#Rutherford. They used this algorithm in cascade
simulations where a primary knock-on atom (PKA) was initialized with a
high velocity to simulate a radiation event.
Heat transfer between the electronic and atomic subsystems is carried
out via an inhomogeneous Langevin thermostat. This thermostat differs
from the regular Langevin thermostat ("fix
langevin"_fix_langevin.html) in three important ways. First, the
Langevin thermostat is applied uniformly to all atoms in the
user-specified group for a single target temperature, whereas the TTM
fix applies Langevin thermostatting locally to atoms within the
volumes represented by the user-specified grid points with a target
temperature specific to that grid point. Second, the Langevin
thermostat couples the temperature of the atoms to an infinite heat
reservoir, whereas the heat reservoir for fix TTM is finite and
represents the local electrons. Third, the TTM fix allows users to
specify not just one friction coefficient, but rather two independent
friction coefficients: one for the electron-ion interactions
({gamma_p}), and one for electron stopping ({gamma_s}).
When the friction coefficient due to electron stopping, {gamma_s}, is
non-zero, electron stopping effects are included for atoms moving
faster than the electron stopping critical velocity, {v_0}. For
further details about this algorithm, see "(Duffy)"_#Duffy and
"(Rutherford)"_#Rutherford.
Energy transport within the electronic subsystem is solved according
to the heat diffusion equation with added source terms for heat
transfer between the subsystems:
:c,image(Eqs/fix_ttm.jpg)
where C_e is the specific heat, rho_e is the density, kappa_e is the
thermal conductivity, T is temperature, the "e" and "a" subscripts
represent electronic and atomic subsystems respectively, g_p is the
coupling constant for the electron-ion interaction, and g_s is the
electron stopping coupling parameter. C_e, rho_e, and kappa_e are
specified as parameters to the fix. The other quantities are derived.
The form of the heat diffusion equation used here is almost the same
as that in equation 6 of "(Duffy)"_#Duffy, with the exception that the
electronic density is explicitly reprensented, rather than being part
of the the specific heat parameter.
Currently, this fix assumes that none of the user-supplied parameters
will vary with temperature. This assumption can be relaxed by
modifying the source code to include the desired temperature
dependency and functional form for any of the parameters. Note that
"(Duffy)"_#Duffy used a tanh() functional form for the temperature
dependence of the electronic specific heat, but ignored temperature
dependencies of any of the other parameters.
This fix requires use of periodic boundary conditions and a 3D
simulation. Periodic boundary conditions are also used in the heat
equation solve for the electronic subsystem. This varies from the
approach of "(Rutherford)"_#Rutherford where the atomic subsystem was
embedded within a larger continuum representation of the electronic
subsystem.
The initial electronic temperature input file, {T_infile}, is a text
file LAMMPS reads in with no header and with four numeric columns
(ix,iy,iz,Temp) and with a number of rows equal to the number of
user-specified grid points (Nx by Ny by Nz). The ix,iy,iz are node
indices from 0 to nxnodes-1, etc. For example, the initial electronic
temperatures on a 1 by 2 by 3 grid could be specified in a {T_infile}
as follows:
0 0 0 1.0
0 0 1 1.0
0 0 2 1.0
0 1 0 2.0
0 1 1 2.0
0 1 2 2.0 :pre
where the electronic temperatures along the y=0 plane have been set to
1.0, and the electronic temperatures along the y=1 plane have been set
to 2.0. The order of lines in this file is no important. If all the
nodal values are not specified, LAMMPS will generate an error.
The temperature output file, {T_oufile}, is created and written by
this fix. Temperatures for both the electronic and atomic subsystems
at every node and every N timesteps are output. If N is specified as
zero, no output is generated, and no output filename is needed. The
format of the output is as follows. One long line is written every
output timestep. The timestep itself is given in the first column.
The next Nx*Ny*Nz columns contain the temperatures for the atomic
subsystem, and the final Nx*Ny*Nz columns contain the temperatures for
the electronic subsystem. The ordering of the Nx*Ny*Nz columns is
with the z index varing fastest, y the next fastest, and x the
slowest.
This fix does not change the coordinates of its atoms; it only scales
their velocities. Thus a time integration fix (e.g. "fix
nve"_fix_nve.html) should still be used to time integrate the affected
atoms. This fix should not normally be used on atoms that have their
temperature controlled by another fix - e.g. "fix nvt"_fix_nh.html or
"fix langevin"_fix_langevin.html.
-This fix computes 2 output quantities stored in a vector of
-length 2, which can be accessed by various "output
-commands"_Section_howto.html#4_15. The first quantity is
-the total energy of the electronic subsystem. The second quantity
-is the energy transferred from the electronic to the atomic subsystem
-on that timestep. Note that the velocity verlet integrator applies the
-fix ttm forces to the atomic subsystem as two half-step velocity
-updates: one on the current timestep and one on the subsequent timestep.
+This fix computes 2 output quantities stored in a vector of length 2,
+which can be accessed by various "output
+commands"_Section_howto.html#howto_15. The first quantity is the
+total energy of the electronic subsystem. The second quantity is the
+energy transferred from the electronic to the atomic subsystem on that
+timestep. Note that the velocity verlet integrator applies the fix ttm
+forces to the atomic subsystem as two half-step velocity updates: one
+on the current timestep and one on the subsequent timestep.
Consequently, the change in the atomic subsystem energy is lagged by
-half a timestep relative to the change in the electronic subsystem
+half a timestep relative to the change in the electronic subsystem
energy. As a result of this, users may notice slight fluctuations in
-the sum of the atomic and electronic subsystem energies reported at
-the end of the timestep.
+the sum of the atomic and electronic subsystem energies reported at
+the end of the timestep.
The vector values calculated by this fix are "extensive".
IMPORTANT NOTE: The current implementation creates a copy of the
electron grid that overlays the entire simulation domain, for each
processor. Values on the grid are summed across all processors. Thus
you should insure that this grid is not too large, else your
simulation could incur high memory and communication costs.
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the state of the electronic subsystem and the energy
exchange between the subsystems to "binary restart
files"_restart.html. See the "read_restart"_read_restart.html 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.
Because the state of the random number generator is not saved in the
restart files, this means you cannot do "exact" restarts with this
fix, where the simulation continues on the same as if no restart had
taken place. However, in a statistical sense, a restarted simulation
should produce the same behavior.
None of the "fix_modify"_fix_modify.html options are relevant to this
fix. No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#4_15. No
+access by various "output commands"_Section_howto.html#howto_15. No
parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
This fix can only be used for 3d simulations and orthogonal
simlulation boxes. You must use periodic "boundary"_boundary.html
conditions with this fix.
[Related commands:]
"fix langevin"_fix_langevin.html, "fix dt/reset"_fix_dt_reset.html
[Default:] none
:line
:link(Duffy)
[(Duffy)] D M Duffy and A M Rutherford, J. Phys.: Condens. Matter, 19,
016207-016218 (2007).
:link(Rutherford)
[(Rutherford)] A M Rutherford and D M Duffy, J. Phys.:
Condens. Matter, 19, 496201-496210 (2007).
diff --git a/doc/fix_viscosity.html b/doc/fix_viscosity.html
index a864ba390..51eee268f 100644
--- a/doc/fix_viscosity.html
+++ b/doc/fix_viscosity.html
@@ -1,171 +1,171 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix viscosity command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID viscosity N vdim pdim Nbin keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>viscosity = style name of this fix command
<LI>N = perform momentum exchange every N steps
<LI>vdim = <I>x</I> or <I>y</I> or <I>z</I> = which momentum component to exchange
<LI>pdim = <I>x</I> or <I>y</I> or <I>z</I> = direction of momentum transfer
<LI>Nbin = # of layers in pdim direction (must be even number)
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>swap</I> or <I>target</I>
<PRE> <I>swap</I> value = Nswap = number of swaps to perform every N steps
<I>vtarget</I> value = V or INF = target velocity of swap partners (velocity units)
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all viscosity 100 x z 20
fix 1 all viscosity 50 x z 20 swap 2 vtarget 1.5
</PRE>
<P><B>Description:</B>
</P>
<P>Use the Muller-Plathe algorithm described in <A HREF = "#Muller-Plathe">this
paper</A> to exchange momenta between two particles in
different regions of the simulation box every N steps. This induces a
shear velocity profile in the system. As described below this enables
a viscosity of the fluid to be calculated. This algorithm is
sometimes called a reverse non-equilibrium MD (reverse NEMD) approach
to computing viscosity. This is because the usual NEMD approach is to
impose a shear velocity profile on the system and measure the response
via an off-diagonal component of the stress tensor, which is
proportional to the momentum flux. In the Muller-Plathe method, the
momentum flux is imposed, and the shear velocity profile is the
system's response.
</P>
<P>The simulation box is divided into <I>Nbin</I> layers in the <I>pdim</I>
direction, where the layer 1 is at the low end of that dimension and
the layer <I>Nbin</I> is at the high end. Every N steps, Nswap pairs of
atoms are chosen in the following manner. Only atoms in the fix group
are considered. Nswap atoms in layer 1 with positive velocity
components in the <I>vdim</I> direction closest to the target value <I>V</I> are
selected. Similarly, Nswap atoms in the "middle" layer (see below) with
negative velocity components in the <I>vdim</I> direction closest to the
negative of the target value <I>V</I> are selected. The two sets of Nswap
atoms are paired up and their <I>vdim</I> momenta components are swapped
within each pair. This resets their velocities, typically in opposite
directions. Over time, this induces a shear velocity profile in the
system which can be measured using commands such as the following,
which writes the profile to the file tmp.profile:
</P>
<PRE>fix f1 all ave/spatial 100 10 1000 z lower 0.05 vx &
file tmp.profile units reduced
</PRE>
<P>Note that by default, Nswap = 1 and vtarget = INF, though this can be
changed by the optional <I>swap</I> and <I>vtarget</I> keywords. When vtarget =
INF, one or more atoms with the most positive and negative velocity
components are selected. Setting these parameters appropriately, in
conjunction with the swap rate N, allows the momentum flux rate to be
adjusted across a wide range of values, and the momenta to be
exchanged in large chunks or more smoothly.
</P>
<P>The "middle" layer for momenta swapping is defined as the <I>Nbin</I>/2 + 1
layer. Thus if <I>Nbin</I> = 20, the two swapping layers are 1 and 11.
This should lead to a symmetric velocity profile since the two layers
are separated by the same distance in both directions in a periodic
sense. This is why <I>Nbin</I> is restricted to being an even number.
</P>
<P>As described below, the total momentum transferred by these velocity
swaps is computed by the fix and can be output. Dividing this
quantity by time and the cross-sectional area of the simulation box
yields a momentum flux. The ratio of momentum flux to the slope of
the shear velocity profile is the viscosity of the fluid, in
appopriate units. See the <A HREF = "#Muller-Plathe">Muller-Plathe paper</A> for
details.
</P>
<P>IMPORTANT NOTE: After equilibration, if the velocity profile you
observe is not linear, then you are likely swapping momentum too
frequently and are not in a regime of linear response. In this case
you cannot accurately infer a viscosity and should try increasing
the Nevery parameter.
</P>
<P>An alternative method for calculating a viscosity is to run a NEMD
-simulation, as described in <A HREF = "Section_howto.html#4_13">this section</A> of
-the manual. NEMD simulations deform the simmulation box via the <A HREF = "fix_deform.html">fix
-deform</A> command. Thus they cannot be run on a charged
-system using a <A HREF = "kspace_style.html">PPPM solver</A> since PPPM does not
-currently support non-orthogonal boxes. Using fix viscosity keeps the
-box orthogonal; thus it does not suffer from this limitation.
+simulation, as described in <A HREF = "Section_howto.html#howto_13">this section</A>
+of the manual. NEMD simulations deform the simmulation box via the
+<A HREF = "fix_deform.html">fix deform</A> command. Thus they cannot be run on a
+charged system using a <A HREF = "kspace_style.html">PPPM solver</A> since PPPM does
+not currently support non-orthogonal boxes. Using fix viscosity keeps
+the box orthogonal; thus it does not suffer from this limitation.
</P>
<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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global scalar which can be accessed by various
-<A HREF = "Section_howto.html#4_15">output commands</A>. The scalar is the
+<A HREF = "Section_howto.html#howto_15">output commands</A>. The scalar is the
cummulative momentum transferred between the bottom and middle of the
simulation box (in the <I>pdim</I> direction) is stored as a scalar
quantity by this fix. This quantity is zeroed when the fix is defined
and accumlates thereafter, once every N steps. The units of the
quantity are momentum = mass*velocity. The scalar value calculated by
this fix is "intensive".
</P>
<P>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>Swaps conserve both momentum and kinetic energy, even if the masses of
the swapped atoms are not equal. Thus you should not need to
thermostat the system. If you do use a thermostat, you may want to
apply it only to the non-swapped dimensions (other than <I>vdim</I>).
</P>
<P>LAMMPS does not check, but you should not use this fix to swap
velocities of atoms that are in constrained molecules, e.g. via <A HREF = "fix_shake.html">fix
shake</A> or <A HREF = "fix_rigid.html">fix rigid</A>. This is because
application of the constraints will alter the amount of transferred
momentum. You should, however, be able to use flexible molecules.
See the <A HREF = "#Maginn">Maginn paper</A> for an example of using this algorithm
in a computation of alcohol molecule properties.
</P>
<P>When running a simulation with large, massive particles or molecules
in a background solvent, you may want to only exchange momenta bewteen
solvent particles.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_ave_spatial.html">fix ave/spatial</A>, <A HREF = "fix_thermal_conductivity.html">fix
thermal/conductivity</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are swap = 1 and vtarget = INF.
</P>
<HR>
<A NAME = "Muller-Plathe"></A>
<P><B>(Muller-Plathe)</B> Muller-Plathe, Phys Rev E, 59, 4894-4898 (1999).
</P>
<A NAME = "Maginn"></A>
<P><B>(Maginn)</B> Kelkar, Rafferty, Maginn, Siepmann, Fluid Phase Equilibria,
260, 218-231 (2007).
</P>
</HTML>
diff --git a/doc/fix_viscosity.txt b/doc/fix_viscosity.txt
index f1cc3ccbf..3e3952687 100644
--- a/doc/fix_viscosity.txt
+++ b/doc/fix_viscosity.txt
@@ -1,156 +1,156 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix viscosity command :h3
[Syntax:]
fix ID group-ID viscosity N vdim pdim Nbin keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
viscosity = style name of this fix command :l
N = perform momentum exchange every N steps :l
vdim = {x} or {y} or {z} = which momentum component to exchange :l
pdim = {x} or {y} or {z} = direction of momentum transfer :l
Nbin = # of layers in pdim direction (must be even number) :l
zero or more keyword/value pairs may be appended :l
keyword = {swap} or {target} :l
{swap} value = Nswap = number of swaps to perform every N steps
{vtarget} value = V or INF = target velocity of swap partners (velocity units) :pre
:ule
[Examples:]
fix 1 all viscosity 100 x z 20
fix 1 all viscosity 50 x z 20 swap 2 vtarget 1.5 :pre
[Description:]
Use the Muller-Plathe algorithm described in "this
paper"_#Muller-Plathe to exchange momenta between two particles in
different regions of the simulation box every N steps. This induces a
shear velocity profile in the system. As described below this enables
a viscosity of the fluid to be calculated. This algorithm is
sometimes called a reverse non-equilibrium MD (reverse NEMD) approach
to computing viscosity. This is because the usual NEMD approach is to
impose a shear velocity profile on the system and measure the response
via an off-diagonal component of the stress tensor, which is
proportional to the momentum flux. In the Muller-Plathe method, the
momentum flux is imposed, and the shear velocity profile is the
system's response.
The simulation box is divided into {Nbin} layers in the {pdim}
direction, where the layer 1 is at the low end of that dimension and
the layer {Nbin} is at the high end. Every N steps, Nswap pairs of
atoms are chosen in the following manner. Only atoms in the fix group
are considered. Nswap atoms in layer 1 with positive velocity
components in the {vdim} direction closest to the target value {V} are
selected. Similarly, Nswap atoms in the "middle" layer (see below) with
negative velocity components in the {vdim} direction closest to the
negative of the target value {V} are selected. The two sets of Nswap
atoms are paired up and their {vdim} momenta components are swapped
within each pair. This resets their velocities, typically in opposite
directions. Over time, this induces a shear velocity profile in the
system which can be measured using commands such as the following,
which writes the profile to the file tmp.profile:
fix f1 all ave/spatial 100 10 1000 z lower 0.05 vx &
file tmp.profile units reduced :pre
Note that by default, Nswap = 1 and vtarget = INF, though this can be
changed by the optional {swap} and {vtarget} keywords. When vtarget =
INF, one or more atoms with the most positive and negative velocity
components are selected. Setting these parameters appropriately, in
conjunction with the swap rate N, allows the momentum flux rate to be
adjusted across a wide range of values, and the momenta to be
exchanged in large chunks or more smoothly.
The "middle" layer for momenta swapping is defined as the {Nbin}/2 + 1
layer. Thus if {Nbin} = 20, the two swapping layers are 1 and 11.
This should lead to a symmetric velocity profile since the two layers
are separated by the same distance in both directions in a periodic
sense. This is why {Nbin} is restricted to being an even number.
As described below, the total momentum transferred by these velocity
swaps is computed by the fix and can be output. Dividing this
quantity by time and the cross-sectional area of the simulation box
yields a momentum flux. The ratio of momentum flux to the slope of
the shear velocity profile is the viscosity of the fluid, in
appopriate units. See the "Muller-Plathe paper"_#Muller-Plathe for
details.
IMPORTANT NOTE: After equilibration, if the velocity profile you
observe is not linear, then you are likely swapping momentum too
frequently and are not in a regime of linear response. In this case
you cannot accurately infer a viscosity and should try increasing
the Nevery parameter.
An alternative method for calculating a viscosity is to run a NEMD
-simulation, as described in "this section"_Section_howto.html#4_13 of
-the manual. NEMD simulations deform the simmulation box via the "fix
-deform"_fix_deform.html command. Thus they cannot be run on a charged
-system using a "PPPM solver"_kspace_style.html since PPPM does not
-currently support non-orthogonal boxes. Using fix viscosity keeps the
-box orthogonal; thus it does not suffer from this limitation.
+simulation, as described in "this section"_Section_howto.html#howto_13
+of the manual. NEMD simulations deform the simmulation box via the
+"fix deform"_fix_deform.html command. Thus they cannot be run on a
+charged system using a "PPPM solver"_kspace_style.html since PPPM does
+not currently support non-orthogonal boxes. Using fix viscosity keeps
+the box orthogonal; thus it does not suffer from this limitation.
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global scalar which can be accessed by various
-"output commands"_Section_howto.html#4_15. The scalar is the
+"output commands"_Section_howto.html#howto_15. The scalar is the
cummulative momentum transferred between the bottom and middle of the
simulation box (in the {pdim} direction) is stored as a scalar
quantity by this fix. This quantity is zeroed when the fix is defined
and accumlates thereafter, once every N steps. The units of the
quantity are momentum = mass*velocity. The scalar value calculated by
this fix is "intensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
Swaps conserve both momentum and kinetic energy, even if the masses of
the swapped atoms are not equal. Thus you should not need to
thermostat the system. If you do use a thermostat, you may want to
apply it only to the non-swapped dimensions (other than {vdim}).
LAMMPS does not check, but you should not use this fix to swap
velocities of atoms that are in constrained molecules, e.g. via "fix
shake"_fix_shake.html or "fix rigid"_fix_rigid.html. This is because
application of the constraints will alter the amount of transferred
momentum. You should, however, be able to use flexible molecules.
See the "Maginn paper"_#Maginn for an example of using this algorithm
in a computation of alcohol molecule properties.
When running a simulation with large, massive particles or molecules
in a background solvent, you may want to only exchange momenta bewteen
solvent particles.
[Related commands:]
"fix ave/spatial"_fix_ave_spatial.html, "fix
thermal/conductivity"_fix_thermal_conductivity.html
[Default:]
The option defaults are swap = 1 and vtarget = INF.
:line
:link(Muller-Plathe)
[(Muller-Plathe)] Muller-Plathe, Phys Rev E, 59, 4894-4898 (1999).
:link(Maginn)
[(Maginn)] Kelkar, Rafferty, Maginn, Siepmann, Fluid Phase Equilibria,
260, 218-231 (2007).
diff --git a/doc/fix_viscous.html b/doc/fix_viscous.html
index 3bc722947..112301acf 100644
--- a/doc/fix_viscous.html
+++ b/doc/fix_viscous.html
@@ -1,131 +1,131 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix viscous command
</H3>
<H3>fix viscous/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID viscous gamma keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>viscous = style name of this fix command
<LI>gamma = damping coefficient (force/velocity units)
<LI>zero or more keyword/value pairs may be appended
<PRE>keyword = <I>scale</I>
<I>scale</I> values = type ratio
type = atom type (1-N)
ratio = factor to scale the damping coefficient by
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 flow viscous 0.1
fix 1 damp viscous 0.5 scale 3 2.5
</PRE>
<P><B>Description:</B>
</P>
<P>Add a viscous damping force to atoms in the group that is proportional
to the velocity of the atom. The added force can be thought of as a
frictional interaction with implicit solvent, i.e. the no-slip Stokes
drag on a spherical particle. In granular simulations this can be
useful for draining the kinetic energy from the system in a controlled
fashion. If used without additional thermostatting (to add kinetic
energy to the system), it has the effect of slowly (or rapidly)
freezing the system; hence it can also be used as a simple energy
minimization technique.
</P>
<P>The damping force F is given by F = - gamma * velocity. The larger
the coefficient, the faster the kinetic energy is reduced. If the
optional keyword <I>scale</I> is used, gamma can scaled up or down by the
specified factor for atoms of that type. It can be used multiple
times to adjust gamma for several atom types.
</P>
<P>IMPORTANT NOTE: You should specify gamma in force/velocity units.
This is not the same as mass/time units, at least for some of the
LAMMPS <A HREF = "units.html">units</A> options like "real" or "metal" that are not
self-consistent.
</P>
<P>In a Brownian dynamics context, gamma = Kb T / D, where Kb =
Boltzmann's constant, T = temperature, and D = particle diffusion
coefficient. D can be written as Kb T / (3 pi eta d), where eta =
dynamic viscosity of the frictional fluid and d = diameter of
particle. This means gamma = 3 pi eta d, and thus is proportional to
the viscosity of the fluid and the particle diameter.
</P>
<P>In the current implementation, rather than have the user specify a
viscosity, gamma is specified directly in force/velocity units. If
needed, gamma can be adjusted for atoms of different sizes
(i.e. sigma) by using the <I>scale</I> keyword.
</P>
<P>Note that Brownian dynamics models also typically include a randomized
force term to thermostat the system at a chosen temperature. The <A HREF = "fix_langevin.html">fix
langevin</A> command does this. It has the same
viscous damping term as fix viscous and adds a random force to each
atom. Hence if using fix <I>langevin</I> you do not typically need to use
fix <I>viscous</I>. Also note that the gamma of fix viscous is related to
the damping parameter of <A HREF = "fix_langevin.html">fix langevin</A>, except that
the units of gamma are force/velocity and the units of damp are time,
so that it can more easily be used as a thermostat.
</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">this section</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#2_3">Making LAMMPS</A> section for more info.
+<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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</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>. 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#4_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.
+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.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command. This fix should only
be used with damped dynamics minimizers that allow for
non-conservative forces. See the <A HREF = "min_style.html">min_style</A> command
for details.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_langevin.html">fix langevin</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_viscous.txt b/doc/fix_viscous.txt
index 7c2262a34..49002a439 100644
--- a/doc/fix_viscous.txt
+++ b/doc/fix_viscous.txt
@@ -1,120 +1,120 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix viscous command :h3
fix viscous/cuda command :h3
[Syntax:]
fix ID group-ID viscous gamma keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
viscous = style name of this fix command :l
gamma = damping coefficient (force/velocity units) :l
zero or more keyword/value pairs may be appended :l
keyword = {scale}
{scale} values = type ratio
type = atom type (1-N)
ratio = factor to scale the damping coefficient by :pre
:ule
[Examples:]
fix 1 flow viscous 0.1
fix 1 damp viscous 0.5 scale 3 2.5 :pre
[Description:]
Add a viscous damping force to atoms in the group that is proportional
to the velocity of the atom. The added force can be thought of as a
frictional interaction with implicit solvent, i.e. the no-slip Stokes
drag on a spherical particle. In granular simulations this can be
useful for draining the kinetic energy from the system in a controlled
fashion. If used without additional thermostatting (to add kinetic
energy to the system), it has the effect of slowly (or rapidly)
freezing the system; hence it can also be used as a simple energy
minimization technique.
The damping force F is given by F = - gamma * velocity. The larger
the coefficient, the faster the kinetic energy is reduced. If the
optional keyword {scale} is used, gamma can scaled up or down by the
specified factor for atoms of that type. It can be used multiple
times to adjust gamma for several atom types.
IMPORTANT NOTE: You should specify gamma in force/velocity units.
This is not the same as mass/time units, at least for some of the
LAMMPS "units"_units.html options like "real" or "metal" that are not
self-consistent.
In a Brownian dynamics context, gamma = Kb T / D, where Kb =
Boltzmann's constant, T = temperature, and D = particle diffusion
coefficient. D can be written as Kb T / (3 pi eta d), where eta =
dynamic viscosity of the frictional fluid and d = diameter of
particle. This means gamma = 3 pi eta d, and thus is proportional to
the viscosity of the fluid and the particle diameter.
In the current implementation, rather than have the user specify a
viscosity, gamma is specified directly in force/velocity units. If
needed, gamma can be adjusted for atoms of different sizes
(i.e. sigma) by using the {scale} keyword.
Note that Brownian dynamics models also typically include a randomized
force term to thermostat the system at a chosen temperature. The "fix
langevin"_fix_langevin.html command does this. It has the same
viscous damping term as fix viscous and adds a random force to each
atom. Hence if using fix {langevin} you do not typically need to use
fix {viscous}. Also note that the gamma of fix viscous is related to
the damping parameter of "fix langevin"_fix_langevin.html, except that
the units of gamma are force/velocity and the units of damp are time,
so that it can more easily be used as a thermostat.
:line
Styles with a {cuda} 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
"this section"_Section_accelerate.html of the manual. The accelerated
styles take the same arguments and should produce the same results,
except for round-off and precision issues.
These accelerated styles are part of the "user-cuda" package. They
are only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command. This fix should only
be used with damped dynamics minimizers that allow for
non-conservative forces. See the "min_style"_min_style.html command
for details.
[Restrictions:] none
[Related commands:]
"fix langevin"_fix_langevin.html
[Default:] none
diff --git a/doc/fix_wall.html b/doc/fix_wall.html
index f77641891..8bc4f23aa 100644
--- a/doc/fix_wall.html
+++ b/doc/fix_wall.html
@@ -1,249 +1,249 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix wall/lj93 command
</H3>
<H3>fix wall/lj126 command
</H3>
<H3>fix wall/colloid command
</H3>
<H3>fix wall/harmonic command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID style face args ... keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>style = <I>wall/lj93</I> or <I>wall/lj126</I> or <I>wall/colloid</I> or <I>wall/harmonic</I>
<LI>one or more face/arg pairs may be appended
<LI>face = <I>xlo</I> or <I>xhi</I> or <I>ylo</I> or <I>yhi</I> or <I>zlo</I> or <I>zhi</I>
<PRE> args = coord epsilon sigma cutoff
coord = position of wall = EDGE or constant or variable
EDGE = current lo or hi edge of simulation box
constant = number like 0.0 or -30.0 (distance units)
variable = <A HREF = "variable.html">equal-style variable</A> like v_x or v_wiggle
epsilon = strength factor for wall-particle interaction (energy or energy/distance^2 units)
sigma = size factor for wall-particle interaction (distance units)
cutoff = distance from wall at which wall-particle interaction is cut off (distance units)
</PRE>
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>units</I>
<PRE> <I>units</I> value = <I>lattice</I> or <I>box</I>
<I>lattice</I> = the wall position is defined in lattice units
<I>box</I> = the wall position is defined in simulation box units
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix wallhi all wall/lj93 xlo -1.0 1.0 1.0 2.5 units box
fix wallhi all wall/lj93 xhi EDGE 1.0 1.0 2.5
fix wallhi all wall/lj126 v_wiggle 23.2 1.0 1.0 2.5
fix zwalls all wall/colloid zlo 0.0 1.0 1.0 0.858 zhi 40.0 1.0 1.0 0.858
</PRE>
<P><B>Description:</B>
</P>
<P>Bound the simulation domain on one or more of its faces with a flat
wall that interacts with the atoms in the group by generating a force
on the atom in a direction perpendicular to the wall. The energy of
wall-particle interactions depends on the style.
</P>
<P>For style <I>wall/lj93</I>, the energy E is given by the 9/3 potential:
</P>
<CENTER><IMG SRC = "Eqs/fix_wall_lj93.jpg">
</CENTER>
<P>For style <I>wall/lj126</I>, the energy E is given by the 12/6 potential:
</P>
<CENTER><IMG SRC = "Eqs/pair_lj.jpg">
</CENTER>
<P>For style <I>wall/colloid</I>, the energy E is given by an integrated form of
the <A HREF = "pair_colloid.html">pair_style colloid</A> potential:
</P>
<CENTER><IMG SRC = "Eqs/fix_wall_colloid.jpg">
</CENTER>
<P>For style <I>wall/harmonic</I>, the energy E is given by a harmonic spring
potential:
</P>
<CENTER><IMG SRC = "Eqs/fix_wall_harmonic.jpg">
</CENTER>
<P>In all cases, <I>r</I> is the distance from the particle to the wall at
position <I>coord</I>, and Rc is the <I>cutoff</I> distance at which the
particle and wall no longer interact. The energy of the wall
potential is shifted so that the wall-particle interaction energy is
0.0 at the cutoff distance.
</P>
<P>Up to 6 walls or faces can be specified in a single command: <I>xlo</I>,
<I>xhi</I>, <I>ylo</I>, <I>yhi</I>, <I>zlo</I>, <I>zhi</I>. A <I>lo</I> face interacts with
particles near the lower side of the simulation box in that dimension.
A <I>hi</I> face interacts with particles near the upper side of the
simulation box in that dimension.
</P>
<P>The position of each wall can be specified in one of 3 ways: as the
EDGE of the simulation box, as a constant value, or as a variable. If
EDGE is used, then the corresponding boundary of the current
simulation box is used. If a numeric constant is specified then the
wall is placed at that position in the appropriate dimension (x, y, or
z). In both the EDGE and constant cases, the wall will never move.
If the wall position is a variable, it should be specified as v_name,
where name is an <A HREF = "variable.html">equal-style variable</A> name. In this
case the variable is evaluated each timestep and the result becomes
the current position of the reflecting wall. Equal-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. Thus it is easy to
specify a time-dependent wall position. See examples below.
</P>
<P>For the <I>wall/lj93</I> and <I>wall/lj126</I> styles, <I>epsilon</I> and <I>sigma</I> are
the usual Lennard-Jones parameters, which determine the strength and
size of the particle as it interacts with the wall. Epsilon has
energy units. Note that this <I>epsilon</I> and <I>sigma</I> may be different
than any <I>epsilon</I> or <I>sigma</I> values defined for a pair style that
computes particle-particle interactions.
</P>
<P>The <I>wall/lj93</I> interaction is derived by integrating over a 3d
half-lattice of Lennard-Jones 12/6 particles. The <I>wall/lj126</I>
interaction is effectively a harder, more repulsive wall interaction.
</P>
<P>For the <I>wall/colloid</I> style, <I>epsilon</I> is effectively a Hamaker
constant with energy units for the colloid-wall interaction, <I>R</I> is
the radius of the colloid particle, <I>D</I> is the distance from the
surface of the colloid particle to the wall (r-R), and <I>sigma</I> is the
size of a constituent LJ particle inside the colloid particle. Note
that the cutoff distance Rc in this case is the distance from the
colloid particle center to the wall.
</P>
<P>The <I>wall/colloid</I> interaction is derived by integrating over
constituent LJ particles of size <I>sigma</I> within the colloid particle
and a 3d half-lattice of Lennard-Jones 12/6 particles of size <I>sigma</I>
in the wall.
</P>
<P>For the <I>wall/harmonic</I> style, <I>epsilon</I> is effectively the spring
constant K, and has units (energy/distance^2). The input parameter
<I>sigma</I> is ignored. The minimum energy position of the harmonic
spring is at the <I>cutoff</I>. This is a repulsive-only spring since the
interaction is truncated at the <I>cutoff</I>
</P>
<P>IMPORTANT NOTE: For all of the styles, you must insure that r is
always > 0 for all particles in the group, or LAMMPS will generate an
error. This means you cannot start your simulation with particles at
the wall position <I>coord</I> (r = 0) or with particles on the wrong side
of the wall (r < 0). For the <I>wall/lj93</I> and <I>wall/lj126</I> styles, the
energy of the wall/particle interaction (and hence the force on the
particle) blows up as r -> 0. The <I>wall/colloid</I> style is even more
restrictive, since the energy blows up as D = r-R -> 0. This means
the finite-size particles of radius R must be a distance larger than R
from the wall position <I>coord</I>. The <I>harmonic</I> style is a softer
potential and does not blow up as r -> 0, but you must use a large
enough <I>epsilon</I> that particles always reamin on the correct side of
the wall (r > 0).
</P>
<P>The <I>units</I> keyword determines the meaning of the distance units used
to define a wall position, but only when a numeric constant is used.
It is not relevant when EDGE or a variable is used to specify a face
position.
</P>
<P>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 spacings.
</P>
<HR>
<P>Here are examples of variable definitions that move the wall position
in a time-dependent fashion using equal-style
<A HREF = "variable.html">variables</A>.
</P>
<PRE>variable ramp equal ramp(0,10)
fix 1 all wall xlo v_ramp 1.0 1.0 2.5
</PRE>
<PRE>variable linear equal vlinear(0,20)
fix 1 all wall xlo v_linear 1.0 1.0 2.5
</PRE>
<PRE>variable wiggle equal swiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5
</PRE>
<PRE>variable wiggle equal cwiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5
</PRE>
<P>The ramp(lo,hi) function adjusts the wall position linearly from lo to
hi over the course of a run. The linear(c0,velocity) function does
something similar using the equation position = c0 + velocity*delta,
where delta is the elapsed time.
</P>
<P>The swiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, where omega = 2 PI
/ period:
</P>
<PRE>position = c0 + A sin(omega*delta)
</PRE>
<P>The cwiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, which will have an
initial wall velocity of 0.0, and thus may impose a gentler
perturbation on the particles:
</P>
<PRE>position = c0 + A (1 - cos(omega*delta))
</PRE>
<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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy of interaction between atoms and each wall to
the system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>.
</P>
<P>This fix computes a global scalar energy and a global vector of
-forces, which can be accessed by various <A HREF = "Section_howto.html#4_15">output
-commands</A>. Note that the scalar energy is the
-sum of interactions with all defined walls. If you want the energy on
-a per-wall basis, you need to use multiple fix wall commands. The
-length of the vector is equal to the number of walls defined by the
-fix. Each vector value is the normal force on a specific wall. Note
-that an outward force on a wall will be a negative value for <I>lo</I>
-walls and a positive value for <I>hi</I> walls. The scalar and vector
-values calculated by this fix are "extensive".
+forces, which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. Note that the scalar energy is
+the sum of interactions with all defined walls. If you want the
+energy on a per-wall basis, you need to use multiple fix wall
+commands. The length of the vector is equal to the number of walls
+defined by the fix. Each vector value is the normal force on a
+specific wall. Note that an outward force on a wall will be a
+negative value for <I>lo</I> walls and a positive value for <I>hi</I> walls.
+The scalar and vector values calculated by this fix are "extensive".
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command.
</P>
<P>IMPORTANT NOTE: If you want the atom/wall interaction energy to be
included in the total potential energy of the system (the quantity
being minimized), you MUST enable the <A HREF = "fix_modify.html">fix_modify</A>
<I>energy</I> option for this fix.
</P>
<P><B>Restrictions:</B>
</P>
<P>Any dimension (xyz) that has a wall must be non-periodic.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_wall_reflect.html">fix wall/reflect</A>,
<A HREF = "fix_wall_gran.html">fix wall/gran</A>,
<A HREF = "fix_wall_region.html">fix wall/region</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are no velocity, no wiggle, and units = lattice.
</P>
</HTML>
diff --git a/doc/fix_wall.txt b/doc/fix_wall.txt
index c9a25f106..a3614c243 100644
--- a/doc/fix_wall.txt
+++ b/doc/fix_wall.txt
@@ -1,233 +1,233 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix wall/lj93 command :h3
fix wall/lj126 command :h3
fix wall/colloid command :h3
fix wall/harmonic command :h3
[Syntax:]
fix ID group-ID style face args ... keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
style = {wall/lj93} or {wall/lj126} or {wall/colloid} or {wall/harmonic} :l
one or more face/arg pairs may be appended :l
face = {xlo} or {xhi} or {ylo} or {yhi} or {zlo} or {zhi} :l
args = coord epsilon sigma cutoff
coord = position of wall = EDGE or constant or variable
EDGE = current lo or hi edge of simulation box
constant = number like 0.0 or -30.0 (distance units)
variable = "equal-style variable"_variable.html like v_x or v_wiggle
epsilon = strength factor for wall-particle interaction (energy or energy/distance^2 units)
sigma = size factor for wall-particle interaction (distance units)
cutoff = distance from wall at which wall-particle interaction is cut off (distance units) :pre
zero or more keyword/value pairs may be appended :l
keyword = {units} :l
{units} value = {lattice} or {box}
{lattice} = the wall position is defined in lattice units
{box} = the wall position is defined in simulation box units :pre
:ule
[Examples:]
fix wallhi all wall/lj93 xlo -1.0 1.0 1.0 2.5 units box
fix wallhi all wall/lj93 xhi EDGE 1.0 1.0 2.5
fix wallhi all wall/lj126 v_wiggle 23.2 1.0 1.0 2.5
fix zwalls all wall/colloid zlo 0.0 1.0 1.0 0.858 zhi 40.0 1.0 1.0 0.858 :pre
[Description:]
Bound the simulation domain on one or more of its faces with a flat
wall that interacts with the atoms in the group by generating a force
on the atom in a direction perpendicular to the wall. The energy of
wall-particle interactions depends on the style.
For style {wall/lj93}, the energy E is given by the 9/3 potential:
:c,image(Eqs/fix_wall_lj93.jpg)
For style {wall/lj126}, the energy E is given by the 12/6 potential:
:c,image(Eqs/pair_lj.jpg)
For style {wall/colloid}, the energy E is given by an integrated form of
the "pair_style colloid"_pair_colloid.html potential:
:c,image(Eqs/fix_wall_colloid.jpg)
For style {wall/harmonic}, the energy E is given by a harmonic spring
potential:
:c,image(Eqs/fix_wall_harmonic.jpg)
In all cases, {r} is the distance from the particle to the wall at
position {coord}, and Rc is the {cutoff} distance at which the
particle and wall no longer interact. The energy of the wall
potential is shifted so that the wall-particle interaction energy is
0.0 at the cutoff distance.
Up to 6 walls or faces can be specified in a single command: {xlo},
{xhi}, {ylo}, {yhi}, {zlo}, {zhi}. A {lo} face interacts with
particles near the lower side of the simulation box in that dimension.
A {hi} face interacts with particles near the upper side of the
simulation box in that dimension.
The position of each wall can be specified in one of 3 ways: as the
EDGE of the simulation box, as a constant value, or as a variable. If
EDGE is used, then the corresponding boundary of the current
simulation box is used. If a numeric constant is specified then the
wall is placed at that position in the appropriate dimension (x, y, or
z). In both the EDGE and constant cases, the wall will never move.
If the wall position is a variable, it should be specified as v_name,
where name is an "equal-style variable"_variable.html name. In this
case the variable is evaluated each timestep and the result becomes
the current position of the reflecting wall. Equal-style variables
can specify formulas with various mathematical functions, and include
"thermo_style"_thermo_style.html command keywords for the simulation
box parameters and timestep and elapsed time. Thus it is easy to
specify a time-dependent wall position. See examples below.
For the {wall/lj93} and {wall/lj126} styles, {epsilon} and {sigma} are
the usual Lennard-Jones parameters, which determine the strength and
size of the particle as it interacts with the wall. Epsilon has
energy units. Note that this {epsilon} and {sigma} may be different
than any {epsilon} or {sigma} values defined for a pair style that
computes particle-particle interactions.
The {wall/lj93} interaction is derived by integrating over a 3d
half-lattice of Lennard-Jones 12/6 particles. The {wall/lj126}
interaction is effectively a harder, more repulsive wall interaction.
For the {wall/colloid} style, {epsilon} is effectively a Hamaker
constant with energy units for the colloid-wall interaction, {R} is
the radius of the colloid particle, {D} is the distance from the
surface of the colloid particle to the wall (r-R), and {sigma} is the
size of a constituent LJ particle inside the colloid particle. Note
that the cutoff distance Rc in this case is the distance from the
colloid particle center to the wall.
The {wall/colloid} interaction is derived by integrating over
constituent LJ particles of size {sigma} within the colloid particle
and a 3d half-lattice of Lennard-Jones 12/6 particles of size {sigma}
in the wall.
For the {wall/harmonic} style, {epsilon} is effectively the spring
constant K, and has units (energy/distance^2). The input parameter
{sigma} is ignored. The minimum energy position of the harmonic
spring is at the {cutoff}. This is a repulsive-only spring since the
interaction is truncated at the {cutoff}
IMPORTANT NOTE: For all of the styles, you must insure that r is
always > 0 for all particles in the group, or LAMMPS will generate an
error. This means you cannot start your simulation with particles at
the wall position {coord} (r = 0) or with particles on the wrong side
of the wall (r < 0). For the {wall/lj93} and {wall/lj126} styles, the
energy of the wall/particle interaction (and hence the force on the
particle) blows up as r -> 0. The {wall/colloid} style is even more
restrictive, since the energy blows up as D = r-R -> 0. This means
the finite-size particles of radius R must be a distance larger than R
from the wall position {coord}. The {harmonic} style is a softer
potential and does not blow up as r -> 0, but you must use a large
enough {epsilon} that particles always reamin on the correct side of
the wall (r > 0).
The {units} keyword determines the meaning of the distance units used
to define a wall position, but only when a numeric constant is used.
It is not relevant when EDGE or a variable is used to specify a face
position.
A {box} value selects standard distance units as defined by the
"units"_units.html command, e.g. Angstroms for units = real or metal.
A {lattice} value means the distance units are in lattice spacings.
The "lattice"_lattice.html command must have been previously used to
define the lattice spacings.
:line
Here are examples of variable definitions that move the wall position
in a time-dependent fashion using equal-style
"variables"_variable.html.
variable ramp equal ramp(0,10)
fix 1 all wall xlo v_ramp 1.0 1.0 2.5 :pre
variable linear equal vlinear(0,20)
fix 1 all wall xlo v_linear 1.0 1.0 2.5 :pre
variable wiggle equal swiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 :pre
variable wiggle equal cwiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 :pre
The ramp(lo,hi) function adjusts the wall position linearly from lo to
hi over the course of a run. The linear(c0,velocity) function does
something similar using the equation position = c0 + velocity*delta,
where delta is the elapsed time.
The swiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, where omega = 2 PI
/ period:
position = c0 + A sin(omega*delta) :pre
The cwiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, which will have an
initial wall velocity of 0.0, and thus may impose a gentler
perturbation on the particles:
position = c0 + A (1 - cos(omega*delta)) :pre
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy of interaction between atoms and each wall to
the system's potential energy as part of "thermodynamic
output"_thermo_style.html.
This fix computes a global scalar energy and a global vector of
forces, which can be accessed by various "output
-commands"_Section_howto.html#4_15. Note that the scalar energy is the
-sum of interactions with all defined walls. If you want the energy on
-a per-wall basis, you need to use multiple fix wall commands. The
-length of the vector is equal to the number of walls defined by the
-fix. Each vector value is the normal force on a specific wall. Note
-that an outward force on a wall will be a negative value for {lo}
-walls and a positive value for {hi} walls. The scalar and vector
-values calculated by this fix are "extensive".
+commands"_Section_howto.html#howto_15. Note that the scalar energy is
+the sum of interactions with all defined walls. If you want the
+energy on a per-wall basis, you need to use multiple fix wall
+commands. The length of the vector is equal to the number of walls
+defined by the fix. Each vector value is the normal force on a
+specific wall. Note that an outward force on a wall will be a
+negative value for {lo} walls and a positive value for {hi} walls.
+The scalar and vector values calculated by this fix are "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command.
IMPORTANT NOTE: If you want the atom/wall interaction energy to be
included in the total potential energy of the system (the quantity
being minimized), you MUST enable the "fix_modify"_fix_modify.html
{energy} option for this fix.
[Restrictions:]
Any dimension (xyz) that has a wall must be non-periodic.
[Related commands:]
"fix wall/reflect"_fix_wall_reflect.html,
"fix wall/gran"_fix_wall_gran.html,
"fix wall/region"_fix_wall_region.html
[Default:]
The option defaults are no velocity, no wiggle, and units = lattice.
diff --git a/doc/fix_wall_gran.html b/doc/fix_wall_gran.html
index 12e1f2406..5620f7fa0 100644
--- a/doc/fix_wall_gran.html
+++ b/doc/fix_wall_gran.html
@@ -1,176 +1,176 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix wall/gran command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID wall/gran Kn Kt gamma_n gamma_t xmu dampflag wallstyle args keyword values ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>wall/gran = style name of this fix command
<LI>Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below)
<LI>Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below)
<LI>gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below)
<LI>gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below)
<LI>xmu = static yield criterion (unitless fraction between 0.0 and 1.0)
<LI>dampflag = 0 or 1 if tangential damping force is excluded or included
<LI>wallstyle = <I>xplane</I> or <I>yplane</I> or <I>zplane</I> or <I>zcylinder</I>
<LI>args = list of arguments for a particular style
<PRE> <I>xplane</I> or <I>yplane</I> or <I>zplane</I> args = lo hi
lo,hi = position of lower and upper plane (distance units), either can be NULL)
<I>zcylinder</I> args = radius
radius = cylinder radius (distance units)
</PRE>
<LI>zero or more keyword/value pairs may be appended to args
<LI>keyword = <I>wiggle</I> or <I>shear</I>
<PRE> <I>wiggle</I> values = dim amplitude period
dim = <I>x</I> or <I>y</I> or <I>z</I>
amplitude = size of oscillation (distance units)
period = time of oscillation (time units)
<I>shear</I> values = dim vshear
dim = <I>x</I> or <I>y</I> or <I>z</I>
vshear = magnitude of shear velocity (velocity units)
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix 1 all wall/gran 200000.0 NULL 50.0 NULL 0.5 0 xplane -10.0 10.0
fix 1 all wall/gran 200000.0 NULL 50.0 NULL 0.5 0 zplane 0.0 NULL
fix 2 all wall/gran 100000.0 20000.0 50.0 30.0 0.5 1 zcylinder 15.0 wiggle z 3.0 2.0
</PRE>
<P><B>Description:</B>
</P>
<P>Bound the simulation domain of a granular system with a frictional
wall. All particles in the group interact with the wall when they are
close enough to touch it.
</P>
<P>The first set of parameters (Kn, Kt, gamma_n, gamma_t, xmu, and
dampflag) have the same meaning as those specified with the
<A HREF = "pair_gran.html">pair_style granular</A> force fields. This means a NULL
can be used for either Kt or gamma_t as described on that page. If a
NULL is used for Kt, then a default value is used where Kt = 2/7 Kn.
If a NULL is used for gamma_t, then a default value is used where
gamma_t = 1/2 gamma_n.
</P>
<P>The nature of the wall/particle interactions are determined by which
pair_style is used in your input script: <I>hooke</I>, <I>hooke/history</I>, or
<I>hertz/history</I>. The equation for the force between the wall and
particles touching it is the same as the corresponding equation on the
<A HREF = "pair_gran.html">pair_style granular</A> doc page, in the limit of one of
the two particles going to infinite radius and mass (flat wall).
I.e. delta = radius - r = overlap of particle with wall, m_eff = mass
of particle, and sqrt(RiRj/Ri+Rj) becomes sqrt(radius of particle).
The units for Kn, Kt, gamma_n, and gamma_t are as described on that
doc page. The meaning of xmu and dampflag are also as described on
that page. Note that you can choose different values for these 6
wall/particle coefficients than for particle/particle interactions, if
you wish your wall to interact differently with the particles, e.g. if
the wall is a different material.
</P>
<P>IMPORTANT NOTE: As discussed on the doc page for <A HREF = "pair_gran.html">pair_style
granular</A>, versions of LAMMPS before 9Jan09 used a
different equation for Hertzian interactions. This means Hertizian
wall/particle interactions have also changed. They now include a
sqrt(radius) term which was not present before. Also the previous
versions used Kn and Kt from the pairwise interaction and hardwired
dampflag to 1, rather than letting them be specified directly. This
means you can set the values of the wall/particle coefficients
appropriately in the current code to reproduce the results of a
prevoius Hertzian monodisperse calculation. For example, for the
common case of a monodisperse system with particles of diameter 1, Kn,
Kt, gamma_n, and gamma_s should be set sqrt(2.0) larger than they were
previously.
</P>
<P>The <I>wallstyle</I> can be planar or cylindrical. The 3 planar options
specify a pair of walls in a dimension. Wall positions are given by
<I>lo</I> and <I>hi</I>. Either of the values can be specified as NULL if a
single wall is desired. For a <I>zcylinder</I> wallstyle, the cylinder's
axis is at x = y = 0.0, and the radius of the cylinder is specified.
</P>
<P>Optionally, the wall can be moving, if the <I>wiggle</I> or <I>shear</I>
keywords are appended. Both keywords cannot be used together.
</P>
<P>For the <I>wiggle</I> keyword, the wall oscillates sinusoidally, similar to
the oscillations of particles which can be specified by the
<A HREF = "fix_move.html">fix_move</A> command. This is useful in packing
simulations of granular particles. The arguments to the <I>wiggle</I>
keyword specify a dimension for the motion, as well as it's
<I>amplitude</I> and <I>period</I>. Note that if the dimension is in the plane
of the wall, this is effectively a shearing motion. If the dimension
is perpendicular to the wall, it is more of a shaking motion. A
<I>zcylinder</I> wall can only be wiggled in the z dimension.
</P>
<P>Each timestep, the position of a wiggled wall in the appropriate <I>dim</I>
is set according to this equation:
</P>
<PRE>position = coord + A - A cos (omega * delta)
</PRE>
<P>where <I>coord</I> is the specified initial position of the wall, <I>A</I> is
the <I>amplitude</I>, <I>omega</I> is 2 PI / <I>period</I>, and <I>delta</I> is the time
elapsed since the fix was specified. The velocity of the wall is set
to the derivative of this expression.
</P>
<P>For the <I>shear</I> keyword, the wall moves continuously in the specified
dimension with velocity <I>vshear</I>. The dimension must be tangential to
walls with a planar <I>wallstyle</I>, e.g. in the <I>y</I> or <I>z</I> directions for
an <I>xplane</I> wall. For <I>zcylinder</I> walls, a dimension of <I>z</I> means the
cylinder is moving in the z-direction along it's axis. A dimension of
<I>x</I> or <I>y</I> means the cylinder is spinning around the z-axis, either in
the clockwise direction for <I>vshear</I> > 0 or counter-clockwise for
<I>vshear</I> < 0. In this case, <I>vshear</I> is the tangential velocity of
the wall at whatever <I>radius</I> has been defined.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>This fix writes the shear friction state of atoms interacting with the
wall to <A HREF = "restart.html">binary restart files</A>, so that a simulation can
continue correctly if granular potentials with shear "history" effects
are being used. 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#4_15">output commands</A>. No
+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 "granular" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>Any dimension (xyz) that has a granular wall must be non-periodic.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_move.html">fix_move</A>, <A HREF = "pair_gran.html">pair_style granular</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_wall_gran.txt b/doc/fix_wall_gran.txt
index 990b96a43..f3bf272f0 100644
--- a/doc/fix_wall_gran.txt
+++ b/doc/fix_wall_gran.txt
@@ -1,157 +1,157 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix wall/gran command :h3
[Syntax:]
fix ID group-ID wall/gran Kn Kt gamma_n gamma_t xmu dampflag wallstyle args keyword values ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
wall/gran = style name of this fix command :l
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below) :l
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below) :l
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below) :l
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below) :l
xmu = static yield criterion (unitless fraction between 0.0 and 1.0) :l
dampflag = 0 or 1 if tangential damping force is excluded or included :l
wallstyle = {xplane} or {yplane} or {zplane} or {zcylinder} :l
args = list of arguments for a particular style :l
{xplane} or {yplane} or {zplane} args = lo hi
lo,hi = position of lower and upper plane (distance units), either can be NULL)
{zcylinder} args = radius
radius = cylinder radius (distance units) :pre
zero or more keyword/value pairs may be appended to args :l
keyword = {wiggle} or {shear} :l
{wiggle} values = dim amplitude period
dim = {x} or {y} or {z}
amplitude = size of oscillation (distance units)
period = time of oscillation (time units)
{shear} values = dim vshear
dim = {x} or {y} or {z}
vshear = magnitude of shear velocity (velocity units) :pre
:ule
[Examples:]
fix 1 all wall/gran 200000.0 NULL 50.0 NULL 0.5 0 xplane -10.0 10.0
fix 1 all wall/gran 200000.0 NULL 50.0 NULL 0.5 0 zplane 0.0 NULL
fix 2 all wall/gran 100000.0 20000.0 50.0 30.0 0.5 1 zcylinder 15.0 wiggle z 3.0 2.0 :pre
[Description:]
Bound the simulation domain of a granular system with a frictional
wall. All particles in the group interact with the wall when they are
close enough to touch it.
The first set of parameters (Kn, Kt, gamma_n, gamma_t, xmu, and
dampflag) have the same meaning as those specified with the
"pair_style granular"_pair_gran.html force fields. This means a NULL
can be used for either Kt or gamma_t as described on that page. If a
NULL is used for Kt, then a default value is used where Kt = 2/7 Kn.
If a NULL is used for gamma_t, then a default value is used where
gamma_t = 1/2 gamma_n.
The nature of the wall/particle interactions are determined by which
pair_style is used in your input script: {hooke}, {hooke/history}, or
{hertz/history}. The equation for the force between the wall and
particles touching it is the same as the corresponding equation on the
"pair_style granular"_pair_gran.html doc page, in the limit of one of
the two particles going to infinite radius and mass (flat wall).
I.e. delta = radius - r = overlap of particle with wall, m_eff = mass
of particle, and sqrt(RiRj/Ri+Rj) becomes sqrt(radius of particle).
The units for Kn, Kt, gamma_n, and gamma_t are as described on that
doc page. The meaning of xmu and dampflag are also as described on
that page. Note that you can choose different values for these 6
wall/particle coefficients than for particle/particle interactions, if
you wish your wall to interact differently with the particles, e.g. if
the wall is a different material.
IMPORTANT NOTE: As discussed on the doc page for "pair_style
granular"_pair_gran.html, versions of LAMMPS before 9Jan09 used a
different equation for Hertzian interactions. This means Hertizian
wall/particle interactions have also changed. They now include a
sqrt(radius) term which was not present before. Also the previous
versions used Kn and Kt from the pairwise interaction and hardwired
dampflag to 1, rather than letting them be specified directly. This
means you can set the values of the wall/particle coefficients
appropriately in the current code to reproduce the results of a
prevoius Hertzian monodisperse calculation. For example, for the
common case of a monodisperse system with particles of diameter 1, Kn,
Kt, gamma_n, and gamma_s should be set sqrt(2.0) larger than they were
previously.
The {wallstyle} can be planar or cylindrical. The 3 planar options
specify a pair of walls in a dimension. Wall positions are given by
{lo} and {hi}. Either of the values can be specified as NULL if a
single wall is desired. For a {zcylinder} wallstyle, the cylinder's
axis is at x = y = 0.0, and the radius of the cylinder is specified.
Optionally, the wall can be moving, if the {wiggle} or {shear}
keywords are appended. Both keywords cannot be used together.
For the {wiggle} keyword, the wall oscillates sinusoidally, similar to
the oscillations of particles which can be specified by the
"fix_move"_fix_move.html command. This is useful in packing
simulations of granular particles. The arguments to the {wiggle}
keyword specify a dimension for the motion, as well as it's
{amplitude} and {period}. Note that if the dimension is in the plane
of the wall, this is effectively a shearing motion. If the dimension
is perpendicular to the wall, it is more of a shaking motion. A
{zcylinder} wall can only be wiggled in the z dimension.
Each timestep, the position of a wiggled wall in the appropriate {dim}
is set according to this equation:
position = coord + A - A cos (omega * delta) :pre
where {coord} is the specified initial position of the wall, {A} is
the {amplitude}, {omega} is 2 PI / {period}, and {delta} is the time
elapsed since the fix was specified. The velocity of the wall is set
to the derivative of this expression.
For the {shear} keyword, the wall moves continuously in the specified
dimension with velocity {vshear}. The dimension must be tangential to
walls with a planar {wallstyle}, e.g. in the {y} or {z} directions for
an {xplane} wall. For {zcylinder} walls, a dimension of {z} means the
cylinder is moving in the z-direction along it's axis. A dimension of
{x} or {y} means the cylinder is spinning around the z-axis, either in
the clockwise direction for {vshear} > 0 or counter-clockwise for
{vshear} < 0. In this case, {vshear} is the tangential velocity of
the wall at whatever {radius} has been defined.
[Restart, fix_modify, output, run start/stop, minimize info:]
This fix writes the shear friction state of atoms interacting with the
wall to "binary restart files"_restart.html, so that a simulation can
continue correctly if granular potentials with shear "history" effects
are being used. See the "read_restart"_read_restart.html 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.
None of the "fix_modify"_fix_modify.html options are relevant to this
fix. No global or per-atom quantities are stored by this fix for
-access by various "output commands"_Section_howto.html#4_15. No
+access by various "output commands"_Section_howto.html#howto_15. No
parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
This fix is part of the "granular" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
Any dimension (xyz) that has a granular wall must be non-periodic.
[Related commands:]
"fix_move"_fix_move.html, "pair_style granular"_pair_gran.html
[Default:] none
diff --git a/doc/fix_wall_reflect.html b/doc/fix_wall_reflect.html
index 2f22de0db..1f8bac079 100644
--- a/doc/fix_wall_reflect.html
+++ b/doc/fix_wall_reflect.html
@@ -1,173 +1,173 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix wall/reflect command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID wall/reflect face arg ... keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>wall/reflect = style name of this fix command
<LI>one or more face/arg pairs may be appended
<LI>face = <I>xlo</I> or <I>xhi</I> or <I>ylo</I> or <I>yhi</I> or <I>zlo</I> or <I>zhi</I>
<PRE> <I>xlo</I>,<I>ylo</I>,<I>zlo</I> arg = EDGE or constant or variable
EDGE = current lo edge of simulation box
constant = number like 0.0 or -30.0 (distance units)
variable = <A HREF = "variable.html">equal-style variable</A> like v_x or v_wiggle
<I>xhi</I>,<I>yhi</I>,<I>zhi</I> arg = EDGE or constant or variable
EDGE = current hi edge of simulation box
constant = number like 50.0 or 100.3 (distance units)
variable = <A HREF = "variable.html">equal-style variable</A> like v_x or v_wiggle
</PRE>
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>units</I>
<PRE> <I>units</I> value = <I>lattice</I> or <I>box</I>
<I>lattice</I> = the wall position is defined in lattice units
<I>box</I> = the wall position is defined in simulation box units
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix xwalls all wall/reflect xlo EDGE xhi EDGE
fix walls all wall/reflect xlo 0.0 ylo 10.0 units box
fix top all wall/reflect zhi v_pressdown
</PRE>
<P><B>Description:</B>
</P>
<P>Bound the simulation with one or more walls which reflect particles
in the specified group when they attempt to move thru them.
</P>
<P>Reflection means that if an atom moves outside the wall on a timestep
by a distance delta (e.g. due to <A HREF = "fix_nve.html">fix nve</A>), then it is
put back inside the face by the same delta, and the sign of the
corresponding component of its velocity is flipped.
</P>
<P>When used in conjunction with <A HREF = "fix_nve.html">fix nve</A> and <A HREF = "run_style.html">run_style
verlet</A>, the resultant time-integration algorithm is
equivalent to the primitive splitting algorithm (PSA) described by
<A HREF = "#Bond">Bond</A>. Because each reflection event divides
the corresponding timestep asymmetrically, energy conservation is only
satisfied to O(dt), rather than to O(dt^2) as it would be for
velocity-Verlet integration without reflective walls.
</P>
<P>Up to 6 walls or faces can be specified in a single command: <I>xlo</I>,
<I>xhi</I>, <I>ylo</I>, <I>yhi</I>, <I>zlo</I>, <I>zhi</I>. A <I>lo</I> face reflects particles
that move to a coordinate less than the wall position, back in the
<I>hi</I> direction. A <I>hi</I> face reflects particles that move to a
coordinate higher than the wall position, back in the <I>lo</I> direction.
</P>
<P>The position of each wall can be specified in one of 3 ways: as the
EDGE of the simulation box, as a constant value, or as a variable. If
EDGE is used, then the corresponding boundary of the current
simulation box is used. If a numeric constant is specified then the
wall is placed at that position in the appropriate dimension (x, y, or
z). In both the EDGE and constant cases, the wall will never move.
If the wall position is a variable, it should be specified as v_name,
where name is an <A HREF = "variable.html">equal-style variable</A> name. In this
case the variable is evaluated each timestep and the result becomes
the current position of the reflecting wall. Equal-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. Thus it is easy to
specify a time-dependent wall position.
</P>
<P>The <I>units</I> keyword determines the meaning of the distance units used
to define a wall position, but only when a numeric constant is used.
It is not relevant when EDGE or a variable is used to specify a face
position.
</P>
<P>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 spacings.
</P>
<HR>
<P>Here are examples of variable definitions that move the wall position
in a time-dependent fashion using equal-style
<A HREF = "variable.html">variables</A>.
</P>
<PRE>variable ramp equal ramp(0,10)
fix 1 all wall xlo v_ramp 1.0 1.0 2.5
</PRE>
<PRE>variable linear equal vlinear(0,20)
fix 1 all wall xlo v_linear 1.0 1.0 2.5
</PRE>
<PRE>variable wiggle equal swiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5
</PRE>
<PRE>variable wiggle equal cwiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5
</PRE>
<P>The ramp(lo,hi) function adjusts the wall position linearly from lo to
hi over the course of a run. The linear(c0,velocity) function does
something similar using the equation position = c0 + velocity*delta,
where delta is the elapsed time.
</P>
<P>The swiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, where omega = 2 PI
/ period:
</P>
<PRE>position = c0 + A sin(omega*delta)
</PRE>
<P>The cwiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, which will have an
initial wall velocity of 0.0, and thus may impose a gentler
perturbation on the particles:
</P>
<PRE>position = c0 + A (1 - cos(omega*delta))
</PRE>
<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>. 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#4_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.
+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>Any dimension (xyz) that has a reflecting wall must be non-periodic.
</P>
<P>A reflecting wall should not be used with rigid bodies such as those
defined by a "fix rigid" command. This is because the wall/reflect
displaces atoms directly rather than exerts a force on them. For
rigid bodies, use a soft wall instead, such as <A HREF = "fix_wall.html">fix
wall/lj93</A>. LAMMPS will flag the use of a rigid
fix with fix wall/reflect with a warning, but will not generate an
error.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_wall.html">fix wall/lj93</A> command
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Bond"></A>
<P><B>(Bond)</B> Bond and Leimkuhler, SIAM J Sci Comput, 30, p 134 (2007).
</P>
</HTML>
diff --git a/doc/fix_wall_reflect.txt b/doc/fix_wall_reflect.txt
index 00cea46b2..6e7a07f57 100644
--- a/doc/fix_wall_reflect.txt
+++ b/doc/fix_wall_reflect.txt
@@ -1,159 +1,159 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix wall/reflect command :h3
[Syntax:]
fix ID group-ID wall/reflect face arg ... keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
wall/reflect = style name of this fix command :l
one or more face/arg pairs may be appended :l
face = {xlo} or {xhi} or {ylo} or {yhi} or {zlo} or {zhi} :l
{xlo},{ylo},{zlo} arg = EDGE or constant or variable
EDGE = current lo edge of simulation box
constant = number like 0.0 or -30.0 (distance units)
variable = "equal-style variable"_variable.html like v_x or v_wiggle
{xhi},{yhi},{zhi} arg = EDGE or constant or variable
EDGE = current hi edge of simulation box
constant = number like 50.0 or 100.3 (distance units)
variable = "equal-style variable"_variable.html like v_x or v_wiggle :pre
zero or more keyword/value pairs may be appended :l
keyword = {units} :l
{units} value = {lattice} or {box}
{lattice} = the wall position is defined in lattice units
{box} = the wall position is defined in simulation box units :pre
:ule
[Examples:]
fix xwalls all wall/reflect xlo EDGE xhi EDGE
fix walls all wall/reflect xlo 0.0 ylo 10.0 units box
fix top all wall/reflect zhi v_pressdown :pre
[Description:]
Bound the simulation with one or more walls which reflect particles
in the specified group when they attempt to move thru them.
Reflection means that if an atom moves outside the wall on a timestep
by a distance delta (e.g. due to "fix nve"_fix_nve.html), then it is
put back inside the face by the same delta, and the sign of the
corresponding component of its velocity is flipped.
When used in conjunction with "fix nve"_fix_nve.html and "run_style
verlet"_run_style.html, the resultant time-integration algorithm is
equivalent to the primitive splitting algorithm (PSA) described by
"Bond"_#Bond. Because each reflection event divides
the corresponding timestep asymmetrically, energy conservation is only
satisfied to O(dt), rather than to O(dt^2) as it would be for
velocity-Verlet integration without reflective walls.
Up to 6 walls or faces can be specified in a single command: {xlo},
{xhi}, {ylo}, {yhi}, {zlo}, {zhi}. A {lo} face reflects particles
that move to a coordinate less than the wall position, back in the
{hi} direction. A {hi} face reflects particles that move to a
coordinate higher than the wall position, back in the {lo} direction.
The position of each wall can be specified in one of 3 ways: as the
EDGE of the simulation box, as a constant value, or as a variable. If
EDGE is used, then the corresponding boundary of the current
simulation box is used. If a numeric constant is specified then the
wall is placed at that position in the appropriate dimension (x, y, or
z). In both the EDGE and constant cases, the wall will never move.
If the wall position is a variable, it should be specified as v_name,
where name is an "equal-style variable"_variable.html name. In this
case the variable is evaluated each timestep and the result becomes
the current position of the reflecting wall. Equal-style variables
can specify formulas with various mathematical functions, and include
"thermo_style"_thermo_style.html command keywords for the simulation
box parameters and timestep and elapsed time. Thus it is easy to
specify a time-dependent wall position.
The {units} keyword determines the meaning of the distance units used
to define a wall position, but only when a numeric constant is used.
It is not relevant when EDGE or a variable is used to specify a face
position.
A {box} value selects standard distance units as defined by the
"units"_units.html command, e.g. Angstroms for units = real or metal.
A {lattice} value means the distance units are in lattice spacings.
The "lattice"_lattice.html command must have been previously used to
define the lattice spacings.
:line
Here are examples of variable definitions that move the wall position
in a time-dependent fashion using equal-style
"variables"_variable.html.
variable ramp equal ramp(0,10)
fix 1 all wall xlo v_ramp 1.0 1.0 2.5 :pre
variable linear equal vlinear(0,20)
fix 1 all wall xlo v_linear 1.0 1.0 2.5 :pre
variable wiggle equal swiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 :pre
variable wiggle equal cwiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 :pre
The ramp(lo,hi) function adjusts the wall position linearly from lo to
hi over the course of a run. The linear(c0,velocity) function does
something similar using the equation position = c0 + velocity*delta,
where delta is the elapsed time.
The swiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, where omega = 2 PI
/ period:
position = c0 + A sin(omega*delta) :pre
The cwiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, which will have an
initial wall velocity of 0.0, and thus may impose a gentler
perturbation on the particles:
position = c0 + A (1 - cos(omega*delta)) :pre
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various "output
-commands"_Section_howto.html#4_15. No parameter of this fix can be
-used with the {start/stop} keywords of the "run"_run.html command.
+commands"_Section_howto.html#howto_15. No parameter of this fix can
+be used with the {start/stop} keywords of the "run"_run.html command.
This fix is not invoked during "energy minimization"_minimize.html.
[Restrictions:]
Any dimension (xyz) that has a reflecting wall must be non-periodic.
A reflecting wall should not be used with rigid bodies such as those
defined by a "fix rigid" command. This is because the wall/reflect
displaces atoms directly rather than exerts a force on them. For
rigid bodies, use a soft wall instead, such as "fix
wall/lj93"_fix_wall.html. LAMMPS will flag the use of a rigid
fix with fix wall/reflect with a warning, but will not generate an
error.
[Related commands:]
"fix wall/lj93"_fix_wall.html command
[Default:] none
:line
:link(Bond)
[(Bond)] Bond and Leimkuhler, SIAM J Sci Comput, 30, p 134 (2007).
diff --git a/doc/fix_wall_region.html b/doc/fix_wall_region.html
index 5234bb5bf..bd393f655 100644
--- a/doc/fix_wall_region.html
+++ b/doc/fix_wall_region.html
@@ -1,196 +1,196 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix wall/region command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID wall/region region-ID style epsilon sigma cutoff
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>wall/region = style name of this fix command
<LI>region-ID = region whose boundary will act as wall
<LI>style = <I>lj93</I> or <I>lj126</I> or <I>colloid</I> or <I>harmonic</I>
<LI>epsilon = strength factor for wall-particle interaction (energy or energy/distance^2 units)
<LI>sigma = size factor for wall-particle interaction (distance units)
<LI>cutoff = distance from wall at which wall-particle interaction is cut off (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix wall all wall/region mySphere lj93 1.0 1.0 2.5
</PRE>
<P><B>Description:</B>
</P>
<P>Treat the surface of the geometric region defined by the <I>region-ID</I>
as a bounding wall which interacts with nearby particles according to
the specified style. The distance between a particle and the surface
is the distance to the nearest point on the surface and the force the
wall exerts on the particle is along the direction between that point
and the particle, which is the direction normal to the surface at that
point.
</P>
<P>Regions are defined using the <A HREF = "region.html">region</A> command. Note that
the region volume can be interior or exterior to the bounding surface,
which will determine in which direction the surface interacts with
particles, i.e. the direction of the surface normal. Regions can
either be primitive shapes (block, sphere, cylinder, etc) or
combinations of primitive shapes specified via the <I>union</I> or
<I>intersect</I> region styles. These latter styles can be used to
construct particle containers with complex shapes. Regions can also
change over time via keywords like <I>linear</I>, <I>wiggle</I>, and <I>rotate</I>,
which when used with this fix, have the effect of moving the region
surface in a prescribed manner.
</P>
<P>IMPORTANT NOTE: As discussed on the <A HREF = "region.html">region</A> command doc
page, regions in LAMMPS do not get wrapped across periodic boundaries.
It is up to you to insure that periodic or non-periodic boundaries are
specified appropriately via the <A HREF = "boundary.html">boundary</A> command when
using a region as a wall that bounds particle motion. This also means
that if you embed a region in your simulation box and want it to
repulse particles from its surface (using the "side out" option in the
<A HREF = "region.html">region</A> command), that its repulsive force will not be
felt across a periodic boundary.
</P>
<P>IMPORTANT NOTE: For primitive regions with sharp corners and/or edges
(e.g. a block or cylinder), wall/particle forces are computed
accurately for both interior and exterior regions. For <I>union</I> and
<I>intersect</I> regions, additional sharp corners and edges may be present
due to the intersection of the surfaces of 2 or more primitive
volumes. These corners and edges can be of two types: concave or
convex. Concave points/edges are like the corners of a cube as seen
by particles in the interior of a cube. Wall/particle forces around
these features are computed correctly. Convex points/edges are like
the corners of a cube as seen by particles exterior to the cube,
i.e. the points jut into the volume where particles are present.
LAMMPS does NOT compute the location of these convex points directly,
and hence wall/particle forces in the cutoff volume around these
points suffer from inaccuracies. The basic problem is that the
outward normal of the surface is not continuous at these points. This
can cause particles to feel no force (they don't "see" the wall) when
in one location, then move a distance epsilon, and suddenly feel a
large force because they now "see" the wall. In the worst-case
scenario, this can blow particles out of the simulation box. Thus, as
a general rule you should not use the fix wall/region command with
<I>union</I> or <I>interesect</I> regions that have convex points or edges.
</P>
<P>The energy of wall-particle interactions depends on the specified
style.
</P>
<P>For style <I>lj93</I>, the energy E is given by the 9/3 potential:
</P>
<CENTER><IMG SRC = "Eqs/fix_wall_lj93.jpg">
</CENTER>
<P>For style <I>lj126</I>, the energy E is given by the 12/6 potential:
</P>
<CENTER><IMG SRC = "Eqs/pair_lj.jpg">
</CENTER>
<P>For style <I>colloid</I>, the energy E is given by an integrated form of
the <A HREF = "pair_colloid.html">pair_style colloid</A> potential:
</P>
<CENTER><IMG SRC = "Eqs/fix_wall_colloid.jpg">
</CENTER>
<P>For style <I>wall/harmonic</I>, the energy E is given by a harmonic spring
potential:
</P>
<CENTER><IMG SRC = "Eqs/fix_wall_harmonic.jpg">
</CENTER>
<P>In all cases, <I>r</I> is the distance from the particle to the region
surface, and Rc is the <I>cutoff</I> distance at which the particle and
surface no longer interact. The energy of the wall potential is
shifted so that the wall-particle interaction energy is 0.0 at the
cutoff distance.
</P>
<P>For the <I>lj93</I> and <I>lj126</I> styles, <I>epsilon</I> and <I>sigma</I> are the usual
Lennard-Jones parameters, which determine the strength and size of the
particle as it interacts with the wall. Epsilon has energy units.
Note that this <I>epsilon</I> and <I>sigma</I> may be different than any
<I>epsilon</I> or <I>sigma</I> values defined for a pair style that computes
particle-particle interactions.
</P>
<P>The <I>lj93</I> interaction is derived by integrating over a 3d
half-lattice of Lennard-Jones 12/6 particles. The <I>lj126</I> interaction
is effectively a harder, more repulsive wall interaction.
</P>
<P>For the <I>colloid</I> style, <I>epsilon</I> is effectively a Hamaker constant
with energy units for the colloid-wall interaction, <I>R</I> is the radius
of the colloid particle, <I>D</I> is the distance from the surface of the
colloid particle to the wall (r-R), and <I>sigma</I> is the size of a
constituent LJ particle inside the colloid particle. Note that the
cutoff distance Rc in this case is the distance from the colloid
particle center to the wall.
</P>
<P>The <I>colloid</I> interaction is derived by integrating over constituent
LJ particles of size <I>sigma</I> within the colloid particle and a 3d
half-lattice of Lennard-Jones 12/6 particles of size <I>sigma</I> in the
wall.
</P>
<P>For the <I>wall/harmonic</I> style, <I>epsilon</I> is effectively the spring
constant K, and has units (energy/distance^2). The input parameter
<I>sigma</I> is ignored. The minimum energy position of the harmonic
spring is at the <I>cutoff</I>. This is a repulsive-only spring since the
interaction is truncated at the <I>cutoff</I>
</P>
<P>IMPORTANT NOTE: For all of the styles, you must insure that r is
always > 0 for all particles in the group, or LAMMPS will generate an
error. This means you cannot start your simulation with particles on
the region surface (r = 0) or with particles on the wrong side of the
region surface (r < 0). For the <I>wall/lj93</I> and <I>wall/lj126</I> styles,
the energy of the wall/particle interaction (and hence the force on
the particle) blows up as r -> 0. The <I>wall/colloid</I> style is even
more restrictive, since the energy blows up as D = r-R -> 0. This
means the finite-size particles of radius R must be a distance larger
than R from the region surface. The <I>harmonic</I> style is a softer
potential and does not blow up as r -> 0, but you must use a large
enough <I>epsilon</I> that particles always reamin on the correct side of
the region surface (r > 0).
</P>
<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>.
</P>
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option is supported by this
fix to add the energy of interaction between atoms and the wall to the
system's potential energy as part of <A HREF = "thermo_style.html">thermodynamic
output</A>.
</P>
<P>This fix computes a global scalar energy and a global 3-length vector
-of forces, which can be accessed by various <A HREF = "Section_howto.html#4_15">output
-commands</A>. The scalar energy is the sum of
-energy interactions for all particles interacting with the wall
+of forces, which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. The scalar energy is the sum
+of energy interactions for all particles interacting with the wall
represented by the region surface. The 3 vector quantities are the
x,y,z components of the total force acting on the wall due to the
particles. The scalar and vector values calculated by this fix are
"extensive".
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command.
</P>
<P>The forces due to this fix are imposed during an energy minimization,
invoked by the <A HREF = "minimize.html">minimize</A> command.
</P>
<P>IMPORTANT NOTE: If you want the atom/wall interaction energy to be
included in the total potential energy of the system (the quantity
being minimized), you MUST enable the <A HREF = "fix_modify.html">fix_modify</A>
<I>energy</I> option for this fix.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_wall.html">fix wall/lj93</A>,
<A HREF = "fix_wall.html">fix wall/lj126</A>,
<A HREF = "fix_wall.html">fix wall/colloid</A>,
<A HREF = "fix_wall_gran.html">fix wall/gran</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_wall_region.txt b/doc/fix_wall_region.txt
index a2651cb0c..e84ad0964 100644
--- a/doc/fix_wall_region.txt
+++ b/doc/fix_wall_region.txt
@@ -1,191 +1,191 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix wall/region command :h3
[Syntax:]
fix ID group-ID wall/region region-ID style epsilon sigma cutoff :pre
ID, group-ID are documented in "fix"_fix.html command
wall/region = style name of this fix command
region-ID = region whose boundary will act as wall
style = {lj93} or {lj126} or {colloid} or {harmonic}
epsilon = strength factor for wall-particle interaction (energy or energy/distance^2 units)
sigma = size factor for wall-particle interaction (distance units)
cutoff = distance from wall at which wall-particle interaction is cut off (distance units) :ul
[Examples:]
fix wall all wall/region mySphere lj93 1.0 1.0 2.5 :pre
[Description:]
Treat the surface of the geometric region defined by the {region-ID}
as a bounding wall which interacts with nearby particles according to
the specified style. The distance between a particle and the surface
is the distance to the nearest point on the surface and the force the
wall exerts on the particle is along the direction between that point
and the particle, which is the direction normal to the surface at that
point.
Regions are defined using the "region"_region.html command. Note that
the region volume can be interior or exterior to the bounding surface,
which will determine in which direction the surface interacts with
particles, i.e. the direction of the surface normal. Regions can
either be primitive shapes (block, sphere, cylinder, etc) or
combinations of primitive shapes specified via the {union} or
{intersect} region styles. These latter styles can be used to
construct particle containers with complex shapes. Regions can also
change over time via keywords like {linear}, {wiggle}, and {rotate},
which when used with this fix, have the effect of moving the region
surface in a prescribed manner.
IMPORTANT NOTE: As discussed on the "region"_region.html command doc
page, regions in LAMMPS do not get wrapped across periodic boundaries.
It is up to you to insure that periodic or non-periodic boundaries are
specified appropriately via the "boundary"_boundary.html command when
using a region as a wall that bounds particle motion. This also means
that if you embed a region in your simulation box and want it to
repulse particles from its surface (using the "side out" option in the
"region"_region.html command), that its repulsive force will not be
felt across a periodic boundary.
IMPORTANT NOTE: For primitive regions with sharp corners and/or edges
(e.g. a block or cylinder), wall/particle forces are computed
accurately for both interior and exterior regions. For {union} and
{intersect} regions, additional sharp corners and edges may be present
due to the intersection of the surfaces of 2 or more primitive
volumes. These corners and edges can be of two types: concave or
convex. Concave points/edges are like the corners of a cube as seen
by particles in the interior of a cube. Wall/particle forces around
these features are computed correctly. Convex points/edges are like
the corners of a cube as seen by particles exterior to the cube,
i.e. the points jut into the volume where particles are present.
LAMMPS does NOT compute the location of these convex points directly,
and hence wall/particle forces in the cutoff volume around these
points suffer from inaccuracies. The basic problem is that the
outward normal of the surface is not continuous at these points. This
can cause particles to feel no force (they don't "see" the wall) when
in one location, then move a distance epsilon, and suddenly feel a
large force because they now "see" the wall. In the worst-case
scenario, this can blow particles out of the simulation box. Thus, as
a general rule you should not use the fix wall/region command with
{union} or {interesect} regions that have convex points or edges.
The energy of wall-particle interactions depends on the specified
style.
For style {lj93}, the energy E is given by the 9/3 potential:
:c,image(Eqs/fix_wall_lj93.jpg)
For style {lj126}, the energy E is given by the 12/6 potential:
:c,image(Eqs/pair_lj.jpg)
For style {colloid}, the energy E is given by an integrated form of
the "pair_style colloid"_pair_colloid.html potential:
:c,image(Eqs/fix_wall_colloid.jpg)
For style {wall/harmonic}, the energy E is given by a harmonic spring
potential:
:c,image(Eqs/fix_wall_harmonic.jpg)
In all cases, {r} is the distance from the particle to the region
surface, and Rc is the {cutoff} distance at which the particle and
surface no longer interact. The energy of the wall potential is
shifted so that the wall-particle interaction energy is 0.0 at the
cutoff distance.
For the {lj93} and {lj126} styles, {epsilon} and {sigma} are the usual
Lennard-Jones parameters, which determine the strength and size of the
particle as it interacts with the wall. Epsilon has energy units.
Note that this {epsilon} and {sigma} may be different than any
{epsilon} or {sigma} values defined for a pair style that computes
particle-particle interactions.
The {lj93} interaction is derived by integrating over a 3d
half-lattice of Lennard-Jones 12/6 particles. The {lj126} interaction
is effectively a harder, more repulsive wall interaction.
For the {colloid} style, {epsilon} is effectively a Hamaker constant
with energy units for the colloid-wall interaction, {R} is the radius
of the colloid particle, {D} is the distance from the surface of the
colloid particle to the wall (r-R), and {sigma} is the size of a
constituent LJ particle inside the colloid particle. Note that the
cutoff distance Rc in this case is the distance from the colloid
particle center to the wall.
The {colloid} interaction is derived by integrating over constituent
LJ particles of size {sigma} within the colloid particle and a 3d
half-lattice of Lennard-Jones 12/6 particles of size {sigma} in the
wall.
For the {wall/harmonic} style, {epsilon} is effectively the spring
constant K, and has units (energy/distance^2). The input parameter
{sigma} is ignored. The minimum energy position of the harmonic
spring is at the {cutoff}. This is a repulsive-only spring since the
interaction is truncated at the {cutoff}
IMPORTANT NOTE: For all of the styles, you must insure that r is
always > 0 for all particles in the group, or LAMMPS will generate an
error. This means you cannot start your simulation with particles on
the region surface (r = 0) or with particles on the wrong side of the
region surface (r < 0). For the {wall/lj93} and {wall/lj126} styles,
the energy of the wall/particle interaction (and hence the force on
the particle) blows up as r -> 0. The {wall/colloid} style is even
more restrictive, since the energy blows up as D = r-R -> 0. This
means the finite-size particles of radius R must be a distance larger
than R from the region surface. The {harmonic} style is a softer
potential and does not blow up as r -> 0, but you must use a large
enough {epsilon} that particles always reamin on the correct side of
the region surface (r > 0).
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the energy of interaction between atoms and the wall to the
system's potential energy as part of "thermodynamic
output"_thermo_style.html.
This fix computes a global scalar energy and a global 3-length vector
of forces, which can be accessed by various "output
-commands"_Section_howto.html#4_15. The scalar energy is the sum of
-energy interactions for all particles interacting with the wall
+commands"_Section_howto.html#howto_15. The scalar energy is the sum
+of energy interactions for all particles interacting with the wall
represented by the region surface. The 3 vector quantities are the
x,y,z components of the total force acting on the wall due to the
particles. The scalar and vector values calculated by this fix are
"extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command.
The forces due to this fix are imposed during an energy minimization,
invoked by the "minimize"_minimize.html command.
IMPORTANT NOTE: If you want the atom/wall interaction energy to be
included in the total potential energy of the system (the quantity
being minimized), you MUST enable the "fix_modify"_fix_modify.html
{energy} option for this fix.
[Restrictions:] none
[Related commands:]
"fix wall/lj93"_fix_wall.html,
"fix wall/lj126"_fix_wall.html,
"fix wall/colloid"_fix_wall.html,
"fix wall/gran"_fix_wall_gran.html
[Default:] none
diff --git a/doc/fix_wall_srd.html b/doc/fix_wall_srd.html
index 8a2680340..770c03765 100644
--- a/doc/fix_wall_srd.html
+++ b/doc/fix_wall_srd.html
@@ -1,203 +1,203 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix wall/srd command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID wall/srd face arg ... keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>wall/srd = style name of this fix command
<LI>one or more face/arg pairs may be appended
<LI>face = <I>xlo</I> or <I>xhi</I> or <I>ylo</I> or <I>yhi</I> or <I>zlo</I> or <I>zhi</I>
<PRE> <I>xlo</I>,<I>ylo</I>,<I>zlo</I> arg = EDGE or constant or variable
EDGE = current lo edge of simulation box
constant = number like 0.0 or -30.0 (distance units)
variable = <A HREF = "variable.html">equal-style variable</A> like v_x or v_wiggle
<I>xhi</I>,<I>yhi</I>,<I>zhi</I> arg = EDGE or constant or variable
EDGE = current hi edge of simulation box
constant = number like 50.0 or 100.3 (distance units)
variable = <A HREF = "variable.html">equal-style variable</A> like v_x or v_wiggle
</PRE>
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>units</I>
<PRE> <I>units</I> value = <I>lattice</I> or <I>box</I>
<I>lattice</I> = the wall position is defined in lattice units
<I>box</I> = the wall position is defined in simulation box units
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>fix xwalls all wall/srd xlo EDGE xhi EDGE
fix walls all wall/srd xlo 0.0 ylo 10.0 units box
fix top all wall/srd zhi v_pressdown
</PRE>
<P><B>Description:</B>
</P>
<P>Bound the simulation with one or more walls which interact with
stochastic reaction dynamics (SRD) particles as slip (smooth) or
no-slip (rough) flat surfaces. The wall interaction is actually
invoked via the <A HREF = "fix_srd.html">fix srd</A> command, only on the group of
SRD particles it defines, so the group setting for the fix wall/srd
command is ignored.
</P>
<P>A particle/wall collision occurs if an SRD particle moves outside the
wall on a timestep. This alters the position and velocity of the SRD
particle and imparts a force to the wall.
</P>
<P>The <I>collision</I> and <I>Tsrd</I> settings specified via the <A HREF = "fix_srd.html">fix
srd</A> command affect the SRD/wall collisions. A <I>slip</I>
setting for the <I>collision</I> keyword means that the tangential
component of the SRD particle momentum is preserved. Thus only a
normal force is imparted to the wall. The normal component of the new
SRD velocity is sampled from a Gaussian distribution at temperature
<I>Tsrd</I>.
</P>
<P>For a <I>noslip</I> setting of the <I>collision</I> keyword, both the normal and
tangential components of the new SRD velocity are sampled from a
Gaussian distribution at temperature <I>Tsrd</I>. Additionally, a new
tangential direction for the SRD velocity is chosen randomly. This
collision style imparts both a normal and tangential force to the
wall.
</P>
<P>Up to 6 walls or faces can be specified in a single command: <I>xlo</I>,
<I>xhi</I>, <I>ylo</I>, <I>yhi</I>, <I>zlo</I>, <I>zhi</I>. A <I>lo</I> face reflects particles
that move to a coordinate less than the wall position, back in the
<I>hi</I> direction. A <I>hi</I> face reflects particles that move to a
coordinate higher than the wall position, back in the <I>lo</I> direction.
</P>
<P>The position of each wall can be specified in one of 3 ways: as the
EDGE of the simulation box, as a constant value, or as a variable. If
EDGE is used, then the corresponding boundary of the current
simulation box is used. If a numeric constant is specified then the
wall is placed at that position in the appropriate dimension (x, y, or
z). In both the EDGE and constant cases, the wall will never move.
If the wall position is a variable, it should be specified as v_name,
where name is an <A HREF = "variable.html">equal-style variable</A> name. In this
case the variable is evaluated each timestep and the result becomes
the current position of the reflecting wall. Equal-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. Thus it is easy to
specify a time-dependent wall position.
</P>
<P>IMPORTANT NOTE: Because the trajectory of the SRD particle is tracked
as it collides with the wall, you must insure that r = distance of the
particle from the wall, is always > 0 for SRD particles, or LAMMPS
will generate an error. This means you cannot start your simulation
with SRD particles at the wall position <I>coord</I> (r = 0) or with
particles on the wrong side of the wall (r < 0).
</P>
<P>IMPORTANT NOTE: If you have 2 or more walls that come together at an
edge or corner (e.g. walls in the x and y dimensions), then be sure to
set the <I>overlap</I> keyword to <I>yes</I> in the <A HREF = "fix_srd.html">fix srd</A>
command, since the walls effectively overlap when SRD particles
collide with them. LAMMPS will issue a warning if you do not do this.
</P>
<P>IMPORTANT NOTE: The walls of this fix only interact with SRD
particles, as defined by the <A HREF = "fix_srd.html">fix srd</A> command. If you
are simulating a mixture containing other kinds of particles, then you
should typically use <A HREF = "fix_wall.html">another wall command</A> to act on
the other particles. Since SRD particles will be colliding both with
the walls and the other particles, it is important to insure that the
other particle's finite extent does not overlap an SRD wall. If you
do not do this, you may generate errors when SRD particles end up
"inside" another particle or a wall at the beginning of a collision
step.
</P>
<P>The <I>units</I> keyword determines the meaning of the distance units used
to define a wall position, but only when a numeric constant is used.
It is not relevant when EDGE or a variable is used to specify a face
position.
</P>
<P>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 spacings.
</P>
<HR>
<P>Here are examples of variable definitions that move the wall position
in a time-dependent fashion using equal-style
<A HREF = "variable.html">variables</A>.
</P>
<PRE>variable ramp equal ramp(0,10)
fix 1 all wall xlo v_ramp 1.0 1.0 2.5
</PRE>
<PRE>variable linear equal vlinear(0,20)
fix 1 all wall xlo v_linear 1.0 1.0 2.5
</PRE>
<PRE>variable wiggle equal swiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5
</PRE>
<PRE>variable wiggle equal cwiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5
</PRE>
<P>The ramp(lo,hi) function adjusts the wall position linearly from lo to
hi over the course of a run. The linear(c0,velocity) function does
something similar using the equation position = c0 + velocity*delta,
where delta is the elapsed time.
</P>
<P>The swiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, where omega = 2 PI
/ period:
</P>
<PRE>position = c0 + A sin(omega*delta)
</PRE>
<P>The cwiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, which will have an
initial wall velocity of 0.0, and thus may impose a gentler
perturbation on the particles:
</P>
<PRE>position = c0 + A (1 - cos(omega*delta))
</PRE>
<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>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>This fix computes a global array of values which can be accessed by
-various <A HREF = "Section_howto.html#4_15">output commands</A>. The number of rows
-in the array is equal to the number of walls defined by the fix. The
-number of columns is 3, for the x,y,z components of force on each
+various <A HREF = "Section_howto.html#howto_15">output commands</A>. The number of
+rows in the array is equal to the number of walls defined by the fix.
+The number of columns is 3, for the x,y,z components of force on each
wall.
</P>
<P>Note that an outward normal force on a wall will be a negative value
for <I>lo</I> walls and a positive value for <I>hi</I> walls. The array values
calculated by this fix are "extensive".
</P>
<P>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>Any dimension (xyz) that has an SRD wall must be non-periodic.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_srd.html">fix srd</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/fix_wall_srd.txt b/doc/fix_wall_srd.txt
index 4d098cfb2..c427fe0a8 100644
--- a/doc/fix_wall_srd.txt
+++ b/doc/fix_wall_srd.txt
@@ -1,190 +1,190 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix wall/srd command :h3
[Syntax:]
fix ID group-ID wall/srd face arg ... keyword value ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
wall/srd = style name of this fix command :l
one or more face/arg pairs may be appended :l
face = {xlo} or {xhi} or {ylo} or {yhi} or {zlo} or {zhi} :l
{xlo},{ylo},{zlo} arg = EDGE or constant or variable
EDGE = current lo edge of simulation box
constant = number like 0.0 or -30.0 (distance units)
variable = "equal-style variable"_variable.html like v_x or v_wiggle
{xhi},{yhi},{zhi} arg = EDGE or constant or variable
EDGE = current hi edge of simulation box
constant = number like 50.0 or 100.3 (distance units)
variable = "equal-style variable"_variable.html like v_x or v_wiggle :pre
zero or more keyword/value pairs may be appended :l
keyword = {units} :l
{units} value = {lattice} or {box}
{lattice} = the wall position is defined in lattice units
{box} = the wall position is defined in simulation box units :pre
:ule
[Examples:]
fix xwalls all wall/srd xlo EDGE xhi EDGE
fix walls all wall/srd xlo 0.0 ylo 10.0 units box
fix top all wall/srd zhi v_pressdown :pre
[Description:]
Bound the simulation with one or more walls which interact with
stochastic reaction dynamics (SRD) particles as slip (smooth) or
no-slip (rough) flat surfaces. The wall interaction is actually
invoked via the "fix srd"_fix_srd.html command, only on the group of
SRD particles it defines, so the group setting for the fix wall/srd
command is ignored.
A particle/wall collision occurs if an SRD particle moves outside the
wall on a timestep. This alters the position and velocity of the SRD
particle and imparts a force to the wall.
The {collision} and {Tsrd} settings specified via the "fix
srd"_fix_srd.html command affect the SRD/wall collisions. A {slip}
setting for the {collision} keyword means that the tangential
component of the SRD particle momentum is preserved. Thus only a
normal force is imparted to the wall. The normal component of the new
SRD velocity is sampled from a Gaussian distribution at temperature
{Tsrd}.
For a {noslip} setting of the {collision} keyword, both the normal and
tangential components of the new SRD velocity are sampled from a
Gaussian distribution at temperature {Tsrd}. Additionally, a new
tangential direction for the SRD velocity is chosen randomly. This
collision style imparts both a normal and tangential force to the
wall.
Up to 6 walls or faces can be specified in a single command: {xlo},
{xhi}, {ylo}, {yhi}, {zlo}, {zhi}. A {lo} face reflects particles
that move to a coordinate less than the wall position, back in the
{hi} direction. A {hi} face reflects particles that move to a
coordinate higher than the wall position, back in the {lo} direction.
The position of each wall can be specified in one of 3 ways: as the
EDGE of the simulation box, as a constant value, or as a variable. If
EDGE is used, then the corresponding boundary of the current
simulation box is used. If a numeric constant is specified then the
wall is placed at that position in the appropriate dimension (x, y, or
z). In both the EDGE and constant cases, the wall will never move.
If the wall position is a variable, it should be specified as v_name,
where name is an "equal-style variable"_variable.html name. In this
case the variable is evaluated each timestep and the result becomes
the current position of the reflecting wall. Equal-style variables
can specify formulas with various mathematical functions, and include
"thermo_style"_thermo_style.html command keywords for the simulation
box parameters and timestep and elapsed time. Thus it is easy to
specify a time-dependent wall position.
IMPORTANT NOTE: Because the trajectory of the SRD particle is tracked
as it collides with the wall, you must insure that r = distance of the
particle from the wall, is always > 0 for SRD particles, or LAMMPS
will generate an error. This means you cannot start your simulation
with SRD particles at the wall position {coord} (r = 0) or with
particles on the wrong side of the wall (r < 0).
IMPORTANT NOTE: If you have 2 or more walls that come together at an
edge or corner (e.g. walls in the x and y dimensions), then be sure to
set the {overlap} keyword to {yes} in the "fix srd"_fix_srd.html
command, since the walls effectively overlap when SRD particles
collide with them. LAMMPS will issue a warning if you do not do this.
IMPORTANT NOTE: The walls of this fix only interact with SRD
particles, as defined by the "fix srd"_fix_srd.html command. If you
are simulating a mixture containing other kinds of particles, then you
should typically use "another wall command"_fix_wall.html to act on
the other particles. Since SRD particles will be colliding both with
the walls and the other particles, it is important to insure that the
other particle's finite extent does not overlap an SRD wall. If you
do not do this, you may generate errors when SRD particles end up
"inside" another particle or a wall at the beginning of a collision
step.
The {units} keyword determines the meaning of the distance units used
to define a wall position, but only when a numeric constant is used.
It is not relevant when EDGE or a variable is used to specify a face
position.
A {box} value selects standard distance units as defined by the
"units"_units.html command, e.g. Angstroms for units = real or metal.
A {lattice} value means the distance units are in lattice spacings.
The "lattice"_lattice.html command must have been previously used to
define the lattice spacings.
:line
Here are examples of variable definitions that move the wall position
in a time-dependent fashion using equal-style
"variables"_variable.html.
variable ramp equal ramp(0,10)
fix 1 all wall xlo v_ramp 1.0 1.0 2.5 :pre
variable linear equal vlinear(0,20)
fix 1 all wall xlo v_linear 1.0 1.0 2.5 :pre
variable wiggle equal swiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 :pre
variable wiggle equal cwiggle(0.0,5.0,3.0)
fix 1 all wall xlo v_wiggle 1.0 1.0 2.5 :pre
The ramp(lo,hi) function adjusts the wall position linearly from lo to
hi over the course of a run. The linear(c0,velocity) function does
something similar using the equation position = c0 + velocity*delta,
where delta is the elapsed time.
The swiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, where omega = 2 PI
/ period:
position = c0 + A sin(omega*delta) :pre
The cwiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, which will have an
initial wall velocity of 0.0, and thus may impose a gentler
perturbation on the particles:
position = c0 + A (1 - cos(omega*delta)) :pre
:line
[Restart, fix_modify, output, run start/stop, minimize info:]
No information about this fix is written to "binary restart
files"_restart.html. None of the "fix_modify"_fix_modify.html options
are relevant to this fix.
This fix computes a global array of values which can be accessed by
-various "output commands"_Section_howto.html#4_15. The number of rows
-in the array is equal to the number of walls defined by the fix. The
-number of columns is 3, for the x,y,z components of force on each
+various "output commands"_Section_howto.html#howto_15. The number of
+rows in the array is equal to the number of walls defined by the fix.
+The number of columns is 3, for the x,y,z components of force on each
wall.
Note that an outward normal force on a wall will be a negative value
for {lo} walls and a positive value for {hi} walls. The array values
calculated by this fix are "extensive".
No parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
Any dimension (xyz) that has an SRD wall must be non-periodic.
[Related commands:]
"fix srd"_fix_srd.html
[Default:] none
diff --git a/doc/if.html b/doc/if.html
index 90404076e..3baffda0f 100644
--- a/doc/if.html
+++ b/doc/if.html
@@ -1,162 +1,162 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>if command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>if boolean then t1 t2 ... elif boolean f1 f2 ... elif boolean f1 f2 ... else e1 e2 ...
</PRE>
<UL><LI>boolean = a Boolean expression evaluated as TRUE or FALSE (see below)
<LI>then = required word
<LI>t1,t2,...,tN = one or more LAMMPS commands to execute if condition is met, each enclosed in quotes
<LI>elif = optional word, can appear multiple times
<LI>f1,f2,...,fN = one or more LAMMPS commands to execute if elif condition is met, each enclosed in quotes (optional arguments)
<LI>else = optional argument
<LI>e1,e2,...,eN = one or more LAMMPS commands to execute if no condition is met, each enclosed in quotes (optional arguments)
</UL>
<P><B>Examples:</B>
</P>
<PRE>if "${steps} > 1000" then exit
if "$x <= $y" then "print X is smaller = $x" else "print Y is smaller = $y"
if "(${eng} > 0.0) || ($n < 1000)" then &
"timestep 0.005" &
elif $n<10000 &
"timestep 0.01" &
else &
"timestep 0.02" &
"print 'Max step reached'"
if "${eng} > ${eng_previous}" then "jump file1" else "jump file2"
</PRE>
<P><B>Description:</B>
</P>
<P>This command provides an in-then-else capability within an input
script. A Boolean expression is evaluted and the result is TRUE or
FALSE. Note that as in the examples above, the expression can contain
variables, as defined by the <A HREF = "variable.html">variable</A> command, which
will be evaluated as part of the expression. Thus a user-defined
formula that reflects the current state of the simulation can be used
to issue one or more new commands.
</P>
<P>If the result of the Boolean expression is TRUE, then one or more
commands (t1, t2, ..., tN) are executed. If it is FALSE, then Boolean
expressions associated with successive elif keywords are evaluated
until one is found to be true, in which case its commands (f1, f2,
..., fN) are executed. If no Boolean expression is TRUE, then the
commands associated witht the else keyword, namely (e1, e2, ..., eN),
are executed. The elif and else keywords and their associated
commands are optional. If they aren't specified and the initial
Boolean expression is FALSE, then no commands are executed.
</P>
<P>The syntax for Boolean expressions is described below.
</P>
<P>Each command (t1, f1, e1, etc) can be any valid LAMMPS input script
command. If the command is more than one word, it must enclosed in
quotes, so it will be treated as a single argument, as in the examples
above.
</P>
<P>IMPORTANT NOTE: If a command itself requires a quoted argument (e.g. a
<A HREF = "print.html">print</A> command), then double and single quotes can be used
and nested in the usual manner, as in the examples above and below.
-See <A HREF = "Section_commands.html#3_2">this section</A> of the manual for more
+See <A HREF = "Section_commands.html#cmd_2">this section</A> of the manual for more
details on using quotes in arguments. Only one of level of nesting is
allowed, but that should be sufficient for most use cases.
</P>
<P>Note that by using the line continuation character "&", the if command
can be spread across many lines, though it is still a single command:
</P>
<PRE>if "$a < $b" then &
"print 'Minimum value = $a'" &
"run 1000" &
else &
'print "Minimum value = $b"' &
"minimize 0.001 0.001 1000 10000"
</PRE>
<P>Note that if one of the commands to execute is an invalid LAMMPS
command, such as "exit" in the first example above, then executing the
command will cause LAMMPS to halt.
</P>
<P>Note that by jumping to a label in the same input script, the if
command can be used to break out of a loop. See the <A HREF = "variable.html">variable
delete</A> command for info on how to delete the associated
loop variable, so that it can be re-used later in the input script.
</P>
<P>Here is an example of a double loop which uses the if and
<A HREF = "jump.html">jump</A> commands to break out of the inner loop when a
condition is met, then continues iterating thru the outer loop.
</P>
<PRE>label loopa
variable a loop 5
label loopb
variable b loop 5
print "A,B = $a,$b"
run 10000
if '$b > 2' then "print 'Jumping to another script'" "jump in.script break"
next b
jump in.script loopb
label break
variable b delete
</PRE>
<PRE>next a
jump in.script loopa
</PRE>
<HR>
<P>The Boolean expressions for the if and elif keywords have a C-like
syntax. Note that each expression is a single argument within the if
command. Thus if you want to include spaces in the expression for
clarity, you must enclose the entire expression in quotes.
</P>
<P>An expression is built out of numbers:
</P>
<PRE>0.2, 100, 1.0e20, -15.4, etc
</PRE>
<P>and Boolean operators:
</P>
<PRE>A == B, A != B, A < B, A <= B, A > B, A >= B, A && B, A || B, !A
</PRE>
<P>Each A and B is a number or a variable reference like $a or ${abc},
or another Boolean expression.
</P>
<P>If a variable is used it must produce a number when evaluated and
substituted for in the expression, else an error will be generated.
</P>
<P>Expressions are evaluated left to right and have the usual C-style
precedence: the unary logical NOT operator "!" has the highest
precedence, the 4 relational operators "<", "<=", ">", and ">=" are
next; the two remaining relational operators "==" and "!=" are next;
then the logical AND operator "&&"; and finally the logical OR
operator "||" has the lowest precedence. Parenthesis can be used to
group one or more portions of an expression and/or enforce a different
order of evaluation than what would occur with the default precedence.
</P>
<P>The 6 relational operators return either a 1.0 or 0.0 depending on
whether the relationship between x and y is TRUE or FALSE. The
logical AND operator will return 1.0 if both its arguments are
non-zero, else it returns 0.0. The logical OR operator will return
1.0 if either of its arguments is non-zero, else it returns 0.0. The
logical NOT operator returns 1.0 if its argument is 0.0, else it
returns 0.0.
</P>
<P>The overall Boolean expression produces a TRUE result if the result is
non-zero. If the result is zero, the expression result is FALSE.
</P>
<HR>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "variable.html">variable</A>, <A HREF = "print.html">print</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/if.txt b/doc/if.txt
index 4a3cc3d72..a92b9213b 100644
--- a/doc/if.txt
+++ b/doc/if.txt
@@ -1,156 +1,156 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
if command :h3
[Syntax:]
if boolean then t1 t2 ... elif boolean f1 f2 ... elif boolean f1 f2 ... else e1 e2 ... :pre
boolean = a Boolean expression evaluated as TRUE or FALSE (see below)
then = required word
t1,t2,...,tN = one or more LAMMPS commands to execute if condition is met, each enclosed in quotes
elif = optional word, can appear multiple times
f1,f2,...,fN = one or more LAMMPS commands to execute if elif condition is met, each enclosed in quotes (optional arguments)
else = optional argument
e1,e2,...,eN = one or more LAMMPS commands to execute if no condition is met, each enclosed in quotes (optional arguments) :ul
[Examples:]
if "$\{steps\} > 1000" then exit
if "$x <= $y" then "print X is smaller = $x" else "print Y is smaller = $y"
if "($\{eng\} > 0.0) || ($n < 1000)" then &
"timestep 0.005" &
elif $n<10000 &
"timestep 0.01" &
else &
"timestep 0.02" &
"print 'Max step reached'"
if "$\{eng\} > $\{eng_previous\}" then "jump file1" else "jump file2" :pre
[Description:]
This command provides an in-then-else capability within an input
script. A Boolean expression is evaluted and the result is TRUE or
FALSE. Note that as in the examples above, the expression can contain
variables, as defined by the "variable"_variable.html command, which
will be evaluated as part of the expression. Thus a user-defined
formula that reflects the current state of the simulation can be used
to issue one or more new commands.
If the result of the Boolean expression is TRUE, then one or more
commands (t1, t2, ..., tN) are executed. If it is FALSE, then Boolean
expressions associated with successive elif keywords are evaluated
until one is found to be true, in which case its commands (f1, f2,
..., fN) are executed. If no Boolean expression is TRUE, then the
commands associated witht the else keyword, namely (e1, e2, ..., eN),
are executed. The elif and else keywords and their associated
commands are optional. If they aren't specified and the initial
Boolean expression is FALSE, then no commands are executed.
The syntax for Boolean expressions is described below.
Each command (t1, f1, e1, etc) can be any valid LAMMPS input script
command. If the command is more than one word, it must enclosed in
quotes, so it will be treated as a single argument, as in the examples
above.
IMPORTANT NOTE: If a command itself requires a quoted argument (e.g. a
"print"_print.html command), then double and single quotes can be used
and nested in the usual manner, as in the examples above and below.
-See "this section"_Section_commands.html#3_2 of the manual for more
+See "this section"_Section_commands.html#cmd_2 of the manual for more
details on using quotes in arguments. Only one of level of nesting is
allowed, but that should be sufficient for most use cases.
Note that by using the line continuation character "&", the if command
can be spread across many lines, though it is still a single command:
if "$a < $b" then &
"print 'Minimum value = $a'" &
"run 1000" &
else &
'print "Minimum value = $b"' &
"minimize 0.001 0.001 1000 10000" :pre
Note that if one of the commands to execute is an invalid LAMMPS
command, such as "exit" in the first example above, then executing the
command will cause LAMMPS to halt.
Note that by jumping to a label in the same input script, the if
command can be used to break out of a loop. See the "variable
delete"_variable.html command for info on how to delete the associated
loop variable, so that it can be re-used later in the input script.
Here is an example of a double loop which uses the if and
"jump"_jump.html commands to break out of the inner loop when a
condition is met, then continues iterating thru the outer loop.
label loopa
variable a loop 5
label loopb
variable b loop 5
print "A,B = $a,$b"
run 10000
if '$b > 2' then "print 'Jumping to another script'" "jump in.script break"
next b
jump in.script loopb
label break
variable b delete :pre
next a
jump in.script loopa :pre
:line
The Boolean expressions for the if and elif keywords have a C-like
syntax. Note that each expression is a single argument within the if
command. Thus if you want to include spaces in the expression for
clarity, you must enclose the entire expression in quotes.
An expression is built out of numbers:
0.2, 100, 1.0e20, -15.4, etc :pre
and Boolean operators:
A == B, A != B, A < B, A <= B, A > B, A >= B, A && B, A || B, !A :pre
Each A and B is a number or a variable reference like $a or $\{abc\},
or another Boolean expression.
If a variable is used it must produce a number when evaluated and
substituted for in the expression, else an error will be generated.
Expressions are evaluated left to right and have the usual C-style
precedence: the unary logical NOT operator "!" has the highest
precedence, the 4 relational operators "<", "<=", ">", and ">=" are
next; the two remaining relational operators "==" and "!=" are next;
then the logical AND operator "&&"; and finally the logical OR
operator "||" has the lowest precedence. Parenthesis can be used to
group one or more portions of an expression and/or enforce a different
order of evaluation than what would occur with the default precedence.
The 6 relational operators return either a 1.0 or 0.0 depending on
whether the relationship between x and y is TRUE or FALSE. The
logical AND operator will return 1.0 if both its arguments are
non-zero, else it returns 0.0. The logical OR operator will return
1.0 if either of its arguments is non-zero, else it returns 0.0. The
logical NOT operator returns 1.0 if its argument is 0.0, else it
returns 0.0.
The overall Boolean expression produces a TRUE result if the result is
non-zero. If the result is zero, the expression result is FALSE.
:line
[Restrictions:] none
[Related commands:]
"variable"_variable.html, "print"_print.html
[Default:] none
diff --git a/doc/improper_class2.html b/doc/improper_class2.html
index 6fa33fdb2..481ab8e3b 100644
--- a/doc/improper_class2.html
+++ b/doc/improper_class2.html
@@ -1,104 +1,104 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>improper_style class2 command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>improper_style class2
</PRE>
<P><B>Examples:</B>
</P>
<PRE>improper_style class2
improper_coeff 1 100.0 0
improper_coeff * aa 0.0 0.0 0.0 115.06 130.01 115.06
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>class2</I> improper style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/improper_class2.jpg">
</CENTER>
<P>where Ei is the improper term and Eaa is an angle-angle term. The 3 X
terms in Ei are an average over 3 out-of-plane angles.
</P>
<P>The 4 atoms in an improper quadruplet (listed in the data file read by
the <A HREF = "read_data.html">read_data</A> command) are ordered I,J,K,L. X_IJKL
refers to the angle between the plane of I,J,K and the plane of J,K,L,
and the bond JK lies in both planes. Similarly for X_KJLI and X_LJIK.
Note that atom J appears in the common bonds (JI, JK, JL) of all 3 X
terms. Thus J (the 2nd atom in the quadruplet) is the atom of
symmetry in the 3 X angles.
</P>
<P>The subscripts on the various theta's refer to different combinations
of 3 atoms (I,J,K,L) used to form a particular angle. E.g. Theta_IJL
is the angle formed by atoms I,J,L with J in the middle. Theta1,
theta2, theta3 are the equilibrium positions of those angles. Again,
atom J (the 2nd atom in the quadruplet) is the atom of symmetry in the
theta angles, since it is always the center atom.
</P>
<P>Since atom J is the atom of symmetry, normally the bonds J-I, J-K, J-L
would exist for an improper to be defined between the 4 atoms, but
this is not required.
</P>
<P>See <A HREF = "#Sun">(Sun)</A> for a description of the COMPASS class2 force field.
</P>
<P>Coefficients for the Ei and Eaa formulas must be defined for each
improper type via the <A HREF = "improper_coeff.html">improper_coeff</A> command as
in the example 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.
</P>
<P>These are the 2 coefficients for the Ei formula:
</P>
<UL><LI>K (energy/radian^2)
<LI>X0 (degrees)
</UL>
<P>X0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of K are in energy/radian^2.
</P>
<P>For the Eaa formula, each line in a
<A HREF = "improper_coeff.html">improper_coeff</A> command in the input script lists
7 coefficients, the first of which is "aa" to indicate they are
AngleAngle coefficients. In a data file, these coefficients should be
listed under a "AngleAngle Coeffs" heading and you must leave out the
"aa", i.e. only list 6 coefficients after the improper type.
</P>
<UL><LI>aa
<LI>M1 (energy/distance)
<LI>M2 (energy/distance)
<LI>M3 (energy/distance)
<LI>theta1 (degrees)
<LI>theta2 (degrees)
<LI>theta3 (degrees)
</UL>
<P>The theta values are specified in degrees, but LAMMPS converts them to
radians internally; hence the units of M are in energy/radian^2.
</P>
<P><B>Restrictions:</B>
</P>
<P>This improper style can only be used if LAMMPS was built with the
-"class2" package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+"class2" package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A>
section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "improper_coeff.html">improper_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Sun"></A>
<P><B>(Sun)</B> Sun, J Phys Chem B 102, 7338-7364 (1998).
</P>
</HTML>
diff --git a/doc/improper_class2.txt b/doc/improper_class2.txt
index c2c2419a6..e44e69a4f 100644
--- a/doc/improper_class2.txt
+++ b/doc/improper_class2.txt
@@ -1,98 +1,98 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
improper_style class2 command :h3
[Syntax:]
improper_style class2 :pre
[Examples:]
improper_style class2
improper_coeff 1 100.0 0
improper_coeff * aa 0.0 0.0 0.0 115.06 130.01 115.06 :pre
[Description:]
The {class2} improper style uses the potential
:c,image(Eqs/improper_class2.jpg)
where Ei is the improper term and Eaa is an angle-angle term. The 3 X
terms in Ei are an average over 3 out-of-plane angles.
The 4 atoms in an improper quadruplet (listed in the data file read by
the "read_data"_read_data.html command) are ordered I,J,K,L. X_IJKL
refers to the angle between the plane of I,J,K and the plane of J,K,L,
and the bond JK lies in both planes. Similarly for X_KJLI and X_LJIK.
Note that atom J appears in the common bonds (JI, JK, JL) of all 3 X
terms. Thus J (the 2nd atom in the quadruplet) is the atom of
symmetry in the 3 X angles.
The subscripts on the various theta's refer to different combinations
of 3 atoms (I,J,K,L) used to form a particular angle. E.g. Theta_IJL
is the angle formed by atoms I,J,L with J in the middle. Theta1,
theta2, theta3 are the equilibrium positions of those angles. Again,
atom J (the 2nd atom in the quadruplet) is the atom of symmetry in the
theta angles, since it is always the center atom.
Since atom J is the atom of symmetry, normally the bonds J-I, J-K, J-L
would exist for an improper to be defined between the 4 atoms, but
this is not required.
See "(Sun)"_#Sun for a description of the COMPASS class2 force field.
Coefficients for the Ei and Eaa formulas must be defined for each
improper type via the "improper_coeff"_improper_coeff.html command as
in the example above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands.
These are the 2 coefficients for the Ei formula:
K (energy/radian^2)
X0 (degrees) :ul
X0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of K are in energy/radian^2.
For the Eaa formula, each line in a
"improper_coeff"_improper_coeff.html command in the input script lists
7 coefficients, the first of which is "aa" to indicate they are
AngleAngle coefficients. In a data file, these coefficients should be
listed under a "AngleAngle Coeffs" heading and you must leave out the
"aa", i.e. only list 6 coefficients after the improper type.
aa
M1 (energy/distance)
M2 (energy/distance)
M3 (energy/distance)
theta1 (degrees)
theta2 (degrees)
theta3 (degrees) :ul
The theta values are specified in degrees, but LAMMPS converts them to
radians internally; hence the units of M are in energy/radian^2.
[Restrictions:]
This improper style can only be used if LAMMPS was built with the
-"class2" package. See the "Making LAMMPS"_Section_start.html#2_3
+"class2" package. See the "Making LAMMPS"_Section_start.html#start_3
section for more info on packages.
[Related commands:]
"improper_coeff"_improper_coeff.html
[Default:] none
:line
:link(Sun)
[(Sun)] Sun, J Phys Chem B 102, 7338-7364 (1998).
diff --git a/doc/improper_coeff.html b/doc/improper_coeff.html
index 636133789..1808e9be3 100644
--- a/doc/improper_coeff.html
+++ b/doc/improper_coeff.html
@@ -1,102 +1,102 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>improper_coeff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>improper_coeff N args
</PRE>
<UL><LI>N = improper type (see asterisk form below)
<LI>args = coefficients for one or more improper types
</UL>
<P><B>Examples:</B>
</P>
<PRE>improper_coeff 1 300.0 0.0
improper_coeff * 80.2 -1 2
improper_coeff *4 80.2 -1 2
</PRE>
<P><B>Description:</B>
</P>
<P>Specify the improper force field coefficients for one or more improper
types. The number and meaning of the coefficients depends on the
improper style. Improper coefficients can also be set in the data
file read by the <A HREF = "read_data.html">read_data</A> command or in a restart
file.
</P>
<P>N can be specified in one of two ways. An explicit numeric value can
be used, as in the 1st example above. Or a wild-card asterisk can be
used to set the coefficients for multiple improper types. This takes
the form "*" or "*n" or "n*" or "m*n". If N = the number of improper
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>Note that using an improper_coeff command can override a previous
setting for the same improper type. For example, these commands set
the coeffs for all improper types, then overwrite the coeffs for just
improper type 2:
</P>
<PRE>improper_coeff * 300.0 0.0
improper_coeff 2 50.0 0.0
</PRE>
<P>A line in a data file that specifies improper coefficients uses the
exact same format as the arguments of the improper_coeff command in an
input script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example,
under the "Improper Coeffs" section of a data file, the line that
corresponds to the 1st example above would be listed as
</P>
<PRE>1 300.0 0.0
</PRE>
<P>The <A HREF = "improper_class2.html">improper_style class2</A> is an exception to
this rule, in that an additional argument is used in the input script
to allow specification of the cross-term coefficients. See its doc
page for details.
</P>
<HR>
<P>Here is an alphabetic list of improper styles defined in LAMMPS. Click on
the style to display the formula it computes and coefficients
specified by the associated <A HREF = "improper_coeff.html">improper_coeff</A> command:
</P>
<UL><LI><A HREF = "improper_none.html">improper_style none</A> - turn off improper interactions
<LI><A HREF = "improper_hybrid.html">improper_style hybrid</A> - define multiple styles of improper interactions
</UL>
<UL><LI><A HREF = "improper_class2.html">improper_style class2</A> - COMPASS (class 2) improper
<LI><A HREF = "improper_cvff.html">improper_style cvff</A> - CVFF improper
<LI><A HREF = "improper_harmonic.html">improper_style harmonic</A> - harmonic improper
<LI><A HREF = "improper_umbrella.html">improper_style umbrella</A> - DREIDING improper
</UL>
<P>There are also additional improper 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 improper section of <A HREF = "Section_commands.html#3_5">this
+the individual styles are given in the improper section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command must come after the simulation box is defined by 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>An improper style must be defined before any improper coefficients are
set, either in the input script or in a data file.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "improper_style.html">improper_style</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/improper_coeff.txt b/doc/improper_coeff.txt
index 642b881ea..a3defc274 100644
--- a/doc/improper_coeff.txt
+++ b/doc/improper_coeff.txt
@@ -1,97 +1,97 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
improper_coeff command :h3
[Syntax:]
improper_coeff N args :pre
N = improper type (see asterisk form below)
args = coefficients for one or more improper types :ul
[Examples:]
improper_coeff 1 300.0 0.0
improper_coeff * 80.2 -1 2
improper_coeff *4 80.2 -1 2 :pre
[Description:]
Specify the improper force field coefficients for one or more improper
types. The number and meaning of the coefficients depends on the
improper style. Improper coefficients can also be set in the data
file read by the "read_data"_read_data.html command or in a restart
file.
N can be specified in one of two ways. An explicit numeric value can
be used, as in the 1st example above. Or a wild-card asterisk can be
used to set the coefficients for multiple improper types. This takes
the form "*" or "*n" or "n*" or "m*n". If N = the number of improper
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).
Note that using an improper_coeff command can override a previous
setting for the same improper type. For example, these commands set
the coeffs for all improper types, then overwrite the coeffs for just
improper type 2:
improper_coeff * 300.0 0.0
improper_coeff 2 50.0 0.0 :pre
A line in a data file that specifies improper coefficients uses the
exact same format as the arguments of the improper_coeff command in an
input script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example,
under the "Improper Coeffs" section of a data file, the line that
corresponds to the 1st example above would be listed as
1 300.0 0.0 :pre
The "improper_style class2"_improper_class2.html is an exception to
this rule, in that an additional argument is used in the input script
to allow specification of the cross-term coefficients. See its doc
page for details.
:line
Here is an alphabetic list of improper styles defined in LAMMPS. Click on
the style to display the formula it computes and coefficients
specified by the associated "improper_coeff"_improper_coeff.html command:
"improper_style none"_improper_none.html - turn off improper interactions
"improper_style hybrid"_improper_hybrid.html - define multiple styles of improper interactions :ul
"improper_style class2"_improper_class2.html - COMPASS (class 2) improper
"improper_style cvff"_improper_cvff.html - CVFF improper
"improper_style harmonic"_improper_harmonic.html - harmonic improper
"improper_style umbrella"_improper_umbrella.html - DREIDING improper :ul
There are also additional improper 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 improper section of "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
:line
[Restrictions:]
This command must come after the simulation box is defined by a
"read_data"_read_data.html, "read_restart"_read_restart.html, or
"create_box"_create_box.html command.
An improper style must be defined before any improper coefficients are
set, either in the input script or in a data file.
[Related commands:]
"improper_style"_improper_style.html
[Default:] none
diff --git a/doc/improper_cvff.html b/doc/improper_cvff.html
index dedef21f2..b31a51611 100644
--- a/doc/improper_cvff.html
+++ b/doc/improper_cvff.html
@@ -1,68 +1,68 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>improper_style cvff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>improper_style cvff
</PRE>
<P><B>Examples:</B>
</P>
<PRE>improper_style cvff
improper_coeff 1 80.0 -1 4
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>cvff</I> improper style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/improper_cvff.jpg">
</CENTER>
<P>where phi is the Wilson out-of-plane angle.
</P>
<P>If the 4 atoms in an improper quadruplet (listed in the data file read
by the <A HREF = "read_data.html">read_data</A> command) are ordered I,J,K,L then
the Wilson angle is between the plane of I,J,K and the plane of J,K,L.
This is essentially a dihedral angle, which is why the formula for
this improper style is the same as for <A HREF = "dihedral_harmonic.html">dihedral_style
harmonic</A>. Alternatively, you can think of
atoms J,K,L as being in a plane, and atom I above the plane, and the
Wilson angle as a measure of how far out-of-plane I is with respect to
the other 3 atoms.
</P>
<P>Note that defining 4 atoms to interact in this way, does not mean that
bonds necessarily exist between I-J, J-K, or K-L, as they would in a
linear dihedral. Normally, the bonds I-J, I-K, I-L would exist for an
improper to be defined between the 4 atoms.
</P>
<P>The following coefficients must be defined for each improper type via
the <A HREF = "improper_coeff.html">improper_coeff</A> command as in the example
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:
</P>
<UL><LI>K (energy)
<LI>d (+1 or -1)
<LI>n (0,1,2,3,4,6)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This improper style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "improper_coeff.html">improper_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/improper_cvff.txt b/doc/improper_cvff.txt
index b58dd8338..83c9f2aab 100644
--- a/doc/improper_cvff.txt
+++ b/doc/improper_cvff.txt
@@ -1,63 +1,63 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
improper_style cvff command :h3
[Syntax:]
improper_style cvff :pre
[Examples:]
improper_style cvff
improper_coeff 1 80.0 -1 4 :pre
[Description:]
The {cvff} improper style uses the potential
:c,image(Eqs/improper_cvff.jpg)
where phi is the Wilson out-of-plane angle.
If the 4 atoms in an improper quadruplet (listed in the data file read
by the "read_data"_read_data.html command) are ordered I,J,K,L then
the Wilson angle is between the plane of I,J,K and the plane of J,K,L.
This is essentially a dihedral angle, which is why the formula for
this improper style is the same as for "dihedral_style
harmonic"_dihedral_harmonic.html. Alternatively, you can think of
atoms J,K,L as being in a plane, and atom I above the plane, and the
Wilson angle as a measure of how far out-of-plane I is with respect to
the other 3 atoms.
Note that defining 4 atoms to interact in this way, does not mean that
bonds necessarily exist between I-J, J-K, or K-L, as they would in a
linear dihedral. Normally, the bonds I-J, I-K, I-L would exist for an
improper to be defined between the 4 atoms.
The following coefficients must be defined for each improper type via
the "improper_coeff"_improper_coeff.html command as in the example
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
K (energy)
d (+1 or -1)
n (0,1,2,3,4,6) :ul
[Restrictions:]
This improper style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"improper_coeff"_improper_coeff.html
[Default:] none
diff --git a/doc/improper_harmonic.html b/doc/improper_harmonic.html
index 5d3604c10..e5747949d 100644
--- a/doc/improper_harmonic.html
+++ b/doc/improper_harmonic.html
@@ -1,68 +1,68 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>improper_style harmonic command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>improper_style harmonic
</PRE>
<P><B>Examples:</B>
</P>
<PRE>improper_style harmonic
improper_coeff 1 100.0 0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>harmonic</I> improper style uses the potential
</P>
<CENTER><IMG SRC = "Eqs/improper_harmonic.jpg">
</CENTER>
<P>where X is the improper angle, X0 is its equilibrium value, and K is a
prefactor. Note that the usual 1/2 factor is included in K.
</P>
<P>If the 4 atoms in an improper quadruplet (listed in the data file read
by the <A HREF = "read_data.html">read_data</A> command) are ordered I,J,K,L then X
is the angle between the plane of I,J,K and the plane of J,K,L.
Alternatively, you can think of atoms J,K,L as being in a plane, and
atom I above the plane, and X as a measure of how far out-of-plane I
is with respect to the other 3 atoms.
</P>
<P>Note that defining 4 atoms to interact in this way, does not mean that
bonds necessarily exist between I-J, J-K, or K-L, as they would in a
linear dihedral. Normally, the bonds I-J, I-K, I-L would exist for an
improper to be defined between the 4 atoms.
</P>
<P>The following coefficients must be defined for each improper type via
the <A HREF = "improper_coeff.html">improper_coeff</A> command as in the example
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:
</P>
<UL><LI>K (energy/radian^2)
<LI>X0 (degrees)
</UL>
<P>X0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of K are in energy/radian^2.
</P>
<P><B>Restrictions:</B>
</P>
<P>This improper style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "improper_coeff.html">improper_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/improper_harmonic.txt b/doc/improper_harmonic.txt
index c1170edb2..91451be7a 100644
--- a/doc/improper_harmonic.txt
+++ b/doc/improper_harmonic.txt
@@ -1,63 +1,63 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
improper_style harmonic command :h3
[Syntax:]
improper_style harmonic :pre
[Examples:]
improper_style harmonic
improper_coeff 1 100.0 0 :pre
[Description:]
The {harmonic} improper style uses the potential
:c,image(Eqs/improper_harmonic.jpg)
where X is the improper angle, X0 is its equilibrium value, and K is a
prefactor. Note that the usual 1/2 factor is included in K.
If the 4 atoms in an improper quadruplet (listed in the data file read
by the "read_data"_read_data.html command) are ordered I,J,K,L then X
is the angle between the plane of I,J,K and the plane of J,K,L.
Alternatively, you can think of atoms J,K,L as being in a plane, and
atom I above the plane, and X as a measure of how far out-of-plane I
is with respect to the other 3 atoms.
Note that defining 4 atoms to interact in this way, does not mean that
bonds necessarily exist between I-J, J-K, or K-L, as they would in a
linear dihedral. Normally, the bonds I-J, I-K, I-L would exist for an
improper to be defined between the 4 atoms.
The following coefficients must be defined for each improper type via
the "improper_coeff"_improper_coeff.html command as in the example
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
K (energy/radian^2)
X0 (degrees) :ul
X0 is specified in degrees, but LAMMPS converts it to radians
internally; hence the units of K are in energy/radian^2.
[Restrictions:]
This improper style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"improper_coeff"_improper_coeff.html
[Default:] none
diff --git a/doc/improper_hybrid.html b/doc/improper_hybrid.html
index 981fc7945..b67f99d5f 100644
--- a/doc/improper_hybrid.html
+++ b/doc/improper_hybrid.html
@@ -1,73 +1,73 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>improper_style hybrid command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>improper_style hybrid style1 style2 ...
</PRE>
<UL><LI>style1,style2 = list of one or more improper styles
</UL>
<P><B>Examples:</B>
</P>
<PRE>improper_style hybrid harmonic helix
improper_coeff 1 harmonic 120.0 30
improper_coeff 2 cvff 20.0 -1 2
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>hybrid</I> style enables the use of multiple improper styles in one
simulation. An improper style is assigned to each improper type. For
example, impropers in a polymer flow (of improper type 1) could be
computed with a <I>harmonic</I> potential and impropers in the wall
boundary (of improper type 2) could be computed with a <I>cvff</I>
potential. The assignment of improper type to style is made via the
<A HREF = "improper_coeff.html">improper_coeff</A> command or in the data file.
</P>
<P>In the improper_coeff command, the first coefficient sets the improper
style and the remaining coefficients are those appropriate to that
style. In the example above, the 2 improper_coeff commands would set
impropers of improper type 1 to be computed with a <I>harmonic</I>
potential with coefficients 120.0, 30 for K, X0. Improper type 2
would be computed with a <I>cvff</I> potential with coefficients 20.0, -1,
2 for K, d, n.
</P>
<P>If the improper <I>class2</I> potential is one of the hybrid styles, it
requires additional AngleAngle coefficients be specified in the data
file. These lines must also have an additional "class2" argument
added after the improper type. For improper types which are assigned
to other hybrid styles, use the style name (e.g. "harmonic")
appropriate to that style. The AngleAngle coeffs for that improper
type will then be ignored.
</P>
<P>An improper style of <I>none</I> can be specified as the 2nd argument to
the improper_coeff command, if you desire to turn off certain improper
types.
</P>
<P><B>Restrictions:</B>
</P>
<P>This improper style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P>Unlike other improper styles, the hybrid improper style does not store
improper coefficient info for individual sub-styles in a <A HREF = "restart.html">binary
restart files</A>. Thus when retarting a simulation from a
restart file, you need to re-specify improper_coeff commands.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "improper_coeff.html">improper_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/improper_hybrid.txt b/doc/improper_hybrid.txt
index 6a17b82ee..9af233e33 100644
--- a/doc/improper_hybrid.txt
+++ b/doc/improper_hybrid.txt
@@ -1,68 +1,68 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
improper_style hybrid command :h3
[Syntax:]
improper_style hybrid style1 style2 ... :pre
style1,style2 = list of one or more improper styles :ul
[Examples:]
improper_style hybrid harmonic helix
improper_coeff 1 harmonic 120.0 30
improper_coeff 2 cvff 20.0 -1 2 :pre
[Description:]
The {hybrid} style enables the use of multiple improper styles in one
simulation. An improper style is assigned to each improper type. For
example, impropers in a polymer flow (of improper type 1) could be
computed with a {harmonic} potential and impropers in the wall
boundary (of improper type 2) could be computed with a {cvff}
potential. The assignment of improper type to style is made via the
"improper_coeff"_improper_coeff.html command or in the data file.
In the improper_coeff command, the first coefficient sets the improper
style and the remaining coefficients are those appropriate to that
style. In the example above, the 2 improper_coeff commands would set
impropers of improper type 1 to be computed with a {harmonic}
potential with coefficients 120.0, 30 for K, X0. Improper type 2
would be computed with a {cvff} potential with coefficients 20.0, -1,
2 for K, d, n.
If the improper {class2} potential is one of the hybrid styles, it
requires additional AngleAngle coefficients be specified in the data
file. These lines must also have an additional "class2" argument
added after the improper type. For improper types which are assigned
to other hybrid styles, use the style name (e.g. "harmonic")
appropriate to that style. The AngleAngle coeffs for that improper
type will then be ignored.
An improper style of {none} can be specified as the 2nd argument to
the improper_coeff command, if you desire to turn off certain improper
types.
[Restrictions:]
This improper style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
Unlike other improper styles, the hybrid improper style does not store
improper coefficient info for individual sub-styles in a "binary
restart files"_restart.html. Thus when retarting a simulation from a
restart file, you need to re-specify improper_coeff commands.
[Related commands:]
"improper_coeff"_improper_coeff.html
[Default:] none
diff --git a/doc/improper_style.html b/doc/improper_style.html
index 189f6e2e0..3a61ee8ca 100644
--- a/doc/improper_style.html
+++ b/doc/improper_style.html
@@ -1,98 +1,98 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>improper_style command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>improper_style style
</PRE>
<UL><LI>style = <I>none</I> or <I>hybrid</I> or <I>class2</I> or <I>cvff</I> or <I>harmonic</I>
</UL>
<P><B>Examples:</B>
</P>
<PRE>improper_style harmonic
improper_style cvff
improper_style hybrid cvff harmonic
</PRE>
<P><B>Description:</B>
</P>
<P>Set the formula(s) LAMMPS uses to compute improper interactions
between quadruplets of atoms, which remain in force for the duration
of the simulation. The list of improper 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. Note that the ordering of the 4 atoms in
an improper quadruplet determines the the definition of the improper
angle used in the formula for each style. See the doc pages of
individual styles for details.
</P>
<P>Hybrid models where impropers are computed using different improper
potentials can be setup using the <I>hybrid</I> improper style.
</P>
<P>The coefficients associated with an improper style can be specified in
a data or restart file or via the <A HREF = "improper_coeff.html">improper_coeff</A>
command.
</P>
<P>All improper potentials store their coefficient data in binary restart
files which means improper_style and
<A HREF = "improper_coeff.html">improper_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 improper_style <I>hybrid</I> only stores
the list of sub-styles in the restart file; improper coefficients need
to be re-specified.
</P>
<P>IMPORTANT NOTE: When both an improper 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 a group of 4 bonded atoms.
</P>
<HR>
<P>Here is an alphabetic list of improper styles defined in LAMMPS. Click on
the style to display the formula it computes and coefficients
specified by the associated <A HREF = "improper_coeff.html">improper_coeff</A> command:
</P>
<UL><LI><A HREF = "improper_none.html">improper_style none</A> - turn off improper interactions
<LI><A HREF = "improper_hybrid.html">improper_style hybrid</A> - define multiple styles of improper interactions
</UL>
<UL><LI><A HREF = "improper_class2.html">improper_style class2</A> - COMPASS (class 2) improper
<LI><A HREF = "improper_cvff.html">improper_style cvff</A> - CVFF improper
<LI><A HREF = "improper_harmonic.html">improper_style harmonic</A> - harmonic improper
<LI><A HREF = "improper_umbrella.html">improper_style umbrella</A> - DREIDING improper
</UL>
<P>There are also additional improper 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 improper section of <A HREF = "Section_commands.html#3_5">this
+the individual styles are given in the improper section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>Improper styles can only be set for atom_style choices that allow
impropers to be defined.
</P>
<P>Most improper styles are part of the "molecular" package. They are
-only enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
-LAMMPS</A> section for more info on packages. The
-doc pages for individual improper potentials tell if it is part of a
-package.
+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 on packages.
+The doc pages for individual improper potentials tell if it is part of
+a package.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "improper_coeff.html">improper_coeff</A>
</P>
<P><B>Default:</B>
</P>
<PRE>improper_style none
</PRE>
</HTML>
diff --git a/doc/improper_style.txt b/doc/improper_style.txt
index c7e1c08b7..da255312e 100644
--- a/doc/improper_style.txt
+++ b/doc/improper_style.txt
@@ -1,93 +1,93 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
improper_style command :h3
[Syntax:]
improper_style style :pre
style = {none} or {hybrid} or {class2} or {cvff} or {harmonic} :ul
[Examples:]
improper_style harmonic
improper_style cvff
improper_style hybrid cvff harmonic :pre
[Description:]
Set the formula(s) LAMMPS uses to compute improper interactions
between quadruplets of atoms, which remain in force for the duration
of the simulation. The list of improper quadruplets is read in by a
"read_data"_read_data.html or "read_restart"_read_restart.html command
from a data or restart file. Note that the ordering of the 4 atoms in
an improper quadruplet determines the the definition of the improper
angle used in the formula for each style. See the doc pages of
individual styles for details.
Hybrid models where impropers are computed using different improper
potentials can be setup using the {hybrid} improper style.
The coefficients associated with an improper style can be specified in
a data or restart file or via the "improper_coeff"_improper_coeff.html
command.
All improper potentials store their coefficient data in binary restart
files which means improper_style and
"improper_coeff"_improper_coeff.html commands do not need to be
re-specified in an input script that restarts a simulation. See the
"read_restart"_read_restart.html command for details on how to do
this. The one exception is that improper_style {hybrid} only stores
the list of sub-styles in the restart file; improper coefficients need
to be re-specified.
IMPORTANT NOTE: When both an improper and pair style is defined, the
"special_bonds"_special_bonds.html command often needs to be used to
turn off (or weight) the pairwise interaction that would otherwise
exist between a group of 4 bonded atoms.
:line
Here is an alphabetic list of improper styles defined in LAMMPS. Click on
the style to display the formula it computes and coefficients
specified by the associated "improper_coeff"_improper_coeff.html command:
"improper_style none"_improper_none.html - turn off improper interactions
"improper_style hybrid"_improper_hybrid.html - define multiple styles of improper interactions :ul
"improper_style class2"_improper_class2.html - COMPASS (class 2) improper
"improper_style cvff"_improper_cvff.html - CVFF improper
"improper_style harmonic"_improper_harmonic.html - harmonic improper
"improper_style umbrella"_improper_umbrella.html - DREIDING improper :ul
There are also additional improper 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 improper section of "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
:line
[Restrictions:]
Improper styles can only be set for atom_style choices that allow
impropers to be defined.
Most improper styles are part of the "molecular" package. They are
only enabled if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages. The
-doc pages for individual improper potentials tell if it is part of a
-package.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
+The doc pages for individual improper potentials tell if it is part of
+a package.
[Related commands:]
"improper_coeff"_improper_coeff.html
[Default:]
improper_style none :pre
diff --git a/doc/improper_umbrella.html b/doc/improper_umbrella.html
index b3d66ac16..3ccfd10f1 100644
--- a/doc/improper_umbrella.html
+++ b/doc/improper_umbrella.html
@@ -1,70 +1,70 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>improper_style umbrella command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>improper_style umbrella
</PRE>
<P><B>Examples:</B>
</P>
<PRE>improper_style umbrella
improper_coeff 1 100.0 180.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>umbrella</I> improper style uses the following potential, which is
commonly referred to as a classic inversion and used in the
-<A HREF = "Section_howto.html#4_4">DREIDING</A> force field:
+<A HREF = "Section_howto.html#howto_4">DREIDING</A> force field:
</P>
<CENTER><IMG SRC = "Eqs/improper_umbrella.jpg">
</CENTER>
<P>where K is the force constant and omega is the angle between the IL
axis and the IJK plane:
</P>
<CENTER><IMG SRC = "Eqs/umbrella.jpg">
</CENTER>
<P>If omega0 = 0 the potential term has a minimum for the planar
structure. Otherwise it has two minima at +/- omega0, with a barrier
in between.
</P>
<P>See <A HREF = "#Mayo">(Mayo)</A> for a description of the DREIDING force field.
</P>
<P>The following coefficients must be defined for each improper type via
the <A HREF = "improper_coeff.html">improper_coeff</A> command as in the example
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:
</P>
<UL><LI>K (energy)
<LI>omega0 (degrees)
</UL>
<P><B>Restrictions:</B>
</P>
<P>This improper style can only be used if LAMMPS was built with the
-"molecular" package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+"molecular" package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "improper_coeff.html">improper_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Mayo"></A>
<P><B>(Mayo)</B> Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990),
</P>
</HTML>
diff --git a/doc/improper_umbrella.txt b/doc/improper_umbrella.txt
index d0d43ab12..232c46f68 100644
--- a/doc/improper_umbrella.txt
+++ b/doc/improper_umbrella.txt
@@ -1,64 +1,64 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
improper_style umbrella command :h3
[Syntax:]
improper_style umbrella :pre
[Examples:]
improper_style umbrella
improper_coeff 1 100.0 180.0 :pre
[Description:]
The {umbrella} improper style uses the following potential, which is
commonly referred to as a classic inversion and used in the
-"DREIDING"_Section_howto.html#4_4 force field:
+"DREIDING"_Section_howto.html#howto_4 force field:
:c,image(Eqs/improper_umbrella.jpg)
where K is the force constant and omega is the angle between the IL
axis and the IJK plane:
:c,image(Eqs/umbrella.jpg)
If omega0 = 0 the potential term has a minimum for the planar
structure. Otherwise it has two minima at +/- omega0, with a barrier
in between.
See "(Mayo)"_#Mayo for a description of the DREIDING force field.
The following coefficients must be defined for each improper type via
the "improper_coeff"_improper_coeff.html command as in the example
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
K (energy)
omega0 (degrees) :ul
[Restrictions:]
This improper style can only be used if LAMMPS was built with the
"molecular" package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages.
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
"improper_coeff"_improper_coeff.html
[Default:] none
:line
:link(Mayo)
[(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990),
diff --git a/doc/jump.html b/doc/jump.html
index ac8129a3b..2d175a6a7 100644
--- a/doc/jump.html
+++ b/doc/jump.html
@@ -1,116 +1,117 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>jump command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>jump file label
</PRE>
<UL><LI>file = filename of new input script to switch to
<LI>label = optional label within file to jump to
</UL>
<P><B>Examples:</B>
</P>
<PRE>jump newfile
jump in.run2 runloop
jump SELF runloop
</PRE>
<P><B>Description:</B>
</P>
<P>This command closes the current input script file, opens the file with
the specified name, and begins reading LAMMPS commands from that file.
Unlike the <A HREF = "include.html">include</A> command, the original file is not
returned to, although by using multiple jump commands it is possible
to chain from file to file or back to the original file.
</P>
<P>If the word "SELF" is used for the filename, then the current input
script is re-opened and read again.
</P>
<P>IMPORTANT NOTE: The SELF option is not guaranteed to work when the
current input script is being read through stdin (standard input),
e.g.
</P>
<PRE>lmp_g++ < in.script
</PRE>
<P>since the SELF option invokes the C-library rewind() call, which may
not be supported for stdin on some systems. This can be worked around
-by using the <A HREF = "Section_start.html#2_6">-in command-line argument</A> or the
-<A HREF = "Section_start.html#2_6">-var command-line argument</A> to pass the script
-name as a variable to the input script In the latter case, the "fname"
-<A HREF = "variable.html">variable</A> could be used in place of SELF. E.g.
+by using the <A HREF = "Section_start.html#start_6">-in command-line argument</A> or
+the <A HREF = "Section_start.html#start_6">-var command-line argument</A> to pass
+the script name as a variable to the input script In the latter case,
+the "fname" <A HREF = "variable.html">variable</A> could be used in place of SELF.
+E.g.
</P>
<PRE>lmp_g++ -in in.script
</PRE>
<PRE>lmp_g++ -var fname n.script < in.script
</PRE>
<P>The 2nd argument to the jump command is optional. If specified, it is
treated as a label and the new file is scanned (without executing
commands) until the label is found, and commands are executed from
that point forward. This can be used to loop over a portion of the
input script, as in this example. These commands perform 10 runs,
each of 10000 steps, and create 10 dump files named file.1, file.2,
etc. The <A HREF = "next.html">next</A> command is used to exit the loop after 10
iterations. When the "a" variable has been incremented for the tenth
time, it will cause the next jump command to be skipped.
</P>
<PRE>variable a loop 10
label loop
dump 1 all atom 100 file.$a
run 10000
undump 1
next a
jump in.lj loop
</PRE>
<P>If the jump <I>file</I> argument is a variable, the jump command can be
used to cause different processor partitions to run different input
scripts. In this example, LAMMPS is run on 40 processors, with 4
partitions of 10 procs each. An in.file containing the example
variable and jump command will cause each partition to run a different
simulation.
</P>
<PRE>mpirun -np 40 lmp_ibm -partition 4x10 -in in.file
</PRE>
<PRE>variable f world script.1 script.2 script.3 script.4
jump $f
</PRE>
<P>Here is an example of a double loop which uses the <A HREF = "if.html">if</A> and
jump commands to break out of the inner loop when a condition is met,
then continues iterating thru the outer loop.
</P>
<PRE>label loopa
variable a loop 5
label loopb
variable b loop 5
print "A,B = $a,$b"
run 10000
if $b > 2 then "jump in.script break"
next b
jump in.script loopb
label break
variable b delete
</PRE>
<PRE>next a
jump in.script loopa
</PRE>
<P><B>Restrictions:</B>
</P>
<P>If you jump to a file and it does not contain the specified label,
LAMMPS will come to the end of the file and exit.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "variable.html">variable</A>, <A HREF = "include.html">include</A>, <A HREF = "label.html">label</A>,
<A HREF = "next.html">next</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/jump.txt b/doc/jump.txt
index 277e17e1b..83f40af7e 100644
--- a/doc/jump.txt
+++ b/doc/jump.txt
@@ -1,109 +1,110 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
jump command :h3
[Syntax:]
jump file label :pre
file = filename of new input script to switch to
label = optional label within file to jump to :ul
[Examples:]
jump newfile
jump in.run2 runloop
jump SELF runloop :pre
[Description:]
This command closes the current input script file, opens the file with
the specified name, and begins reading LAMMPS commands from that file.
Unlike the "include"_include.html command, the original file is not
returned to, although by using multiple jump commands it is possible
to chain from file to file or back to the original file.
If the word "SELF" is used for the filename, then the current input
script is re-opened and read again.
IMPORTANT NOTE: The SELF option is not guaranteed to work when the
current input script is being read through stdin (standard input),
e.g.
lmp_g++ < in.script :pre
since the SELF option invokes the C-library rewind() call, which may
not be supported for stdin on some systems. This can be worked around
-by using the "-in command-line argument"_Section_start.html#2_6 or the
-"-var command-line argument"_Section_start.html#2_6 to pass the script
-name as a variable to the input script In the latter case, the "fname"
-"variable"_variable.html could be used in place of SELF. E.g.
+by using the "-in command-line argument"_Section_start.html#start_6 or
+the "-var command-line argument"_Section_start.html#start_6 to pass
+the script name as a variable to the input script In the latter case,
+the "fname" "variable"_variable.html could be used in place of SELF.
+E.g.
lmp_g++ -in in.script :pre
lmp_g++ -var fname n.script < in.script :pre
The 2nd argument to the jump command is optional. If specified, it is
treated as a label and the new file is scanned (without executing
commands) until the label is found, and commands are executed from
that point forward. This can be used to loop over a portion of the
input script, as in this example. These commands perform 10 runs,
each of 10000 steps, and create 10 dump files named file.1, file.2,
etc. The "next"_next.html command is used to exit the loop after 10
iterations. When the "a" variable has been incremented for the tenth
time, it will cause the next jump command to be skipped.
variable a loop 10
label loop
dump 1 all atom 100 file.$a
run 10000
undump 1
next a
jump in.lj loop :pre
If the jump {file} argument is a variable, the jump command can be
used to cause different processor partitions to run different input
scripts. In this example, LAMMPS is run on 40 processors, with 4
partitions of 10 procs each. An in.file containing the example
variable and jump command will cause each partition to run a different
simulation.
mpirun -np 40 lmp_ibm -partition 4x10 -in in.file :pre
variable f world script.1 script.2 script.3 script.4
jump $f :pre
Here is an example of a double loop which uses the "if"_if.html and
jump commands to break out of the inner loop when a condition is met,
then continues iterating thru the outer loop.
label loopa
variable a loop 5
label loopb
variable b loop 5
print "A,B = $a,$b"
run 10000
if $b > 2 then "jump in.script break"
next b
jump in.script loopb
label break
variable b delete :pre
next a
jump in.script loopa :pre
[Restrictions:]
If you jump to a file and it does not contain the specified label,
LAMMPS will come to the end of the file and exit.
[Related commands:]
"variable"_variable.html, "include"_include.html, "label"_label.html,
"next"_next.html
[Default:] none
diff --git a/doc/kspace_style.html b/doc/kspace_style.html
index 5f6a03c98..af71e1765 100644
--- a/doc/kspace_style.html
+++ b/doc/kspace_style.html
@@ -1,189 +1,189 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>kspace_style command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>kspace_style style value
</PRE>
<UL><LI>style = <I>none</I> or <I>ewald</I> or <I>pppm</I> or <I>pppm/cg</I> or <I>pppm/tip4p</I> or <I>ewald/n</I> or <I>pppm/gpu</I>
<PRE> <I>none</I> value = none
<I>ewald</I> value = precision
precision = desired accuracy
<I>pppm</I> value = precision
precision = desired accuracy
<I>pppm/cg</I> value = precision (smallq)
precision = desired accuracy
smallq = cutoff for charges to be considered (optional) (charge units)
<I>pppm/tip4p</I> value = precision
precision = desired accuracy
<I>ewald/n</I> value = precision
precision = desired accuracy
<I>pppm/gpu</I> value = precision
precision = desired accuracy
</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 none
</PRE>
<P><B>Description:</B>
</P>
<P>Define a K-space solver for LAMMPS to use each timestep to compute
long-range Coulombic interactions or long-range 1/r^N interactions.
When such a solver is used in conjunction with an appropriate pair
style, the cutoff for Coulombic or other 1/r^N interactions is
effectively infinite; each charge in the system interacts with charges
in an infinite array of periodic images of the simulation domain.
</P>
<P>The <I>ewald</I> style performs a standard Ewald summation as described in
any solid-state physics text.
</P>
<P>The <I>pppm</I> style invokes a particle-particle particle-mesh solver
<A HREF = "#Hockney">(Hockney)</A> which maps atom charge to a 3d mesh, uses 3d FFTs
to solve Poisson's equation on the mesh, then interpolates electric
fields on the mesh points back to the atoms. It is closely related to
the particle-mesh Ewald technique (PME) <A HREF = "#Darden">(Darden)</A> used in
AMBER and CHARMM. The cost of traditional Ewald summation scales as
N^(3/2) where N is the number of atoms in the system. The PPPM solver
scales as Nlog(N) due to the FFTs, so it is almost always a faster
choice <A HREF = "#Pollock">(Pollock)</A>.
</P>
<P>The <I>pppm/cg</I> style is identical to the <I>pppm</I> style except that it
has an optimization for systems where most particles are uncharged.
The optional <I>smallq</I> argument defines the cutoff for the absolute
charge value which determines whether a particle is considered charged
or not. Its default value is 1.0e-5.
</P>
<P>The <I>pppm/tip4p</I> style is identical to the <I>pppm</I> style except that it
adds a charge at the massless 4th site in each TIP4P water molecule.
It should be used with <A HREF = "pair_style.html">pair styles</A> with a
<I>long/tip4p</I> in their style name.
</P>
<P>The <I>ewald/n</I> style augments <I>ewald</I> by adding long-range dispersion
sum capabilities for 1/r^N potentials and is useful for simulation of
interfaces <A HREF = "#Veld">(Veld)</A>. It also performs standard coulombic Ewald
summations, but in a more efficient manner than the <I>ewald</I> style.
The 1/r^N capability means that Lennard-Jones or Buckingham potentials
can be used with <I>ewald/n</I> without a cutoff, i.e. they become full
long-range potentials.
</P>
<P>Currently, only the <I>ewald/n</I> style can be used with non-orthogonal
(triclinic symmetry) simulation boxes.
</P>
<P>Note that the PPPM styles can be used with single-precision FFTs by
using the compiler switch -DFFT_SINGLE for the FFT_INC setting in your
lo-level Makefile. This setting also changes some of the PPPM
operations (e.g. mapping charge to mesh and interpolating electric
fields to particles) to be performed in single precision. This option
can speed-up long-range calulations, particularly in parallel or on
-GPUs. The use of the -DFFT_SINGLE flag is discussed in <A HREF = "Section_start.html#2_2_4">this
+GPUs. The use of the -DFFT_SINGLE flag is discussed in <A HREF = "Section_start.html#start_2_4">this
section</A> of the manual.
</P>
<HR>
<P>When a kspace style is used, a pair style that includes the
short-range correction to the pairwise Coulombic or other 1/r^N forces
must also be selected. For Coulombic interactions, these styles are
ones that have a <I>coul/long</I> in their style name. For 1/r^6
dispersion forces in a Lennard-Jones or Buckingham potential, see the
<A HREF = "pair_lj_coul.html">pair_style lj/coul</A> or <A HREF = "pair_buck_coul.html">pair_style
buck/coul</A> commands.
</P>
<P>A precision value of 1.0e-4 means one part in 10000. This setting is
used in conjunction with the pairwise cutoff to determine the number
of K-space vectors for style <I>ewald</I> or the FFT grid size for style
<I>pppm</I>.
</P>
<P>See the <A HREF = "kspace_modify.html">kspace_modify</A> command for additional
options of the K-space solvers that can be set.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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>More specifically, the <I>pppm/gpu</I> style performs charge assignment and
force interpolation calculations on the GPU. These processes are
performed either in single or double precision, depending on whether
the -DFFT_SINGLE setting was specified in your lo-level Makefile, as
discussed above. The FFTs themselves are still calculated on the CPU.
If <I>pppm/gpu</I> is used with a GPU-enabled pair style, part of the PPPM
calculation can be performed concurrently on the GPU while other
calculations for non-bonded and bonded force calculation are performed
on the CPU.
</P>
<P>These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A>
section for more info.
</P>
<P>See <A HREF = "Section_accelerate.html">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<P><B>Restrictions:</B>
</P>
<P>A simulation must be 3d and periodic in all dimensions to use an Ewald
or PPPM solver. The only exception is if the slab option is set with
<A HREF = "kspace_modify.html">kspace_modify</A>, in which case the xy dimensions
must be periodic and the z dimension must be non-periodic.
</P>
<P>Kspace styles are part of the "kspace" package. They are only enabled
-if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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 <I>ewald/n</I> style is part of the "user-ewaldn" package. It is only
-enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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>When using a long-range pairwise TIP4P potential, you must use kspace
style <I>pppm/tip4p</I> and vice versa.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "kspace_modify.html">kspace_modify</A>, <A HREF = "pair_lj.html">pair_style
lj/cut/coul/long</A>, <A HREF = "pair_charmm.html">pair_style
lj/charmm/coul/long</A>, <A HREF = "pair_lj_coul.html">pair_style
lj/coul</A>, <A HREF = "pair_buck.html">pair_style buck/coul/long</A>
</P>
<P><B>Default:</B>
</P>
<PRE>kspace_style none
</PRE>
<HR>
<A NAME = "Darden"></A>
<P><B>(Darden)</B> Darden, York, Pedersen, J Chem Phys, 98, 10089 (1993).
</P>
<A NAME = "Hockney"></A>
<P><B>(Hockney)</B> Hockney and Eastwood, Computer Simulation Using Particles,
Adam Hilger, NY (1989).
</P>
<A NAME = "Pollock"></A>
<P><B>(Pollock)</B> Pollock and Glosli, Comp Phys Comm, 95, 93 (1996).
</P>
<A NAME = "Veld"></A>
<P><B>(Veld)</B> In 't Veld, Ismail, Grest, J Chem Phys, in press (2007).
</P>
</HTML>
diff --git a/doc/kspace_style.txt b/doc/kspace_style.txt
index 51825d6ec..c5d887ac9 100644
--- a/doc/kspace_style.txt
+++ b/doc/kspace_style.txt
@@ -1,178 +1,178 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
kspace_style command :h3
[Syntax:]
kspace_style style value :pre
style = {none} or {ewald} or {pppm} or {pppm/cg} or {pppm/tip4p} or {ewald/n} or {pppm/gpu} :ulb,l
{none} value = none
{ewald} value = precision
precision = desired accuracy
{pppm} value = precision
precision = desired accuracy
{pppm/cg} value = precision (smallq)
precision = desired accuracy
smallq = cutoff for charges to be considered (optional) (charge units)
{pppm/tip4p} value = precision
precision = desired accuracy
{ewald/n} value = precision
precision = desired accuracy
{pppm/gpu} value = precision
precision = desired accuracy :pre
:ule
[Examples:]
kspace_style pppm 1.0e-4
kspace_style pppm/cg 1.0e-5 1.0e-6
kspace_style none :pre
[Description:]
Define a K-space solver for LAMMPS to use each timestep to compute
long-range Coulombic interactions or long-range 1/r^N interactions.
When such a solver is used in conjunction with an appropriate pair
style, the cutoff for Coulombic or other 1/r^N interactions is
effectively infinite; each charge in the system interacts with charges
in an infinite array of periodic images of the simulation domain.
The {ewald} style performs a standard Ewald summation as described in
any solid-state physics text.
The {pppm} style invokes a particle-particle particle-mesh solver
"(Hockney)"_#Hockney which maps atom charge to a 3d mesh, uses 3d FFTs
to solve Poisson's equation on the mesh, then interpolates electric
fields on the mesh points back to the atoms. It is closely related to
the particle-mesh Ewald technique (PME) "(Darden)"_#Darden used in
AMBER and CHARMM. The cost of traditional Ewald summation scales as
N^(3/2) where N is the number of atoms in the system. The PPPM solver
scales as Nlog(N) due to the FFTs, so it is almost always a faster
choice "(Pollock)"_#Pollock.
The {pppm/cg} style is identical to the {pppm} style except that it
has an optimization for systems where most particles are uncharged.
The optional {smallq} argument defines the cutoff for the absolute
charge value which determines whether a particle is considered charged
or not. Its default value is 1.0e-5.
The {pppm/tip4p} style is identical to the {pppm} style except that it
adds a charge at the massless 4th site in each TIP4P water molecule.
It should be used with "pair styles"_pair_style.html with a
{long/tip4p} in their style name.
The {ewald/n} style augments {ewald} by adding long-range dispersion
sum capabilities for 1/r^N potentials and is useful for simulation of
interfaces "(Veld)"_#Veld. It also performs standard coulombic Ewald
summations, but in a more efficient manner than the {ewald} style.
The 1/r^N capability means that Lennard-Jones or Buckingham potentials
can be used with {ewald/n} without a cutoff, i.e. they become full
long-range potentials.
Currently, only the {ewald/n} style can be used with non-orthogonal
(triclinic symmetry) simulation boxes.
Note that the PPPM styles can be used with single-precision FFTs by
using the compiler switch -DFFT_SINGLE for the FFT_INC setting in your
lo-level Makefile. This setting also changes some of the PPPM
operations (e.g. mapping charge to mesh and interpolating electric
fields to particles) to be performed in single precision. This option
can speed-up long-range calulations, particularly in parallel or on
GPUs. The use of the -DFFT_SINGLE flag is discussed in "this
-section"_Section_start.html#2_2_4 of the manual.
+section"_Section_start.html#start_2_4 of the manual.
:line
When a kspace style is used, a pair style that includes the
short-range correction to the pairwise Coulombic or other 1/r^N forces
must also be selected. For Coulombic interactions, these styles are
ones that have a {coul/long} in their style name. For 1/r^6
dispersion forces in a Lennard-Jones or Buckingham potential, see the
"pair_style lj/coul"_pair_lj_coul.html or "pair_style
buck/coul"_pair_buck_coul.html commands.
A precision value of 1.0e-4 means one part in 10000. This setting is
used in conjunction with the pairwise cutoff to determine the number
of K-space vectors for style {ewald} or the FFT grid size for style
{pppm}.
See the "kspace_modify"_kspace_modify.html command for additional
options of the K-space solvers that can be set.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of
the manual. The accelerated styles take the same arguments and should
produce the same results, except for round-off and precision issues.
More specifically, the {pppm/gpu} style performs charge assignment and
force interpolation calculations on the GPU. These processes are
performed either in single or double precision, depending on whether
the -DFFT_SINGLE setting was specified in your lo-level Makefile, as
discussed above. The FFTs themselves are still calculated on the CPU.
If {pppm/gpu} is used with a GPU-enabled pair style, part of the PPPM
calculation can be performed concurrently on the GPU while other
calculations for non-bonded and bonded force calculation are performed
on the CPU.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
[Restrictions:]
A simulation must be 3d and periodic in all dimensions to use an Ewald
or PPPM solver. The only exception is if the slab option is set with
"kspace_modify"_kspace_modify.html, in which case the xy dimensions
must be periodic and the z dimension must be non-periodic.
Kspace styles are part of the "kspace" package. They are only enabled
if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
The {ewald/n} style is part of the "user-ewaldn" package. It is only
enabled if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
When using a long-range pairwise TIP4P potential, you must use kspace
style {pppm/tip4p} and vice versa.
[Related commands:]
"kspace_modify"_kspace_modify.html, "pair_style
lj/cut/coul/long"_pair_lj.html, "pair_style
lj/charmm/coul/long"_pair_charmm.html, "pair_style
lj/coul"_pair_lj_coul.html, "pair_style buck/coul/long"_pair_buck.html
[Default:]
kspace_style none :pre
:line
:link(Darden)
[(Darden)] Darden, York, Pedersen, J Chem Phys, 98, 10089 (1993).
:link(Hockney)
[(Hockney)] Hockney and Eastwood, Computer Simulation Using Particles,
Adam Hilger, NY (1989).
:link(Pollock)
[(Pollock)] Pollock and Glosli, Comp Phys Comm, 95, 93 (1996).
:link(Veld)
[(Veld)] In 't Veld, Ismail, Grest, J Chem Phys, in press (2007).
diff --git a/doc/log.html b/doc/log.html
index baf805ee6..2edfe3fcd 100644
--- a/doc/log.html
+++ b/doc/log.html
@@ -1,46 +1,47 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>log command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>log file
</PRE>
<UL><LI>file = name of new logfile
</UL>
<P><B>Examples:</B>
</P>
<PRE>log log.equil
</PRE>
<P><B>Description:</B>
</P>
<P>This command closes the current LAMMPS log file, opens a new file with
the specified name, and begins logging information to it. If the
specified file name is <I>none</I>, then no new log file is opened.
</P>
<P>If multiple processor partitions are being used, the file name should
be a variable, so that different processors do not attempt to write to
the same log file.
</P>
<P>The file "log.lammps" is the default log file for a LAMMPS run. The
name of the initial log file can also be set by the command-line
-switch -log. See <A HREF = "Section_start.html#2_6">this section</A> for details.
+switch -log. See <A HREF = "Section_start.html#start_6">this section</A> for
+details.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B>
</P>
<P>The default LAMMPS log file is named log.lammps
</P>
</HTML>
diff --git a/doc/log.txt b/doc/log.txt
index 76a5729c3..dc56bfcb6 100644
--- a/doc/log.txt
+++ b/doc/log.txt
@@ -1,41 +1,42 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
log command :h3
[Syntax:]
log file :pre
file = name of new logfile :ul
[Examples:]
log log.equil :pre
[Description:]
This command closes the current LAMMPS log file, opens a new file with
the specified name, and begins logging information to it. If the
specified file name is {none}, then no new log file is opened.
If multiple processor partitions are being used, the file name should
be a variable, so that different processors do not attempt to write to
the same log file.
The file "log.lammps" is the default log file for a LAMMPS run. The
name of the initial log file can also be set by the command-line
-switch -log. See "this section"_Section_start.html#2_6 for details.
+switch -log. See "this section"_Section_start.html#start_6 for
+details.
[Restrictions:] none
[Related commands:] none
[Default:]
The default LAMMPS log file is named log.lammps
diff --git a/doc/neb.html b/doc/neb.html
index 67a4ed596..75f02c4b4 100644
--- a/doc/neb.html
+++ b/doc/neb.html
@@ -1,332 +1,333 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>neb command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>neb etol ftol N1 N2 Nevery filename
</PRE>
<UL><LI>etol = stopping tolerance for energy (energy units)
<LI>ftol = stopping tolerance for force (force units)
<LI>N1 = max # of iterations (timesteps) to run initial NEB
<LI>N2 = max # of iterations (timesteps) to run barrier-climbing NEB
<LI>Nevery = print replica energies and reaction coordinates every this many timesteps
<LI>filename = file specifying final atom coordinates on other side of barrier
</UL>
<P><B>Examples:</B>
</P>
<PRE>neb 0.1 0.0 1000 500 50 coords.final
neb 0.0 0.001 1000 500 50 coords.final
</PRE>
<P><B>Description:</B>
</P>
<P>Perform a nudged elastic band (NEB) calculation using multiple
replicas of a system. Two or more replicas must be used, two of which
are the end points of the transition path.
</P>
<P>NEB is a method for finding both the atomic configurations and height
of the energy barrier associated with a transition state, e.g. for an
atom to perform a diffusive hop from one energy basin to another in a
coordinated fashion with its neighbors. The implementation in LAMMPS
follows the discussion in these 3 papers: <A HREF = "#Henkelman1">(Henkelman1)</A>,
<A HREF = "#Henkelman2">(Henkelman2)</A>, and <A HREF = "#Nakano">(Nakano)</A>.
</P>
<P>Each replica runs on a partition of one or more processors. Processor
partitions are defined at run-time using the -partition command-line
-switch; see <A HREF = "Section_start.html#2_6">this section</A> of the manual. Note
-that if you have MPI installed, you can run a multi-replica simulation
-with more replicas (partitions) than you have physical processors, e.g
-you can run a 10-replica simulation on one or two processors. You
-will simply not get the performance speed-up you would see with one or
-more physical processors per replica. See <A HREF = "Section_howto.html#4_5">this
-section</A> of the manual for further discussion.
+switch; see <A HREF = "Section_start.html#start_6">this section</A> of the manual.
+Note that if you have MPI installed, you can run a multi-replica
+simulation with more replicas (partitions) than you have physical
+processors, e.g you can run a 10-replica simulation on one or two
+processors. You will simply not get the performance speed-up you
+would see with one or more physical processors per replica. See <A HREF = "Section_howto.html#howto_5">this
+section</A> of the manual for further
+discussion.
</P>
<P>NOTE: The current NEB implementation in LAMMPS restricts you to having
exactly one processor per replica.
</P>
<P>When a NEB calculation is performed, it is assumed that each replica
is running the same model, though LAMMPS does not check for this.
I.e. the simulation domain, the number of atoms, the interaction
potentials, and the starting configuration when the neb command is
issued should be the same for every replica.
</P>
<P>In a NEB calculation each atom in a replica is connected to the same
atom in adjacent replicas by springs, which induce inter-replica
forces. These forces are imposed by the <A HREF = "fix_neb.html">fix neb</A>
command, which must be used in conjunction with the neb command. The
group used to define the fix neb command specifies which atoms the
inter-replica springs are applied to. These are the NEB atoms.
Additional atoms can be present in your system, e.g. to provide a
background force field or simply to hold fixed during the NEB
procedure, but they will not be part of the barrier finding procedure.
</P>
<P>The "starting configuration" for NEB should be a state with the NEB
atoms (and all other atoms) having coordinates on one side of the
energy barrier. These coordinates will be assigned to the first
replica #1. The coordinates should be close to a local energy
minimum. A perfect energy minimum is not required, since NEB runs via
damped dynamics which will tend to drive the configuration of replica
#1 to a true energy minimum, but you will typically get better
convergence if the initial state is already at a minimum. For
example, for a system with a free surface, the surface should be fully
relaxed before attempting a NEB calculation.
</P>
<P>The final configuration is specified in the input <I>filename</I>, which is
formatted as described below. Only coordinates for NEB atoms or a
subset of them should be listed in the file; they represent the state
of the system on the other side of the barrier, at or near an energy
minimum. These coordinates will be assigned to the last replica #M.
The final coordinates of atoms not listed in <I>filename</I> are set equal
to their initial coordinates. Again, a perfect energy minimum is not
required for the final configuration, since the atoms in replica #M
will tend to move during the NEB procedure to the nearest energy
minimum. Also note that a final coordinate does not need to be
specified for a NEB atom if you expect it to only displace slightly
during the NEB procedure. For example, only the final coordinate of
the single atom diffusing into a vacancy need be specified if the
surrounding atoms will only relax slightly in the final configuration.
</P>
<P>The initial coordinates of all atoms (not just NEB atoms) in the
intermediate replicas #2,#3,...,#M-1 are set to values linearly
interpolated between the corresponding atoms in replicas #1 and #M.
</P>
<P>A NEB calculation has two stages, each of which is a minimization
procedure, performed via damped dynamics. To enable this, you must
first define an appropriate <A HREF = "min_style.html">min_style</A>, such as
<I>quickmin</I> or <I>fire</I>. The <I>cg</I>, <I>sd</I>, and <I>hftn</I> styles cannot be
used, since they perform iterative line searches in their inner loop,
which cannot be easily synchronized across multiple replicas.
</P>
<P>The minimizer tolerances for energy and force are set by <I>etol</I> and <I>ftol</I>,
the same as for
the <A HREF = "minimize.html">minimize</A> command.
</P>
<P>A non-zero <I>etol</I>
means that the NEB calculation will terminate if the energy criterion is met
by every replica. The energies being compared to
<I>etol</I> do not include any contribution from the inter-replica forces, since
these are non-conservative.
A non-zero <I>ftol</I>
means that the NEB calculation will terminate if the force criterion is met
by every replica. The forces being compared to
<I>ftol</I> include the inter-replica forces between an atom and its images
in adjacent replicas.
</P>
<P>The maximum number of iterations in each stage is set by <I>N1</I> and
<I>N2</I>. These are effectively timestep counts since each iteration of
damped dynamics is like a single timestep in a dynamics
<A HREF = "run.html">run</A>. During both stages, the potential energy of each
replica and its normalized distance along the reaction path (reaction
coordinate RD) will be printed to the screen and log file every
<I>Nevery</I> timesteps. The RD is 0 and 1 for the first and last replica.
For intermediate replicas, it is the cumulative distance (normalized
by the total cumulative distance) between adjacent replicas, where
"distance" is defined as the length of the 3N-vector of differences in
atomic coordinates, where N is the number of NEB atoms involved in the
transition. These outputs allow you to monitor NEB's progress in
finding a good energy barrier. <I>N1</I> and <I>N2</I> must both be multiples
of <I>Nevery</I>.
</P>
<P>In the first stage of NEB, the set of replicas should converge toward
the minimum energy path (MEP) of conformational states that transition
over the barrier. The MEP for a barrier is defined as a sequence of
3N-dimensional states that cross the barrier at its saddle point, each
of which has a potential energy gradient parallel to the MEP itself.
The replica states will also be roughly equally spaced along the MEP
due to the inter-replica spring force added by the <A HREF = "fix_neb.html">fix
neb</A> command.
</P>
<P>In the second stage of NEB, the replica with the highest energy
is selected and the inter-replica forces on it are converted to a
force that drives its atom coordinates to the top or saddle point of
the barrier, via the barrier-climbing calculation described in
<A HREF = "#Hinkelman2">(Henkelman2)</A>. As before, the other replicas rearrange
themselves along the MEP so as to be roughly equally spaced.
</P>
<P>When both stages are complete, if the NEB calculation was successful,
one of the replicas should be an atomic configuration at the top or
saddle point of the barrier, the potential energies for the set of
replicas should represent the energy profile of the barrier along the
MEP, and the configurations of the replicas should be a sequence of
configurations along the MEP.
</P>
<HR>
<P>A few other settings in your input script are required or advised to
perform a NEB calculation.
</P>
<P>An atom map must be defined which it is not by default for <A HREF = "atom_style.html">atom_style
atomic</A> problems. The <A HREF = "atom_modify.html">atom_modify
map</A> command can be used to do this.
</P>
<P>The "atom_modify sort 0 0.0" command should be used to turn off atom
sorting.
</P>
<P>NOTE: This sorting restriction will be removed in a future version of
NEB in LAMMPS.
</P>
<P>The minimizers in LAMMPS operate on all atoms in your system, even
non-NEB atoms, as defined above. To prevent non-NEB atoms from moving
during the minimization, you should use the <A HREF = "fix_setforce.html">fix
setforce</A> command to set the force on each of those
atoms to 0.0. This is not required, and may not even be desired in
some cases, but if those atoms move too far (e.g. because the initial
state of your system was not well-minimized), it can cause problems
for the NEB procedure.
</P>
<P>The damped dynamics <A HREF = "min_style.html">minimizers</A>, such as <I>quickmin</I>
and <I>fire</I>), adjust the position and velocity of the atoms via an
Euler integration step. Thus you must define an appropriate
<A HREF = "timestep.html">timestep</A> to use with NEB. Using the same timestep
that would be used for a dynamics <A HREF = "run.html">run</A> of your system is
advised.
</P>
<HR>
<P>The specified <I>filename</I> contains atom coordinates for the final
configuration. Only atoms with coordinates different than the initial
configuration need to be specified, i.e. those geometrically near the
barrier.
</P>
<P>The file can be ASCII text or a gzipped text file (detected by a .gz
suffix). The file should contain one line per atom, formatted
with the atom ID, followed by the final x,y,z coordinates:
</P>
<PRE>125 24.97311 1.69005 23.46956
126 1.94691 2.79640 1.92799
127 0.15906 3.46099 0.79121
...
</PRE>
<P>The lines can be listed in any order.
</P>
<HR>
<P>Four kinds of output can be generated during a NEB calculation: energy
barrier statistics, thermodynamic output by each replica, dump files,
and restart files.
</P>
<P>When running with multiple partitions (each of which is a replica in
this case), the print-out to the screen and master log.lammps file
contains a line of output, printed once every <I>Nevery</I> timesteps. It
contains the timestep, the maximum force per replica, the maximum
force per atom (in any replica), potential gradients in the initial,
final, and climbing replicas,
the forward and backward energy barriers,
the total reaction coordinate (RDT), and
the normalized reaction coordinate and potential energy of each replica.
</P>
<P>The "maximum force per replica" is
the two-norm of the 3N-length force vector for the atoms in each
replica, maximized across replicas, which is what the <I>ftol</I> setting
is checking against. In this case, N is all the atoms in each
replica. The "maximum force per atom" is the maximum force component
of any atom in any replica. The potential gradients are the two-norm
of the 3N-length force vector solely due to the interaction potential i.e.
without adding in inter-replica forces. Note that inter-replica forces
are zero in the initial and final replicas, and only affect
the direction in the climbing replica. For this reason, the "maximum
force per replica" is often equal to the potential gradient in the
climbing replica. In the first stage of NEB, there is no climbing
replica, and so the potential gradient in the highest energy replica
is reported, since this replica will become the climbing replica
in the second stage of NEB.
</P>
<P>The "reaction coordinate" (RD) for each
replica is the two-norm of the 3N-length vector of distances between
its atoms and the preceding replica's atoms, added to the RD of the
preceding replica. The RD of the first replica RD1 = 0.0;
the RD of the final replica RDN = RDT, the total reaction coordinate.
The normalized RDs are divided by RDT,
so that they form a monotonically increasing sequence
from zero to one. When computing RD, N only includes the atoms
being operated on by the fix neb command.
</P>
<P>The forward (reverse) energy barrier is the potential energy of the highest
replica minus the energy of the first (last) replica.
</P>
<P>When running on multiple partitions, LAMMPS produces additional log
files for each partition, e.g. log.lammps.0, log.lammps.1, etc. For a
NEB calculation, these contain the thermodynamic output for each
replica.
</P>
<P>If <A HREF = "dump.html">dump</A> commands in the input script define a filename
that includes a <I>universe</I> or <I>uloop</I> style <A HREF = "variable.html">variable</A>,
then one dump file (per dump command) will be created for each
replica. At the end of the NEB calculation, the final snapshot in
each file will contain the sequence of snapshots that transition the
system over the energy barrier. Earlier snapshots will show the
convergence of the replicas to the MEP.
</P>
<P>Likewise, <A HREF = "restart.html">restart</A> filenames can be specified with a
<I>universe</I> or <I>uloop</I> style <A HREF = "variable.html">variable</A>, to generate
restart files for each replica. These may be useful if the NEB
calculation fails to converge properly to the MEP, and you wish to
restart the calculation from an intermediate point with altered
parameters.
</P>
<P>There are 2 Python scripts provided in the tools/python directory,
neb_combine.py and neb_final.py, which are useful in analyzing output
from a NEB calculation. Assume a NEB simulation with M replicas, and
the NEB atoms labelled with a specific atom type.
</P>
<P>The neb_combine.py script extracts atom coords for the NEB atoms from
all M dump files and creates a single dump file where each snapshot
contains the NEB atoms from all the replicas and one copy of non-NEB
atoms from the first replica (presumed to be identical in other
replicas). This can be visualized/animated to see how the NEB atoms
relax as the NEB calculation proceeds.
</P>
<P>The neb_final.py script extracts the final snapshot from each of the M
dump files to create a single dump file with M snapshots. This can be
visualized to watch the system make its transition over the energy
barrier.
</P>
<P>To illustrate, here are images from the final snapshot produced by the
neb_combine.py script run on the dump files produced by the two
example input scripts in examples/neb. Click on them to see a larger
image.
</P>
<A HREF = "JPG/hop1.jpg"><IMG SRC = "JPG/hop1_small.jpg"></A>
<A HREF = "JPG/hop2.jpg"><IMG SRC = "JPG/hop2_small.jpg"></A>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command can only be used if LAMMPS was built with the "replica"
-package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info on packages.
+package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "prd.html">prd</A>, <A HREF = "temper.html">temper</A>, <A HREF = "fix_langevin.html">fix
langevin</A>, <A HREF = "fix_viscous.html">fix viscous</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Henkelman1"></A>
<P><B>(Henkelman1)</B> Henkelman and Jonsson, J Chem Phys, 113, 9978-9985 (2000).
</P>
<A NAME = "Henkelman2"></A>
<P><B>(Henkelman2)</B> Henkelman, Uberuaga, Jonsson, J Chem Phys, 113,
9901-9904 (2000).
</P>
<A NAME = "Nakano"></A>
<P><B>(Nakano)</B> Nakano, Comp Phys Comm, 178, 280-289 (2008).
</P>
</HTML>
diff --git a/doc/neb.txt b/doc/neb.txt
index 1e9cb0e20..993ecd0b0 100644
--- a/doc/neb.txt
+++ b/doc/neb.txt
@@ -1,323 +1,324 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
neb command :h3
[Syntax:]
neb etol ftol N1 N2 Nevery filename :pre
etol = stopping tolerance for energy (energy units)
ftol = stopping tolerance for force (force units)
N1 = max # of iterations (timesteps) to run initial NEB
N2 = max # of iterations (timesteps) to run barrier-climbing NEB
Nevery = print replica energies and reaction coordinates every this many timesteps
filename = file specifying final atom coordinates on other side of barrier :ul
[Examples:]
neb 0.1 0.0 1000 500 50 coords.final
neb 0.0 0.001 1000 500 50 coords.final :pre
[Description:]
Perform a nudged elastic band (NEB) calculation using multiple
replicas of a system. Two or more replicas must be used, two of which
are the end points of the transition path.
NEB is a method for finding both the atomic configurations and height
of the energy barrier associated with a transition state, e.g. for an
atom to perform a diffusive hop from one energy basin to another in a
coordinated fashion with its neighbors. The implementation in LAMMPS
follows the discussion in these 3 papers: "(Henkelman1)"_#Henkelman1,
"(Henkelman2)"_#Henkelman2, and "(Nakano)"_#Nakano.
Each replica runs on a partition of one or more processors. Processor
partitions are defined at run-time using the -partition command-line
-switch; see "this section"_Section_start.html#2_6 of the manual. Note
-that if you have MPI installed, you can run a multi-replica simulation
-with more replicas (partitions) than you have physical processors, e.g
-you can run a 10-replica simulation on one or two processors. You
-will simply not get the performance speed-up you would see with one or
-more physical processors per replica. See "this
-section"_Section_howto.html#4_5 of the manual for further discussion.
+switch; see "this section"_Section_start.html#start_6 of the manual.
+Note that if you have MPI installed, you can run a multi-replica
+simulation with more replicas (partitions) than you have physical
+processors, e.g you can run a 10-replica simulation on one or two
+processors. You will simply not get the performance speed-up you
+would see with one or more physical processors per replica. See "this
+section"_Section_howto.html#howto_5 of the manual for further
+discussion.
NOTE: The current NEB implementation in LAMMPS restricts you to having
exactly one processor per replica.
When a NEB calculation is performed, it is assumed that each replica
is running the same model, though LAMMPS does not check for this.
I.e. the simulation domain, the number of atoms, the interaction
potentials, and the starting configuration when the neb command is
issued should be the same for every replica.
In a NEB calculation each atom in a replica is connected to the same
atom in adjacent replicas by springs, which induce inter-replica
forces. These forces are imposed by the "fix neb"_fix_neb.html
command, which must be used in conjunction with the neb command. The
group used to define the fix neb command specifies which atoms the
inter-replica springs are applied to. These are the NEB atoms.
Additional atoms can be present in your system, e.g. to provide a
background force field or simply to hold fixed during the NEB
procedure, but they will not be part of the barrier finding procedure.
The "starting configuration" for NEB should be a state with the NEB
atoms (and all other atoms) having coordinates on one side of the
energy barrier. These coordinates will be assigned to the first
replica #1. The coordinates should be close to a local energy
minimum. A perfect energy minimum is not required, since NEB runs via
damped dynamics which will tend to drive the configuration of replica
#1 to a true energy minimum, but you will typically get better
convergence if the initial state is already at a minimum. For
example, for a system with a free surface, the surface should be fully
relaxed before attempting a NEB calculation.
The final configuration is specified in the input {filename}, which is
formatted as described below. Only coordinates for NEB atoms or a
subset of them should be listed in the file; they represent the state
of the system on the other side of the barrier, at or near an energy
minimum. These coordinates will be assigned to the last replica #M.
The final coordinates of atoms not listed in {filename} are set equal
to their initial coordinates. Again, a perfect energy minimum is not
required for the final configuration, since the atoms in replica #M
will tend to move during the NEB procedure to the nearest energy
minimum. Also note that a final coordinate does not need to be
specified for a NEB atom if you expect it to only displace slightly
during the NEB procedure. For example, only the final coordinate of
the single atom diffusing into a vacancy need be specified if the
surrounding atoms will only relax slightly in the final configuration.
The initial coordinates of all atoms (not just NEB atoms) in the
intermediate replicas #2,#3,...,#M-1 are set to values linearly
interpolated between the corresponding atoms in replicas #1 and #M.
A NEB calculation has two stages, each of which is a minimization
procedure, performed via damped dynamics. To enable this, you must
first define an appropriate "min_style"_min_style.html, such as
{quickmin} or {fire}. The {cg}, {sd}, and {hftn} styles cannot be
used, since they perform iterative line searches in their inner loop,
which cannot be easily synchronized across multiple replicas.
The minimizer tolerances for energy and force are set by {etol} and {ftol},
the same as for
the "minimize"_minimize.html command.
A non-zero {etol}
means that the NEB calculation will terminate if the energy criterion is met
by every replica. The energies being compared to
{etol} do not include any contribution from the inter-replica forces, since
these are non-conservative.
A non-zero {ftol}
means that the NEB calculation will terminate if the force criterion is met
by every replica. The forces being compared to
{ftol} include the inter-replica forces between an atom and its images
in adjacent replicas.
The maximum number of iterations in each stage is set by {N1} and
{N2}. These are effectively timestep counts since each iteration of
damped dynamics is like a single timestep in a dynamics
"run"_run.html. During both stages, the potential energy of each
replica and its normalized distance along the reaction path (reaction
coordinate RD) will be printed to the screen and log file every
{Nevery} timesteps. The RD is 0 and 1 for the first and last replica.
For intermediate replicas, it is the cumulative distance (normalized
by the total cumulative distance) between adjacent replicas, where
"distance" is defined as the length of the 3N-vector of differences in
atomic coordinates, where N is the number of NEB atoms involved in the
transition. These outputs allow you to monitor NEB's progress in
finding a good energy barrier. {N1} and {N2} must both be multiples
of {Nevery}.
In the first stage of NEB, the set of replicas should converge toward
the minimum energy path (MEP) of conformational states that transition
over the barrier. The MEP for a barrier is defined as a sequence of
3N-dimensional states that cross the barrier at its saddle point, each
of which has a potential energy gradient parallel to the MEP itself.
The replica states will also be roughly equally spaced along the MEP
due to the inter-replica spring force added by the "fix
neb"_fix_neb.html command.
In the second stage of NEB, the replica with the highest energy
is selected and the inter-replica forces on it are converted to a
force that drives its atom coordinates to the top or saddle point of
the barrier, via the barrier-climbing calculation described in
"(Henkelman2)"_#Hinkelman2. As before, the other replicas rearrange
themselves along the MEP so as to be roughly equally spaced.
When both stages are complete, if the NEB calculation was successful,
one of the replicas should be an atomic configuration at the top or
saddle point of the barrier, the potential energies for the set of
replicas should represent the energy profile of the barrier along the
MEP, and the configurations of the replicas should be a sequence of
configurations along the MEP.
:line
A few other settings in your input script are required or advised to
perform a NEB calculation.
An atom map must be defined which it is not by default for "atom_style
atomic"_atom_style.html problems. The "atom_modify
map"_atom_modify.html command can be used to do this.
The "atom_modify sort 0 0.0" command should be used to turn off atom
sorting.
NOTE: This sorting restriction will be removed in a future version of
NEB in LAMMPS.
The minimizers in LAMMPS operate on all atoms in your system, even
non-NEB atoms, as defined above. To prevent non-NEB atoms from moving
during the minimization, you should use the "fix
setforce"_fix_setforce.html command to set the force on each of those
atoms to 0.0. This is not required, and may not even be desired in
some cases, but if those atoms move too far (e.g. because the initial
state of your system was not well-minimized), it can cause problems
for the NEB procedure.
The damped dynamics "minimizers"_min_style.html, such as {quickmin}
and {fire}), adjust the position and velocity of the atoms via an
Euler integration step. Thus you must define an appropriate
"timestep"_timestep.html to use with NEB. Using the same timestep
that would be used for a dynamics "run"_run.html of your system is
advised.
:line
The specified {filename} contains atom coordinates for the final
configuration. Only atoms with coordinates different than the initial
configuration need to be specified, i.e. those geometrically near the
barrier.
The file can be ASCII text or a gzipped text file (detected by a .gz
suffix). The file should contain one line per atom, formatted
with the atom ID, followed by the final x,y,z coordinates:
125 24.97311 1.69005 23.46956
126 1.94691 2.79640 1.92799
127 0.15906 3.46099 0.79121
... :pre
The lines can be listed in any order.
:line
Four kinds of output can be generated during a NEB calculation: energy
barrier statistics, thermodynamic output by each replica, dump files,
and restart files.
When running with multiple partitions (each of which is a replica in
this case), the print-out to the screen and master log.lammps file
contains a line of output, printed once every {Nevery} timesteps. It
contains the timestep, the maximum force per replica, the maximum
force per atom (in any replica), potential gradients in the initial,
final, and climbing replicas,
the forward and backward energy barriers,
the total reaction coordinate (RDT), and
the normalized reaction coordinate and potential energy of each replica.
The "maximum force per replica" is
the two-norm of the 3N-length force vector for the atoms in each
replica, maximized across replicas, which is what the {ftol} setting
is checking against. In this case, N is all the atoms in each
replica. The "maximum force per atom" is the maximum force component
of any atom in any replica. The potential gradients are the two-norm
of the 3N-length force vector solely due to the interaction potential i.e.
without adding in inter-replica forces. Note that inter-replica forces
are zero in the initial and final replicas, and only affect
the direction in the climbing replica. For this reason, the "maximum
force per replica" is often equal to the potential gradient in the
climbing replica. In the first stage of NEB, there is no climbing
replica, and so the potential gradient in the highest energy replica
is reported, since this replica will become the climbing replica
in the second stage of NEB.
The "reaction coordinate" (RD) for each
replica is the two-norm of the 3N-length vector of distances between
its atoms and the preceding replica's atoms, added to the RD of the
preceding replica. The RD of the first replica RD1 = 0.0;
the RD of the final replica RDN = RDT, the total reaction coordinate.
The normalized RDs are divided by RDT,
so that they form a monotonically increasing sequence
from zero to one. When computing RD, N only includes the atoms
being operated on by the fix neb command.
The forward (reverse) energy barrier is the potential energy of the highest
replica minus the energy of the first (last) replica.
When running on multiple partitions, LAMMPS produces additional log
files for each partition, e.g. log.lammps.0, log.lammps.1, etc. For a
NEB calculation, these contain the thermodynamic output for each
replica.
If "dump"_dump.html commands in the input script define a filename
that includes a {universe} or {uloop} style "variable"_variable.html,
then one dump file (per dump command) will be created for each
replica. At the end of the NEB calculation, the final snapshot in
each file will contain the sequence of snapshots that transition the
system over the energy barrier. Earlier snapshots will show the
convergence of the replicas to the MEP.
Likewise, "restart"_restart.html filenames can be specified with a
{universe} or {uloop} style "variable"_variable.html, to generate
restart files for each replica. These may be useful if the NEB
calculation fails to converge properly to the MEP, and you wish to
restart the calculation from an intermediate point with altered
parameters.
There are 2 Python scripts provided in the tools/python directory,
neb_combine.py and neb_final.py, which are useful in analyzing output
from a NEB calculation. Assume a NEB simulation with M replicas, and
the NEB atoms labelled with a specific atom type.
The neb_combine.py script extracts atom coords for the NEB atoms from
all M dump files and creates a single dump file where each snapshot
contains the NEB atoms from all the replicas and one copy of non-NEB
atoms from the first replica (presumed to be identical in other
replicas). This can be visualized/animated to see how the NEB atoms
relax as the NEB calculation proceeds.
The neb_final.py script extracts the final snapshot from each of the M
dump files to create a single dump file with M snapshots. This can be
visualized to watch the system make its transition over the energy
barrier.
To illustrate, here are images from the final snapshot produced by the
neb_combine.py script run on the dump files produced by the two
example input scripts in examples/neb. Click on them to see a larger
image.
:image(JPG/hop1_small.jpg,JPG/hop1.jpg)
:image(JPG/hop2_small.jpg,JPG/hop2.jpg)
:line
[Restrictions:]
This command can only be used if LAMMPS was built with the "replica"
-package. See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info on packages.
+package. See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
[Related commands:]
"prd"_prd.html, "temper"_temper.html, "fix
langevin"_fix_langevin.html, "fix viscous"_fix_viscous.html
[Default:] none
:line
:link(Henkelman1)
[(Henkelman1)] Henkelman and Jonsson, J Chem Phys, 113, 9978-9985 (2000).
:link(Henkelman2)
[(Henkelman2)] Henkelman, Uberuaga, Jonsson, J Chem Phys, 113,
9901-9904 (2000).
:link(Nakano)
[(Nakano)] Nakano, Comp Phys Comm, 178, 280-289 (2008).
diff --git a/doc/neighbor.html b/doc/neighbor.html
index 5746c00ac..0a69e18d7 100644
--- a/doc/neighbor.html
+++ b/doc/neighbor.html
@@ -1,88 +1,88 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>neighbor command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>neighbor skin style
</PRE>
<UL><LI>skin = extra distance beyond force cutoff (distance units)
<LI>style = <I>bin</I> or <I>nsq</I> or <I>multi</I>
</UL>
<P><B>Examples:</B>
</P>
<PRE>neighbor 0.3 bin
neighbor 2.0 nsq
</PRE>
<P><B>Description:</B>
</P>
<P>This command sets parameters that affect the building of pairwise
neighbor lists. All atom pairs within a neighbor cutoff distance
equal to the their force cutoff plus the <I>skin</I> distance are stored in
the list. Typically, the larger the skin distance, the less often
neighbor lists need to be built, but more pairs must be checked for
possible force interactions every timestep. The default value for
<I>skin</I> depends on the choice of units for the simulation; see the
default values below.
</P>
<P>The <I>skin</I> distance is also used to determine how often atoms migrate
to new processors if the <I>check</I> option of the
<A HREF = "neigh_modify.html">neigh_modify</A> command is set to <I>yes</I>. Atoms are
migrated (communicated) to new processors on the same timestep that
neighbor lists are re-built.
</P>
<P>The <I>style</I> value selects what algorithm is used to build the list.
The <I>bin</I> style creates the list by binning which is an operation that
scales linearly with N/P, the number of atoms per processor where N =
total number of atoms and P = number of processors. It is almost
always faster than the <I>nsq</I> style which scales as (N/P)^2. For
unsolvated small molecules in a non-periodic box, the <I>nsq</I> choice can
sometimes be faster. Either style should give the same answers.
</P>
<P>The <I>multi</I> style is a modified binning algorithm that is useful for
systems with a wide range of cutoff distances, e.g. due to different
size particles. For the <I>bin</I> style, the bin size is set to 1/2 of
the largest cutoff distance between any pair of atom types and a
single set of bins is defined to search over for all atom types. This
can be inefficient if one pair of types has a very long cutoff, but
other type pairs have a much shorter cutoff. For style <I>multi</I> the
bin size is set to 1/2 of the shortest cutoff distance and multiple
sets of bins are defined to search over for different atom types.
This imposes some extra setup overhead, but the searches themselves
may be much faster for the short-cutoff cases. See the <A HREF = "communicate.html">communicate
multi</A> command for a communication option option that
may also be beneficial for simulations of this kind.
</P>
<P>The <A HREF = "neigh_modify.html">neigh_modify</A> command has additional options
that control how often neighbor lists are built and which pairs are
stored in the list.
</P>
<P>When a run is finished, counts of the number of neighbors stored in
the pairwise list and the number of times neighbor lists were built
-are printed to the screen and log file. See <A HREF = "Section_start.html#2_7">this
+are printed to the screen and log file. See <A HREF = "Section_start.html#start_7">this
section</A> for details.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "neigh_modify.html">neigh_modify</A>, <A HREF = "units.html">units</A>,
<A HREF = "communicate.html">communicate</A>
</P>
<P><B>Default:</B>
</P>
0.3 bin for units = lj, skin = 0.3 sigma<BR>
2.0 bin for units = real or metal, skin = 2.0 Angstroms<BR>
0.001 bin for units = si, skin = 0.001 meters = 1.0 mm<BR>
0.1 bin for units = cgs, skin = 0.1 cm = 1.0 mm <BR>
</HTML>
diff --git a/doc/neighbor.txt b/doc/neighbor.txt
index 160ec935c..199bd9143 100644
--- a/doc/neighbor.txt
+++ b/doc/neighbor.txt
@@ -1,83 +1,83 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
neighbor command :h3
[Syntax:]
neighbor skin style :pre
skin = extra distance beyond force cutoff (distance units)
style = {bin} or {nsq} or {multi} :ul
[Examples:]
neighbor 0.3 bin
neighbor 2.0 nsq :pre
[Description:]
This command sets parameters that affect the building of pairwise
neighbor lists. All atom pairs within a neighbor cutoff distance
equal to the their force cutoff plus the {skin} distance are stored in
the list. Typically, the larger the skin distance, the less often
neighbor lists need to be built, but more pairs must be checked for
possible force interactions every timestep. The default value for
{skin} depends on the choice of units for the simulation; see the
default values below.
The {skin} distance is also used to determine how often atoms migrate
to new processors if the {check} option of the
"neigh_modify"_neigh_modify.html command is set to {yes}. Atoms are
migrated (communicated) to new processors on the same timestep that
neighbor lists are re-built.
The {style} value selects what algorithm is used to build the list.
The {bin} style creates the list by binning which is an operation that
scales linearly with N/P, the number of atoms per processor where N =
total number of atoms and P = number of processors. It is almost
always faster than the {nsq} style which scales as (N/P)^2. For
unsolvated small molecules in a non-periodic box, the {nsq} choice can
sometimes be faster. Either style should give the same answers.
The {multi} style is a modified binning algorithm that is useful for
systems with a wide range of cutoff distances, e.g. due to different
size particles. For the {bin} style, the bin size is set to 1/2 of
the largest cutoff distance between any pair of atom types and a
single set of bins is defined to search over for all atom types. This
can be inefficient if one pair of types has a very long cutoff, but
other type pairs have a much shorter cutoff. For style {multi} the
bin size is set to 1/2 of the shortest cutoff distance and multiple
sets of bins are defined to search over for different atom types.
This imposes some extra setup overhead, but the searches themselves
may be much faster for the short-cutoff cases. See the "communicate
multi"_communicate.html command for a communication option option that
may also be beneficial for simulations of this kind.
The "neigh_modify"_neigh_modify.html command has additional options
that control how often neighbor lists are built and which pairs are
stored in the list.
When a run is finished, counts of the number of neighbors stored in
the pairwise list and the number of times neighbor lists were built
are printed to the screen and log file. See "this
-section"_Section_start.html#2_7 for details.
+section"_Section_start.html#start_7 for details.
[Restrictions:] none
[Related commands:]
"neigh_modify"_neigh_modify.html, "units"_units.html,
"communicate"_communicate.html
[Default:]
0.3 bin for units = lj, skin = 0.3 sigma
2.0 bin for units = real or metal, skin = 2.0 Angstroms
0.001 bin for units = si, skin = 0.001 meters = 1.0 mm
0.1 bin for units = cgs, skin = 0.1 cm = 1.0 mm :all(b)
diff --git a/doc/next.html b/doc/next.html
index ebd68fb1f..14647c66f 100644
--- a/doc/next.html
+++ b/doc/next.html
@@ -1,133 +1,133 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>next command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>next variables
</PRE>
<UL><LI>variables = one or more variable names
</UL>
<P><B>Examples:</B>
</P>
<PRE>next x
next a t x myTemp
</PRE>
<P><B>Description:</B>
</P>
<P>This command is used with variables defined by the
<A HREF = "variable.html">variable</A> command. It assigns the next value to the
variable from the list of values defined for that variable by the
<A HREF = "variable.html">variable</A> command. Thus when that variable is
subsequently substituted for in an input script command, the new value
is used.
</P>
<P>See the <A HREF = "variable.html">variable</A> command for info on how to define and
use different kinds of variables in LAMMPS input scripts. If a
variable name is a single lower-case character from "a" to "z", it can
be used in an input script command as $a or $z. If it is multiple
letters, it can be used as ${myTemp}.
</P>
<P>If multiple variables are used as arguments to the <I>next</I> command,
then all must be of the same variable style: <I>index</I>, <I>loop</I>,
<I>universe</I>, or <I>uloop</I>. An exception is that <I>universe</I>- and
<I>uloop</I>-style variables can be mixed in the same <I>next</I> command.
</P>
<P>All the variables specified with the next command are incremented by
one value from their respective list or values. <I>String-</I> or <I>atom</I>-
or <I>equal</I>- or <I>world</I>-style variables cannot be used with the the
next command, since they only store a single value.
</P>
<P>When any of the variables in the next command has no more values, a
flag is set that causes the input script to skip the next
<A HREF = "jump.html">jump</A> command encountered. This enables a loop containing
a next command to exit. As explained in the <A HREF = "variable.html">variable</A>
command, the variable that has exhausted its values is also deleted.
This allows it to be used and re-defined later in the input script.
</P>
<P>When the next command is used with <I>index</I>- or <I>loop</I>-style variables,
the next value is assigned to the variable for all processors. When
the next command is used with <I>universe</I>- or <I>uloop</I>-style variables,
the next value is assigned to whichever processor partition executes
the command first. All processors in the partition are assigned the
same value. Running LAMMPS on multiple partitions of processors via
-the "-partition" command-line switch is described in <A HREF = "Section_start.html#2_6">this
+the "-partition" command-line switch is described in <A HREF = "Section_start.html#start_6">this
section</A> of the manual. <I>Universe</I>- and
<I>uloop</I>-style variables are incremented using the files
"tmp.lammps.variable" and "tmp.lammps.variable.lock" which you will
see in your directory during such a LAMMPS run.
</P>
<P>Here is an example of running a series of simulations using the next
command with an <I>index</I>-style variable. If this input script is named
in.polymer, 8 simulations would be run using data files from
directories run1 thru run8.
</P>
<PRE>variable d index run1 run2 run3 run4 run5 run6 run7 run8
shell cd $d
read_data data.polymer
run 10000
shell cd ..
clear
next d
jump in.polymer
</PRE>
<P>If the variable "d" were of style <I>universe</I>, and the same in.polymer
input script were run on 3 partitions of processors, then the first 3
simulations would begin, one on each set of processors. Whichever
partition finished first, it would assign variable "d" the 4th value
and run another simulation, and so forth until all 8 simulations were
finished.
</P>
<P>Jump and next commands can also be nested to enable multi-level loops.
For example, this script will run 15 simulations in a double loop.
</P>
<PRE>variable i loop 3
variable j loop 5
clear
...
read_data data.polymer.$i$j
print Running simulation $i.$j
run 10000
next j
jump in.script
next i
jump in.script
</PRE>
<P>Here is an example of a double loop which uses the <A HREF = "if.html">if</A> and
<A HREF = "jump.html">jump</A> commands to break out of the inner loop when a
condition is met, then continues iterating thru the outer loop.
</P>
<PRE>label loopa
variable a loop 5
label loopb
variable b loop 5
print "A,B = $a,$b"
run 10000
if $b > 2 then "jump in.script break"
next b
jump in.script loopb
label break
variable b delete
</PRE>
<PRE>next a
jump in.script loopa
</PRE>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "jump.html">jump</A>, <A HREF = "include.html">include</A>, <A HREF = "shell.html">shell</A>,
<A HREF = "variable.html">variable</A>,
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/next.txt b/doc/next.txt
index 49156a414..fd509e1b0 100644
--- a/doc/next.txt
+++ b/doc/next.txt
@@ -1,127 +1,127 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
next command :h3
[Syntax:]
next variables :pre
variables = one or more variable names :ul
[Examples:]
next x
next a t x myTemp :pre
[Description:]
This command is used with variables defined by the
"variable"_variable.html command. It assigns the next value to the
variable from the list of values defined for that variable by the
"variable"_variable.html command. Thus when that variable is
subsequently substituted for in an input script command, the new value
is used.
See the "variable"_variable.html command for info on how to define and
use different kinds of variables in LAMMPS input scripts. If a
variable name is a single lower-case character from "a" to "z", it can
be used in an input script command as $a or $z. If it is multiple
letters, it can be used as $\{myTemp\}.
If multiple variables are used as arguments to the {next} command,
then all must be of the same variable style: {index}, {loop},
{universe}, or {uloop}. An exception is that {universe}- and
{uloop}-style variables can be mixed in the same {next} command.
All the variables specified with the next command are incremented by
one value from their respective list or values. {String-} or {atom}-
or {equal}- or {world}-style variables cannot be used with the the
next command, since they only store a single value.
When any of the variables in the next command has no more values, a
flag is set that causes the input script to skip the next
"jump"_jump.html command encountered. This enables a loop containing
a next command to exit. As explained in the "variable"_variable.html
command, the variable that has exhausted its values is also deleted.
This allows it to be used and re-defined later in the input script.
When the next command is used with {index}- or {loop}-style variables,
the next value is assigned to the variable for all processors. When
the next command is used with {universe}- or {uloop}-style variables,
the next value is assigned to whichever processor partition executes
the command first. All processors in the partition are assigned the
same value. Running LAMMPS on multiple partitions of processors via
the "-partition" command-line switch is described in "this
-section"_Section_start.html#2_6 of the manual. {Universe}- and
+section"_Section_start.html#start_6 of the manual. {Universe}- and
{uloop}-style variables are incremented using the files
"tmp.lammps.variable" and "tmp.lammps.variable.lock" which you will
see in your directory during such a LAMMPS run.
Here is an example of running a series of simulations using the next
command with an {index}-style variable. If this input script is named
in.polymer, 8 simulations would be run using data files from
directories run1 thru run8.
variable d index run1 run2 run3 run4 run5 run6 run7 run8
shell cd $d
read_data data.polymer
run 10000
shell cd ..
clear
next d
jump in.polymer :pre
If the variable "d" were of style {universe}, and the same in.polymer
input script were run on 3 partitions of processors, then the first 3
simulations would begin, one on each set of processors. Whichever
partition finished first, it would assign variable "d" the 4th value
and run another simulation, and so forth until all 8 simulations were
finished.
Jump and next commands can also be nested to enable multi-level loops.
For example, this script will run 15 simulations in a double loop.
variable i loop 3
variable j loop 5
clear
...
read_data data.polymer.$i$j
print Running simulation $i.$j
run 10000
next j
jump in.script
next i
jump in.script :pre
Here is an example of a double loop which uses the "if"_if.html and
"jump"_jump.html commands to break out of the inner loop when a
condition is met, then continues iterating thru the outer loop.
label loopa
variable a loop 5
label loopb
variable b loop 5
print "A,B = $a,$b"
run 10000
if $b > 2 then "jump in.script break"
next b
jump in.script loopb
label break
variable b delete :pre
next a
jump in.script loopa :pre
[Restrictions:] none
[Related commands:]
"jump"_jump.html, "include"_include.html, "shell"_shell.html,
"variable"_variable.html,
[Default:] none
diff --git a/doc/package.html b/doc/package.html
index 2604f6d8e..50eb1657b 100644
--- a/doc/package.html
+++ b/doc/package.html
@@ -1,146 +1,146 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>package command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>package style args
</PRE>
<UL><LI>style = <I>gpu</I> or <I>cuda</I> or <I>omp</I>
<LI>args = arguments specific to the style
<PRE> <I>gpu</I> args = mode first last split
mode = force or force/neigh
first = ID of first GPU to be used on each node
last = ID of last GPU to be used on each node
split = fraction of particles assigned to the GPU
<I>cuda</I> args = to be determined
<I>omp</I> args = Nthreads
Nthreads = # of OpenMP threads to associate with each MPI process
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>package gpu force 0 0 1.0
package gpu force 0 0 0.75
package gpu force/neigh 0 0 1.0
package gpu force/neigh 0 1 -1.0
package cuda blah
package omp 4
</PRE>
<P><B>Description:</B>
</P>
<P>This command invokes package-specific settings. Currently the
following packages use it: GPU, USER-CUDA, and USER-OMP.
</P>
<P>See <A HREF = "Section_accelerate.html">this section</A> of the manual for more
details about using these various packages for accelerating
a LAMMPS calculation.
</P>
<HR>
<P>The <I>gpu</I> style invokes options associated with the use of the GPU
package. It allows you to select and initialize GPUs to be used for
acceleration via this package and configure how the GPU acceleration
is performed. These settings are required in order to use any style
with GPU acceleration.
</P>
<P>The <I>mode</I> setting specifies where neighbor list calculations will be
performed. If <I>mode</I> is force, neighbor list calculation is performed
on the CPU. If <I>mode</I> is force/neigh, neighbor list calculation is
performed on the GPU. GPU neighbor list calculation currently cannot
be used with a triclinic box. GPU neighbor list calculation currently
cannot be used with <A HREF = "pair_hybrid.html">hybrid</A> pair styles. GPU
neighbor lists are not compatible with styles that are not
GPU-enabled. When a non-GPU enabled style requires a neighbor list,
it will also be built using CPU routines. In these cases, it will
typically be more efficient to only use CPU neighbor list builds.
</P>
<P>The <I>first</I> and <I>last</I> settings specify the GPUs that will be used for
simulation. On each node, the GPU IDs in the inclusive range from
<I>first</I> to <I>last</I> will be used.
</P>
<P>The <I>split</I> setting can be used for load balancing force calculation
work between CPU and GPU cores in GPU-enabled pair styles. If 0 <
<I>split</I> < 1.0, a fixed fraction of particles is offloaded to the GPU
while force calculation for the other particles occurs simulataneously
on the CPU. If <I>split</I><0, the optimal fraction (based on CPU and GPU
timings) is calculated every 25 timesteps. If <I>split</I> = 1.0, all force
calculations for GPU accelerated pair styles are performed on the
GPU. In this case, <A HREF = "pair_hybrid.html">hybrid</A>, <A HREF = "bond_style.html">bond</A>,
<A HREF = "angle_style.html">angle</A>, <A HREF = "dihedral_style.html">dihedral</A>,
<A HREF = "improper_style.html">improper</A>, and <A HREF = "kspace_style.html">long-range</A>
calculations can be performed on the CPU while the GPU is performing
force calculations for the GPU-enabled pair style. If all CPU force
computations complete before the GPU, LAMMPS will block until the GPU
has finished before continuing the timestep.
</P>
<P>As an example, if you have two GPUs per node and 8 CPU cores per node,
and would like to run on 4 nodes (32 cores) with dynamic balancing of
force calculation across CPU and GPU cores, you could specify
</P>
<PRE>package gpu force/neigh 0 1 -1
</PRE>
<P>In this case, all CPU cores and GPU devices on the nodes would be
utilized. Each GPU device would be shared by 4 CPU cores. The CPU
cores would perform force calculations for some fraction of the
particles at the same time the GPUs performed force calculation for
the other particles.
</P>
<HR>
<P>The <I>cuda</I> style invokes options associated with the use of the
USER-CUDA package. These still need to be documented.
</P>
<HR>
<P>The <I>omp</I> style invokes options associated with the use of the
USER-OMP package.
</P>
<P>The only setting to make is the number of OpenMP threads to be
allocated for each MPI process. For example, if your system has nodes
with dual quad-core processors, it has a total of 8 cores per node.
You could run MPI on 2 cores on each node (e.g. using options for the
mpirun command), and set the <I>Nthreads</I> setting to 4. This would
effectively use all 8 cores on each node. Since each MPI process
would spawn 4 threads (one of which runs as part of the MPI process
itself).
</P>
<P>For performance reasons, you should not set <I>Nthreads</I> to more threads
than there are physical cores, but LAMMPS does not check for this.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command cannot be used after the simulation box is defined by a
<A HREF = "read_data.html">read_data</A> or <A HREF = "create_box.html">create_box</A> command.
</P>
<P>The cuda style of this command can only be invoked if LAMMPS was built
-with the USER-CUDA package. See the <A HREF = "Section_start.html#2_3">Making
+with the USER-CUDA package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>The gpu style of this command can only be invoked if LAMMPS was built
-with the GPU package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
-section for more info.
+with the GPU package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info.
</P>
<P>The omp style of this command can only be invoked if LAMMPS was built
-with the USER-OMP package. See the <A HREF = "Section_start.html#2_3">Making
+with the USER-OMP package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/package.txt b/doc/package.txt
index 5b2edd854..cce58abf0 100644
--- a/doc/package.txt
+++ b/doc/package.txt
@@ -1,138 +1,138 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
package command :h3
[Syntax:]
package style args :pre
style = {gpu} or {cuda} or {omp} :ulb,l
args = arguments specific to the style :l
{gpu} args = mode first last split
mode = force or force/neigh
first = ID of first GPU to be used on each node
last = ID of last GPU to be used on each node
split = fraction of particles assigned to the GPU
{cuda} args = to be determined
{omp} args = Nthreads
Nthreads = # of OpenMP threads to associate with each MPI process :pre
:ule
[Examples:]
package gpu force 0 0 1.0
package gpu force 0 0 0.75
package gpu force/neigh 0 0 1.0
package gpu force/neigh 0 1 -1.0
package cuda blah
package omp 4 :pre
[Description:]
This command invokes package-specific settings. Currently the
following packages use it: GPU, USER-CUDA, and USER-OMP.
See "this section"_Section_accelerate.html of the manual for more
details about using these various packages for accelerating
a LAMMPS calculation.
:line
The {gpu} style invokes options associated with the use of the GPU
package. It allows you to select and initialize GPUs to be used for
acceleration via this package and configure how the GPU acceleration
is performed. These settings are required in order to use any style
with GPU acceleration.
The {mode} setting specifies where neighbor list calculations will be
performed. If {mode} is force, neighbor list calculation is performed
on the CPU. If {mode} is force/neigh, neighbor list calculation is
performed on the GPU. GPU neighbor list calculation currently cannot
be used with a triclinic box. GPU neighbor list calculation currently
cannot be used with "hybrid"_pair_hybrid.html pair styles. GPU
neighbor lists are not compatible with styles that are not
GPU-enabled. When a non-GPU enabled style requires a neighbor list,
it will also be built using CPU routines. In these cases, it will
typically be more efficient to only use CPU neighbor list builds.
The {first} and {last} settings specify the GPUs that will be used for
simulation. On each node, the GPU IDs in the inclusive range from
{first} to {last} will be used.
The {split} setting can be used for load balancing force calculation
work between CPU and GPU cores in GPU-enabled pair styles. If 0 <
{split} < 1.0, a fixed fraction of particles is offloaded to the GPU
while force calculation for the other particles occurs simulataneously
on the CPU. If {split}<0, the optimal fraction (based on CPU and GPU
timings) is calculated every 25 timesteps. If {split} = 1.0, all force
calculations for GPU accelerated pair styles are performed on the
GPU. In this case, "hybrid"_pair_hybrid.html, "bond"_bond_style.html,
"angle"_angle_style.html, "dihedral"_dihedral_style.html,
"improper"_improper_style.html, and "long-range"_kspace_style.html
calculations can be performed on the CPU while the GPU is performing
force calculations for the GPU-enabled pair style. If all CPU force
computations complete before the GPU, LAMMPS will block until the GPU
has finished before continuing the timestep.
As an example, if you have two GPUs per node and 8 CPU cores per node,
and would like to run on 4 nodes (32 cores) with dynamic balancing of
force calculation across CPU and GPU cores, you could specify
package gpu force/neigh 0 1 -1 :pre
In this case, all CPU cores and GPU devices on the nodes would be
utilized. Each GPU device would be shared by 4 CPU cores. The CPU
cores would perform force calculations for some fraction of the
particles at the same time the GPUs performed force calculation for
the other particles.
:line
The {cuda} style invokes options associated with the use of the
USER-CUDA package. These still need to be documented.
:line
The {omp} style invokes options associated with the use of the
USER-OMP package.
The only setting to make is the number of OpenMP threads to be
allocated for each MPI process. For example, if your system has nodes
with dual quad-core processors, it has a total of 8 cores per node.
You could run MPI on 2 cores on each node (e.g. using options for the
mpirun command), and set the {Nthreads} setting to 4. This would
effectively use all 8 cores on each node. Since each MPI process
would spawn 4 threads (one of which runs as part of the MPI process
itself).
For performance reasons, you should not set {Nthreads} to more threads
than there are physical cores, but LAMMPS does not check for this.
:line
[Restrictions:]
This command cannot be used after the simulation box is defined by a
"read_data"_read_data.html or "create_box"_create_box.html command.
The cuda style of this command can only be invoked if LAMMPS was built
with the USER-CUDA package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
The gpu style of this command can only be invoked if LAMMPS was built
-with the GPU package. See the "Making LAMMPS"_Section_start.html#2_3
-section for more info.
+with the GPU package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
The omp style of this command can only be invoked if LAMMPS was built
with the USER-OMP package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:] none
[Default:] none
diff --git a/doc/pair_airebo.html b/doc/pair_airebo.html
index d2247c467..53ff4d27e 100644
--- a/doc/pair_airebo.html
+++ b/doc/pair_airebo.html
@@ -1,171 +1,171 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style airebo command
</H3>
<H3>pair_style rebo command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style cutoff LJ_flag TORSION_flag
</PRE>
<UL><LI>style = <I>airebo</I> or <I>rebo</I>
<LI>cutoff = LJ cutoff (sigma scale factor) (AIREBO only)
<LI>LJ_flag = 0/1 to turn off/on the LJ term (AIREBO only, optional)
<LI>TORSION_flag = 0/1 to turn off/on the torsion term (AIREBO only, optional)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style airebo 3.0
pair_style airebo 2.5 1 0
pair_coeff * * ../potentials/CH.airebo H C
</PRE>
<PRE>pair_style rebo
pair_coeff * * ../potentials/CH.airebo H C
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>airebo</I> pair style computes the Adaptive Intermolecular Reactive
Empirical Bond Order (AIREBO) Potential of <A HREF = "#Stuart">(Stuart)</A> for a
system of carbon and/or hydrogen atoms. Note that this is the initial
formulation of AIREBO from 2000, not the later formulation. The
<I>rebo</I> pair style computes the Reactive Empirical Bond Order (REBO)
Potential of <A HREF = "#Brenner">(Brenner)</A>. Note that this is the so-called
2nd generation REBO from 2002, not the original REBO from 1990. As
discussed below, 2nd generation REBO is closely related to the intial
AIREBO; it is just a subset of the potential energy terms.
</P>
<P>The AIREBO potential consists of three terms:
</P>
<CENTER><IMG SRC = "Eqs/pair_airebo.jpg">
</CENTER>
<P>By default, all three terms are included. For the <I>airebo</I> style, if
the two optional flag arguments to the pair_style command are
included, the LJ and torsional terms can be turned off. Note that
both or neither of the flags must be included. If both of the LJ an
torsional terms are turned off, it becomes the 2nd-generation REBO
potential, with a small caveat on the spline fitting procedure
mentioned below. This can be specified directly as pair_style rebo
with no additional arguments.
</P>
<P>The detailed formulas for this potential are given in
<A HREF = "#Stuart">(Stuart)</A>; here we provide only a brief description.
</P>
<P>The E_REBO term has the same functional form as the hydrocarbon REBO
potential developed in <A HREF = "#Brenner">(Brenner)</A>. The coefficients for
E_REBO in AIREBO are essentially the same as Brenner's potential, but
a few fitted spline values are slightly different. For most cases the
E_REBO term in AIREBO will produce the same energies, forces and
statistical averages as the original REBO potential from which it was
derived. The E_REBO term in the AIREBO potential gives the model its
reactive capabilities and only describes short-ranged C-C, C-H and H-H
interactions (r < 2 Angstroms). These interactions have strong
coordination-dependence through a bond order parameter, which adjusts
the attraction between the I,J atoms based on the position of other
nearby atoms and thus has 3- and 4-body dependence.
</P>
<P>The E_LJ term adds longer-ranged interactions (2 < r < cutoff) using a
form similar to the standard <A HREF = "pair_lj.html">Lennard Jones potential</A>.
The E_LJ term in AIREBO contains a series of switching functions so
that the short-ranged LJ repulsion (1/r^12) does not interfere with
the energetics captured by the E_REBO term. The extent of the E_LJ
interactions is determined by the <I>cutoff</I> argument to the pair_style
command which is a scale factor. For each type pair (C-C, C-H, H-H)
the cutoff is obtained by multiplying the scale factor by the sigma
value defined in the potential file for that type pair. In the
standard AIREBO potential, sigma_CC = 3.4 Angstroms, so with a scale
factor of 3.0 (the argument in pair_style), the resulting E_LJ cutoff
would be 10.2 Angstroms.
</P>
<P>The E_TORSION term is an explicit 4-body potential that describes
various dihedral angle preferences in hydrocarbon configurations.
</P>
<P>Only a single pair_coeff command is used with the <I>airebo</I> or <I>rebo</I>
style which specifies an AIREBO potential file with parameters for C
and H. Note that the <I>rebo</I> style in LAMMPS uses the same
AIREBO-formatted potential file. These are mapped to LAMMPS atom
types by specifying N additional arguments after the filename in the
pair_coeff command, where N is the number of LAMMPS atom types:
</P>
<UL><LI>filename
<LI>N element names = mapping of AIREBO elements to atom types
</UL>
<P>As an example, if your LAMMPS simulation has 4 atom types and you want
the 1st 3 to be C, and the 4th to be H, you would use the following
pair_coeff command:
</P>
<PRE>pair_coeff * * CH.airebo C C C H
</PRE>
<P>The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The first three C arguments map LAMMPS atom types 1,2,3 to the C
element in the AIREBO file. The final H argument maps LAMMPS atom
type 4 to the H element in the SW file. If a mapping value is
specified as NULL, the mapping is not performed. This can be used
when a <I>airebo</I> potential is used as part of the <I>hybrid</I> pair style.
The NULL values are placeholders for atom types that will be used with
other potentials.
</P>
<P>The parameters/coefficients for the AIREBO potentials are listed in
the CH.airebo file to agree with the original <A HREF = "#Stuart">(Stuart)</A>
paper. Thus the parameters are specific to this potential and the way
it was fit, so modifying the file should be done cautiously.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>These pair styles do not support the <A HREF = "pair_modify.html">pair_modify</A>
mix, shift, table, and tail options.
</P>
<P>These pair styles do not write their information to <A HREF = "restart.html">binary restart
files</A>, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
</P>
<P>These pair styles can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. They do not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<P><B>Restrictions:</B>
</P>
<P>These pair styles are part of the "manybody" package. They are only
enabled if LAMMPS was built with that package (which it is by
-default). See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info.
+default). See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info.
</P>
<P>These pair potentials require the <A HREF = "newton.html">newton</A> setting to be
"on" for pair interactions.
</P>
<P>The CH.airebo potential file provided with LAMMPS (see the potentials
directory) is parameterized for metal <A HREF = "units.html">units</A>. You can use
the AIREBO or REBO potential with any LAMMPS units, but you would need
to create your own AIREBO potential file with coefficients listed in
the appropriate units if your simulation doesn't use "metal" units.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Stuart"></A>
<P><B>(Stuart)</B> Stuart, Tutein, Harrison, J Chem Phys, 112, 6472-6486
(2000).
</P>
<A NAME = "Brenner"></A>
<P><B>(Brenner)</B> Brenner, Shenderova, Harrison, Stuart, Ni, Sinnott, J
Physics: Condensed Matter, 14, 783-802 (2002).
</P>
</HTML>
diff --git a/doc/pair_airebo.txt b/doc/pair_airebo.txt
index 95afe1716..7bff8b7d2 100644
--- a/doc/pair_airebo.txt
+++ b/doc/pair_airebo.txt
@@ -1,163 +1,163 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style airebo command :h3
pair_style rebo command :h3
[Syntax:]
pair_style style cutoff LJ_flag TORSION_flag :pre
style = {airebo} or {rebo}
cutoff = LJ cutoff (sigma scale factor) (AIREBO only)
LJ_flag = 0/1 to turn off/on the LJ term (AIREBO only, optional)
TORSION_flag = 0/1 to turn off/on the torsion term (AIREBO only, optional) :ul
[Examples:]
pair_style airebo 3.0
pair_style airebo 2.5 1 0
pair_coeff * * ../potentials/CH.airebo H C :pre
pair_style rebo
pair_coeff * * ../potentials/CH.airebo H C :pre
[Description:]
The {airebo} pair style computes the Adaptive Intermolecular Reactive
Empirical Bond Order (AIREBO) Potential of "(Stuart)"_#Stuart for a
system of carbon and/or hydrogen atoms. Note that this is the initial
formulation of AIREBO from 2000, not the later formulation. The
{rebo} pair style computes the Reactive Empirical Bond Order (REBO)
Potential of "(Brenner)"_#Brenner. Note that this is the so-called
2nd generation REBO from 2002, not the original REBO from 1990. As
discussed below, 2nd generation REBO is closely related to the intial
AIREBO; it is just a subset of the potential energy terms.
The AIREBO potential consists of three terms:
:c,image(Eqs/pair_airebo.jpg)
By default, all three terms are included. For the {airebo} style, if
the two optional flag arguments to the pair_style command are
included, the LJ and torsional terms can be turned off. Note that
both or neither of the flags must be included. If both of the LJ an
torsional terms are turned off, it becomes the 2nd-generation REBO
potential, with a small caveat on the spline fitting procedure
mentioned below. This can be specified directly as pair_style rebo
with no additional arguments.
The detailed formulas for this potential are given in
"(Stuart)"_#Stuart; here we provide only a brief description.
The E_REBO term has the same functional form as the hydrocarbon REBO
potential developed in "(Brenner)"_#Brenner. The coefficients for
E_REBO in AIREBO are essentially the same as Brenner's potential, but
a few fitted spline values are slightly different. For most cases the
E_REBO term in AIREBO will produce the same energies, forces and
statistical averages as the original REBO potential from which it was
derived. The E_REBO term in the AIREBO potential gives the model its
reactive capabilities and only describes short-ranged C-C, C-H and H-H
interactions (r < 2 Angstroms). These interactions have strong
coordination-dependence through a bond order parameter, which adjusts
the attraction between the I,J atoms based on the position of other
nearby atoms and thus has 3- and 4-body dependence.
The E_LJ term adds longer-ranged interactions (2 < r < cutoff) using a
form similar to the standard "Lennard Jones potential"_pair_lj.html.
The E_LJ term in AIREBO contains a series of switching functions so
that the short-ranged LJ repulsion (1/r^12) does not interfere with
the energetics captured by the E_REBO term. The extent of the E_LJ
interactions is determined by the {cutoff} argument to the pair_style
command which is a scale factor. For each type pair (C-C, C-H, H-H)
the cutoff is obtained by multiplying the scale factor by the sigma
value defined in the potential file for that type pair. In the
standard AIREBO potential, sigma_CC = 3.4 Angstroms, so with a scale
factor of 3.0 (the argument in pair_style), the resulting E_LJ cutoff
would be 10.2 Angstroms.
The E_TORSION term is an explicit 4-body potential that describes
various dihedral angle preferences in hydrocarbon configurations.
Only a single pair_coeff command is used with the {airebo} or {rebo}
style which specifies an AIREBO potential file with parameters for C
and H. Note that the {rebo} style in LAMMPS uses the same
AIREBO-formatted potential file. These are mapped to LAMMPS atom
types by specifying N additional arguments after the filename in the
pair_coeff command, where N is the number of LAMMPS atom types:
filename
N element names = mapping of AIREBO elements to atom types :ul
As an example, if your LAMMPS simulation has 4 atom types and you want
the 1st 3 to be C, and the 4th to be H, you would use the following
pair_coeff command:
pair_coeff * * CH.airebo C C C H :pre
The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The first three C arguments map LAMMPS atom types 1,2,3 to the C
element in the AIREBO file. The final H argument maps LAMMPS atom
type 4 to the H element in the SW file. If a mapping value is
specified as NULL, the mapping is not performed. This can be used
when a {airebo} potential is used as part of the {hybrid} pair style.
The NULL values are placeholders for atom types that will be used with
other potentials.
The parameters/coefficients for the AIREBO potentials are listed in
the CH.airebo file to agree with the original "(Stuart)"_#Stuart
paper. Thus the parameters are specific to this potential and the way
it was fit, so modifying the file should be done cautiously.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
These pair styles do not support the "pair_modify"_pair_modify.html
mix, shift, table, and tail options.
These pair styles do not write their information to "binary restart
files"_restart.html, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
These pair styles can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. They do not support the
{inner}, {middle}, {outer} keywords.
[Restrictions:]
These pair styles are part of the "manybody" package. They are only
enabled if LAMMPS was built with that package (which it is by
-default). See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info.
+default). See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info.
These pair potentials require the "newton"_newton.html setting to be
"on" for pair interactions.
The CH.airebo potential file provided with LAMMPS (see the potentials
directory) is parameterized for metal "units"_units.html. You can use
the AIREBO or REBO potential with any LAMMPS units, but you would need
to create your own AIREBO potential file with coefficients listed in
the appropriate units if your simulation doesn't use "metal" units.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Stuart)
[(Stuart)] Stuart, Tutein, Harrison, J Chem Phys, 112, 6472-6486
(2000).
:link(Brenner)
[(Brenner)] Brenner, Shenderova, Harrison, Stuart, Ni, Sinnott, J
Physics: Condensed Matter, 14, 783-802 (2002).
diff --git a/doc/pair_born.html b/doc/pair_born.html
index fd808271f..adf9a42c2 100644
--- a/doc/pair_born.html
+++ b/doc/pair_born.html
@@ -1,160 +1,160 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style born command
</H3>
<H3>pair_style born/coul/long command
</H3>
<H3>pair_style born/coul/long/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style args
</PRE>
<UL><LI>style = <I>born</I> or <I>born/coul/long</I>
<LI>args = list of arguments for a particular style
</UL>
<PRE> <I>born</I> args = cutoff
cutoff = global cutoff for non-Coulombic interactions (distance units)
<I>born/coul/long</I> args = cutoff (cutoff2)
cutoff = global cutoff for non-Coulombic (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style born 10.0
pair_coeff * * 6.08 0.317 2.340 24.18 11.51
pair_coeff 1 1 6.08 0.317 2.340 24.18 11.51
</PRE>
<PRE>pair_style born/coul/long 10.0
pair_style born/coul/long 10.0 8.0
pair_coeff * * 6.08 0.317 2.340 24.18 11.51
pair_coeff 1 1 6.08 0.317 2.340 24.18 11.51
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>born</I> style computes the Born-Mayer-Huggins or Tosi/Fumi
potential described in <A HREF = "#FumiTosi">(Fumi and Tosi)</A>, given by
</P>
<CENTER><IMG SRC = "Eqs/pair_born.jpg">
</CENTER>
<P>where sigma is an interaction-dependent length parameter, rho is an
ionic-pair dependent length parameter, and Rc is the cutoff.
</P>
<P>The <I>born/coul/long</I> style adds a Coulombic term as described for the
<A HREF = "pair_lj.html">lj/cut</A> pair styles. An additional damping factor is
applied to the Coulombic term so it can be used in conjunction with
the <A HREF = "kspace_style.html">kspace_style</A> command and its <I>ewald</I> or <I>pppm</I>
option. The Coulombic cutoff specified for this style means that
pairwise interactions within this distance are computed directly;
interactions outside that distance are computed in reciprocal space.
</P>
<P>If one cutoff is specified for the <I>born/coulk/long</I> style, it is used
for both the A,C,D and Coulombic terms. If two cutoffs are specified,
the first is used as the cutoff for the A,C,D terms, and the second is
the cutoff for the Coulombic term.
</P>
<P>Note that these potentials are related to the <A HREF = "pair_born.html">Buckingham
potential</A>.
</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>A (energy units)
<LI>rho (distance units)
<LI>sigma (distance units)
<LI>C (energy units * distance units^6)
<LI>D (energy units * distance units^8)
<LI>cutoff (distance units)
</UL>
<P>The second coefficient, rho, must be greater than zero.
</P>
<P>The last coefficient is optional. If not specified, the global A,C,D
cutoff specified in the pair_style command is used.
</P>
<P>For <I>buck/coul/long</I> no Coulombic cutoff can be specified for an
individual I,J type pair. All type pairs use the same global
Coulombic cutoff specified in the pair_style command.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>These pair styles do not support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
</P>
<P>These styles support the <A HREF = "pair_modify.html">pair_modify</A> shift option
for the energy of the exp(), 1/r^6, and 1/r^8 portion of the pair
interaction.
</P>
<P>The <I>born/coul/long</I> pair style does not support the
<A HREF = "pair_modify.html">pair_modify</A> table option since a tabulation
capability has not yet been added to this potential.
</P>
<P>These styles support the pair_modify tail option for adding long-range
tail corrections to energy and pressure.
</P>
<P>Thess styles writes thei information to binary <A HREF = "restart.html">restart</A>
files, so pair_style and pair_coeff commands do not need to be
specified in an input script that reads a restart file.
</P>
<P>These styles can only be used via the <I>pair</I> keyword of the <A HREF = "run_style.html">run_style
respa</A> command. They do not support the <I>inner</I>,
<I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>The <I>born/coul/long</I> style is part of the "kspace" package. It is
only enabled if LAMMPS was built with that package (which it is by
-default). See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info.
+default). See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "pair_buck.html">pair_style buck</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "FumiTosi"></A>
<P>Fumi and Tosi, J Phys Chem Solids, 25, 31 (1964),
Fumi and Tosi, J Phys Chem Solids, 25, 45 (1964).
</P>
</HTML>
diff --git a/doc/pair_born.txt b/doc/pair_born.txt
index 94bcf81a0..3b6939af7 100644
--- a/doc/pair_born.txt
+++ b/doc/pair_born.txt
@@ -1,152 +1,152 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style born command :h3
pair_style born/coul/long command :h3
pair_style born/coul/long/cuda command :h3
[Syntax:]
pair_style style args :pre
style = {born} or {born/coul/long}
args = list of arguments for a particular style :ul
{born} args = cutoff
cutoff = global cutoff for non-Coulombic interactions (distance units)
{born/coul/long} args = cutoff (cutoff2)
cutoff = global cutoff for non-Coulombic (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units) :pre
[Examples:]
pair_style born 10.0
pair_coeff * * 6.08 0.317 2.340 24.18 11.51
pair_coeff 1 1 6.08 0.317 2.340 24.18 11.51 :pre
pair_style born/coul/long 10.0
pair_style born/coul/long 10.0 8.0
pair_coeff * * 6.08 0.317 2.340 24.18 11.51
pair_coeff 1 1 6.08 0.317 2.340 24.18 11.51 :pre
[Description:]
The {born} style computes the Born-Mayer-Huggins or Tosi/Fumi
potential described in "(Fumi and Tosi)"_#FumiTosi, given by
:c,image(Eqs/pair_born.jpg)
where sigma is an interaction-dependent length parameter, rho is an
ionic-pair dependent length parameter, and Rc is the cutoff.
The {born/coul/long} style adds a Coulombic term as described for the
"lj/cut"_pair_lj.html pair styles. An additional damping factor is
applied to the Coulombic term so it can be used in conjunction with
the "kspace_style"_kspace_style.html command and its {ewald} or {pppm}
option. The Coulombic cutoff specified for this style means that
pairwise interactions within this distance are computed directly;
interactions outside that distance are computed in reciprocal space.
If one cutoff is specified for the {born/coulk/long} style, it is used
for both the A,C,D and Coulombic terms. If two cutoffs are specified,
the first is used as the cutoff for the A,C,D terms, and the second is
the cutoff for the Coulombic term.
Note that these potentials are related to the "Buckingham
potential"_pair_born.html.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
A (energy units)
rho (distance units)
sigma (distance units)
C (energy units * distance units^6)
D (energy units * distance units^8)
cutoff (distance units) :ul
The second coefficient, rho, must be greater than zero.
The last coefficient is optional. If not specified, the global A,C,D
cutoff specified in the pair_style command is used.
For {buck/coul/long} no Coulombic cutoff can be specified for an
individual I,J type pair. All type pairs use the same global
Coulombic cutoff specified in the pair_style command.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
These pair styles do not support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
These styles support the "pair_modify"_pair_modify.html shift option
for the energy of the exp(), 1/r^6, and 1/r^8 portion of the pair
interaction.
The {born/coul/long} pair style does not support the
"pair_modify"_pair_modify.html table option since a tabulation
capability has not yet been added to this potential.
These styles support the pair_modify tail option for adding long-range
tail corrections to energy and pressure.
Thess styles writes thei information to binary "restart"_restart.html
files, so pair_style and pair_coeff commands do not need to be
specified in an input script that reads a restart file.
These styles can only be used via the {pair} keyword of the "run_style
respa"_run_style.html command. They do not support the {inner},
{middle}, {outer} keywords.
:line
[Restrictions:]
The {born/coul/long} style is part of the "kspace" package. It is
only enabled if LAMMPS was built with that package (which it is by
-default). See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info.
+default). See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html, "pair_style buck"_pair_buck.html
[Default:] none
:line
:link(FumiTosi)
Fumi and Tosi, J Phys Chem Solids, 25, 31 (1964),
Fumi and Tosi, J Phys Chem Solids, 25, 45 (1964).
diff --git a/doc/pair_buck.html b/doc/pair_buck.html
index c38c22b97..7d26f6796 100644
--- a/doc/pair_buck.html
+++ b/doc/pair_buck.html
@@ -1,172 +1,172 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style buck command
</H3>
<H3>pair_style buck/cuda command
</H3>
<H3>pair_style buck/coul/cut command
</H3>
<H3>pair_style buck/coul/cut/cuda command
</H3>
<H3>pair_style buck/coul/long command
</H3>
<H3>pair_style buck/coul/long/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style args
</PRE>
<UL><LI>style = <I>buck</I> or <I>buck/coul/cut</I> or <I>buck/coul/long</I>
<LI>args = list of arguments for a particular style
</UL>
<PRE> <I>buck</I> args = cutoff
cutoff = global cutoff for Buckingham interactions (distance units)
<I>buck/coul/cut</I> args = cutoff (cutoff2)
cutoff = global cutoff for Buckingham (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
<I>buck/coul/long</I> args = cutoff (cutoff2)
cutoff = global cutoff for Buckingham (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style buck 2.5
pair_coeff * * 100.0 1.5 200.0
pair_coeff * * 100.0 1.5 200.0 3.0
</PRE>
<PRE>pair_style buck/coul/cut 10.0
pair_style buck/coul/cut 10.0 8.0
pair_coeff * * 100.0 1.5 200.0
pair_coeff 1 1 100.0 1.5 200.0 9.0
pair_coeff 1 1 100.0 1.5 200.0 9.0 8.0
</PRE>
<PRE>pair_style buck/coul/long 10.0
pair_style buck/coul/long 10.0 8.0
pair_coeff * * 100.0 1.5 200.0
pair_coeff 1 1 100.0 1.5 200.0 9.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>buck</I> style computes a Buckingham potential (exp/6 instead of
Lennard-Jones 12/6) given by
</P>
<CENTER><IMG SRC = "Eqs/pair_buck.jpg">
</CENTER>
<P>where rho is an ionic-pair dependent length parameter, and Rc is the
cutoff.
</P>
<P>The <I>buck/coul/cut</I> and <I>buck/coul/long</I> styles add a Coulombic term
as described for the <A HREF = "pair_lj.html">lj/cut</A> pair styles. For
<I>buck/coul/long</I>, an additional damping factor is applied to the
Coulombic term so it can be used in conjunction with the
<A HREF = "kspace_style.html">kspace_style</A> command and its <I>ewald</I> or <I>pppm</I>
option. The Coulombic cutoff specified for this style means that
pairwise interactions within this distance are computed directly;
interactions outside that distance are computed in reciprocal space.
</P>
<P>If one cutoff is specified for the <I>born/coul/cut</I> and
<I>born/coulk/long</I> styles, it is used for both the A,C and Coulombic
terms. If two cutoffs are specified, the first is used as the cutoff
for the A,C terms, and the second is the cutoff for the Coulombic
term.
</P>
<P>Note that these potentials are related to the <A HREF = "pair_born.html">Born-Mayer-Huggins
potential</A>.
</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:
</P>
<UL><LI>A (energy units)
<LI>rho (distance units)
<LI>C (energy-distance^6 units)
<LI>cutoff (distance units)
<LI>cutoff2 (distance units)
</UL>
<P>The second coefficient, rho, must be greater than zero.
</P>
<P>The latter 2 coefficients are optional. If not specified, the global
A,C and Coulombic cutoffs are used. If only one cutoff is specified,
it is used as the cutoff for both A,C and Coulombic interactions for
this type pair. If both coefficients are specified, they are used as
the A,C and Coulombic cutoffs for this type pair. You cannot specify
2 cutoffs for style <I>buck</I>, since it has no Coulombic terms.
</P>
<P>For <I>buck/coul/long</I> only the LJ cutoff can be specified since a
Coulombic cutoff cannot be specified for an individual I,J type pair.
All type pairs use the same global Coulombic cutoff specified in the
pair_style command.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>These pair styles do not support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
</P>
<P>These styles support the <A HREF = "pair_modify.html">pair_modify</A> shift option
for the energy of the exp() and 1/r^6 portion of the pair interaction.
</P>
<P>The <I>buck/coul/long</I> pair style does not support the
<A HREF = "pair_modify.html">pair_modify</A> table option since a tabulation
capability has not yet been added to this potential.
</P>
<P>These styles support the pair_modify tail option for adding long-range
tail corrections to energy and pressure for the A,C terms in the
pair interaction.
</P>
<P>These styles write their information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>These styles can only be used via the <I>pair</I> keyword of the <A HREF = "run_style.html">run_style
respa</A> command. They do not support the <I>inner</I>,
<I>middle</I>, <I>outer</I> keywords.
</P>
<P><B>Restrictions:</B>
</P>
<P>The <I>buck/coul/long</I> style is part of the "kspace" package. It is
only enabled if LAMMPS was built with that package (which it is by
-default). See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info.
+default). See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "pair_born.html">pair_style born</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/pair_buck.txt b/doc/pair_buck.txt
index a972cfdf5..c173195d9 100644
--- a/doc/pair_buck.txt
+++ b/doc/pair_buck.txt
@@ -1,161 +1,161 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style buck command :h3
pair_style buck/cuda command :h3
pair_style buck/coul/cut command :h3
pair_style buck/coul/cut/cuda command :h3
pair_style buck/coul/long command :h3
pair_style buck/coul/long/cuda command :h3
[Syntax:]
pair_style style args :pre
style = {buck} or {buck/coul/cut} or {buck/coul/long}
args = list of arguments for a particular style :ul
{buck} args = cutoff
cutoff = global cutoff for Buckingham interactions (distance units)
{buck/coul/cut} args = cutoff (cutoff2)
cutoff = global cutoff for Buckingham (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
{buck/coul/long} args = cutoff (cutoff2)
cutoff = global cutoff for Buckingham (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units) :pre
[Examples:]
pair_style buck 2.5
pair_coeff * * 100.0 1.5 200.0
pair_coeff * * 100.0 1.5 200.0 3.0 :pre
pair_style buck/coul/cut 10.0
pair_style buck/coul/cut 10.0 8.0
pair_coeff * * 100.0 1.5 200.0
pair_coeff 1 1 100.0 1.5 200.0 9.0
pair_coeff 1 1 100.0 1.5 200.0 9.0 8.0 :pre
pair_style buck/coul/long 10.0
pair_style buck/coul/long 10.0 8.0
pair_coeff * * 100.0 1.5 200.0
pair_coeff 1 1 100.0 1.5 200.0 9.0 :pre
[Description:]
The {buck} style computes a Buckingham potential (exp/6 instead of
Lennard-Jones 12/6) given by
:c,image(Eqs/pair_buck.jpg)
where rho is an ionic-pair dependent length parameter, and Rc is the
cutoff.
The {buck/coul/cut} and {buck/coul/long} styles add a Coulombic term
as described for the "lj/cut"_pair_lj.html pair styles. For
{buck/coul/long}, an additional damping factor is applied to the
Coulombic term so it can be used in conjunction with the
"kspace_style"_kspace_style.html command and its {ewald} or {pppm}
option. The Coulombic cutoff specified for this style means that
pairwise interactions within this distance are computed directly;
interactions outside that distance are computed in reciprocal space.
If one cutoff is specified for the {born/coul/cut} and
{born/coulk/long} styles, it is used for both the A,C and Coulombic
terms. If two cutoffs are specified, the first is used as the cutoff
for the A,C terms, and the second is the cutoff for the Coulombic
term.
Note that these potentials are related to the "Born-Mayer-Huggins
potential"_pair_born.html.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
A (energy units)
rho (distance units)
C (energy-distance^6 units)
cutoff (distance units)
cutoff2 (distance units) :ul
The second coefficient, rho, must be greater than zero.
The latter 2 coefficients are optional. If not specified, the global
A,C and Coulombic cutoffs are used. If only one cutoff is specified,
it is used as the cutoff for both A,C and Coulombic interactions for
this type pair. If both coefficients are specified, they are used as
the A,C and Coulombic cutoffs for this type pair. You cannot specify
2 cutoffs for style {buck}, since it has no Coulombic terms.
For {buck/coul/long} only the LJ cutoff can be specified since a
Coulombic cutoff cannot be specified for an individual I,J type pair.
All type pairs use the same global Coulombic cutoff specified in the
pair_style command.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
These pair styles do not support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
These styles support the "pair_modify"_pair_modify.html shift option
for the energy of the exp() and 1/r^6 portion of the pair interaction.
The {buck/coul/long} pair style does not support the
"pair_modify"_pair_modify.html table option since a tabulation
capability has not yet been added to this potential.
These styles support the pair_modify tail option for adding long-range
tail corrections to energy and pressure for the A,C terms in the
pair interaction.
These styles write their information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
These styles can only be used via the {pair} keyword of the "run_style
respa"_run_style.html command. They do not support the {inner},
{middle}, {outer} keywords.
[Restrictions:]
The {buck/coul/long} style is part of the "kspace" package. It is
only enabled if LAMMPS was built with that package (which it is by
-default). See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info.
+default). See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html, "pair_style born"_pair_born.html
[Default:] none
diff --git a/doc/pair_buck_coul.html b/doc/pair_buck_coul.html
index cc685e660..a9c0b7509 100644
--- a/doc/pair_buck_coul.html
+++ b/doc/pair_buck_coul.html
@@ -1,154 +1,154 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style buck/coul command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style buck/coul flag_buck flag_coul cutoff (cutoff2)
</PRE>
<UL><LI>flag_buck = <I>long</I> or <I>cut</I>
<PRE> <I>long</I> = use Kspace long-range summation for the dispersion term 1/r^6
<I>cut</I> = use a cutoff
</PRE>
<LI>flag_coul = <I>long</I> or <I>off</I>
<PRE> <I>long</I> = use Kspace long-range summation for the Coulombic term 1/r
<I>off</I> = omit the Coulombic term
</PRE>
<LI>cutoff = global cutoff for Buckingham (and Coulombic if only 1 cutoff) (distance units)
<LI>cutoff2 = global cutoff for Coulombic (optional) (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style buck/coul cut off 2.5
pair_style buck/coul cut long 2.5 4.0
pair_style buck/coul long long 2.5 4.0
pair_coeff * * 1 1
pair_coeff 1 1 1 3 4
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>buck/coul</I> style computes a Buckingham potential (exp/6 instead of
Lennard-Jones 12/6) and Coulombic potential, given by
</P>
<CENTER><IMG SRC = "Eqs/pair_buck.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/pair_coulomb.jpg">
</CENTER>
<P>Rc is the cutoff. If one cutoff is specified in the pair_style
command, it is used for both the Buckingham and Coulombic terms. If
two cutoffs are specified, they are used as cutoffs for the Buckingham
and Coulombic terms respectively.
</P>
<P>The purpose of this pair style is to capture long-range interactions
resulting from both attractive 1/r^6 Buckingham and Coulombic 1/r
interactions. This is done by use of the <I>flag_buck</I> and <I>flag_coul</I>
settings. The "<A HREF = "#Ismail">Ismail</A> paper has more details on when it is
appropriate to include long-range 1/r^6 interactions, using this
potential.
</P>
<P>If <I>flag_buck</I> is set to <I>long</I>, no cutoff is used on the Buckingham
1/r^6 dispersion term. The long-range portion is calculated by using
the <A HREF = "kspace_style.html">kspace_style ewald/n</A> command. The specified
Buckingham cutoff then determines which portion of the Buckingham
interactions are computed directly by the pair potential versus which
part is computed in reciprocal space via the Kspace style. If
<I>flag_buck</I> is set to <I>cut</I>, the Buckingham interactions are simply
cutoff, as with <A HREF = "pair_buck.html">pair_style buck</A>.
</P>
<P>If <I>flag_coul</I> is set to <I>long</I>, no cutoff is used on the Coulombic
interactions. The long-range portion is calculated by using any
style, including <I>ewald/n</I> of the <A HREF = "kspace_style.html">kspace_style</A>
command. Note that if <I>flag_buck</I> is also set to long, then only the
<I>ewald/n</I> Kspace style can perform the long-range calculations for
both the Buckingham and Coulombic interactions. If <I>flag_coul</I> is set
to <I>off</I>, Coulombic interactions are not computed.
</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:
</P>
<UL><LI>A (energy units)
<LI>rho (distance units)
<LI>C (energy-distance^6 units)
<LI>cutoff (distance units)
<LI>cutoff2 (distance units)
</UL>
<P>The second coefficient, rho, must be greater than zero.
</P>
<P>The latter 2 coefficients are optional. If not specified, the global
Buckingham and Coulombic cutoffs specified in the pair_style command
are used. If only one cutoff is specified, it is used as the cutoff
for both Buckingham and Coulombic interactions for this type pair. If
both coefficients are specified, they are used as the Buckingham and
Coulombic cutoffs for this type pair. Note that if you are using
<I>flag_buck</I> set to <I>long</I>, you cannot specify a Buckingham cutoff for
an atom type pair, since only one global Buckingham cutoff is allowed.
Similarly, if you are using <I>flag_coul</I> set to <I>long</I>, you cannot
specify a Coulombic cutoff for an atom type pair, since only one
global Coulombic cutoff is allowed.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>This pair styles does not support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
</P>
<P>This pair style supports the <A HREF = "pair_modify.html">pair_modify</A> shift
option for the energy of the exp() and 1/r^6 portion of the pair
interaction, assuming <I>flag_buck</I> is <I>cut</I>.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
shift option for the energy of the Buckingham portion of the pair
interaction.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
table option since a tabulation capability has not yet been added to
this potential.
</P>
<P>This pair style write its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style supports the use of the <I>inner</I>, <I>middle</I>, and <I>outer</I>
keywords of the <A HREF = "run_style.html">run_style respa</A> command, meaning the
pairwise forces can be partitioned by distance at different levels of
the rRESPA hierarchy. See the <A HREF = "run_style.html">run_style</A> command for
details.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This style is part of the "user-ewaldn" package. It is only enabled
-if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Ismail"></A>
<P><B>(Ismail)</B> Ismail, Tsige, In 't Veld, Grest, Molecular Physics
(accepted) (2007).
</P>
</HTML>
diff --git a/doc/pair_buck_coul.txt b/doc/pair_buck_coul.txt
index 1a6d42d86..d306dc03f 100644
--- a/doc/pair_buck_coul.txt
+++ b/doc/pair_buck_coul.txt
@@ -1,143 +1,143 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style buck/coul command :h3
[Syntax:]
pair_style buck/coul flag_buck flag_coul cutoff (cutoff2) :pre
flag_buck = {long} or {cut} :ulb,l
{long} = use Kspace long-range summation for the dispersion term 1/r^6
{cut} = use a cutoff :pre
flag_coul = {long} or {off} :l
{long} = use Kspace long-range summation for the Coulombic term 1/r
{off} = omit the Coulombic term :pre
cutoff = global cutoff for Buckingham (and Coulombic if only 1 cutoff) (distance units) :l
cutoff2 = global cutoff for Coulombic (optional) (distance units) :l,ule
[Examples:]
pair_style buck/coul cut off 2.5
pair_style buck/coul cut long 2.5 4.0
pair_style buck/coul long long 2.5 4.0
pair_coeff * * 1 1
pair_coeff 1 1 1 3 4 :pre
[Description:]
The {buck/coul} style computes a Buckingham potential (exp/6 instead of
Lennard-Jones 12/6) and Coulombic potential, given by
:c,image(Eqs/pair_buck.jpg)
:c,image(Eqs/pair_coulomb.jpg)
Rc is the cutoff. If one cutoff is specified in the pair_style
command, it is used for both the Buckingham and Coulombic terms. If
two cutoffs are specified, they are used as cutoffs for the Buckingham
and Coulombic terms respectively.
The purpose of this pair style is to capture long-range interactions
resulting from both attractive 1/r^6 Buckingham and Coulombic 1/r
interactions. This is done by use of the {flag_buck} and {flag_coul}
settings. The ""Ismail"_#Ismail paper has more details on when it is
appropriate to include long-range 1/r^6 interactions, using this
potential.
If {flag_buck} is set to {long}, no cutoff is used on the Buckingham
1/r^6 dispersion term. The long-range portion is calculated by using
the "kspace_style ewald/n"_kspace_style.html command. The specified
Buckingham cutoff then determines which portion of the Buckingham
interactions are computed directly by the pair potential versus which
part is computed in reciprocal space via the Kspace style. If
{flag_buck} is set to {cut}, the Buckingham interactions are simply
cutoff, as with "pair_style buck"_pair_buck.html.
If {flag_coul} is set to {long}, no cutoff is used on the Coulombic
interactions. The long-range portion is calculated by using any
style, including {ewald/n} of the "kspace_style"_kspace_style.html
command. Note that if {flag_buck} is also set to long, then only the
{ewald/n} Kspace style can perform the long-range calculations for
both the Buckingham and Coulombic interactions. If {flag_coul} is set
to {off}, Coulombic interactions are not computed.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
A (energy units)
rho (distance units)
C (energy-distance^6 units)
cutoff (distance units)
cutoff2 (distance units) :ul
The second coefficient, rho, must be greater than zero.
The latter 2 coefficients are optional. If not specified, the global
Buckingham and Coulombic cutoffs specified in the pair_style command
are used. If only one cutoff is specified, it is used as the cutoff
for both Buckingham and Coulombic interactions for this type pair. If
both coefficients are specified, they are used as the Buckingham and
Coulombic cutoffs for this type pair. Note that if you are using
{flag_buck} set to {long}, you cannot specify a Buckingham cutoff for
an atom type pair, since only one global Buckingham cutoff is allowed.
Similarly, if you are using {flag_coul} set to {long}, you cannot
specify a Coulombic cutoff for an atom type pair, since only one
global Coulombic cutoff is allowed.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
This pair styles does not support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
This pair style supports the "pair_modify"_pair_modify.html shift
option for the energy of the exp() and 1/r^6 portion of the pair
interaction, assuming {flag_buck} is {cut}.
This pair style does not support the "pair_modify"_pair_modify.html
shift option for the energy of the Buckingham portion of the pair
interaction.
This pair style does not support the "pair_modify"_pair_modify.html
table option since a tabulation capability has not yet been added to
this potential.
This pair style write its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style supports the use of the {inner}, {middle}, and {outer}
keywords of the "run_style respa"_run_style.html command, meaning the
pairwise forces can be partitioned by distance at different levels of
the rRESPA hierarchy. See the "run_style"_run_style.html command for
details.
:line
[Restrictions:]
This style is part of the "user-ewaldn" package. It is only enabled
if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Ismail)
[(Ismail)] Ismail, Tsige, In 't Veld, Grest, Molecular Physics
(accepted) (2007).
diff --git a/doc/pair_charmm.html b/doc/pair_charmm.html
index 78a407cec..2d67fb2bb 100644
--- a/doc/pair_charmm.html
+++ b/doc/pair_charmm.html
@@ -1,198 +1,198 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style lj/charmm/coul/charmm command
</H3>
<H3>pair_style lj/charmm/coul/charmm/cuda command
</H3>
<H3>pair_style lj/charmm/coul/charmm/implicit command
</H3>
<H3>pair_style lj/charmm/coul/charmm/implicit/cuda command
</H3>
<H3>pair_style lj/charmm/coul/long command
</H3>
<H3>pair_style lj/charmm/coul/long/cuda command
</H3>
<H3>pair_style lj/charmm/coul/long/gpu command
</H3>
<H3>pair_style lj/charmm/coul/long/opt command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style args
</PRE>
<UL><LI>style = <I>lj/charmm/coul/charmm</I> or <I>lj/charmm/coul/charmm/implicit</I> or <I>lj/charmm/coul/long</I>
<LI>args = list of arguments for a particular style
</UL>
<PRE> <I>lj/charmm/coul/charmm</I> args = inner outer (inner2) (outer2)
inner, outer = global switching cutoffs for Lennard Jones (and Coulombic if only 2 args)
inner2, outer2 = global switching cutoffs for Coulombic (optional)
<I>lj/charmm/coul/charmm/implicit</I> args = inner outer (inner2) (outer2)
inner, outer = global switching cutoffs for LJ (and Coulombic if only 2 args)
inner2, outer2 = global switching cutoffs for Coulombic (optional)
<I>lj/charmm/coul/long</I> args = inner outer (cutoff)
inner, outer = global switching cutoffs for LJ (and Coulombic if only 2 args)
cutoff = global cutoff for Coulombic (optional, outer is Coulombic cutoff if only 2 args)
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style lj/charmm/coul/charmm 8.0 10.0
pair_style lj/charmm/coul/charmm 8.0 10.0 7.0 9.0
pair_coeff * * 100.0 2.0
pair_coeff 1 1 100.0 2.0 150.0 3.5
</PRE>
<PRE>pair_style lj/charmm/coul/charmm/implicit 8.0 10.0
pair_style lj/charmm/coul/charmm/implicit 8.0 10.0 7.0 9.0
pair_coeff * * 100.0 2.0
pair_coeff 1 1 100.0 2.0 150.0 3.5
</PRE>
<PRE>pair_style lj/charmm/coul/long 8.0 10.0
pair_style lj/charmm/coul/long 8.0 10.0 9.0
pair_coeff * * 100.0 2.0
pair_coeff 1 1 100.0 2.0 150.0 3.5
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>lj/charmm</I> styles compute LJ and Coulombic interactions with an
additional switching function S(r) that ramps the energy and force
smoothly to zero between an inner and outer cutoff. It is a widely
used potential in the <A HREF = "http://www.scripps.edu/brooks">CHARMM</A> MD code.
See <A HREF = "#MacKerell">(MacKerell)</A> for a description of the CHARMM force
field.
</P>
<CENTER><IMG SRC = "Eqs/pair_charmm.jpg">
</CENTER>
<P>Both the LJ and Coulombic terms require an inner and outer cutoff.
They can be the same for both formulas or different depending on
whether 2 or 4 arguments are used in the pair_style command. In each
case, the inner cutoff distance must be less than the outer cutoff.
It it typical to make the difference between the 2 cutoffs about 1.0
Angstrom.
</P>
<P>Style <I>lj/charmm/coul/charmm/implicit</I> computes the same formulas as
style <I>lj/charmm/coul/charmm</I> except that an additional 1/r term is
included in the Coulombic formula. The Coulombic energy thus varies
as 1/r^2. This is effectively a distance-dependent dielectric term
which is a simple model for an implicit solvent with additional
screening. It is designed for use in a simulation of an unsolvated
biomolecule (no explicit water molecules).
</P>
<P>Style <I>lj/charmm/coul/long</I> computes the same formulas as style
<I>lj/charmm/coul/charmm</I> except that an additional damping factor is
applied to the Coulombic term, as in the discussion for pair style
<I>lj/cut/coul/long</I>. Only one Coulombic cutoff is specified for
<I>lj/charmm/coul/long</I>; if only 2 arguments are used in the pair_style
command, then the outer LJ cutoff is used as the single Coulombic
cutoff.
</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>epsilon (energy units)
<LI>sigma (distance units)
<LI>epsilon_14 (energy units)
<LI>sigma_14 (distance units)
</UL>
<P>Note that sigma is defined in the LJ formula as the zero-crossing
distance for the potential, not as the energy minimum at 2^(1/6)
sigma.
</P>
<P>The latter 2 coefficients are optional. If they are specified, they
are used in the LJ formula between 2 atoms of these types which are
also first and fourth atoms in any dihedral. No cutoffs are specified
because this CHARMM force field does not allow varying cutoffs for
individual atom pairs; all pairs use the global cutoff(s) specified in
the pair_style command.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon, sigma, epsilon_14,
and sigma_14 coefficients for all of the lj/charmm pair styles can be
mixed. The default mix value is <I>arithmetic</I> to coincide with the
usual settings for the CHARMM force field. See the "pair_modify"
command for details.
</P>
<P>None of the lj/charmm pair styles support the
<A HREF = "pair_modify.html">pair_modify</A> shift option, since the Lennard-Jones
portion of the pair interaction is smoothed to 0.0 at the cutoff.
</P>
<P>The <I>lj/charmm/coul/long</I> style supports the
<A HREF = "pair_modify.html">pair_modify</A> table option since it can tabulate the
short-range portion of the long-range Coulombic interaction.
</P>
<P>None of the lj/charmm pair styles support the
<A HREF = "pair_modify.html">pair_modify</A> tail option for adding long-range tail
corrections to energy and pressure, since the Lennard-Jones portion of
the pair interaction is smoothed to 0.0 at the cutoff.
</P>
<P>All of the lj/charmm pair styles write their information to <A HREF = "restart.html">binary
restart files</A>, so pair_style and pair_coeff commands do
not need to be specified in an input script that reads a restart file.
</P>
<P>The lj/charmm/coul/long pair style supports the use of the <I>inner</I>,
<I>middle</I>, and <I>outer</I> keywords of the <A HREF = "run_style.html">run_style respa</A>
command, meaning the pairwise forces can be partitioned by distance at
different levels of the rRESPA hierarchy. The other styles only
support the <I>pair</I> keyword of run_style respa. See the
<A HREF = "run_style.html">run_style</A> command for details.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>The <I>lj/charmm/coul/charmm</I> and <I>lj/charmm/coul/charmm/implicit</I>
styles are part of the "molecule" package. The <I>lj/charmm/coul/long</I>
style is part of the "kspace" package. They are only enabled if
-LAMMPS was built with those packages. See the <A HREF = "Section_start.html#2_3">Making
-LAMMPS</A> section for more info. Note that the
-molecule and kspace packages are installed by default.
+LAMMPS was built with those packages. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info. Note that
+the molecule and kspace packages are installed by default.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "MacKerell"></A>
<P><B>(MacKerell)</B> MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
</P>
</HTML>
diff --git a/doc/pair_charmm.txt b/doc/pair_charmm.txt
index 335bbba75..a6540c5c3 100644
--- a/doc/pair_charmm.txt
+++ b/doc/pair_charmm.txt
@@ -1,184 +1,184 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style lj/charmm/coul/charmm command :h3
pair_style lj/charmm/coul/charmm/cuda command :h3
pair_style lj/charmm/coul/charmm/implicit command :h3
pair_style lj/charmm/coul/charmm/implicit/cuda command :h3
pair_style lj/charmm/coul/long command :h3
pair_style lj/charmm/coul/long/cuda command :h3
pair_style lj/charmm/coul/long/gpu command :h3
pair_style lj/charmm/coul/long/opt command :h3
[Syntax:]
pair_style style args :pre
style = {lj/charmm/coul/charmm} or {lj/charmm/coul/charmm/implicit} or {lj/charmm/coul/long}
args = list of arguments for a particular style :ul
{lj/charmm/coul/charmm} args = inner outer (inner2) (outer2)
inner, outer = global switching cutoffs for Lennard Jones (and Coulombic if only 2 args)
inner2, outer2 = global switching cutoffs for Coulombic (optional)
{lj/charmm/coul/charmm/implicit} args = inner outer (inner2) (outer2)
inner, outer = global switching cutoffs for LJ (and Coulombic if only 2 args)
inner2, outer2 = global switching cutoffs for Coulombic (optional)
{lj/charmm/coul/long} args = inner outer (cutoff)
inner, outer = global switching cutoffs for LJ (and Coulombic if only 2 args)
cutoff = global cutoff for Coulombic (optional, outer is Coulombic cutoff if only 2 args) :pre
[Examples:]
pair_style lj/charmm/coul/charmm 8.0 10.0
pair_style lj/charmm/coul/charmm 8.0 10.0 7.0 9.0
pair_coeff * * 100.0 2.0
pair_coeff 1 1 100.0 2.0 150.0 3.5 :pre
pair_style lj/charmm/coul/charmm/implicit 8.0 10.0
pair_style lj/charmm/coul/charmm/implicit 8.0 10.0 7.0 9.0
pair_coeff * * 100.0 2.0
pair_coeff 1 1 100.0 2.0 150.0 3.5 :pre
pair_style lj/charmm/coul/long 8.0 10.0
pair_style lj/charmm/coul/long 8.0 10.0 9.0
pair_coeff * * 100.0 2.0
pair_coeff 1 1 100.0 2.0 150.0 3.5 :pre
[Description:]
The {lj/charmm} styles compute LJ and Coulombic interactions with an
additional switching function S(r) that ramps the energy and force
smoothly to zero between an inner and outer cutoff. It is a widely
used potential in the "CHARMM"_http://www.scripps.edu/brooks MD code.
See "(MacKerell)"_#MacKerell for a description of the CHARMM force
field.
:c,image(Eqs/pair_charmm.jpg)
Both the LJ and Coulombic terms require an inner and outer cutoff.
They can be the same for both formulas or different depending on
whether 2 or 4 arguments are used in the pair_style command. In each
case, the inner cutoff distance must be less than the outer cutoff.
It it typical to make the difference between the 2 cutoffs about 1.0
Angstrom.
Style {lj/charmm/coul/charmm/implicit} computes the same formulas as
style {lj/charmm/coul/charmm} except that an additional 1/r term is
included in the Coulombic formula. The Coulombic energy thus varies
as 1/r^2. This is effectively a distance-dependent dielectric term
which is a simple model for an implicit solvent with additional
screening. It is designed for use in a simulation of an unsolvated
biomolecule (no explicit water molecules).
Style {lj/charmm/coul/long} computes the same formulas as style
{lj/charmm/coul/charmm} except that an additional damping factor is
applied to the Coulombic term, as in the discussion for pair style
{lj/cut/coul/long}. Only one Coulombic cutoff is specified for
{lj/charmm/coul/long}; if only 2 arguments are used in the pair_style
command, then the outer LJ cutoff is used as the single Coulombic
cutoff.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
epsilon (energy units)
sigma (distance units)
epsilon_14 (energy units)
sigma_14 (distance units) :ul
Note that sigma is defined in the LJ formula as the zero-crossing
distance for the potential, not as the energy minimum at 2^(1/6)
sigma.
The latter 2 coefficients are optional. If they are specified, they
are used in the LJ formula between 2 atoms of these types which are
also first and fourth atoms in any dihedral. No cutoffs are specified
because this CHARMM force field does not allow varying cutoffs for
individual atom pairs; all pairs use the global cutoff(s) specified in
the pair_style command.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon, sigma, epsilon_14,
and sigma_14 coefficients for all of the lj/charmm pair styles can be
mixed. The default mix value is {arithmetic} to coincide with the
usual settings for the CHARMM force field. See the "pair_modify"
command for details.
None of the lj/charmm pair styles support the
"pair_modify"_pair_modify.html shift option, since the Lennard-Jones
portion of the pair interaction is smoothed to 0.0 at the cutoff.
The {lj/charmm/coul/long} style supports the
"pair_modify"_pair_modify.html table option since it can tabulate the
short-range portion of the long-range Coulombic interaction.
None of the lj/charmm pair styles support the
"pair_modify"_pair_modify.html tail option for adding long-range tail
corrections to energy and pressure, since the Lennard-Jones portion of
the pair interaction is smoothed to 0.0 at the cutoff.
All of the lj/charmm pair styles write their information to "binary
restart files"_restart.html, so pair_style and pair_coeff commands do
not need to be specified in an input script that reads a restart file.
The lj/charmm/coul/long pair style supports the use of the {inner},
{middle}, and {outer} keywords of the "run_style respa"_run_style.html
command, meaning the pairwise forces can be partitioned by distance at
different levels of the rRESPA hierarchy. The other styles only
support the {pair} keyword of run_style respa. See the
"run_style"_run_style.html command for details.
:line
[Restrictions:]
The {lj/charmm/coul/charmm} and {lj/charmm/coul/charmm/implicit}
styles are part of the "molecule" package. The {lj/charmm/coul/long}
style is part of the "kspace" package. They are only enabled if
LAMMPS was built with those packages. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info. Note that the
-molecule and kspace packages are installed by default.
+LAMMPS"_Section_start.html#start_3 section for more info. Note that
+the molecule and kspace packages are installed by default.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(MacKerell)
[(MacKerell)] MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field,
Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).
diff --git a/doc/pair_class2.html b/doc/pair_class2.html
index 0290f019c..217dd9a71 100644
--- a/doc/pair_class2.html
+++ b/doc/pair_class2.html
@@ -1,179 +1,179 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style lj/class2 command
</H3>
<H3>pair_style lj/class2/cuda command
</H3>
<H3>pair_style lj/class2/gpu command
</H3>
<H3>pair_style lj/class2/coul/cut command
</H3>
<H3>pair_style lj/class2/coul/cut/cuda command
</H3>
<H3>pair_style lj/class2/coul/long command
</H3>
<H3>pair_style lj/class2/coul/long/cuda command
</H3>
<H3>pair_style lj/class2/coul/long/gpu command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style args
</PRE>
<UL><LI>style = <I>lj/class2</I> or <I>lj/class2/coul/cut</I> or <I>lj/class2/coul/long</I>
<LI>args = list of arguments for a particular style
</UL>
<PRE> <I>lj/class2</I> args = cutoff
cutoff = global cutoff for class 2 interactions (distance units)
<I>lj/class2/coul/cut</I> args = cutoff (cutoff2)
cutoff = global cutoff for class 2 (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
<I>lj/class2/coul/long</I> args = cutoff (cutoff2)
cutoff = global cutoff for class 2 (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style lj/class2 10.0
pair_coeff * * 100.0 2.5
pair_coeff 1 2* 100.0 2.5 9.0
</PRE>
<PRE>pair_style lj/class2/coul/cut 10.0
pair_style lj/class2/coul/cut 10.0 8.0
pair_coeff * * 100.0 3.0
pair_coeff 1 1 100.0 3.5 9.0
pair_coeff 1 1 100.0 3.5 9.0 9.0
</PRE>
<PRE>pair_style lj/class2/coul/long 10.0
pair_style lj/class2/coul/long 10.0 8.0
pair_coeff * * 100.0 3.0
pair_coeff 1 1 100.0 3.5 9.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>lj/class2</I> styles compute a 6/9 Lennard-Jones potential given by
</P>
<CENTER><IMG SRC = "Eqs/pair_class2.jpg">
</CENTER>
<P>Rc is the cutoff.
</P>
<P>The <I>lj/class2/coul/cut</I> and <I>lj/class2/coul/long</I> styles add a
Coulombic term as described for the <A HREF = "pair_lj.html">lj/cut</A> pair
styles.
</P>
<P>See <A HREF = "#Sun">(Sun)</A> for a description of the COMPASS class2 force field.
</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>epsilon (energy units)
<LI>sigma (distance units)
<LI>cutoff1 (distance units)
<LI>cutoff2 (distance units)
</UL>
<P>The latter 2 coefficients are optional. If not specified, the global
class 2 and Coulombic cutoffs are used. If only one cutoff is
specified, it is used as the cutoff for both class 2 and Coulombic
interactions for this type pair. If both coefficients are specified,
they are used as the class 2 and Coulombic cutoffs for this type pair.
You cannot specify 2 cutoffs for style <I>lj/class2</I>, since it has no
Coulombic terms.
</P>
<P>For <I>lj/class2/coul/long</I> only the class 2 cutoff can be specified
since a Coulombic cutoff cannot be specified for an individual I,J
type pair. All type pairs use the same global Coulombic cutoff
specified in the pair_style command.
</P>
<HR>
<P>If the pair_coeff command is not used to define coefficients for a
particular I != J type pair, the mixing rule for epsilon and sigma for
all class2 potentials is to use the <I>sixthpower</I> formulas documented
by the <A HREF = "pair_modify.html">pair_modify</A> command. The <A HREF = "pair_modify.html">pair_modify
mix</A> setting is thus ignored for class2 potentials
for epsilon and sigma. However it is still followed for mixing the
cutoff distance.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the lj/class2 pair styles can be mixed.
Epsilon and sigma are always mixed with the value <I>sixthpower</I>. The
cutoff distance is mixed by whatever option is set by the pair_modify
command (default = geometric). See the "pair_modify" command for
details.
</P>
<P>All of the lj/class2 pair styles support the
<A HREF = "pair_modify.html">pair_modify</A> shift option for the energy of the
Lennard-Jones portion of the pair interaction.
</P>
<P>The <I>lj/class2/coul/long</I> pair style does not support the
<A HREF = "pair_modify.html">pair_modify</A> table option since a tabulation
capability has not yet been added to this potential.
</P>
<P>All of the lj/class2 pair styles support the
<A HREF = "pair_modify.html">pair_modify</A> tail option for adding a long-range
tail correction to the energy and pressure of the Lennard-Jones
portion of the pair interaction.
</P>
<P>All of the lj/class2 pair styles write their information to <A HREF = "restart.html">binary
restart files</A>, so pair_style and pair_coeff commands do
not need to be specified in an input script that reads a restart file.
</P>
<P>All of the lj/class2 pair styles can only be used via the <I>pair</I>
keyword of the <A HREF = "run_style.html">run_style respa</A> command. They do not
support the <I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<P><B>Restrictions:</B>
</P>
<P>These styles are part of the "class2" package. They are only enabled
-if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Sun"></A>
<P><B>(Sun)</B> Sun, J Phys Chem B 102, 7338-7364 (1998).
</P>
</HTML>
diff --git a/doc/pair_class2.txt b/doc/pair_class2.txt
index a51a721d1..25fa72b67 100644
--- a/doc/pair_class2.txt
+++ b/doc/pair_class2.txt
@@ -1,165 +1,165 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style lj/class2 command :h3
pair_style lj/class2/cuda command :h3
pair_style lj/class2/gpu command :h3
pair_style lj/class2/coul/cut command :h3
pair_style lj/class2/coul/cut/cuda command :h3
pair_style lj/class2/coul/long command :h3
pair_style lj/class2/coul/long/cuda command :h3
pair_style lj/class2/coul/long/gpu command :h3
[Syntax:]
pair_style style args :pre
style = {lj/class2} or {lj/class2/coul/cut} or {lj/class2/coul/long}
args = list of arguments for a particular style :ul
{lj/class2} args = cutoff
cutoff = global cutoff for class 2 interactions (distance units)
{lj/class2/coul/cut} args = cutoff (cutoff2)
cutoff = global cutoff for class 2 (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
{lj/class2/coul/long} args = cutoff (cutoff2)
cutoff = global cutoff for class 2 (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units) :pre
[Examples:]
pair_style lj/class2 10.0
pair_coeff * * 100.0 2.5
pair_coeff 1 2* 100.0 2.5 9.0 :pre
pair_style lj/class2/coul/cut 10.0
pair_style lj/class2/coul/cut 10.0 8.0
pair_coeff * * 100.0 3.0
pair_coeff 1 1 100.0 3.5 9.0
pair_coeff 1 1 100.0 3.5 9.0 9.0 :pre
pair_style lj/class2/coul/long 10.0
pair_style lj/class2/coul/long 10.0 8.0
pair_coeff * * 100.0 3.0
pair_coeff 1 1 100.0 3.5 9.0 :pre
[Description:]
The {lj/class2} styles compute a 6/9 Lennard-Jones potential given by
:c,image(Eqs/pair_class2.jpg)
Rc is the cutoff.
The {lj/class2/coul/cut} and {lj/class2/coul/long} styles add a
Coulombic term as described for the "lj/cut"_pair_lj.html pair
styles.
See "(Sun)"_#Sun for a description of the COMPASS class2 force field.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
epsilon (energy units)
sigma (distance units)
cutoff1 (distance units)
cutoff2 (distance units) :ul
The latter 2 coefficients are optional. If not specified, the global
class 2 and Coulombic cutoffs are used. If only one cutoff is
specified, it is used as the cutoff for both class 2 and Coulombic
interactions for this type pair. If both coefficients are specified,
they are used as the class 2 and Coulombic cutoffs for this type pair.
You cannot specify 2 cutoffs for style {lj/class2}, since it has no
Coulombic terms.
For {lj/class2/coul/long} only the class 2 cutoff can be specified
since a Coulombic cutoff cannot be specified for an individual I,J
type pair. All type pairs use the same global Coulombic cutoff
specified in the pair_style command.
:line
If the pair_coeff command is not used to define coefficients for a
particular I != J type pair, the mixing rule for epsilon and sigma for
all class2 potentials is to use the {sixthpower} formulas documented
by the "pair_modify"_pair_modify.html command. The "pair_modify
mix"_pair_modify.html setting is thus ignored for class2 potentials
for epsilon and sigma. However it is still followed for mixing the
cutoff distance.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the lj/class2 pair styles can be mixed.
Epsilon and sigma are always mixed with the value {sixthpower}. The
cutoff distance is mixed by whatever option is set by the pair_modify
command (default = geometric). See the "pair_modify" command for
details.
All of the lj/class2 pair styles support the
"pair_modify"_pair_modify.html shift option for the energy of the
Lennard-Jones portion of the pair interaction.
The {lj/class2/coul/long} pair style does not support the
"pair_modify"_pair_modify.html table option since a tabulation
capability has not yet been added to this potential.
All of the lj/class2 pair styles support the
"pair_modify"_pair_modify.html tail option for adding a long-range
tail correction to the energy and pressure of the Lennard-Jones
portion of the pair interaction.
All of the lj/class2 pair styles write their information to "binary
restart files"_restart.html, so pair_style and pair_coeff commands do
not need to be specified in an input script that reads a restart file.
All of the lj/class2 pair styles can only be used via the {pair}
keyword of the "run_style respa"_run_style.html command. They do not
support the {inner}, {middle}, {outer} keywords.
[Restrictions:]
These styles are part of the "class2" package. They are only enabled
if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Sun)
[(Sun)] Sun, J Phys Chem B 102, 7338-7364 (1998).
diff --git a/doc/pair_cmm.html b/doc/pair_cmm.html
index 0c8884a3c..255532194 100644
--- a/doc/pair_cmm.html
+++ b/doc/pair_cmm.html
@@ -1,203 +1,203 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style cg/cmm command
</H3>
<H3>pair_style cg/cmm/cuda command
</H3>
<H3>pair_style cg/cmm/gpu command
</H3>
<H3>pair_style cg/cmm/coul/cut command
</H3>
<H3>pair_style cg/cmm/coul/cut/cuda command
</H3>
<H3>pair_style cg/cmm/coul/debye/cuda command
</H3>
<H3>pair_style cg/cmm/coul/long command
</H3>
<H3>pair_style cg/cmm/coul/long/gpu command
</H3>
<H3>pair_style cg/cmm/coul/long/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style args
</PRE>
<UL><LI>style = <I>cg/cmm</I> or <I>cg/cmm/coul/cut</I> or <I>cg/cmm/coul/long</I>
<LI>args = list of arguments for a particular style
</UL>
<PRE> <I>cg/cmm</I> args = cutoff
cutoff = global cutoff for Lennard Jones interactions (distance units)
<I>cg/cmm/coul/cut</I> args = cutoff (cutoff2) (kappa)
cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
kappa = Debye length (optional, defaults to 0.0 = disabled) (inverse distance units)
<I>cg/cmm/coul/long</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)
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style cg/cmm 2.5
pair_coeff 1 1 lj12_6 1 1.1 2.8
</PRE>
<PRE>pair_style cg/cmm/coul/cut 10.0 12.0
pair_coeff 1 1 lj9_6 100.0 3.5 9.0
pair_coeff 1 1 lj12_4 100.0 3.5 9.0 9.0
</PRE>
<PRE>pair_style cg/cmm/coul/long 10.0
pair_style cg/cmm/coul/long 10.0 8.0
pair_coeff 1 1 lj9_6 100.0 3.5 9.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>cg/cmm</I> styles compute a 9/6, 12/4, or 12/6 Lennard-Jones potential,
given by
</P>
<CENTER><IMG SRC = "Eqs/pair_cmm.jpg">
</CENTER>
<P>as required for the CMM Coarse-grained MD parametrization discussed in
<A HREF = "#Shinoda">(Shinoda)</A> and <A HREF = "#DeVane">(DeVane)</A>. Rc is the cutoff.
</P>
<P>Style <I>cg/cmm/coul/cut</I> adds a Coulombic pairwise interaction given by
</P>
<CENTER><IMG SRC = "Eqs/pair_coulomb.jpg">
</CENTER>
<P>where C is an energy-conversion constant, Qi and Qj are the charges on
the 2 atoms, and epsilon is the dielectric constant which can be set
by the <A HREF = "dielectric.html">dielectric</A> command. If one cutoff is
specified in the pair_style command, it is used for both the LJ and
Coulombic terms. If two cutoffs are specified, they are used as
cutoffs for the LJ and Coulombic terms respectively.
</P>
<P>This style also contains an additional exp() damping factor
to the Coulombic term, given by
</P>
<CENTER><IMG SRC = "Eqs/pair_debye.jpg">
</CENTER>
<P>where kappa is the Debye length (kappa=0.0 is the unscreened coulomb).
This potential is another way to mimic the screening effect of a polar
solvent.
</P>
<P>Style <I>cg/cmm/coul/long</I> computes the same Coulombic interactions as
style <I>cg/cmm/coul/cut</I> except that an additional damping factor is
applied to the Coulombic term so it can be used in conjunction with
the <A HREF = "kspace_style.html">kspace_style</A> command and its <I>ewald</I> or <I>pppm</I>
option. The Coulombic cutoff specified for this style means that
pairwise interactions within this distance are computed directly;
interactions outside that distance are computed in reciprocal space.
</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>cg_type (lj9_6, lj12_4, or lj12_6)
<LI>epsilon (energy units)
<LI>sigma (distance units)
<LI>cutoff1 (distance units)
<LI>cutoff2 (distance units)
</UL>
<P>Note that sigma is defined in the LJ formula as the zero-crossing
distance for the potential, not as the energy minimum. The prefactors
are chosen so that the potential minimum is at -epsilon.
</P>
<P>The latter 2 coefficients are optional. If not specified, the global
LJ and Coulombic cutoffs specified in the pair_style command are used.
If only one cutoff is specified, it is used as the cutoff for both LJ
and Coulombic interactions for this type pair. If both coefficients
are specified, they are used as the LJ and Coulombic cutoffs for this
type pair.
</P>
<P>For <I>cg/cmm/coul/long</I> only the LJ cutoff can be specified since a
Coulombic cutoff cannot be specified for an individual I,J type pair.
All type pairs use the same global Coulombic cutoff specified in the
pair_style command.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, and rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the cg/cmm pair styles <I>cannot</I> be mixed,
since different pairs may have different exponents. So all parameters
for all pairs have to be specified explicitly through the "pair_coeff"
command. Defining then in a data file is also not supported, due to
limitations of that file format.
</P>
<P>All of the cg/cmm pair styles support the
<A HREF = "pair_modify.html">pair_modify</A> shift option for the energy of the
Lennard-Jones portion of the pair interaction.
</P>
<P>The <I>cg/cmm/coul/long</I> pair styles support the
<A HREF = "pair_modify.html">pair_modify</A> table option since they can tabulate
the short-range portion of the long-range Coulombic interaction.
</P>
<P>All of the cg/cmm pair styles write their information to <A HREF = "restart.html">binary
restart files</A>, so pair_style and pair_coeff commands do
not need to be specified in an input script that reads a restart file.
</P>
<P>The cg/cmm, cg/cmm/coul/cut and lj/cut/coul/long pair styles support
the use of the <I>inner</I>, <I>middle</I>, and <I>outer</I> keywords of the <A HREF = "run_style.html">run_style
respa</A> command, meaning the pairwise forces can be
partitioned by distance at different levels of the rRESPA hierarchy.
See the <A HREF = "run_style.html">run_style</A> command for details.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>All of the cg/cmm pair styles are part of the "user-cg-cmm" package.
The <I>cg/cmm/coul/long</I> style also requires the "kspace" package to be
built (which is enabled by default). They are only enabled if LAMMPS
-was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "angle_cmm.html">angle_style cg/cmm</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Shinoda"></A>
<P><B>(Shinoda)</B> Shinoda, DeVane, Klein, Mol Sim, 33, 27 (2007).
</P>
<A NAME = "DeVane"></A>
<P><B>(DeVane)</B> Shinoda, DeVane, Klein, Soft Matter, 4, 2453-2462 (2008).
</P>
</HTML>
diff --git a/doc/pair_cmm.txt b/doc/pair_cmm.txt
index d70be6f6e..d0e5d058f 100644
--- a/doc/pair_cmm.txt
+++ b/doc/pair_cmm.txt
@@ -1,188 +1,188 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style cg/cmm command :h3
pair_style cg/cmm/cuda command :h3
pair_style cg/cmm/gpu command :h3
pair_style cg/cmm/coul/cut command :h3
pair_style cg/cmm/coul/cut/cuda command :h3
pair_style cg/cmm/coul/debye/cuda command :h3
pair_style cg/cmm/coul/long command :h3
pair_style cg/cmm/coul/long/gpu command :h3
pair_style cg/cmm/coul/long/cuda command :h3
[Syntax:]
pair_style style args :pre
style = {cg/cmm} or {cg/cmm/coul/cut} or {cg/cmm/coul/long}
args = list of arguments for a particular style :ul
{cg/cmm} args = cutoff
cutoff = global cutoff for Lennard Jones interactions (distance units)
{cg/cmm/coul/cut} args = cutoff (cutoff2) (kappa)
cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
kappa = Debye length (optional, defaults to 0.0 = disabled) (inverse distance units)
{cg/cmm/coul/long} args = cutoff (cutoff2)
cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units) :pre
[Examples:]
pair_style cg/cmm 2.5
pair_coeff 1 1 lj12_6 1 1.1 2.8 :pre
pair_style cg/cmm/coul/cut 10.0 12.0
pair_coeff 1 1 lj9_6 100.0 3.5 9.0
pair_coeff 1 1 lj12_4 100.0 3.5 9.0 9.0 :pre
pair_style cg/cmm/coul/long 10.0
pair_style cg/cmm/coul/long 10.0 8.0
pair_coeff 1 1 lj9_6 100.0 3.5 9.0 :pre
[Description:]
The {cg/cmm} styles compute a 9/6, 12/4, or 12/6 Lennard-Jones potential,
given by
:c,image(Eqs/pair_cmm.jpg)
as required for the CMM Coarse-grained MD parametrization discussed in
"(Shinoda)"_#Shinoda and "(DeVane)"_#DeVane. Rc is the cutoff.
Style {cg/cmm/coul/cut} adds a Coulombic pairwise interaction given by
:c,image(Eqs/pair_coulomb.jpg)
where C is an energy-conversion constant, Qi and Qj are the charges on
the 2 atoms, and epsilon is the dielectric constant which can be set
by the "dielectric"_dielectric.html command. If one cutoff is
specified in the pair_style command, it is used for both the LJ and
Coulombic terms. If two cutoffs are specified, they are used as
cutoffs for the LJ and Coulombic terms respectively.
This style also contains an additional exp() damping factor
to the Coulombic term, given by
:c,image(Eqs/pair_debye.jpg)
where kappa is the Debye length (kappa=0.0 is the unscreened coulomb).
This potential is another way to mimic the screening effect of a polar
solvent.
Style {cg/cmm/coul/long} computes the same Coulombic interactions as
style {cg/cmm/coul/cut} except that an additional damping factor is
applied to the Coulombic term so it can be used in conjunction with
the "kspace_style"_kspace_style.html command and its {ewald} or {pppm}
option. The Coulombic cutoff specified for this style means that
pairwise interactions within this distance are computed directly;
interactions outside that distance are computed in reciprocal space.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
cg_type (lj9_6, lj12_4, or lj12_6)
epsilon (energy units)
sigma (distance units)
cutoff1 (distance units)
cutoff2 (distance units) :ul
Note that sigma is defined in the LJ formula as the zero-crossing
distance for the potential, not as the energy minimum. The prefactors
are chosen so that the potential minimum is at -epsilon.
The latter 2 coefficients are optional. If not specified, the global
LJ and Coulombic cutoffs specified in the pair_style command are used.
If only one cutoff is specified, it is used as the cutoff for both LJ
and Coulombic interactions for this type pair. If both coefficients
are specified, they are used as the LJ and Coulombic cutoffs for this
type pair.
For {cg/cmm/coul/long} only the LJ cutoff can be specified since a
Coulombic cutoff cannot be specified for an individual I,J type pair.
All type pairs use the same global Coulombic cutoff specified in the
pair_style command.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, and rRESPA info]:
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the cg/cmm pair styles {cannot} be mixed,
since different pairs may have different exponents. So all parameters
for all pairs have to be specified explicitly through the "pair_coeff"
command. Defining then in a data file is also not supported, due to
limitations of that file format.
All of the cg/cmm pair styles support the
"pair_modify"_pair_modify.html shift option for the energy of the
Lennard-Jones portion of the pair interaction.
The {cg/cmm/coul/long} pair styles support the
"pair_modify"_pair_modify.html table option since they can tabulate
the short-range portion of the long-range Coulombic interaction.
All of the cg/cmm pair styles write their information to "binary
restart files"_restart.html, so pair_style and pair_coeff commands do
not need to be specified in an input script that reads a restart file.
The cg/cmm, cg/cmm/coul/cut and lj/cut/coul/long pair styles support
the use of the {inner}, {middle}, and {outer} keywords of the "run_style
respa"_run_style.html command, meaning the pairwise forces can be
partitioned by distance at different levels of the rRESPA hierarchy.
See the "run_style"_run_style.html command for details.
:line
[Restrictions:]
All of the cg/cmm pair styles are part of the "user-cg-cmm" package.
The {cg/cmm/coul/long} style also requires the "kspace" package to be
built (which is enabled by default). They are only enabled if LAMMPS
was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html, "angle_style cg/cmm"_angle_cmm.html
[Default:] none
:line
:link(Shinoda)
[(Shinoda)] Shinoda, DeVane, Klein, Mol Sim, 33, 27 (2007).
:link(DeVane)
[(DeVane)] Shinoda, DeVane, Klein, Soft Matter, 4, 2453-2462 (2008).
diff --git a/doc/pair_coeff.html b/doc/pair_coeff.html
index 7debbbd72..fb5ffd893 100644
--- a/doc/pair_coeff.html
+++ b/doc/pair_coeff.html
@@ -1,174 +1,174 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_coeff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_coeff I J args
</PRE>
<UL><LI>I,J = atom types (see asterisk form below)
<LI>args = coefficients for one or more pairs of atom types
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_coeff 1 2 1.0 1.0 2.5
pair_coeff 2 * 1.0 1.0
pair_coeff 3* 1*2 1.0 1.0 2.5
pair_coeff * * 1.0 1.0
pair_coeff * * nialhjea 1 1 2
pair_coeff * 3 morse.table ENTRY1
pair_coeff 1 2 lj/cut 1.0 1.0 2.5 (for pair_style hybrid)
</PRE>
<P><B>Description:</B>
</P>
<P>Specify the pairwise force field coefficients for one or more pairs of
atom types. The number and meaning of the coefficients depends on the
pair style. Pair coefficients can also be set in the data file read
by the <A HREF = "read_data.html">read_data</A> command or in a restart file.
</P>
<P>I and J can be specified in one of two ways. Explicit numeric values
can be used for each, as in the 1st example above. I <= J is
required. LAMMPS sets the coefficients for the symmetric J,I
interaction to the same values.
</P>
<P>A wildcard asterisk can be used in place of or in conjunction with the
I,J arguments to set the coefficients for multiple pairs 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). Note that only type pairs with I <= J are considered; if
asterisks imply type pairs where J < I, they are ignored.
</P>
<P>Note that a pair_coeff command can override a previous setting for the
same I,J pair. For example, these commands set the coeffs for all I,J
pairs, then overwrite the coeffs for just the I,J = 2,3 pair:
</P>
<PRE>pair_coeff * * 1.0 1.0 2.5
pair_coeff 2 3 2.0 1.0 1.12
</PRE>
<P>A line in a data file that specifies pair coefficients uses the exact
same format as the arguments of the pair_coeff command in an input
script, with the exception of the I,J type arguments. In each line of
the "Pair Coeffs" section of a data file, only a single type I is
specified, which sets the coefficients for type I interacting with
type I. This is because the section has exactly N lines, where N =
the number of atom types. For this reason, the wild-card asterisk
should also not be used as part of the I argument. Thus in a data
file, the line corresponding to the 1st example above would be listed
as
</P>
<PRE>2 1.0 1.0 2.5
</PRE>
<P>For many potentials, if coefficients for type pairs with I != J are
not set explicitly by a pair_coeff command, the values are inferred
from the I,I and J,J settings by mixing rules; see the
<A HREF = "pair_modify.html">pair_modify</A> command for a discussion. Details on
this option as it pertains to individual potentials are described on
the doc page for the potential.
</P>
<HR>
<P>Here is an alphabetic list of pair styles defined in LAMMPS. Click on
the style to display the formula it computes, arguments specified in
the pair_style command, and coefficients specified by the associated
<A HREF = "pair_coeff.html">pair_coeff</A> command:
</P>
<UL><LI><A HREF = "pair_hybrid.html">pair_style hybrid</A> - multiple styles of pairwise interactions
<LI><A HREF = "pair_hybrid.html">pair_style hybrid/overlay</A> - multiple styles of superposed pairwise interactions
</UL>
<UL><LI><A HREF = "pair_adp.html">pair_style adp</A> - angular dependent potential (ADP) of Mishin
<LI><A HREF = "pair_airebo.html">pair_style airebo</A> - AIREBO potential of Stuart
<LI><A HREF = "pair_born.html">pair_style born</A> - Born-Mayer-Huggins potential
<LI><A HREF = "pair_born.html">pair_style born/coul/long</A> - Born-Mayer-Huggins with long-range Coulomb
<LI><A HREF = "pair_buck.html">pair_style buck</A> - Buckingham potential
<LI><A HREF = "pair_buck.html">pair_style buck/coul/cut</A> - Buckingham with cutoff Coulomb
<LI><A HREF = "pair_buck.html">pair_style buck/coul/long</A> - Buckingham with long-range Coulomb
<LI><A HREF = "pair_colloid.html">pair_style colloid</A> - integrated colloidal potential
<LI><A HREF = "pair_coul.html">pair_style coul/cut</A> - cutoff Coulombic potential
<LI><A HREF = "pair_coul.html">pair_style coul/debye</A> - cutoff Coulombic potential with Debye screening
<LI><A HREF = "pair_coul.html">pair_style coul/long</A> - long-range Coulombic potential
<LI><A HREF = "pair_dipole.html">pair_style dipole/cut</A> - point dipoles with cutoff
<LI><A HREF = "pair_dpd.html">pair_style dpd</A> - dissipative particle dynamics (DPD)
<LI><A HREF = "pair_dpd.html">pair_style dpd/tstat</A> - DPD thermostatting
<LI><A HREF = "pair_dsmc.html">pair_style dsmc</A> - Direct Simulation Monte Carlo (DSMC)
<LI><A HREF = "pair_eam.html">pair_style eam</A> - embedded atom method (EAM)
<LI><A HREF = "pair_eam.html">pair_style eam/alloy</A> - alloy EAM
<LI><A HREF = "pair_eam.html">pair_style eam/fs</A> - Finnis-Sinclair EAM
<LI><A HREF = "pair_eim.html">pair_style eim</A> - embedded ion method (EIM)
<LI><A HREF = "pair_gauss.html">pair_style gauss</A> - Gaussian potential
<LI><A HREF = "pair_gayberne.html">pair_style gayberne</A> - Gay-Berne ellipsoidal potential
<LI><A HREF = "pair_gran.html">pair_style gran/hertz/history</A> - granular potential with Hertzian interactions
<LI><A HREF = "pair_gran.html">pair_style gran/hooke</A> - granular potential with history effects
<LI><A HREF = "pair_gran.html">pair_style gran/hooke/history</A> - granular potential without history effects
<LI><A HREF = "pair_hbond_dreiding.html">pair_style hbond/dreiding/lj</A> - DREIDING hydrogen bonding LJ potential
<LI><A HREF = "pair_hbond_dreiding.html">pair_style hbond/dreiding/morse</A> - DREIDING hydrogen bonding Morse potential
<LI><A HREF = "pair_charmm.html">pair_style lj/charmm/coul/charmm</A> - CHARMM potential with cutoff Coulomb
<LI><A HREF = "pair_charmm.html">pair_style lj/charmm/coul/charmm/implicit</A> - CHARMM for implicit solvent
<LI><A HREF = "pair_charmm.html">pair_style lj/charmm/coul/long</A> - CHARMM with long-range Coulomb
<LI><A HREF = "pair_class2.html">pair_style lj/class2</A> - COMPASS (class 2) force field with no Coulomb
<LI><A HREF = "pair_class2.html">pair_style lj/class2/coul/cut</A> - COMPASS with cutoff Coulomb
<LI><A HREF = "pair_class2.html">pair_style lj/class2/coul/long</A> - COMPASS with long-range Coulomb
<LI><A HREF = "pair_lj.html">pair_style lj/cut</A> - cutoff Lennard-Jones potential with no Coulomb
<LI><A HREF = "pair_lj.html">pair_style lj/cut/coul/cut</A> - LJ with cutoff Coulomb
<LI><A HREF = "pair_lj.html">pair_style lj/cut/coul/debye</A> - LJ with Debye screening added to Coulomb
<LI><A HREF = "pair_lj.html">pair_style lj/cut/coul/long</A> - LJ with long-range Coulomb
<LI><A HREF = "pair_lj.html">pair_style lj/cut/coul/long/tip4p</A> - LJ with long-range Coulomb for TIP4P water
<LI><A HREF = "pair_lj_expand.html">pair_style lj/expand</A> - Lennard-Jones for variable size particles
<LI><A HREF = "pair_gromacs.html">pair_style lj/gromacs</A> - GROMACS-style Lennard-Jones potential
<LI><A HREF = "pair_gromacs.html">pair_style lj/gromacs/coul/gromacs</A> - GROMACS-style LJ and Coulombic potential
<LI><A HREF = "pair_lj_smooth.html">pair_style lj/smooth</A> - smoothed Lennard-Jones potential
<LI><A HREF = "pair_lj96.html">pair_style lj96/cut</A> - Lennard-Jones 9/6 potential
<LI><A HREF = "pair_lubricate.html">pair_style lubricate</A> - hydrodynamic lubrication forces
<LI><A HREF = "pair_meam.html">pair_style meam</A> - modified embedded atom method (MEAM)
<LI><A HREF = "pair_morse.html">pair_style morse</A> - Morse potential
<LI><A HREF = "pair_peri.html">pair_style peri/lps</A> - peridynamic LPS potential
<LI><A HREF = "pair_peri.html">pair_style peri/pmb</A> - peridynamic PMB potential
<LI><A HREF = "pair_reax.html">pair_style reax</A> - ReaxFF potential
<LI><A HREF = "pair_airebo.html">pair_style rebo</A> - 2nd-generation REBO potential of Brenner
<LI><A HREF = "pair_resquared.html">pair_style resquared</A> - Everaers RE-Squared ellipsoidal potential
<LI><A HREF = "pair_soft.html">pair_style soft</A> - Soft (cosine) potential
<LI><A HREF = "pair_sw.html">pair_style sw</A> - Stillinger-Weber 3-body potential
<LI><A HREF = "pair_table.html">pair_style table</A> - tabulated pair potential
<LI><A HREF = "pair_tersoff.html">pair_style tersoff</A> - Tersoff 3-body potential
<LI><A HREF = "pair_tersoff_zbl.html">pair_style tersoff/zbl</A> - Tersoff/ZBL 3-body potential
<LI><A HREF = "pair_yukawa.html">pair_style yukawa</A> - Yukawa potential
<LI><A HREF = "pair_yukawa_colloid.html">pair_style yukawa/colloid</A> - screened Yukawa potential for finite-size particles
</UL>
<P>There are also additional pair 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 pair section of <A HREF = "Section_commands.html#3_5">this
+the individual styles are given in the pair section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<P>There are also additional accelerated pair styles included in the
LAMMPS distribution for faster performance on CPUs and GPUs. The list
of these with links to the individual styles are given in the pair
-section of <A HREF = "Section_commands.html#3_5">this page</A>.
+section of <A HREF = "Section_commands.html#cmd_5">this page</A>.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command must come after the simulation box is defined by 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><B>Related commands:</B>
</P>
<P><A HREF = "pair_style.html">pair_style</A>, <A HREF = "pair_modify.html">pair_modify</A>,
<A HREF = "read_data.html">read_data</A>, <A HREF = "read_restart.html">read_restart</A>,
<A HREF = "pair_write.html">pair_write</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/pair_coeff.txt b/doc/pair_coeff.txt
index 887ef456d..5a6c00a24 100644
--- a/doc/pair_coeff.txt
+++ b/doc/pair_coeff.txt
@@ -1,169 +1,169 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_coeff command :h3
[Syntax:]
pair_coeff I J args :pre
I,J = atom types (see asterisk form below)
args = coefficients for one or more pairs of atom types :ul
[Examples:]
pair_coeff 1 2 1.0 1.0 2.5
pair_coeff 2 * 1.0 1.0
pair_coeff 3* 1*2 1.0 1.0 2.5
pair_coeff * * 1.0 1.0
pair_coeff * * nialhjea 1 1 2
pair_coeff * 3 morse.table ENTRY1
pair_coeff 1 2 lj/cut 1.0 1.0 2.5 (for pair_style hybrid) :pre
[Description:]
Specify the pairwise force field coefficients for one or more pairs of
atom types. The number and meaning of the coefficients depends on the
pair style. Pair coefficients can also be set in the data file read
by the "read_data"_read_data.html command or in a restart file.
I and J can be specified in one of two ways. Explicit numeric values
can be used for each, as in the 1st example above. I <= J is
required. LAMMPS sets the coefficients for the symmetric J,I
interaction to the same values.
A wildcard asterisk can be used in place of or in conjunction with the
I,J arguments to set the coefficients for multiple pairs 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). Note that only type pairs with I <= J are considered; if
asterisks imply type pairs where J < I, they are ignored.
Note that a pair_coeff command can override a previous setting for the
same I,J pair. For example, these commands set the coeffs for all I,J
pairs, then overwrite the coeffs for just the I,J = 2,3 pair:
pair_coeff * * 1.0 1.0 2.5
pair_coeff 2 3 2.0 1.0 1.12 :pre
A line in a data file that specifies pair coefficients uses the exact
same format as the arguments of the pair_coeff command in an input
script, with the exception of the I,J type arguments. In each line of
the "Pair Coeffs" section of a data file, only a single type I is
specified, which sets the coefficients for type I interacting with
type I. This is because the section has exactly N lines, where N =
the number of atom types. For this reason, the wild-card asterisk
should also not be used as part of the I argument. Thus in a data
file, the line corresponding to the 1st example above would be listed
as
2 1.0 1.0 2.5 :pre
For many potentials, if coefficients for type pairs with I != J are
not set explicitly by a pair_coeff command, the values are inferred
from the I,I and J,J settings by mixing rules; see the
"pair_modify"_pair_modify.html command for a discussion. Details on
this option as it pertains to individual potentials are described on
the doc page for the potential.
:line
Here is an alphabetic list of pair styles defined in LAMMPS. Click on
the style to display the formula it computes, arguments specified in
the pair_style command, and coefficients specified by the associated
"pair_coeff"_pair_coeff.html command:
"pair_style hybrid"_pair_hybrid.html - multiple styles of pairwise interactions
"pair_style hybrid/overlay"_pair_hybrid.html - multiple styles of superposed pairwise interactions :ul
"pair_style adp"_pair_adp.html - angular dependent potential (ADP) of Mishin
"pair_style airebo"_pair_airebo.html - AIREBO potential of Stuart
"pair_style born"_pair_born.html - Born-Mayer-Huggins potential
"pair_style born/coul/long"_pair_born.html - Born-Mayer-Huggins with long-range Coulomb
"pair_style buck"_pair_buck.html - Buckingham potential
"pair_style buck/coul/cut"_pair_buck.html - Buckingham with cutoff Coulomb
"pair_style buck/coul/long"_pair_buck.html - Buckingham with long-range Coulomb
"pair_style colloid"_pair_colloid.html - integrated colloidal potential
"pair_style coul/cut"_pair_coul.html - cutoff Coulombic potential
"pair_style coul/debye"_pair_coul.html - cutoff Coulombic potential with Debye screening
"pair_style coul/long"_pair_coul.html - long-range Coulombic potential
"pair_style dipole/cut"_pair_dipole.html - point dipoles with cutoff
"pair_style dpd"_pair_dpd.html - dissipative particle dynamics (DPD)
"pair_style dpd/tstat"_pair_dpd.html - DPD thermostatting
"pair_style dsmc"_pair_dsmc.html - Direct Simulation Monte Carlo (DSMC)
"pair_style eam"_pair_eam.html - embedded atom method (EAM)
"pair_style eam/alloy"_pair_eam.html - alloy EAM
"pair_style eam/fs"_pair_eam.html - Finnis-Sinclair EAM
"pair_style eim"_pair_eim.html - embedded ion method (EIM)
"pair_style gauss"_pair_gauss.html - Gaussian potential
"pair_style gayberne"_pair_gayberne.html - Gay-Berne ellipsoidal potential
"pair_style gran/hertz/history"_pair_gran.html - granular potential with Hertzian interactions
"pair_style gran/hooke"_pair_gran.html - granular potential with history effects
"pair_style gran/hooke/history"_pair_gran.html - granular potential without history effects
"pair_style hbond/dreiding/lj"_pair_hbond_dreiding.html - DREIDING hydrogen bonding LJ potential
"pair_style hbond/dreiding/morse"_pair_hbond_dreiding.html - DREIDING hydrogen bonding Morse potential
"pair_style lj/charmm/coul/charmm"_pair_charmm.html - CHARMM potential with cutoff Coulomb
"pair_style lj/charmm/coul/charmm/implicit"_pair_charmm.html - CHARMM for implicit solvent
"pair_style lj/charmm/coul/long"_pair_charmm.html - CHARMM with long-range Coulomb
"pair_style lj/class2"_pair_class2.html - COMPASS (class 2) force field with no Coulomb
"pair_style lj/class2/coul/cut"_pair_class2.html - COMPASS with cutoff Coulomb
"pair_style lj/class2/coul/long"_pair_class2.html - COMPASS with long-range Coulomb
"pair_style lj/cut"_pair_lj.html - cutoff Lennard-Jones potential with no Coulomb
"pair_style lj/cut/coul/cut"_pair_lj.html - LJ with cutoff Coulomb
"pair_style lj/cut/coul/debye"_pair_lj.html - LJ with Debye screening added to Coulomb
"pair_style lj/cut/coul/long"_pair_lj.html - LJ with long-range Coulomb
"pair_style lj/cut/coul/long/tip4p"_pair_lj.html - LJ with long-range Coulomb for TIP4P water
"pair_style lj/expand"_pair_lj_expand.html - Lennard-Jones for variable size particles
"pair_style lj/gromacs"_pair_gromacs.html - GROMACS-style Lennard-Jones potential
"pair_style lj/gromacs/coul/gromacs"_pair_gromacs.html - GROMACS-style LJ and Coulombic potential
"pair_style lj/smooth"_pair_lj_smooth.html - smoothed Lennard-Jones potential
"pair_style lj96/cut"_pair_lj96.html - Lennard-Jones 9/6 potential
"pair_style lubricate"_pair_lubricate.html - hydrodynamic lubrication forces
"pair_style meam"_pair_meam.html - modified embedded atom method (MEAM)
"pair_style morse"_pair_morse.html - Morse potential
"pair_style peri/lps"_pair_peri.html - peridynamic LPS potential
"pair_style peri/pmb"_pair_peri.html - peridynamic PMB potential
"pair_style reax"_pair_reax.html - ReaxFF potential
"pair_style rebo"_pair_airebo.html - 2nd-generation REBO potential of Brenner
"pair_style resquared"_pair_resquared.html - Everaers RE-Squared ellipsoidal potential
"pair_style soft"_pair_soft.html - Soft (cosine) potential
"pair_style sw"_pair_sw.html - Stillinger-Weber 3-body potential
"pair_style table"_pair_table.html - tabulated pair potential
"pair_style tersoff"_pair_tersoff.html - Tersoff 3-body potential
"pair_style tersoff/zbl"_pair_tersoff_zbl.html - Tersoff/ZBL 3-body potential
"pair_style yukawa"_pair_yukawa.html - Yukawa potential
"pair_style yukawa/colloid"_pair_yukawa_colloid.html - screened Yukawa potential for finite-size particles :ul
There are also additional pair 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 pair section of "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
There are also additional accelerated pair styles included in the
LAMMPS distribution for faster performance on CPUs and GPUs. The list
of these with links to the individual styles are given in the pair
-section of "this page"_Section_commands.html#3_5.
+section of "this page"_Section_commands.html#cmd_5.
:line
[Restrictions:]
This command must come after the simulation box is defined by a
"read_data"_read_data.html, "read_restart"_read_restart.html, or
"create_box"_create_box.html command.
[Related commands:]
"pair_style"_pair_style.html, "pair_modify"_pair_modify.html,
"read_data"_read_data.html, "read_restart"_read_restart.html,
"pair_write"_pair_write.html
[Default:] none
diff --git a/doc/pair_colloid.html b/doc/pair_colloid.html
index 19aa2636a..e1a5d7bdb 100644
--- a/doc/pair_colloid.html
+++ b/doc/pair_colloid.html
@@ -1,186 +1,186 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style colloid command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style colloid cutoff
</PRE>
<UL><LI>cutoff = global cutoff for colloidal interactions (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style colloid 10.0
pair_coeff * * 25 1.0 10.0 10.0
pair_coeff 1 1 144 1.0 0.0 0.0 3.0
pair_coeff 1 2 75.398 1.0 0.0 10.0 9.0
pair_coeff 2 2 39.478 1.0 10.0 10.0 25.0
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>colloid</I> computes pairwise interactions between large colloidal
particles and small solvent particles using 3 formulas. A colloidal
particle has a size > sigma; a solvent particle is the usual
Lennard-Jones particle of size sigma.
</P>
<P>The colloid-colloid interaction energy is given by
</P>
<CENTER><IMG SRC = "Eqs/pair_colloid_cc.jpg">
</CENTER>
<P>where A_cc is the Hamaker constant, a1 and a2 are the radii of the two
colloidal particles, and Rc is the cutoff. This equation results from
describing each colloidal particle as an integrated collection of
Lennard-Jones particles of size sigma and is derived in
<A HREF = "#Everaers">(Everaers)</A>.
</P>
<P>The colloid-solvent interaction energy is given by
</P>
<CENTER><IMG SRC = "Eqs/pair_colloid_cs.jpg">
</CENTER>
<P>where A_cs is the Hamaker constant, a is the radius of the colloidal
particle, and Rc is the cutoff. This formula is derived from the
colloid-colloid interaction, letting one of the particle sizes go to
zero.
</P>
<P>The solvent-solvent interaction energy is given by the usual
Lennard-Jones formula
</P>
<CENTER><IMG SRC = "Eqs/pair_colloid_ss.jpg">
</CENTER>
<P>with A_ss set appropriately, which results from letting both particle
sizes go to zero.
</P>
<P>When used in combination with <A HREF = "pair_colloid.html">pair_style
yukawa/colloid</A>, the two terms become the so-called
DLVO potential, which combines electrostatic repulsion and van der
Waals attraction.
</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>A (energy units)
<LI>sigma (distance units)
<LI>d1 (distance units)
<LI>d2 (distance units)
<LI>cutoff (distance units)
</UL>
<P>A is the Hamaker energy prefactor and should typically be set as
follows:
</P>
<UL><LI>A_cc = colloid/colloid = 4 pi^2 = 39.5
<LI>A_cs = colloid/solvent = sqrt(A_cc*A_ss)
<LI>A_ss = solvent/solvent = 144 (assuming epsilon = 1, so that 144/36 = 4)
</UL>
<P>Sigma is the size of the solvent particle or the constituent particles
integrated over in the colloidal particle and should typically be set
as follows:
</P>
<UL><LI>Sigma_cc = colloid/colloid = 1.0
<LI>Sigma_cs = colloid/solvent = arithmetic mixing between colloid sigma and solvent sigma
<LI>Sigma_ss = solvent/solvent = 1.0 or whatever size the solvent particle is
</UL>
<P>Thus typically Sigma_cs = 1.0, unless the solvent particle's size !=
1.0.
</P>
<P>D1 and d2 are particle diameters, so that d1 = 2*a1 and d2 = 2*a2 in
the formulas above. Both d1 and d2 must be values >= 0. If d1 > 0
and d2 > 0, then the pair interacts via the colloid-colloid formula
above. If d1 = 0 and d2 = 0, then the pair interacts via the
solvent-solvent formula. I.e. a d value of 0 is a Lennard-Jones
particle of size sigma. If either d1 = 0 or d2 = 0 and the other is
larger, then the pair interacts via the colloid-solvent formula.
</P>
<P>Note that the diameter of a particular particle type may appear in
multiple pair_coeff commands, as it interacts with other particle
types. You should insure the particle diameter is specified
consistently each time it appears.
</P>
<P>The last coefficient is optional. If not specified, the global cutoff
specified in the pair_style command is used. However, you typically
want different cutoffs for interactions between different particle
sizes. E.g. if colloidal particles of diameter 10 are used with
solvent particles of diameter 1, then a solvent-solvent cutoff of 2.5
would correspond to a colloid-colloid cutoff of 25. A good
rule-of-thumb is to use a colloid-solvent cutoff that is half the big
diameter + 4 times the small diameter. I.e. 9 = 5 + 4 for the
colloid-solvent cutoff in this case.
</P>
<P>IMPORTANT NOTE: When using pair_style colloid for a mixture with 2 (or
more) widely different particles sizes (e.g. sigma=10 colloids in a
background sigam=1 LJ fluid), you will likely want to use these
commands for efficiency: <A HREF = "neighbor.html">neighbor multi</A> and
<A HREF = "communicate.html">communicate multi</A>.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the A, sigma, d1, and d2
coefficients and cutoff distance for this pair style can be mixed. A
is an energy value mixed like a LJ epsilon. D1 and d2 are distance
values and are mixed like sigma. The default mix value is
<I>geometric</I>. See the "pair_modify" command for details.
</P>
<P>This pair style supports the <A HREF = "pair_modify.html">pair_modify</A> shift
option for the energy of the pair interaction.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This style is part of the "colloid" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>Normally, this pair style should be used with finite-size particles
which have a diameter, e.g. see the <A HREF = "atom_style.html">atom_style
sphere</A> command. However, this is not a requirement,
since the only definition of particle size is via the pair_coeff
parameters for each type. In other words, the physical radius of the
particle is ignored. Thus you should insure that the d1,d2 parameters
you specify are consistent with the physical size of the particles of
that type.
</P>
<P>Per-particle polydispersity is not yet supported by this pair style;
only per-type polydispersity is enabled via the pair_coeff parameters.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Everaers"></A>
<P><B>(Everaers)</B> Everaers, Ejtehadi, Phys Rev E, 67, 041710 (2003).
</P>
</HTML>
diff --git a/doc/pair_colloid.txt b/doc/pair_colloid.txt
index f71df3509..4da606c03 100644
--- a/doc/pair_colloid.txt
+++ b/doc/pair_colloid.txt
@@ -1,180 +1,180 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style colloid command :h3
[Syntax:]
pair_style colloid cutoff :pre
cutoff = global cutoff for colloidal interactions (distance units) :ul
[Examples:]
pair_style colloid 10.0
pair_coeff * * 25 1.0 10.0 10.0
pair_coeff 1 1 144 1.0 0.0 0.0 3.0
pair_coeff 1 2 75.398 1.0 0.0 10.0 9.0
pair_coeff 2 2 39.478 1.0 10.0 10.0 25.0 :pre
[Description:]
Style {colloid} computes pairwise interactions between large colloidal
particles and small solvent particles using 3 formulas. A colloidal
particle has a size > sigma; a solvent particle is the usual
Lennard-Jones particle of size sigma.
The colloid-colloid interaction energy is given by
:c,image(Eqs/pair_colloid_cc.jpg)
where A_cc is the Hamaker constant, a1 and a2 are the radii of the two
colloidal particles, and Rc is the cutoff. This equation results from
describing each colloidal particle as an integrated collection of
Lennard-Jones particles of size sigma and is derived in
"(Everaers)"_#Everaers.
The colloid-solvent interaction energy is given by
:c,image(Eqs/pair_colloid_cs.jpg)
where A_cs is the Hamaker constant, a is the radius of the colloidal
particle, and Rc is the cutoff. This formula is derived from the
colloid-colloid interaction, letting one of the particle sizes go to
zero.
The solvent-solvent interaction energy is given by the usual
Lennard-Jones formula
:c,image(Eqs/pair_colloid_ss.jpg)
with A_ss set appropriately, which results from letting both particle
sizes go to zero.
When used in combination with "pair_style
yukawa/colloid"_pair_colloid.html, the two terms become the so-called
DLVO potential, which combines electrostatic repulsion and van der
Waals attraction.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
A (energy units)
sigma (distance units)
d1 (distance units)
d2 (distance units)
cutoff (distance units) :ul
A is the Hamaker energy prefactor and should typically be set as
follows:
A_cc = colloid/colloid = 4 pi^2 = 39.5
A_cs = colloid/solvent = sqrt(A_cc*A_ss)
A_ss = solvent/solvent = 144 (assuming epsilon = 1, so that 144/36 = 4) :ul
Sigma is the size of the solvent particle or the constituent particles
integrated over in the colloidal particle and should typically be set
as follows:
Sigma_cc = colloid/colloid = 1.0
Sigma_cs = colloid/solvent = arithmetic mixing between colloid sigma and solvent sigma
Sigma_ss = solvent/solvent = 1.0 or whatever size the solvent particle is :ul
Thus typically Sigma_cs = 1.0, unless the solvent particle's size !=
1.0.
D1 and d2 are particle diameters, so that d1 = 2*a1 and d2 = 2*a2 in
the formulas above. Both d1 and d2 must be values >= 0. If d1 > 0
and d2 > 0, then the pair interacts via the colloid-colloid formula
above. If d1 = 0 and d2 = 0, then the pair interacts via the
solvent-solvent formula. I.e. a d value of 0 is a Lennard-Jones
particle of size sigma. If either d1 = 0 or d2 = 0 and the other is
larger, then the pair interacts via the colloid-solvent formula.
Note that the diameter of a particular particle type may appear in
multiple pair_coeff commands, as it interacts with other particle
types. You should insure the particle diameter is specified
consistently each time it appears.
The last coefficient is optional. If not specified, the global cutoff
specified in the pair_style command is used. However, you typically
want different cutoffs for interactions between different particle
sizes. E.g. if colloidal particles of diameter 10 are used with
solvent particles of diameter 1, then a solvent-solvent cutoff of 2.5
would correspond to a colloid-colloid cutoff of 25. A good
rule-of-thumb is to use a colloid-solvent cutoff that is half the big
diameter + 4 times the small diameter. I.e. 9 = 5 + 4 for the
colloid-solvent cutoff in this case.
IMPORTANT NOTE: When using pair_style colloid for a mixture with 2 (or
more) widely different particles sizes (e.g. sigma=10 colloids in a
background sigam=1 LJ fluid), you will likely want to use these
commands for efficiency: "neighbor multi"_neighbor.html and
"communicate multi"_communicate.html.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the A, sigma, d1, and d2
coefficients and cutoff distance for this pair style can be mixed. A
is an energy value mixed like a LJ epsilon. D1 and d2 are distance
values and are mixed like sigma. The default mix value is
{geometric}. See the "pair_modify" command for details.
This pair style supports the "pair_modify"_pair_modify.html shift
option for the energy of the pair interaction.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
This pair style does not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
This style is part of the "colloid" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
Normally, this pair style should be used with finite-size particles
which have a diameter, e.g. see the "atom_style
sphere"_atom_style.html command. However, this is not a requirement,
since the only definition of particle size is via the pair_coeff
parameters for each type. In other words, the physical radius of the
particle is ignored. Thus you should insure that the d1,d2 parameters
you specify are consistent with the physical size of the particles of
that type.
Per-particle polydispersity is not yet supported by this pair style;
only per-type polydispersity is enabled via the pair_coeff parameters.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Everaers)
[(Everaers)] Everaers, Ejtehadi, Phys Rev E, 67, 041710 (2003).
diff --git a/doc/pair_comb.html b/doc/pair_comb.html
index d131c23f0..60947dba4 100644
--- a/doc/pair_comb.html
+++ b/doc/pair_comb.html
@@ -1,239 +1,239 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style comb command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style comb
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style comb
pair_coeff * * ../potentials/ffield.comb Si
pair_coeff * * ../potentials/ffield.comb Hf Si O
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>comb</I> computes a variable charge COMB (Charge-Optimized
Many-Body) potential as described in <A HREF = "#COMB_1">(COMB_1)</A> and
<A HREF = "#COMB_2">(COMB_2)</A>. The energy E of a system of atoms
is given by
</P>
<CENTER><IMG SRC = "Eqs/pair_comb1.jpg">
</CENTER>
<P>where <I>E<sub>T</sub></I> is the total potential energy of the system,
<I>E<sup>S</sup><sub>i</sub></I> is the self-energy term of atom <I>i</I>,
<I>V<sub>ij</sub></I> is the interatomic potential between the <I>i</I>th and
<I>j</I>th atoms, <I>r<sub>ij</sub></I> is the distance of the atoms <I>i</I> and
<I>j</I>, and <I>q<sub>i</sub></I> and <I>q<sub>j</sub></I> are charges of the atoms,
and <I>E<sup>BB</sup><sub>i</sub></I> is the bond-bending term of atom <I>i</I>.
</P>
<P>The interatomic potential energy <I>V<sub>ij</sub></I> consists of four
components: two-body short-range repulsion,
<I>U<sup>R</sup><sub>ij</sub></I>, many-body short-range attraction,
<I>U<sup>A</sup><sub>ij</sub></I>, long-range Coulombic electrostatic
interaction, <I>U<sup>I</sup><sub>ij</sub></I>, and van der Waals energy,
<I>U<sup>V</sup><sub>ij</sub></I>, which are defined as:
</P>
<CENTER><IMG SRC = "Eqs/pair_comb2.jpg">
</CENTER>
<P>The short-range repulsion and attraction are based on the
<A HREF = "#Tersoff">Tersoff</A> potential (see the <A HREF = "pair_tersoff.html">pair_style
tersoff</A> command); thus for a zero-charge pure
element system with no van der Waals interaction, the COMB potential
reduces to Tersoff potential, typically truncated at a short cutoff,
e.g. 3 to 4 Angstroms. The long-range Coulombic term uses the Wolf
summation method described in <A HREF = "#Wolf">Wolf</A>, spherically truncated at a
longer cutoff, e.g. 12 Angstroms.
</P>
<P>The COMB potential is a variable charge potential. The equilibrium
charge on each atom is calculated by the electronegativity
equalization (QEq) method. See <A HREF = "#Rick">Rick</A> for further details.
This is implemented by the <A HREF = "fix_qeq_comb.html">fix qeq/comb</A> command,
which should normally be specified in the input script when running a
model with the COMB potential. The <A HREF = "fix_qeq_comb.html">fix qeq/comb</A>
command has options that determine how often charge equilibration is
performed, its convergence criterion, and which atoms are included in
the calculation.
</P>
<P>Only a single pair_coeff command is used with the <I>comb</I> style which
specifies the COMB potential file with parameters for all needed
elements. These are mapped to LAMMPS atom types by specifying N
additional arguments after the potential file in the pair_coeff
command, where N is the number of LAMMPS atom types. The provided
potential file <I>ffield.comb</I> contains all currently-available COMB
parameterizations: for Si, Cu, Hf, Ti, O, their oxides and Zr, Zn and
U metals.
</P>
<P>For example, if your LAMMPS simulation of a Si/SiO<sub>2</sub>/
HfO<sub>2</sub> interface has 4 atom types, and you want the 1st and
last to be Si, the 2nd to be Hf, and the 3rd to be O, and you would
use the following pair_coeff command:
</P>
<PRE>pair_coeff * * ../potentials/ffield.comb Si Hf O Si
</PRE>
<P>The first two arguments must be * * so as to span all LAMMPS atom
types. The first and last Si arguments map LAMMPS atom types 1 and 4
to the Si element in the <I>ffield.comb</I> file. The second Hf argument
maps LAMMPS atom type 2 to the Hf element, and the third O argument
maps LAMMPS atom type 3 to the O element in the potential file. If a
mapping value is specified as NULL, the mapping is not performed.
This can be used when a <I>comb</I> potential is used as part of the
<I>hybrid</I> pair style. The NULL values are placeholders for atom types
that will be used with other potentials.
</P>
<P>The <I>ffield.comb</I> potential file is in the <I>potentials</I> directory of
the LAMMPS distribution. Lines that are not blank or comments
(starting with #) define parameters for a triplet of elements. The 49
parameters in a single entry correspond to coefficients in the formula
above:
</P>
<UL><LI>element 1 (the center atom in a 3-body interaction)
<LI>element 2 (the atom bonded to the center atom)
<LI>element 3 (the atom influencing the 1-2 bond in a bond-order sense)
<LI>m
<LI>c
<LI>d
<LI>h (cos_theta0 (can be a value -1 or 1))
<LI>n
<LI>beta
<LI>lambda21, lambda2 of element 1 (1/distance units)
<LI>lambda22, lambda2 of element 2 (1/distance units)
<LI>B of element 1 (energy units)
<LI>B of element 2 (energy units)
<LI>R (cutoff, distance units, 0.5*(r_outer + r_inner))
<LI>D (cutoff, distance units, R - r_inner)
<LI>lambda11, lambda1 of element 1 (1/distance units)
<LI>lambda12, lambda1 of element 2 (1/distance units)
<LI>A of element 1 (energy units)
<LI>A of element 2 (energy units)
<LI>K_LP_1 (energy units, 1st order Legendre polynomial coefficient)
<LI>K_LP_3 (energy units, 3rd order Legendre polynomial coefficient)
<LI>K_LP_6 (energy units, 6th order Legendre polynomial coefficient)
<LI>A123 (cos_theta, theta = equilibrium MOM or OMO bond angles)
<LI>Aconf (cos_theta, theta = equilibrium MOM or OMO bond-bending coefficient)
<LI>addrep (energy units, additional repulsion)
<LI>R_omiga_a (unit-less scaler for A)
<LI>R_omiga_b (unit-less scaler for B)
<LI>R_omiga_c (unit-less scaler for 0.5*(lambda21+lambda22))
<LI>R_omiga_d (unit-less scaler for 0.5*(lambda11+lambda12))
<LI>QL1 (charge units, lower charge limit for element 1)
<LI>QU1 (charge units, upper charge limit for element 1)
<LI>DL1 (distance units, ion radius of element 1 with charge QL1)
<LI>DU1 (distance units, ion radius of element 1 with charge QU1)
<LI>QL2 (charge units, lower charge limit for element 2)
<LI>QU2 (charge units, upper charge limit for element 2)
<LI>DL2 (distance units, ion radius of element 2 with charge QL2)
<LI>DU2 (distance units, ion radius of element 2 with charge QU2)
<LI>chi (energy units, self energy 1st power term)
<LI>dJ (energy units, self energy 2nd power term)
<LI>dK (energy units, self energy 3rd power term)
<LI>dL (energy units, self energy 4th power term)
<LI>dM (energy units, self energy 6th power term)
<LI>esm (distance units, orbital exponent)
<LI>cmn1 (self energy penalty, rho 1 of element 1)
<LI>cml1 (self energy penalty, rho 1 of element 2)
<LI>cmn2 (self energy penalty, rho 2 of element 1)
<LI>cmn2 (self energy penalty, rho 2 of element 2)
<LI>coulcut (long range Coulombic cutoff, distance units)
<LI>hfocor (coordination term)
</UL>
<P>The parameterization of COMB potentials start with a pure element
(e.g. Si, Cu) then extend to its oxide and polymorphs
(e.g. SiO<sub>2</sub>, Cu<sub>2</sub>O). For interactions not
involving oxygen (e.g. Si-Cu or Hf-Zr), the COMB potential uses a
mixing rule to generate these parameters. For furthur details on the
parameterization and parameters, see the <A HREF = "pair_tersoff.html">Tersoff</A>
doc page and the COMB publications <A HREF = "#COMB_1">(COMB_1)</A> and
<A HREF = "#COMB_2">(COMB_2)</A>. For more details on 3-body interaction types
(e.g. SiSiO vs SiOSi), the mixing rule, and how to generate the
potential file, please see the <A HREF = "pair_tersoff.html">Tersoff</A> doc page.
</P>
<P>In the potentials directory, the file <I>ffield.comb</I> provides the
LAMMPS parameters for COMB's Si, Cu, Ti, Hf and their oxides, as well
as pure U, Zn and Zr metals. This file can be used for pure elements
(e.g. Si, Zr), binary oxides, binary alloys (e.g. SiCu, TiZr), and
complex systems. Note that alloys and complex systems require all
3-body entries be pre-defined in the potential file.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS as
described above from values in the potential file.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
shift, table, and tail options.
</P>
<P>This pair style does not write its information to <A HREF = "restart.html">binary restart
files</A>, since it is stored in potential files. Thus, you
need to re-specify the pair_style, pair_coeff, and <A HREF = "fix_qeq_comb.html">fix
qeq/comb</A> commands in an input script that reads a
restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This pair style is part of the "manybody" package. It is only enabled
if LAMMPS was built with that package (which it is by default). See
-the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for more info.
+the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section for more info.
</P>
<P>This pair style requires the <A HREF = "newton.html">newton</A> setting to be "on"
for pair interactions.
</P>
<P>The COMB potentials in the <I>ffield.comb</I> file provided with LAMMPS
(see the potentials directory) are parameterized for metal
<A HREF = "units.html">units</A>. You can use the COMB potential with any LAMMPS
units, but you would need to create your own COMB potential file with
coefficients listed in the appropriate units if your simulation
doesn't use "metal" units.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_style.html">pair_style</A>, <A HREF = "pair_coeff.html">pair_coeff</A>,
<A HREF = "fix_qeq_comb.html">fix_qeq/comb</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "COMB_1"></A>
<P><B>(COMB_1)</B> J. Yu, S. B. Sinnott, S. R. Phillpot, Phys Rev B, 75, 085311 (2007),
</P>
<A NAME = "COMB_2"></A>
<P><B>(COMB_2)</B> T.-R. Shan, B. D. Devine, T. W. Kemper, S. B. Sinnott, S. R.
Phillpot, Phys Rev B, 81, 125328 (2010).
</P>
<A NAME = "Tersoff"></A>
<P><B>(Tersoff)</B> J. Tersoff, Phys Rev B, 37, 6991 (1988).
</P>
<A NAME = "Rick"></A>
<P><B>(Rick)</B> S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 16141
(1994).
</P>
<A NAME = "Wolf"></A>
<P><B>(Wolf)</B> D. Wolf, P. Keblinski, S. R. Phillpot, J. Eggebrecht, J Chem
Phys, 110, 8254 (1999).
</P>
</HTML>
diff --git a/doc/pair_comb.txt b/doc/pair_comb.txt
index 20c4f473c..19055590f 100644
--- a/doc/pair_comb.txt
+++ b/doc/pair_comb.txt
@@ -1,229 +1,229 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style comb command :h3
[Syntax:]
pair_style comb :pre
[Examples:]
pair_style comb
pair_coeff * * ../potentials/ffield.comb Si
pair_coeff * * ../potentials/ffield.comb Hf Si O :pre
[Description:]
Style {comb} computes a variable charge COMB (Charge-Optimized
Many-Body) potential as described in "(COMB_1)"_#COMB_1 and
"(COMB_2)"_#COMB_2. The energy E of a system of atoms
is given by
:c,image(Eqs/pair_comb1.jpg)
where {E<sub>T</sub>} is the total potential energy of the system,
{E<sup>S</sup><sub>i</sub>} is the self-energy term of atom {i},
{V<sub>ij</sub>} is the interatomic potential between the {i}th and
{j}th atoms, {r<sub>ij</sub>} is the distance of the atoms {i} and
{j}, and {q<sub>i</sub>} and {q<sub>j</sub>} are charges of the atoms,
and {E<sup>BB</sup><sub>i</sub>} is the bond-bending term of atom {i}.
The interatomic potential energy {V<sub>ij</sub>} consists of four
components: two-body short-range repulsion,
{U<sup>R</sup><sub>ij</sub>}, many-body short-range attraction,
{U<sup>A</sup><sub>ij</sub>}, long-range Coulombic electrostatic
interaction, {U<sup>I</sup><sub>ij</sub>}, and van der Waals energy,
{U<sup>V</sup><sub>ij</sub>}, which are defined as:
:c,image(Eqs/pair_comb2.jpg)
The short-range repulsion and attraction are based on the
"Tersoff"_#Tersoff potential (see the "pair_style
tersoff"_pair_tersoff.html command); thus for a zero-charge pure
element system with no van der Waals interaction, the COMB potential
reduces to Tersoff potential, typically truncated at a short cutoff,
e.g. 3 to 4 Angstroms. The long-range Coulombic term uses the Wolf
summation method described in "Wolf"_#Wolf, spherically truncated at a
longer cutoff, e.g. 12 Angstroms.
The COMB potential is a variable charge potential. The equilibrium
charge on each atom is calculated by the electronegativity
equalization (QEq) method. See "Rick"_#Rick for further details.
This is implemented by the "fix qeq/comb"_fix_qeq_comb.html command,
which should normally be specified in the input script when running a
model with the COMB potential. The "fix qeq/comb"_fix_qeq_comb.html
command has options that determine how often charge equilibration is
performed, its convergence criterion, and which atoms are included in
the calculation.
Only a single pair_coeff command is used with the {comb} style which
specifies the COMB potential file with parameters for all needed
elements. These are mapped to LAMMPS atom types by specifying N
additional arguments after the potential file in the pair_coeff
command, where N is the number of LAMMPS atom types. The provided
potential file {ffield.comb} contains all currently-available COMB
parameterizations: for Si, Cu, Hf, Ti, O, their oxides and Zr, Zn and
U metals.
For example, if your LAMMPS simulation of a Si/SiO<sub>2</sub>/
HfO<sub>2</sub> interface has 4 atom types, and you want the 1st and
last to be Si, the 2nd to be Hf, and the 3rd to be O, and you would
use the following pair_coeff command:
pair_coeff * * ../potentials/ffield.comb Si Hf O Si :pre
The first two arguments must be * * so as to span all LAMMPS atom
types. The first and last Si arguments map LAMMPS atom types 1 and 4
to the Si element in the {ffield.comb} file. The second Hf argument
maps LAMMPS atom type 2 to the Hf element, and the third O argument
maps LAMMPS atom type 3 to the O element in the potential file. If a
mapping value is specified as NULL, the mapping is not performed.
This can be used when a {comb} potential is used as part of the
{hybrid} pair style. The NULL values are placeholders for atom types
that will be used with other potentials.
The {ffield.comb} potential file is in the {potentials} directory of
the LAMMPS distribution. Lines that are not blank or comments
(starting with #) define parameters for a triplet of elements. The 49
parameters in a single entry correspond to coefficients in the formula
above:
element 1 (the center atom in a 3-body interaction)
element 2 (the atom bonded to the center atom)
element 3 (the atom influencing the 1-2 bond in a bond-order sense)
m
c
d
h (cos_theta0 (can be a value -1 or 1))
n
beta
lambda21, lambda2 of element 1 (1/distance units)
lambda22, lambda2 of element 2 (1/distance units)
B of element 1 (energy units)
B of element 2 (energy units)
R (cutoff, distance units, 0.5*(r_outer + r_inner))
D (cutoff, distance units, R - r_inner)
lambda11, lambda1 of element 1 (1/distance units)
lambda12, lambda1 of element 2 (1/distance units)
A of element 1 (energy units)
A of element 2 (energy units)
K_LP_1 (energy units, 1st order Legendre polynomial coefficient)
K_LP_3 (energy units, 3rd order Legendre polynomial coefficient)
K_LP_6 (energy units, 6th order Legendre polynomial coefficient)
A123 (cos_theta, theta = equilibrium MOM or OMO bond angles)
Aconf (cos_theta, theta = equilibrium MOM or OMO bond-bending coefficient)
addrep (energy units, additional repulsion)
R_omiga_a (unit-less scaler for A)
R_omiga_b (unit-less scaler for B)
R_omiga_c (unit-less scaler for 0.5*(lambda21+lambda22))
R_omiga_d (unit-less scaler for 0.5*(lambda11+lambda12))
QL1 (charge units, lower charge limit for element 1)
QU1 (charge units, upper charge limit for element 1)
DL1 (distance units, ion radius of element 1 with charge QL1)
DU1 (distance units, ion radius of element 1 with charge QU1)
QL2 (charge units, lower charge limit for element 2)
QU2 (charge units, upper charge limit for element 2)
DL2 (distance units, ion radius of element 2 with charge QL2)
DU2 (distance units, ion radius of element 2 with charge QU2)
chi (energy units, self energy 1st power term)
dJ (energy units, self energy 2nd power term)
dK (energy units, self energy 3rd power term)
dL (energy units, self energy 4th power term)
dM (energy units, self energy 6th power term)
esm (distance units, orbital exponent)
cmn1 (self energy penalty, rho 1 of element 1)
cml1 (self energy penalty, rho 1 of element 2)
cmn2 (self energy penalty, rho 2 of element 1)
cmn2 (self energy penalty, rho 2 of element 2)
coulcut (long range Coulombic cutoff, distance units)
hfocor (coordination term) :ul
The parameterization of COMB potentials start with a pure element
(e.g. Si, Cu) then extend to its oxide and polymorphs
(e.g. SiO<sub>2</sub>, Cu<sub>2</sub>O). For interactions not
involving oxygen (e.g. Si-Cu or Hf-Zr), the COMB potential uses a
mixing rule to generate these parameters. For furthur details on the
parameterization and parameters, see the "Tersoff"_pair_tersoff.html
doc page and the COMB publications "(COMB_1)"_#COMB_1 and
"(COMB_2)"_#COMB_2. For more details on 3-body interaction types
(e.g. SiSiO vs SiOSi), the mixing rule, and how to generate the
potential file, please see the "Tersoff"_pair_tersoff.html doc page.
In the potentials directory, the file {ffield.comb} provides the
LAMMPS parameters for COMB's Si, Cu, Ti, Hf and their oxides, as well
as pure U, Zn and Zr metals. This file can be used for pure elements
(e.g. Si, Zr), binary oxides, binary alloys (e.g. SiCu, TiZr), and
complex systems. Note that alloys and complex systems require all
3-body entries be pre-defined in the potential file.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS as
described above from values in the potential file.
This pair style does not support the "pair_modify"_pair_modify.html
shift, table, and tail options.
This pair style does not write its information to "binary restart
files"_restart.html, since it is stored in potential files. Thus, you
need to re-specify the pair_style, pair_coeff, and "fix
qeq/comb"_fix_qeq_comb.html commands in an input script that reads a
restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
This pair style is part of the "manybody" package. It is only enabled
if LAMMPS was built with that package (which it is by default). See
-the "Making LAMMPS"_Section_start.html#2_3 section for more info.
+the "Making LAMMPS"_Section_start.html#start_3 section for more info.
This pair style requires the "newton"_newton.html setting to be "on"
for pair interactions.
The COMB potentials in the {ffield.comb} file provided with LAMMPS
(see the potentials directory) are parameterized for metal
"units"_units.html. You can use the COMB potential with any LAMMPS
units, but you would need to create your own COMB potential file with
coefficients listed in the appropriate units if your simulation
doesn't use "metal" units.
[Related commands:]
"pair_style"_pair_style.html, "pair_coeff"_pair_coeff.html,
"fix_qeq/comb"_fix_qeq_comb.html
[Default:] none
:line
:link(COMB_1)
[(COMB_1)] J. Yu, S. B. Sinnott, S. R. Phillpot, Phys Rev B, 75, 085311 (2007),
:link(COMB_2)
[(COMB_2)] T.-R. Shan, B. D. Devine, T. W. Kemper, S. B. Sinnott, S. R.
Phillpot, Phys Rev B, 81, 125328 (2010).
:link(Tersoff)
[(Tersoff)] J. Tersoff, Phys Rev B, 37, 6991 (1988).
:link(Rick)
[(Rick)] S. W. Rick, S. J. Stuart, B. J. Berne, J Chem Phys 101, 16141
(1994).
:link(Wolf)
[(Wolf)] D. Wolf, P. Keblinski, S. R. Phillpot, J. Eggebrecht, J Chem
Phys, 110, 8254 (1999).
diff --git a/doc/pair_coul.html b/doc/pair_coul.html
index c4a8cff73..b51638444 100644
--- a/doc/pair_coul.html
+++ b/doc/pair_coul.html
@@ -1,158 +1,158 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style coul/cut command
</H3>
<H3>pair_style coul/debye command
</H3>
<H3>pair_style coul/long command
</H3>
<H3>pair_style coul/long/gpu command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style coul/cut cutoff
pair_style coul/debye kappa cutoff
pair_style coul/long cutoff
pair_style coul/long/gpu cutoff
</PRE>
<UL><LI>cutoff = global cutoff for Coulombic interactions
<LI>kappa = Debye length (inverse distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style coul/cut 2.5
pair_coeff * *
pair_coeff 2 2 3.5
</PRE>
<PRE>pair_style coul/debye 1.4 3.0
pair_coeff * *
pair_coeff 2 2 3.5
</PRE>
<PRE>pair_style coul/long 10.0
pair_coeff * *
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>coul/cut</I> style computes the standard Coulombic interaction
potential given by
</P>
<CENTER><IMG SRC = "Eqs/pair_coulomb.jpg">
</CENTER>
<P>where C is an energy-conversion constant, Qi and Qj are the charges on
the 2 atoms, and epsilon is the dielectric constant which can be set
by the <A HREF = "dielectric.html">dielectric</A> command. The cutoff Rc truncates
the interaction distance.
</P>
<P>Style <I>coul/debye</I> adds an additional exp() damping factor to the
Coulombic term, given by
</P>
<CENTER><IMG SRC = "Eqs/pair_debye.jpg">
</CENTER>
<P>where kappa is the Debye length. This potential is another way to
mimic the screening effect of a polar solvent.
</P>
<P>Style <I>coul/long</I> computes the same Coulombic interactions as style
<I>coul/cut</I> except that an additional damping factor is applied so it
can be used in conjunction with the <A HREF = "kspace_style.html">kspace_style</A>
command and its <I>ewald</I> or <I>pppm</I> option. The Coulombic cutoff
specified for this style means that pairwise interactions within this
distance are computed directly; interactions outside that distance are
computed in reciprocal space.
</P>
<P>These potentials are designed to be combined with other pair
potentials via the <A HREF = "pair_hybrid.html">pair_style hybrid/overlay</A>
command. This is because they have no repulsive core. Hence if they
are used by themselves, there will be no repulsion to keep two
oppositely charged particles from overlapping each other.
</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>coul/cut</I> and <I>coul/debye</I>, the cutoff coefficient is optional.
If it is not used (as in some of the examples above), the default
global value specified in the pair_style command is used.
</P>
<P>For <I>coul/long</I> no cutoff can be specified for an individual I,J type
pair via the pair_coeff command. All type pairs use the same global
Coulombic cutoff specified in the pair_style command.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the cutoff distance for the
<I>coul/cut</I> style can be mixed. The default mix value is <I>geometric</I>.
See the "pair_modify" command for details.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> shift option is not relevant
for these pair styles.
</P>
<P>The <I>coul/long</I> style supports the <A HREF = "pair_modify.html">pair_modify</A>
table option for tabulation of the short-range portion of the
long-range Coulombic interaction.
</P>
<P>These pair styles do not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure.
</P>
<P>These pair styles write their information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>The <I>coul/long</I> style is part of the "kspace" package. It is only
enabled if LAMMPS was built with that package (which it is by
-default). See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info.
+default). See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "pair_hybrid.html">pair_style
hybrid/overlay</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/pair_coul.txt b/doc/pair_coul.txt
index a51a3e15c..7a17ef2d2 100644
--- a/doc/pair_coul.txt
+++ b/doc/pair_coul.txt
@@ -1,150 +1,150 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style coul/cut command :h3
pair_style coul/debye command :h3
pair_style coul/long command :h3
pair_style coul/long/gpu command :h3
[Syntax:]
pair_style coul/cut cutoff
pair_style coul/debye kappa cutoff
pair_style coul/long cutoff
pair_style coul/long/gpu cutoff :pre
cutoff = global cutoff for Coulombic interactions
kappa = Debye length (inverse distance units) :ul
[Examples:]
pair_style coul/cut 2.5
pair_coeff * *
pair_coeff 2 2 3.5 :pre
pair_style coul/debye 1.4 3.0
pair_coeff * *
pair_coeff 2 2 3.5 :pre
pair_style coul/long 10.0
pair_coeff * * :pre
[Description:]
The {coul/cut} style computes the standard Coulombic interaction
potential given by
:c,image(Eqs/pair_coulomb.jpg)
where C is an energy-conversion constant, Qi and Qj are the charges on
the 2 atoms, and epsilon is the dielectric constant which can be set
by the "dielectric"_dielectric.html command. The cutoff Rc truncates
the interaction distance.
Style {coul/debye} adds an additional exp() damping factor to the
Coulombic term, given by
:c,image(Eqs/pair_debye.jpg)
where kappa is the Debye length. This potential is another way to
mimic the screening effect of a polar solvent.
Style {coul/long} computes the same Coulombic interactions as style
{coul/cut} except that an additional damping factor is applied so it
can be used in conjunction with the "kspace_style"_kspace_style.html
command and its {ewald} or {pppm} option. The Coulombic cutoff
specified for this style means that pairwise interactions within this
distance are computed directly; interactions outside that distance are
computed in reciprocal space.
These potentials are designed to be combined with other pair
potentials via the "pair_style hybrid/overlay"_pair_hybrid.html
command. This is because they have no repulsive core. Hence if they
are used by themselves, there will be no repulsion to keep two
oppositely charged particles from overlapping each other.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
cutoff (distance units) :ul
For {coul/cut} and {coul/debye}, the cutoff coefficient is optional.
If it is not used (as in some of the examples above), the default
global value specified in the pair_style command is used.
For {coul/long} no cutoff can be specified for an individual I,J type
pair via the pair_coeff command. All type pairs use the same global
Coulombic cutoff specified in the pair_style command.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the cutoff distance for the
{coul/cut} style can be mixed. The default mix value is {geometric}.
See the "pair_modify" command for details.
The "pair_modify"_pair_modify.html shift option is not relevant
for these pair styles.
The {coul/long} style supports the "pair_modify"_pair_modify.html
table option for tabulation of the short-range portion of the
long-range Coulombic interaction.
These pair styles do not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure.
These pair styles write their information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
The {coul/long} style is part of the "kspace" package. It is only
enabled if LAMMPS was built with that package (which it is by
-default). See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info.
+default). See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html, "pair_style
hybrid/overlay"_pair_hybrid.html
[Default:] none
diff --git a/doc/pair_dipole.html b/doc/pair_dipole.html
index 09538cb4c..6baba2864 100644
--- a/doc/pair_dipole.html
+++ b/doc/pair_dipole.html
@@ -1,190 +1,190 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style dipole/cut command
</H3>
<H3>pair_style dipole/sf command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style dipole/cut cutoff (cutoff2)
</PRE>
<PRE>pair_style dipole/sf cutoff (cutoff2)
</PRE>
<UL><LI>cutoff = global cutoff LJ (and Coulombic if only 1 arg) (distance units)
<LI>cutoff2 = global cutoff for Coulombic (optional) (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style dipole/cut 10.0
pair_coeff * * 1.0 1.0
pair_coeff 2 3 1.0 1.0 2.5 4.0
</PRE>
<PRE>pair_style dipole/sf 9.0
pair_coeff * * 1.0 1.0
pair_coeff 2 3 1.0 1.0 2.5 4.0
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>dipole/cut</I> computes interactions between pairs of particles
that each have a charge and/or a point dipole moment. In addition to
the usual Lennard-Jones interaction between the particles (Elj) the
charge-charge (Eqq), charge-dipole (Eqp), and dipole-dipole (Epp)
interactions are computed by these formulas for the energy (E), force
(F), and torque (T) between particles I and J.
</P>
<CENTER><IMG SRC = "Eqs/pair_dipole.jpg">
</CENTER>
<P>where qi and qj are the charges on the two particles, pi and pj are
the dipole moment vectors of the two particles, r is their separation
distance, and the vector r = Ri - Rj is the separation vector between
the two particles. Note that Eqq and Fqq are simply Coulombic energy
and force, Fij = -Fji as symmetric forces, and Tij != -Tji since the
torques do not act symmetrically. These formulas are discussed in
<A HREF = "#Allen">(Allen)</A> and in <A HREF = "#Toukmaji">(Toukmaji)</A>.
</P>
<P>Style <I>dipole/sf</I> computes "shifted-force" interactions between pairs
of particles that each have a charge and/or a point dipole moment. In
general, a shifted-force potential is a (sligthly) modified potential
containing extra terms that make both the energy and its derivative go
to zero at the cutoff distance; this removes (cutoff-related) problems
in energy conservation and any numerical instability in the equations
of motion <A HREF = "#Allen">(Allen)</A>. Shifted-force interactions for the
Lennard-Jones (E_LJ), charge-charge (Eqq), charge-dipole (Eqp),
dipole-charge (Epq) and dipole-dipole (Epp) potentials are computed by
these formulas for the energy (E), force (F), and torque (T) between
particles I and J:
</P>
<CENTER><IMG SRC = "Eqs/pair_dipole_sf.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/pair_dipole_sf2.jpg">
</CENTER>
<P>where epsilon and sigma are the standard LJ parameters, r_c is the
cutoff, qi and qj are the charges on the two particles, pi and pj are
the dipole moment vectors of the two particles, r is their separation
distance, and the vector r = Ri - Rj is the separation vector between
the two particles. Note that Eqq and Fqq are simply Coulombic energy
and force, Fij = -Fji as symmetric forces, and Tij != -Tji since the
torques do not act symmetrically. The shifted-force formula for the
Lennard-Jones potential is reported in <A HREF = "#Stoddard">(Stoddard)</A>. The
original (unshifted) formulas for the electrostatic potentials, forces
and torques can be found in <A HREF = "#Price">(Price)</A>. The shifted-force
electrostatic potentials have been obtained by applying equation 5.13
of <A HREF = "#Allen">(Allen)</A>. The formulas for the corresponding forces and
torques have been obtained by applying the 'chain rule' as in appendix
C.3 of <A HREF = "#Allen">(Allen)</A>.
</P>
<P>If one cutoff is specified in the pair_style command, it is used for
both the LJ and Coulombic (q,p) terms. If two cutoffs are specified,
they are used as cutoffs for the LJ and Coulombic (q,p) terms
respectively.
</P>
<P>Atoms with dipole moments should be integrated using the <A HREF = "fix_nve_sphere.html">fix
nve/sphere update dipole</A> command to rotate the
dipole moments. The <A HREF = "compute_temp_sphere.html">compute temp/sphere</A>
command can be used to monitor the temperature, since it includes
rotational degrees of freedom. The <A HREF = "atom_style.html">atom_style
dipole</A> command should be used since it defines the
point dipoles and their rotational state. The magnitude of the dipole
moment for each type of particle can be defined by the
<A HREF = "dipole.html">dipole</A> command or in the "Dipoles" section of the data
file read in by the <A HREF = "read_data.html">read_data</A> command. Their initial
orientation can be defined by the <A HREF = "set.html">set dipole</A> command or in
the "Atoms" section of the data file.
</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>epsilon (energy units)
<LI>sigma (distance units)
<LI>cutoff1 (distance units)
<LI>cutoff2 (distance units)
</UL>
<P>The latter 2 coefficients are optional. If not specified, the global
LJ and Coulombic cutoffs specified in the pair_style command are used.
If only one cutoff is specified, it is used as the cutoff for both LJ
and Coulombic interactions for this type pair. If both coefficients
are specified, they are used as the LJ and Coulombic cutoffs for this
type pair.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distances for this pair style can be mixed. The default
mix value is <I>geometric</I>. See the "pair_modify" command for details.
</P>
<P>For atom type pairs I,J and I != J, the A, sigma, d1, and d2
coefficients and cutoff distance for this pair style can be mixed. A
is an energy value mixed like a LJ epsilon. D1 and d2 are distance
values and are mixed like sigma. The default mix value is
<I>geometric</I>. See the "pair_modify" command for details.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
shift option for the energy of the Lennard-Jones portion of the pair
interaction; such energy goes to zero at the cutoff by construction.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<P><B>Restrictions:</B>
</P>
<P>The <I>dipole/cut</I> style is part of the "dipole" package. It is only
-enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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 <I>dipole/sf</I> style is part of the "user-misc" package. It is only
-enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Allen"></A>
<P><B>(Allen)</B> Allen and Tildesley, Computer Simulation of Liquids,
Clarendon Press, Oxford, 1987.
</P>
<A NAME = "Toukmaji"></A>
<P><B>(Toukmaji)</B> Toukmaji, Sagui, Board, and Darden, J Chem Phys, 113,
10913 (2000).
</P>
<A NAME = "Stoddard"></A>
<P><B>(Stoddard)</B> Stoddard and Ford, Phys Rev A, 8, 1504 (1973).
</P>
<A NAME = "Price"></A>
<P><B>(Price)</B> Price, Stone and Alderton, Mol Phys, 52, 987 (1984).
</P>
</HTML>
diff --git a/doc/pair_dipole.txt b/doc/pair_dipole.txt
index 26d3c0d0d..55c8abf62 100755
--- a/doc/pair_dipole.txt
+++ b/doc/pair_dipole.txt
@@ -1,178 +1,178 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style dipole/cut command :h3
pair_style dipole/sf command :h3
[Syntax:]
pair_style dipole/cut cutoff (cutoff2) :pre
pair_style dipole/sf cutoff (cutoff2) :pre
cutoff = global cutoff LJ (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units) :ul
[Examples:]
pair_style dipole/cut 10.0
pair_coeff * * 1.0 1.0
pair_coeff 2 3 1.0 1.0 2.5 4.0 :pre
pair_style dipole/sf 9.0
pair_coeff * * 1.0 1.0
pair_coeff 2 3 1.0 1.0 2.5 4.0 :pre
[Description:]
Style {dipole/cut} computes interactions between pairs of particles
that each have a charge and/or a point dipole moment. In addition to
the usual Lennard-Jones interaction between the particles (Elj) the
charge-charge (Eqq), charge-dipole (Eqp), and dipole-dipole (Epp)
interactions are computed by these formulas for the energy (E), force
(F), and torque (T) between particles I and J.
:c,image(Eqs/pair_dipole.jpg)
where qi and qj are the charges on the two particles, pi and pj are
the dipole moment vectors of the two particles, r is their separation
distance, and the vector r = Ri - Rj is the separation vector between
the two particles. Note that Eqq and Fqq are simply Coulombic energy
and force, Fij = -Fji as symmetric forces, and Tij != -Tji since the
torques do not act symmetrically. These formulas are discussed in
"(Allen)"_#Allen and in "(Toukmaji)"_#Toukmaji.
Style {dipole/sf} computes "shifted-force" interactions between pairs
of particles that each have a charge and/or a point dipole moment. In
general, a shifted-force potential is a (sligthly) modified potential
containing extra terms that make both the energy and its derivative go
to zero at the cutoff distance; this removes (cutoff-related) problems
in energy conservation and any numerical instability in the equations
of motion "(Allen)"_#Allen. Shifted-force interactions for the
Lennard-Jones (E_LJ), charge-charge (Eqq), charge-dipole (Eqp),
dipole-charge (Epq) and dipole-dipole (Epp) potentials are computed by
these formulas for the energy (E), force (F), and torque (T) between
particles I and J:
:c,image(Eqs/pair_dipole_sf.jpg)
:c,image(Eqs/pair_dipole_sf2.jpg)
where epsilon and sigma are the standard LJ parameters, r_c is the
cutoff, qi and qj are the charges on the two particles, pi and pj are
the dipole moment vectors of the two particles, r is their separation
distance, and the vector r = Ri - Rj is the separation vector between
the two particles. Note that Eqq and Fqq are simply Coulombic energy
and force, Fij = -Fji as symmetric forces, and Tij != -Tji since the
torques do not act symmetrically. The shifted-force formula for the
Lennard-Jones potential is reported in "(Stoddard)"_#Stoddard. The
original (unshifted) formulas for the electrostatic potentials, forces
and torques can be found in "(Price)"_#Price. The shifted-force
electrostatic potentials have been obtained by applying equation 5.13
of "(Allen)"_#Allen. The formulas for the corresponding forces and
torques have been obtained by applying the 'chain rule' as in appendix
C.3 of "(Allen)"_#Allen.
If one cutoff is specified in the pair_style command, it is used for
both the LJ and Coulombic (q,p) terms. If two cutoffs are specified,
they are used as cutoffs for the LJ and Coulombic (q,p) terms
respectively.
Atoms with dipole moments should be integrated using the "fix
nve/sphere update dipole"_fix_nve_sphere.html command to rotate the
dipole moments. The "compute temp/sphere"_compute_temp_sphere.html
command can be used to monitor the temperature, since it includes
rotational degrees of freedom. The "atom_style
dipole"_atom_style.html command should be used since it defines the
point dipoles and their rotational state. The magnitude of the dipole
moment for each type of particle can be defined by the
"dipole"_dipole.html command or in the "Dipoles" section of the data
file read in by the "read_data"_read_data.html command. Their initial
orientation can be defined by the "set dipole"_set.html command or in
the "Atoms" section of the data file.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
epsilon (energy units)
sigma (distance units)
cutoff1 (distance units)
cutoff2 (distance units) :ul
The latter 2 coefficients are optional. If not specified, the global
LJ and Coulombic cutoffs specified in the pair_style command are used.
If only one cutoff is specified, it is used as the cutoff for both LJ
and Coulombic interactions for this type pair. If both coefficients
are specified, they are used as the LJ and Coulombic cutoffs for this
type pair.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distances for this pair style can be mixed. The default
mix value is {geometric}. See the "pair_modify" command for details.
For atom type pairs I,J and I != J, the A, sigma, d1, and d2
coefficients and cutoff distance for this pair style can be mixed. A
is an energy value mixed like a LJ epsilon. D1 and d2 are distance
values and are mixed like sigma. The default mix value is
{geometric}. See the "pair_modify" command for details.
This pair style does not support the "pair_modify"_pair_modify.html
shift option for the energy of the Lennard-Jones portion of the pair
interaction; such energy goes to zero at the cutoff by construction.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
This pair style does not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
[Restrictions:]
The {dipole/cut} style is part of the "dipole" package. It is only
enabled if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
The {dipole/sf} style is part of the "user-misc" package. It is only
enabled if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Allen)
[(Allen)] Allen and Tildesley, Computer Simulation of Liquids,
Clarendon Press, Oxford, 1987.
:link(Toukmaji)
[(Toukmaji)] Toukmaji, Sagui, Board, and Darden, J Chem Phys, 113,
10913 (2000).
:link(Stoddard)
[(Stoddard)] Stoddard and Ford, Phys Rev A, 8, 1504 (1973).
:link(Price)
[(Price)] Price, Stone and Alderton, Mol Phys, 52, 987 (1984).
diff --git a/doc/pair_dsmc.html b/doc/pair_dsmc.html
index 573d85f49..4e01bbd56 100644
--- a/doc/pair_dsmc.html
+++ b/doc/pair_dsmc.html
@@ -1,144 +1,144 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style dsmc command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style dsmc max_cell_size seed weighting Tref Nrecompute Nsample
</PRE>
<UL><LI>max_cell_size = global maximum cell size for DSMC interactions (distance units)
<LI>seed = random # seed (positive integer)
<LI>weighting = macroparticle weighting
<LI>Tref = reference temperature (temperature units)
<LI>Nrecompute = recompute v*sigma_max every this many timesteps (timesteps)
<LI>Nsample = sample this many times in recomputing v*sigma_max
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style dsmc 2.5 34387 10 1.0 100 20
pair_coeff * * 1.0
pair_coeff 1 1 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>dsmc</I> computes collisions between pairs of particles for a
direct simulation Monte Carlo (DSMC) model following the exposition in
<A HREF = "#Bird">(Bird)</A>. Each collision resets the velocities of the two
particles involved. The number of pairwise collisions for each pair
or particle types and the length scale within which they occur are
determined by the parameters of the pair_style and pair_coeff
commands.
</P>
<P>Stochastic collisions are performed using the variable hard sphere
(VHS) approach, with the user-defined <I>max_cell_size</I> value used as
the maximum DSMC cell size, and reference cross-sections for
collisions given using the pair_coeff command.
</P>
<P>There is no pairwise energy or virial contributions associated with
this pair style.
</P>
<P>The following coefficient 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:
</P>
<UL><LI>sigma (area units, i.e. distance-squared)
</UL>
<P>The global DSMC <I>max_cell_size</I> determines the maximum cell length
used in the DSMC calculation. A structured mesh is overlayed on the
simulation box such that an integer number of cells are created in
each direction for each processor's sub-domain. Cell lengths are
adjusted up to the user-specified maximum cell size.
</P>
<HR>
<P>To perform a DSMC simulation with LAMMPS, several additional options
should be set in your input script, though LAMMPS does not check for
these settings.
</P>
<P>Since this pair style does not compute particle forces, you should use
the "fix nve/noforce" time integration fix for the DSMC particles,
e.g.
</P>
<PRE>fix 1 all nve/noforce
</PRE>
<P>This pair style assumes that all particles will communicated to
neighboring processors every timestep as they move. This makes it
possible to perform all collisions between pairs of particles that are
on the same processor. To ensure this occurs, you should use
these commands:
</P>
<PRE>neighbor 0.0 bin
neigh_modify every 1 delay 0 check no
communicate single cutoff 0.0
</PRE>
<P>These commands insure that LAMMPS communicates particles to
neighboring processors every timestep and that no ghost atoms are
created. The output statistics for a simulation run should indicate
there are no ghost particles or neighbors.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>This pair style does not support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
shift option for the energy of the pair interaction.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file. Note
that the user-specified random number seed is stored in the restart
file, so when a simulation is restarted, each processor will
re-initialize its random number generator the same way it did
initially. This means the random forces will be random, but will not
be the same as they would have been if the original simulation had
continued past the restart time.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
-<P>This style is part of the "dsmc" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+<P>This style is part of the "mc" 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><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "fix_nve_noforce.html">fix nve/noforce</A>,
<A HREF = "neigh_modify.html">neigh_modify</A>, <A HREF = "neighbor.html">neighbor</A>,
<A HREF = "communicate.html">communicate</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Bird"></A>
<P><B>(Bird)</B> G. A. Bird, "Molecular Gas Dynamics and the Direct Simulation
of Gas Flows" (1994).
</P>
</HTML>
diff --git a/doc/pair_dsmc.txt b/doc/pair_dsmc.txt
index 00988a026..cc17e20fe 100644
--- a/doc/pair_dsmc.txt
+++ b/doc/pair_dsmc.txt
@@ -1,138 +1,138 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style dsmc command :h3
[Syntax:]
pair_style dsmc max_cell_size seed weighting Tref Nrecompute Nsample :pre
max_cell_size = global maximum cell size for DSMC interactions (distance units)
seed = random # seed (positive integer)
weighting = macroparticle weighting
Tref = reference temperature (temperature units)
Nrecompute = recompute v*sigma_max every this many timesteps (timesteps)
Nsample = sample this many times in recomputing v*sigma_max :ul
[Examples:]
pair_style dsmc 2.5 34387 10 1.0 100 20
pair_coeff * * 1.0
pair_coeff 1 1 1.0 :pre
[Description:]
Style {dsmc} computes collisions between pairs of particles for a
direct simulation Monte Carlo (DSMC) model following the exposition in
"(Bird)"_#Bird. Each collision resets the velocities of the two
particles involved. The number of pairwise collisions for each pair
or particle types and the length scale within which they occur are
determined by the parameters of the pair_style and pair_coeff
commands.
Stochastic collisions are performed using the variable hard sphere
(VHS) approach, with the user-defined {max_cell_size} value used as
the maximum DSMC cell size, and reference cross-sections for
collisions given using the pair_coeff command.
There is no pairwise energy or virial contributions associated with
this pair style.
The following coefficient must be defined for each pair of atoms types
via the "pair_coeff"_pair_coeff.html command as in the examples above,
or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
sigma (area units, i.e. distance-squared) :ul
The global DSMC {max_cell_size} determines the maximum cell length
used in the DSMC calculation. A structured mesh is overlayed on the
simulation box such that an integer number of cells are created in
each direction for each processor's sub-domain. Cell lengths are
adjusted up to the user-specified maximum cell size.
:line
To perform a DSMC simulation with LAMMPS, several additional options
should be set in your input script, though LAMMPS does not check for
these settings.
Since this pair style does not compute particle forces, you should use
the "fix nve/noforce" time integration fix for the DSMC particles,
e.g.
fix 1 all nve/noforce :pre
This pair style assumes that all particles will communicated to
neighboring processors every timestep as they move. This makes it
possible to perform all collisions between pairs of particles that are
on the same processor. To ensure this occurs, you should use
these commands:
neighbor 0.0 bin
neigh_modify every 1 delay 0 check no
communicate single cutoff 0.0 :pre
These commands insure that LAMMPS communicates particles to
neighboring processors every timestep and that no ghost atoms are
created. The output statistics for a simulation run should indicate
there are no ghost particles or neighbors.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
This pair style does not support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
This pair style does not support the "pair_modify"_pair_modify.html
shift option for the energy of the pair interaction.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
This pair style does not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file. Note
that the user-specified random number seed is stored in the restart
file, so when a simulation is restarted, each processor will
re-initialize its random number generator the same way it did
initially. This means the random forces will be random, but will not
be the same as they would have been if the original simulation had
continued past the restart time.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
-This style is part of the "dsmc" package. It is only enabled if
-LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+This style is part of the "mc" package. It is only enabled if LAMMPS
+was built with that package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html, "fix nve/noforce"_fix_nve_noforce.html,
"neigh_modify"_neigh_modify.html, "neighbor"_neighbor.html,
"communicate"_communicate.html
[Default:] none
:line
:link(Bird)
[(Bird)] G. A. Bird, "Molecular Gas Dynamics and the Direct Simulation
of Gas Flows" (1994).
diff --git a/doc/pair_eam.html b/doc/pair_eam.html
index fa4859c11..663003a10 100644
--- a/doc/pair_eam.html
+++ b/doc/pair_eam.html
@@ -1,454 +1,454 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style eam command
</H3>
<H3>pair_style eam/cuda command
</H3>
<H3>pair_style eam/opt command
</H3>
<H3>pair_style eam/alloy command
</H3>
<H3>pair_style eam/alloy/cuda command
</H3>
<H3>pair_style eam/alloy/opt command
</H3>
<H3>pair_style eam/cd command
</H3>
<H3>pair_style eam/fs command
</H3>
<H3>pair_style eam/fs/cuda command
</H3>
<H3>pair_style eam/fs/opt command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style
</PRE>
<UL><LI>style = <I>eam</I> or <I>eam/alloy</I> or <I>eam/cd</I> or <I>eam/fs</I>
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style eam
pair_coeff * * cuu3
pair_coeff 1*3 1*3 niu3.eam
</PRE>
<PRE>pair_style eam/alloy
pair_coeff * * ../potentials/NiAlH_jea.eam.alloy Ni Al Ni Ni
</PRE>
<PRE>pair_style eam/cd
pair_coeff * * ../potentials/FeCr.cdeam Fe Cr
</PRE>
<PRE>pair_style eam/fs
pair_coeff * * NiAlH_jea.eam.fs Ni Al Ni Ni
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>eam</I> computes pairwise interactions for metals and metal alloys
using embedded-atom method (EAM) potentials <A HREF = "#Daw">(Daw)</A>. The total
energy Ei of an atom I is given by
</P>
<CENTER><IMG SRC = "Eqs/pair_eam.jpg">
</CENTER>
<P>where F is the embedding energy which is a function of the atomic
electron density rho, phi is a pair potential interaction, and alpha
and beta are the element types of atoms I and J. The multi-body
nature of the EAM potential is a result of the embedding energy term.
Both summations in the formula are over all neighbors J of atom I
within the cutoff distance.
</P>
<P>The cutoff distance and the tabulated values of the functionals F,
rho, and phi are listed in one or more files which are specified by
the <A HREF = "pair_coeff.html">pair_coeff</A> command. These are ASCII text files
in a DYNAMO-style format which is described below. DYNAMO was the
original serial EAM MD code, written by the EAM originators. Several
DYNAMO potential files for different metals are included in the
"potentials" directory of the LAMMPS distribution. All of these files
are parameterized in terms of LAMMPS <A HREF = "units.html">metal units</A>.
</P>
<P>IMPORTANT NOTE: The <I>eam</I> style reads single-element EAM potentials in
the DYNAMO <I>funcfl</I> format. Either single element or alloy systems
can be modeled using multiple <I>funcfl</I> files and style <I>eam</I>. For the
alloy case LAMMPS mixes the single-element potentials to produce alloy
potentials, the same way that DYNAMO does. Alternatively, a single
DYNAMO <I>setfl</I> file or Finnis/Sinclair EAM file can be used by LAMMPS
to model alloy systems by invoking the <I>eam/alloy</I> or <I>eam/cd</I> or
<I>eam/fs</I> styles as described below. These files require no mixing
since they specify alloy interactions explicitly.
</P>
<P>Note that unlike for other potentials, cutoffs for EAM potentials are
not set in the pair_style or pair_coeff command; they are specified in
the EAM potential files themselves. Likewise, the EAM potential files
list atomic masses; thus you do not need to use the <A HREF = "mass.html">mass</A>
command to specify them.
</P>
<P>There are several WWW sites that distribute and document EAM
potentials stored in DYNAMO or other formats:
</P>
<PRE>http://www.ctcms.nist.gov/potentials
http://cst-www.nrl.navy.mil/ccm6/ap
http://enpub.fulton.asu.edu/cms/potentials/main/main.htm
</PRE>
<P>These potentials should be usable with LAMMPS, though the alternate
formats would need to be converted to the DYNAMO format used by LAMMPS
and described on this page. The NIST site is maintained by Chandler
Becker (cbecker at nist.gov) who is good resource for info on
interatomic potentials and file formats.
</P>
<HR>
<P>For style <I>eam</I>, potential values are read from a file that is in the
DYNAMO single-element <I>funcfl</I> format. If the DYNAMO file was created
by a Fortran program, it cannot have "D" values in it for exponents.
C only recognizes "e" or "E" for scientific notation.
</P>
<P>Note that unlike for other potentials, cutoffs for EAM potentials are
not set in the pair_style or pair_coeff command; they are specified in
the EAM potential files themselves.
</P>
<P>For style <I>eam</I> a potential file must be assigned to each I,I pair of
atom types by using one or more pair_coeff commands, each with a
single argument:
</P>
<UL><LI>filename
</UL>
<P>Thus the following command
</P>
<PRE>pair_coeff *2 1*2 cuu3.eam
</PRE>
<P>will read the cuu3 potential file and use the tabulated Cu values for
F, phi, rho that it contains for type pairs 1,1 and 2,2 (type pairs
1,2 and 2,1 are ignored). In effect, this makes atom types 1 and 2 in
LAMMPS be Cu atoms. Different single-element files can be assigned to
different atom types to model an alloy system. The mixing to create
alloy potentials for type pairs with I != J is done automatically the
same way that the serial DYNAMO code originally did it; you do not
need to specify coefficients for these type pairs.
</P>
<P><I>Funcfl</I> files in the <I>potentials</I> directory of the LAMMPS
distribution have an ".eam" suffix. A DYNAMO single-element <I>funcfl</I>
file is formatted as follows:
</P>
<UL><LI>line 1: comment (ignored)
<LI>line 2: atomic number, mass, lattice constant, lattice type (e.g. FCC)
<LI>line 3: Nrho, drho, Nr, dr, cutoff
</UL>
<P>On line 2, all values but the mass are ignored by LAMMPS. The mass is
in mass <A HREF = "units.html">units</A>, e.g. mass number or grams/mole for metal
units. The cubic lattice constant is in Angstroms. On line 3, Nrho
and Nr are the number of tabulated values in the subsequent arrays,
drho and dr are the spacing in density and distance space for the
values in those arrays, and the specified cutoff becomes the pairwise
cutoff used by LAMMPS for the potential. The units of dr are
Angstroms; I'm not sure of the units for drho - some measure of
electron density.
</P>
<P>Following the three header lines are three arrays of tabulated values:
</P>
<UL><LI>embedding function F(rho) (Nrho values)
<LI>effective charge function Z(r) (Nr values)
<LI>density function rho(r) (Nr values)
</UL>
<P>The values for each array can be listed as multiple values per line,
so long as each array starts on a new line. For example, the
individual Z(r) values are for r = 0,dr,2*dr, ... (Nr-1)*dr.
</P>
<P>The units for the embedding function F are eV. The units for the
density function rho are the same as for drho (see above, electron
density). The units for the effective charge Z are "atomic charge" or
sqrt(Hartree * Bohr-radii). For two interacting atoms i,j this is used
by LAMMPS to compute the pair potential term in the EAM energy
expression as r*phi, in units of eV-Angstroms, via the formula
</P>
<PRE>r*phi = 27.2 * 0.529 * Zi * Zj
</PRE>
<P>where 1 Hartree = 27.2 eV and 1 Bohr = 0.529 Angstroms.
</P>
<HR>
<P>Style <I>eam/alloy</I> computes pairwise interactions using the same
formula as style <I>eam</I>. However the associated
<A HREF = "pair_coeff.html">pair_coeff</A> command reads a DYNAMO <I>setfl</I> file
instead of a <I>funcfl</I> file. <I>Setfl</I> files can be used to model a
single-element or alloy system. In the alloy case, as explained
above, <I>setfl</I> files contain explicit tabulated values for alloy
interactions. Thus they allow more generality than <I>funcfl</I> files for
modeling alloys.
</P>
<P>For style <I>eam/alloy</I>, potential values are read from a file that is
in the DYNAMO multi-element <I>setfl</I> format, except that element names
(Ni, Cu, etc) are added to one of the lines in the file. If the
DYNAMO file was created by a Fortran program, it cannot have "D"
values in it for exponents. C only recognizes "e" or "E" for
scientific notation.
</P>
<P>Only a single pair_coeff command is used with the <I>eam/alloy</I> style
which specifies a DYNAMO <I>setfl</I> file, which contains information for
M elements. These are mapped to LAMMPS atom types by specifying N
additional arguments after the filename in the pair_coeff command,
where N is the number of LAMMPS atom types:
</P>
<UL><LI>filename
<LI>N element names = mapping of <I>setfl</I> elements to atom types
</UL>
<P>As an example, the potentials/NiAlH_jea.eam.alloy file is a <I>setfl</I>
file which has tabulated EAM values for 3 elements and their alloy
interactions: Ni, Al, and H. If your LAMMPS simulation has 4 atoms
types and you want the 1st 3 to be Ni, and the 4th to be Al, you would
use the following pair_coeff command:
</P>
<PRE>pair_coeff * * NiAlH_jea.eam.alloy Ni Ni Ni Al
</PRE>
<P>The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The first three Ni arguments map LAMMPS atom types 1,2,3 to the Ni
element in the <I>setfl</I> file. The final Al argument maps LAMMPS atom
type 4 to the Al element in the <I>setfl</I> file. Note that there is no
requirement that your simulation use all the elements specified by the
<I>setfl</I> file.
</P>
<P>If a mapping value is specified as NULL, the mapping is not performed.
This can be used when an <I>eam/alloy</I> potential is used as part of the
<I>hybrid</I> pair style. The NULL values are placeholders for atom types
that will be used with other potentials.
</P>
<P><I>Setfl</I> files in the <I>potentials</I> directory of the LAMMPS distribution
have an ".eam.alloy" suffix. A DYNAMO multi-element <I>setfl</I> file is
formatted as follows:
</P>
<UL><LI>lines 1,2,3 = comments (ignored)
<LI>line 4: Nelements Element1 Element2 ... ElementN
<LI>line 5: Nrho, drho, Nr, dr, cutoff
</UL>
<P>In a DYNAMO <I>setfl</I> file, line 4 only lists Nelements = the # of
elements in the <I>setfl</I> file. For LAMMPS, the element name (Ni, Cu,
etc) of each element must be added to the line, in the order the
elements appear in the file.
</P>
<P>The meaning and units of the values in line 5 is the same as for the
<I>funcfl</I> file described above. Note that the cutoff (in Angstroms) is
a global value, valid for all pairwise interactions for all element
pairings.
</P>
<P>Following the 5 header lines are Nelements sections, one for each
element, each with the following format:
</P>
<UL><LI>line 1 = atomic number, mass, lattice constant, lattice type (e.g. FCC)
<LI>embedding function F(rho) (Nrho values)
<LI>density function rho(r) (Nr values)
</UL>
<P>As with the <I>funcfl</I> files, only the mass (in mass <A HREF = "units.html">units</A>,
e.g. mass number or grams/mole for metal units) is used by LAMMPS from
the 1st line. The cubic lattice constant is in Angstroms. The F and
rho arrays are unique to a single element and have the same format and
units as in a <I>funcfl</I> file.
</P>
<P>Following the Nelements sections, Nr values for each pair potential
phi(r) array are listed for all i,j element pairs in the same format
as other arrays. Since these interactions are symmetric (i,j = j,i)
only phi arrays with i >= j are listed, in the following order: i,j =
(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (4,1), ..., (Nelements,
Nelements). Unlike the effective charge array Z(r) in <I>funcfl</I> files,
the tabulated values for each phi function are listed in <I>setfl</I> files
directly as r*phi (in units of eV-Angstroms), since they are for atom
pairs.
</P>
<HR>
<P>Style <I>eam/cd</I> is similar to the <I>eam/alloy</I> style, except that it
computes alloy pairwise interactions using the concentration-dependent
embedded-atom method (CD-EAM). This model can reproduce the enthalpy
of mixing of alloys over the full composition range, as described in
<A HREF = "#Stukowski">(Stukowski)</A>.
</P>
<P>The pair_coeff command is specified the same as for the <I>eam/alloy</I>
style. However the DYNAMO <I>setfl</I> file must has two
lines added to it, at the end of the file:
</P>
<UL><LI>line 1: Comment line (ignored)
<LI>line 2: N Coefficient0 Coefficient1 ... CoeffincientN
</UL>
<P>The last line begins with the degree <I>N</I> of the polynomial function
<I>h(x)</I> that modifies the cross interaction between A and B elements.
Then <I>N+1</I> coefficients for the terms of the polynomial are then
listed.
</P>
<P>Modified EAM <I>setfl</I> files used with the <I>eam/cd</I> style must contain
exactly two elements, i.e. in the current implementation the <I>eam/cd</I>
style only supports binary alloys. The first and second elements in
the input EAM file are always taken as the <I>A</I> and <I>B</I> species.
</P>
<P><I>CD-EAM</I> files in the <I>potentials</I> directory of the LAMMPS
distribution have a ".cdeam" suffix.
</P>
<HR>
<P>Style <I>eam/fs</I> computes pairwise interactions for metals and metal
alloys using a generalized form of EAM potentials due to Finnis and
Sinclair <A HREF = "#Finnis">(Finnis)</A>. The total energy Ei of an atom I is
given by
</P>
<CENTER><IMG SRC = "Eqs/pair_eam_fs.jpg">
</CENTER>
<P>This has the same form as the EAM formula above, except that rho is
now a functional specific to the atomic types of both atoms I and J,
so that different elements can contribute differently to the total
electron density at an atomic site depending on the identity of the
element at that atomic site.
</P>
<P>The associated <A HREF = "pair_coeff.html">pair_coeff</A> command for style <I>eam/fs</I>
reads a DYNAMO <I>setfl</I> file that has been extended to include
additional rho_alpha_beta arrays of tabulated values. A discussion of
how FS EAM differs from conventional EAM alloy potentials is given in
<A HREF = "#Ackland1">(Ackland1)</A>. An example of such a potential is the same
author's Fe-P FS potential <A HREF = "#Ackland2">(Ackland2)</A>. Note that while FS
potentials always specify the embedding energy with a square root
dependence on the total density, the implementation in LAMMPS does not
require that; the user can tabulate any functional form desired in the
FS potential files.
</P>
<P>For style <I>eam/fs</I>, the form of the pair_coeff command is exactly the
same as for style <I>eam/alloy</I>, e.g.
</P>
<PRE>pair_coeff * * NiAlH_jea.eam.fs Ni Ni Ni Al
</PRE>
<P>where there are N additional arguments after the filename, where N is
the number of LAMMPS atom types. The N values determine the mapping
of LAMMPS atom types to EAM elements in the file, as described above
for style <I>eam/alloy</I>. As with <I>eam/alloy</I>, if a mapping value is
NULL, the mapping is not performed. This can be used when an <I>eam/fs</I>
potential is used as part of the <I>hybrid</I> pair style. The NULL values
are used as placeholders for atom types that will be used with other
potentials.
</P>
<P>FS EAM files include more information than the DYNAMO <I>setfl</I> format
files read by <I>eam/alloy</I>, in that i,j density functionals for all
pairs of elements are included as needed by the Finnis/Sinclair
formulation of the EAM.
</P>
<P>FS EAM files in the <I>potentials</I> directory of the LAMMPS distribution
have an ".eam.fs" suffix. They are formatted as follows:
</P>
<UL><LI>lines 1,2,3 = comments (ignored)
<LI>line 4: Nelements Element1 Element2 ... ElementN
<LI>line 5: Nrho, drho, Nr, dr, cutoff
</UL>
<P>The 5-line header section is identical to an EAM <I>setfl</I> file.
</P>
<P>Following the header are Nelements sections, one for each element I,
each with the following format:
</P>
<UL><LI>line 1 = atomic number, mass, lattice constant, lattice type (e.g. FCC)
<LI>embedding function F(rho) (Nrho values)
<LI>density function rho(r) for element I at element 1 (Nr values)
<LI>density function rho(r) for element I at element 2
<LI>...
<LI>density function rho(r) for element I at element Nelement
</UL>
<P>The units of these quantities in line 1 are the same as for <I>setfl</I>
files. Note that the rho(r) arrays in Finnis/Sinclair can be
asymmetric (i,j != j,i) so there are Nelements^2 of them listed in the
file.
</P>
<P>Following the Nelements sections, Nr values for each pair potential
phi(r) array are listed in the same manner (r*phi, units of
eV-Angstroms) as in EAM <I>setfl</I> files. Note that in Finnis/Sinclair,
the phi(r) arrays are still symmetric, so only phi arrays for i >= j
are listed.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS as
described above with the individual styles. You never need to specify
a pair_coeff command with I != J arguments for the eam styles.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
shift, table, and tail options.
</P>
<P>The eam pair styles do not write their information to <A HREF = "restart.html">binary restart
files</A>, since it is stored in tabulated potential files.
Thus, you need to re-specify the pair_style and pair_coeff commands in
an input script that reads a restart file.
</P>
<P>The eam pair styles can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. They do not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>All of these styles except the <I>eam/cd</I> style are part of the
"manybody" package. They are only enabled if LAMMPS was built with
-that package (which it is by default). See the <A HREF = "Section_start.html#2_3">Making
+that package (which it is by default). See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>The <I>eam/cd</I> style is part of the "user-misc" package and also
requires the "manybody" package. It is only enabled if LAMMPS was
-built with those packages. See the <A HREF = "Section_start.html#2_3">Making
+built with those packages. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Ackland1"></A>
<P><B>(Ackland1)</B> Ackland, Condensed Matter (2005).
</P>
<A NAME = "Ackland2"></A>
<P><B>(Ackland2)</B> Ackland, Mendelev, Srolovitz, Han and Barashev, Journal
of Physics: Condensed Matter, 16, S2629 (2004).
</P>
<A NAME = "Daw"></A>
<P><B>(Daw)</B> Daw, Baskes, Phys Rev Lett, 50, 1285 (1983).
Daw, Baskes, Phys Rev B, 29, 6443 (1984).
</P>
<A NAME = "Finnis"></A>
<P><B>(Finnis)</B> Finnis, Sinclair, Philosophical Magazine A, 50, 45 (1984).
</P>
<A NAME = "Stukowski"></A>
<P><B>(Stukowski)</B> Stukowski, Sadigh, Erhart, Caro; Modeling Simulation
Materials Science & Engineering, 7, 075005 (2009).
</P>
</HTML>
diff --git a/doc/pair_eam.txt b/doc/pair_eam.txt
index 6f47c504f..7153cef70 100644
--- a/doc/pair_eam.txt
+++ b/doc/pair_eam.txt
@@ -1,435 +1,435 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style eam command :h3
pair_style eam/cuda command :h3
pair_style eam/opt command :h3
pair_style eam/alloy command :h3
pair_style eam/alloy/cuda command :h3
pair_style eam/alloy/opt command :h3
pair_style eam/cd command :h3
pair_style eam/fs command :h3
pair_style eam/fs/cuda command :h3
pair_style eam/fs/opt command :h3
[Syntax:]
pair_style style :pre
style = {eam} or {eam/alloy} or {eam/cd} or {eam/fs} :ul
[Examples:]
pair_style eam
pair_coeff * * cuu3
pair_coeff 1*3 1*3 niu3.eam :pre
pair_style eam/alloy
pair_coeff * * ../potentials/NiAlH_jea.eam.alloy Ni Al Ni Ni :pre
pair_style eam/cd
pair_coeff * * ../potentials/FeCr.cdeam Fe Cr :pre
pair_style eam/fs
pair_coeff * * NiAlH_jea.eam.fs Ni Al Ni Ni :pre
[Description:]
Style {eam} computes pairwise interactions for metals and metal alloys
using embedded-atom method (EAM) potentials "(Daw)"_#Daw. The total
energy Ei of an atom I is given by
:c,image(Eqs/pair_eam.jpg)
where F is the embedding energy which is a function of the atomic
electron density rho, phi is a pair potential interaction, and alpha
and beta are the element types of atoms I and J. The multi-body
nature of the EAM potential is a result of the embedding energy term.
Both summations in the formula are over all neighbors J of atom I
within the cutoff distance.
The cutoff distance and the tabulated values of the functionals F,
rho, and phi are listed in one or more files which are specified by
the "pair_coeff"_pair_coeff.html command. These are ASCII text files
in a DYNAMO-style format which is described below. DYNAMO was the
original serial EAM MD code, written by the EAM originators. Several
DYNAMO potential files for different metals are included in the
"potentials" directory of the LAMMPS distribution. All of these files
are parameterized in terms of LAMMPS "metal units"_units.html.
IMPORTANT NOTE: The {eam} style reads single-element EAM potentials in
the DYNAMO {funcfl} format. Either single element or alloy systems
can be modeled using multiple {funcfl} files and style {eam}. For the
alloy case LAMMPS mixes the single-element potentials to produce alloy
potentials, the same way that DYNAMO does. Alternatively, a single
DYNAMO {setfl} file or Finnis/Sinclair EAM file can be used by LAMMPS
to model alloy systems by invoking the {eam/alloy} or {eam/cd} or
{eam/fs} styles as described below. These files require no mixing
since they specify alloy interactions explicitly.
Note that unlike for other potentials, cutoffs for EAM potentials are
not set in the pair_style or pair_coeff command; they are specified in
the EAM potential files themselves. Likewise, the EAM potential files
list atomic masses; thus you do not need to use the "mass"_mass.html
command to specify them.
There are several WWW sites that distribute and document EAM
potentials stored in DYNAMO or other formats:
http://www.ctcms.nist.gov/potentials
http://cst-www.nrl.navy.mil/ccm6/ap
http://enpub.fulton.asu.edu/cms/potentials/main/main.htm :pre
These potentials should be usable with LAMMPS, though the alternate
formats would need to be converted to the DYNAMO format used by LAMMPS
and described on this page. The NIST site is maintained by Chandler
Becker (cbecker at nist.gov) who is good resource for info on
interatomic potentials and file formats.
:line
For style {eam}, potential values are read from a file that is in the
DYNAMO single-element {funcfl} format. If the DYNAMO file was created
by a Fortran program, it cannot have "D" values in it for exponents.
C only recognizes "e" or "E" for scientific notation.
Note that unlike for other potentials, cutoffs for EAM potentials are
not set in the pair_style or pair_coeff command; they are specified in
the EAM potential files themselves.
For style {eam} a potential file must be assigned to each I,I pair of
atom types by using one or more pair_coeff commands, each with a
single argument:
filename :ul
Thus the following command
pair_coeff *2 1*2 cuu3.eam :pre
will read the cuu3 potential file and use the tabulated Cu values for
F, phi, rho that it contains for type pairs 1,1 and 2,2 (type pairs
1,2 and 2,1 are ignored). In effect, this makes atom types 1 and 2 in
LAMMPS be Cu atoms. Different single-element files can be assigned to
different atom types to model an alloy system. The mixing to create
alloy potentials for type pairs with I != J is done automatically the
same way that the serial DYNAMO code originally did it; you do not
need to specify coefficients for these type pairs.
{Funcfl} files in the {potentials} directory of the LAMMPS
distribution have an ".eam" suffix. A DYNAMO single-element {funcfl}
file is formatted as follows:
line 1: comment (ignored)
line 2: atomic number, mass, lattice constant, lattice type (e.g. FCC)
line 3: Nrho, drho, Nr, dr, cutoff :ul
On line 2, all values but the mass are ignored by LAMMPS. The mass is
in mass "units"_units.html, e.g. mass number or grams/mole for metal
units. The cubic lattice constant is in Angstroms. On line 3, Nrho
and Nr are the number of tabulated values in the subsequent arrays,
drho and dr are the spacing in density and distance space for the
values in those arrays, and the specified cutoff becomes the pairwise
cutoff used by LAMMPS for the potential. The units of dr are
Angstroms; I'm not sure of the units for drho - some measure of
electron density.
Following the three header lines are three arrays of tabulated values:
embedding function F(rho) (Nrho values)
effective charge function Z(r) (Nr values)
density function rho(r) (Nr values) :ul
The values for each array can be listed as multiple values per line,
so long as each array starts on a new line. For example, the
individual Z(r) values are for r = 0,dr,2*dr, ... (Nr-1)*dr.
The units for the embedding function F are eV. The units for the
density function rho are the same as for drho (see above, electron
density). The units for the effective charge Z are "atomic charge" or
sqrt(Hartree * Bohr-radii). For two interacting atoms i,j this is used
by LAMMPS to compute the pair potential term in the EAM energy
expression as r*phi, in units of eV-Angstroms, via the formula
r*phi = 27.2 * 0.529 * Zi * Zj :pre
where 1 Hartree = 27.2 eV and 1 Bohr = 0.529 Angstroms.
:line
Style {eam/alloy} computes pairwise interactions using the same
formula as style {eam}. However the associated
"pair_coeff"_pair_coeff.html command reads a DYNAMO {setfl} file
instead of a {funcfl} file. {Setfl} files can be used to model a
single-element or alloy system. In the alloy case, as explained
above, {setfl} files contain explicit tabulated values for alloy
interactions. Thus they allow more generality than {funcfl} files for
modeling alloys.
For style {eam/alloy}, potential values are read from a file that is
in the DYNAMO multi-element {setfl} format, except that element names
(Ni, Cu, etc) are added to one of the lines in the file. If the
DYNAMO file was created by a Fortran program, it cannot have "D"
values in it for exponents. C only recognizes "e" or "E" for
scientific notation.
Only a single pair_coeff command is used with the {eam/alloy} style
which specifies a DYNAMO {setfl} file, which contains information for
M elements. These are mapped to LAMMPS atom types by specifying N
additional arguments after the filename in the pair_coeff command,
where N is the number of LAMMPS atom types:
filename
N element names = mapping of {setfl} elements to atom types :ul
As an example, the potentials/NiAlH_jea.eam.alloy file is a {setfl}
file which has tabulated EAM values for 3 elements and their alloy
interactions: Ni, Al, and H. If your LAMMPS simulation has 4 atoms
types and you want the 1st 3 to be Ni, and the 4th to be Al, you would
use the following pair_coeff command:
pair_coeff * * NiAlH_jea.eam.alloy Ni Ni Ni Al :pre
The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The first three Ni arguments map LAMMPS atom types 1,2,3 to the Ni
element in the {setfl} file. The final Al argument maps LAMMPS atom
type 4 to the Al element in the {setfl} file. Note that there is no
requirement that your simulation use all the elements specified by the
{setfl} file.
If a mapping value is specified as NULL, the mapping is not performed.
This can be used when an {eam/alloy} potential is used as part of the
{hybrid} pair style. The NULL values are placeholders for atom types
that will be used with other potentials.
{Setfl} files in the {potentials} directory of the LAMMPS distribution
have an ".eam.alloy" suffix. A DYNAMO multi-element {setfl} file is
formatted as follows:
lines 1,2,3 = comments (ignored)
line 4: Nelements Element1 Element2 ... ElementN
line 5: Nrho, drho, Nr, dr, cutoff :ul
In a DYNAMO {setfl} file, line 4 only lists Nelements = the # of
elements in the {setfl} file. For LAMMPS, the element name (Ni, Cu,
etc) of each element must be added to the line, in the order the
elements appear in the file.
The meaning and units of the values in line 5 is the same as for the
{funcfl} file described above. Note that the cutoff (in Angstroms) is
a global value, valid for all pairwise interactions for all element
pairings.
Following the 5 header lines are Nelements sections, one for each
element, each with the following format:
line 1 = atomic number, mass, lattice constant, lattice type (e.g. FCC)
embedding function F(rho) (Nrho values)
density function rho(r) (Nr values) :ul
As with the {funcfl} files, only the mass (in mass "units"_units.html,
e.g. mass number or grams/mole for metal units) is used by LAMMPS from
the 1st line. The cubic lattice constant is in Angstroms. The F and
rho arrays are unique to a single element and have the same format and
units as in a {funcfl} file.
Following the Nelements sections, Nr values for each pair potential
phi(r) array are listed for all i,j element pairs in the same format
as other arrays. Since these interactions are symmetric (i,j = j,i)
only phi arrays with i >= j are listed, in the following order: i,j =
(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (4,1), ..., (Nelements,
Nelements). Unlike the effective charge array Z(r) in {funcfl} files,
the tabulated values for each phi function are listed in {setfl} files
directly as r*phi (in units of eV-Angstroms), since they are for atom
pairs.
:line
Style {eam/cd} is similar to the {eam/alloy} style, except that it
computes alloy pairwise interactions using the concentration-dependent
embedded-atom method (CD-EAM). This model can reproduce the enthalpy
of mixing of alloys over the full composition range, as described in
"(Stukowski)"_#Stukowski.
The pair_coeff command is specified the same as for the {eam/alloy}
style. However the DYNAMO {setfl} file must has two
lines added to it, at the end of the file:
line 1: Comment line (ignored)
line 2: N Coefficient0 Coefficient1 ... CoeffincientN :ul
The last line begins with the degree {N} of the polynomial function
{h(x)} that modifies the cross interaction between A and B elements.
Then {N+1} coefficients for the terms of the polynomial are then
listed.
Modified EAM {setfl} files used with the {eam/cd} style must contain
exactly two elements, i.e. in the current implementation the {eam/cd}
style only supports binary alloys. The first and second elements in
the input EAM file are always taken as the {A} and {B} species.
{CD-EAM} files in the {potentials} directory of the LAMMPS
distribution have a ".cdeam" suffix.
:line
Style {eam/fs} computes pairwise interactions for metals and metal
alloys using a generalized form of EAM potentials due to Finnis and
Sinclair "(Finnis)"_#Finnis. The total energy Ei of an atom I is
given by
:c,image(Eqs/pair_eam_fs.jpg)
This has the same form as the EAM formula above, except that rho is
now a functional specific to the atomic types of both atoms I and J,
so that different elements can contribute differently to the total
electron density at an atomic site depending on the identity of the
element at that atomic site.
The associated "pair_coeff"_pair_coeff.html command for style {eam/fs}
reads a DYNAMO {setfl} file that has been extended to include
additional rho_alpha_beta arrays of tabulated values. A discussion of
how FS EAM differs from conventional EAM alloy potentials is given in
"(Ackland1)"_#Ackland1. An example of such a potential is the same
author's Fe-P FS potential "(Ackland2)"_#Ackland2. Note that while FS
potentials always specify the embedding energy with a square root
dependence on the total density, the implementation in LAMMPS does not
require that; the user can tabulate any functional form desired in the
FS potential files.
For style {eam/fs}, the form of the pair_coeff command is exactly the
same as for style {eam/alloy}, e.g.
pair_coeff * * NiAlH_jea.eam.fs Ni Ni Ni Al :pre
where there are N additional arguments after the filename, where N is
the number of LAMMPS atom types. The N values determine the mapping
of LAMMPS atom types to EAM elements in the file, as described above
for style {eam/alloy}. As with {eam/alloy}, if a mapping value is
NULL, the mapping is not performed. This can be used when an {eam/fs}
potential is used as part of the {hybrid} pair style. The NULL values
are used as placeholders for atom types that will be used with other
potentials.
FS EAM files include more information than the DYNAMO {setfl} format
files read by {eam/alloy}, in that i,j density functionals for all
pairs of elements are included as needed by the Finnis/Sinclair
formulation of the EAM.
FS EAM files in the {potentials} directory of the LAMMPS distribution
have an ".eam.fs" suffix. They are formatted as follows:
lines 1,2,3 = comments (ignored)
line 4: Nelements Element1 Element2 ... ElementN
line 5: Nrho, drho, Nr, dr, cutoff :ul
The 5-line header section is identical to an EAM {setfl} file.
Following the header are Nelements sections, one for each element I,
each with the following format:
line 1 = atomic number, mass, lattice constant, lattice type (e.g. FCC)
embedding function F(rho) (Nrho values)
density function rho(r) for element I at element 1 (Nr values)
density function rho(r) for element I at element 2
...
density function rho(r) for element I at element Nelement :ul
The units of these quantities in line 1 are the same as for {setfl}
files. Note that the rho(r) arrays in Finnis/Sinclair can be
asymmetric (i,j != j,i) so there are Nelements^2 of them listed in the
file.
Following the Nelements sections, Nr values for each pair potential
phi(r) array are listed in the same manner (r*phi, units of
eV-Angstroms) as in EAM {setfl} files. Note that in Finnis/Sinclair,
the phi(r) arrays are still symmetric, so only phi arrays for i >= j
are listed.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS as
described above with the individual styles. You never need to specify
a pair_coeff command with I != J arguments for the eam styles.
This pair style does not support the "pair_modify"_pair_modify.html
shift, table, and tail options.
The eam pair styles do not write their information to "binary restart
files"_restart.html, since it is stored in tabulated potential files.
Thus, you need to re-specify the pair_style and pair_coeff commands in
an input script that reads a restart file.
The eam pair styles can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. They do not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
All of these styles except the {eam/cd} style are part of the
"manybody" package. They are only enabled if LAMMPS was built with
that package (which it is by default). See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
The {eam/cd} style is part of the "user-misc" package and also
requires the "manybody" package. It is only enabled if LAMMPS was
built with those packages. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Ackland1)
[(Ackland1)] Ackland, Condensed Matter (2005).
:link(Ackland2)
[(Ackland2)] Ackland, Mendelev, Srolovitz, Han and Barashev, Journal
of Physics: Condensed Matter, 16, S2629 (2004).
:link(Daw)
[(Daw)] Daw, Baskes, Phys Rev Lett, 50, 1285 (1983).
Daw, Baskes, Phys Rev B, 29, 6443 (1984).
:link(Finnis)
[(Finnis)] Finnis, Sinclair, Philosophical Magazine A, 50, 45 (1984).
:link(Stukowski)
[(Stukowski)] Stukowski, Sadigh, Erhart, Caro; Modeling Simulation
Materials Science & Engineering, 7, 075005 (2009).
diff --git a/doc/pair_eff.html b/doc/pair_eff.html
index 086c13e53..3bf46fef4 100644
--- a/doc/pair_eff.html
+++ b/doc/pair_eff.html
@@ -1,290 +1,290 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style eff/cut command
</H3>
<P><B>Syntax:</B>
</P>
<P>pair_style eff/cut cutoff eradius_limit_flag pressure_flag
</P>
<UL><LI>cutoff = global cutoff for Coulombic interactions
<LI>eradius_limit_flag = 0 or 1 for whether electron size is restrained (optional)
<LI>pressure_flag = 0 or 1 to define the type of pressure calculation (optional)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style eff/cut 39.7
pair_style eff/cut 40.0 1 1
pair_coeff * *
pair_coeff 2 2 20.0
</PRE>
<P><B>Description:</B>
</P>
<P>This pair style contains a LAMMPS implementation of the electron Force
Field (eFF) potential currently under development at Caltech, as
described in <A HREF = "#Jaramillo-Botero">(Jaramillo-Botero)</A>. The eFF was
first introduced by <A HREF = "#Su">(Su)</A> in 2007.
</P>
<P>eFF can be viewed as an approximation to QM wave packet dynamics and
Fermionic molecular dynamics, combining the ability of electronic
structure methods to describe atomic structure, bonding, and chemistry
in materials, and of plasma methods to describe nonequilibrium
dynamics of large systems with a large number of highly excited
electrons. Yet, eFF relies on a simplification of the electronic
wavefunction in which electrons are described as floating Gaussian
wave packets whose position and size respond to the various dynamic
forces between interacting classical nuclear particles and spherical
Gaussian electron wavepackets. The wavefunction is taken to be a
Hartree product of the wave packets. To compensate for the lack of
explicit antisymmetry in the resulting wavefunction, a spin-dependent
Pauli potential is included in the Hamiltonian. Substituting this
wavefunction into the time-dependent Schrodinger equation produces
equations of motion that correspond - to second order - to classical
Hamiltonian relations between electron position and size, and their
conjugate momenta. The N-electron wavefunction is described as a
product of one-electron Gaussian functions, whose size is a dynamical
variable and whose position is not constrained to a nuclear
center. This form allows for straightforward propagation of the
wavefunction, with time, using a simple formulation from which the
equations of motion are then integrated with conventional MD
algorithms. In addition to this spin-dependent Pauli repulsion
potential term between Gaussians, eFF includes the electron kinetic
energy from the Gaussians. These two terms are based on
first-principles quantum mechanics. On the other hand, nuclei are
described as point charges, which interact with other nuclei and
electrons through standard electrostatic potential forms.
</P>
<P>The full Hamiltonian (shown below), contains then a standard
description for electrostatic interactions between a set of
delocalized point and Gaussian charges which include, nuclei-nuclei
(NN), electron-electron (ee), and nuclei-electron (Ne). Thus, eFF is a
mixed QM-classical mechanics method rather than a conventional force
field method (in which electron motions are averaged out into ground
state nuclear motions, i.e a single electronic state, and particle
interactions are described via empirically parameterized interatomic
potential functions). This makes eFF uniquely suited to simulate
materials over a wide range of temperatures and pressures where
electronically excited and ionized states of matter can occur and
coexist. Furthermore, the interactions between particles -nuclei and
electrons- reduce to the sum of a set of effective pairwise potentials
in the eFF formulation. The <I>eff/cut</I> style computes the pairwise
Coulomb interactions between nuclei and electrons (E_NN,E_Ne,E_ee),
and the quantum-derived Pauli (E_PR) and Kinetic energy interactions
potentials between electrons (E_KE) for a total energy expression
given as,
</P>
<CENTER><IMG SRC = "Eqs/eff_energy_expression.jpg">
</CENTER>
<P>The individual terms are defined as follows:
</P>
<CENTER><IMG SRC = "Eqs/eff_KE.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/eff_NN.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/eff_Ne.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/eff_ee.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/eff_Pauli.jpg">
</CENTER>
<P>where, s_i correspond to the electron sizes, the sigmas i's to the
fixed spins of the electrons, Z_i to the charges on the nuclei, R_ij
to the distances between the nuclei or the nuclei and electrons, and
r_ij to the distances between electrons. For additional details see
<A HREF = "#Jaramillo-Botero">(Jaramillo-Botero)</A>.
</P>
<P>The overall electrostatics energy is given in Hartree units of energy
by default and can be modified by an energy-conversion constant,
according to the units chosen (see <A HREF = "units.html">electron_units</A>). The
cutoff Rc, given in Bohrs (by default), truncates the interaction
distance. The recommended cutoff for this pair style should follow
the minimum image criterion, i.e. half of the minimum unit cell
length.
</P>
<P>Style <I>eff/long</I> (not yet available) computes the same interactions as
style <I>eff/cut</I> except that an additional damping factor is applied so
it can be used in conjunction with the
<A HREF = "kspace_style.html">kspace_style</A> command and its <I>ewald</I> or <I>pppm</I>
option. The Coulombic cutoff specified for this style means that
pairwise interactions within this distance are computed directly;
interactions outside that distance are computed in reciprocal space.
</P>
<P>This potential is designed to be used with <A HREF = "atom_style.html">atom_style
electron</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>eff/cut</I>, the cutoff coefficient is optional. If it is not used
(as in some of the examples above), the default global value specified
in the pair_style command is used.
</P>
<P>For <I>eff/long</I> (not yet available) no cutoff will be specified for an
individual I,J type pair via the <A HREF = "pair_coeff.html">pair_coeff</A> command.
All type pairs use the same global cutoff specified in the pair_style
command.
</P>
<P>The <I>eradius_limit_flag</I> and <I>pressure_flag</I> settings are optional.
Neither or both must be specified. If not specified they are
both set to 0 by default.
</P>
<P>The <I>eradius_limit_flag</I> is used to restrain electrons from becoming
unbounded in size at very high temperatures were the Gaussian wave
packet representation breaks down, and from expanding as free
particles to infinite size. A setting of 0 means do not impose this
restraint. A setting of 1 imposes the restraint. The restraining
harmonic potential takes the form E = 1/2k_ss^2 for s > L_box/2, where
k_s = 1 Hartrees/Bohr^2.
</P>
<P>The <I>pressure_flag</I> is used to control between two types of pressure
computation: if set to 0, the computed pressure does not include the
electronic radial virials contributions to the total pressure (scalar
or tensor). If set to 1, the computed pressure will include the
electronic radial virial contributions to the total pressure (scalar
and tensor).
</P>
<P>IMPORTANT NOTE: there are two different pressures that can be reported
for eFF when defining this pair_style, 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>
<HR>
<P>IMPORTANT NOTE: The currently implemented eFF gives a reasonably
accurate description for systems containing nuclei from Z = 1-6.
Users interested in applying eFF should restrict to systems where
electrons are s-like, or contain p character only insofar as a single
lobe of electron density is shifted away from the nuclear center. See
further details about some of the virtues and current limitations of
the method in <A HREF = "#Jaramillo-Botero">(Jaramillo-Botero)</A>.
</P>
<P>Work is underway to extend the eFF to higher Z elements with
increasingly non-spherical electrons (p-block and d-block), to provide
explicit terms for electron correlation/exchange, and to improve its
computational efficiency via atom models with fixed 2 s core electrons
and atom models represented as pseudo-cores plus valence electrons.
</P>
<P>The current version adds support for models with fixed-core and
effective pseudo-core (i.e. effective core pseudopotentials, ECP)
definitions. to enable larger timesteps (i.e. by avoiding the high
frequency vibrational modes -translational and radial- of the 2 s
electrons), and in the ECP case to reduce the p-character effects in
higher Z elements (e.g. Silicon). A fixed-core should be defined with
a mass that includes the corresponding nuclear mass plus the 2 s
electrons in atomic mass units (2x5.4857990943e-4), and a radius
equivalent to that of minimized 1s electrons (see examples under
/examples/USER/eff/fixed-core). An pseudo-core should be described
with a mass that includes the corresponding nuclear mass, plus all the
core electrons (i.e no outer shell electrons), and a radius equivalent
to that of a corresponding minimized full-electron system. The charge
for a pseudo-core atom should be given by the number of outer shell
electrons.
</P>
<P>In general, eFF excels at computing the properties of materials in
extreme conditions and tracing the system dynamics over multi-picosend
timescales; this is particularly relevant where electron excitations
can change significantly the nature of bonding in the system. It can
capture with surprising accuracy the behavior of such systems because
it describes consistently and in an unbiased manner many different
kinds of bonds, including covalent, ionic, multicenter, ionic, and
plasma, and how they interconvert and/or change when they become
excited. eFF also excels in computing the relative thermochemistry of
isodemic reactions and conformational changes, where the bonds of the
reactants are of the same type as the bonds of the products. eFF
assumes that kinetic energy differences dominate the overall exchange
energy, which is true when the electrons present are nearly spherical
and nodeless and valid for covalent compounds such as dense hydrogen,
hydrocarbons, and diamond; alkali metals (e.g. lithium), alkali earth
metals (e.g. beryllium) and semimetals such as boron; and various
compounds containing ionic and/or multicenter bonds, such as boron
dihydride.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the cutoff distance for the
<I>eff/cut</I> style can be mixed. The default mix value is <I>geometric</I>.
See the "pair_modify" command for details.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> shift option is not relevant for
these pair styles.
</P>
<P>The <I>eff/long</I> (not yet available) style supports the
<A HREF = "pair_modify.html">pair_modify</A> table option for tabulation of the
short-range portion of the long-range Coulombic interaction.
</P>
<P>These pair styles do not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure.
</P>
<P>These pair styles write their information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>These pair styles can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. They do not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>These pair styles will only be enabled if LAMMPS is built with the
"user-eff" package. It will only be enabled if LAMMPS was built with
-that package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section
-for more info.
+that package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A>
+section for more info.
</P>
<P>These pair styles require that particles store electron attributes
such as radius, radial velocity, and radital force, as defined by the
<A HREF = "atom_style.html">atom_style</A>. The <I>electron</I> atom style does all of
this.
</P>
<P>Thes pair styles require you to use the <A HREF = "communicate.html">communicate vel
yes</A> option so that velocites are stored by ghost
atoms.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B>
</P>
<P>If not specified, eradius_limit_flag = 0 and pressure_flag = 0.
</P>
<HR>
<A NAME = "Su"></A>
<P><B>(Su)</B> Su and Goddard, Excited Electron Dynamics Modeling of Warm
Dense Matter, Phys Rev Lett, 99:185003 (2007).
</P>
<A NAME = "Jaramillo-Botero"></A>
<P><B>(Jaramillo-Botero)</B> Jaramillo-Botero, Su, Qi, Goddard, Large-scale,
Long-term Non-adiabatic Electron Molecular Dynamics for Describing
Material Properties and Phenomena in Extreme Environments, J Comp
Chem, 32, 497-512 (2011).
</P>
</HTML>
diff --git a/doc/pair_eff.txt b/doc/pair_eff.txt
index 232b785ef..11f0fb960 100644
--- a/doc/pair_eff.txt
+++ b/doc/pair_eff.txt
@@ -1,283 +1,283 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style eff/cut command :h3
[Syntax:]
pair_style eff/cut cutoff eradius_limit_flag pressure_flag
cutoff = global cutoff for Coulombic interactions
eradius_limit_flag = 0 or 1 for whether electron size is restrained (optional)
pressure_flag = 0 or 1 to define the type of pressure calculation (optional) :ul
[Examples:]
pair_style eff/cut 39.7
pair_style eff/cut 40.0 1 1
pair_coeff * *
pair_coeff 2 2 20.0 :pre
[Description:]
This pair style contains a LAMMPS implementation of the electron Force
Field (eFF) potential currently under development at Caltech, as
described in "(Jaramillo-Botero)"_#Jaramillo-Botero. The eFF was
first introduced by "(Su)"_#Su in 2007.
eFF can be viewed as an approximation to QM wave packet dynamics and
Fermionic molecular dynamics, combining the ability of electronic
structure methods to describe atomic structure, bonding, and chemistry
in materials, and of plasma methods to describe nonequilibrium
dynamics of large systems with a large number of highly excited
electrons. Yet, eFF relies on a simplification of the electronic
wavefunction in which electrons are described as floating Gaussian
wave packets whose position and size respond to the various dynamic
forces between interacting classical nuclear particles and spherical
Gaussian electron wavepackets. The wavefunction is taken to be a
Hartree product of the wave packets. To compensate for the lack of
explicit antisymmetry in the resulting wavefunction, a spin-dependent
Pauli potential is included in the Hamiltonian. Substituting this
wavefunction into the time-dependent Schrodinger equation produces
equations of motion that correspond - to second order - to classical
Hamiltonian relations between electron position and size, and their
conjugate momenta. The N-electron wavefunction is described as a
product of one-electron Gaussian functions, whose size is a dynamical
variable and whose position is not constrained to a nuclear
center. This form allows for straightforward propagation of the
wavefunction, with time, using a simple formulation from which the
equations of motion are then integrated with conventional MD
algorithms. In addition to this spin-dependent Pauli repulsion
potential term between Gaussians, eFF includes the electron kinetic
energy from the Gaussians. These two terms are based on
first-principles quantum mechanics. On the other hand, nuclei are
described as point charges, which interact with other nuclei and
electrons through standard electrostatic potential forms.
The full Hamiltonian (shown below), contains then a standard
description for electrostatic interactions between a set of
delocalized point and Gaussian charges which include, nuclei-nuclei
(NN), electron-electron (ee), and nuclei-electron (Ne). Thus, eFF is a
mixed QM-classical mechanics method rather than a conventional force
field method (in which electron motions are averaged out into ground
state nuclear motions, i.e a single electronic state, and particle
interactions are described via empirically parameterized interatomic
potential functions). This makes eFF uniquely suited to simulate
materials over a wide range of temperatures and pressures where
electronically excited and ionized states of matter can occur and
coexist. Furthermore, the interactions between particles -nuclei and
electrons- reduce to the sum of a set of effective pairwise potentials
in the eFF formulation. The {eff/cut} style computes the pairwise
Coulomb interactions between nuclei and electrons (E_NN,E_Ne,E_ee),
and the quantum-derived Pauli (E_PR) and Kinetic energy interactions
potentials between electrons (E_KE) for a total energy expression
given as,
:c,image(Eqs/eff_energy_expression.jpg)
The individual terms are defined as follows:
:c,image(Eqs/eff_KE.jpg)
:c,image(Eqs/eff_NN.jpg)
:c,image(Eqs/eff_Ne.jpg)
:c,image(Eqs/eff_ee.jpg)
:c,image(Eqs/eff_Pauli.jpg)
where, s_i correspond to the electron sizes, the sigmas i's to the
fixed spins of the electrons, Z_i to the charges on the nuclei, R_ij
to the distances between the nuclei or the nuclei and electrons, and
r_ij to the distances between electrons. For additional details see
"(Jaramillo-Botero)"_#Jaramillo-Botero.
The overall electrostatics energy is given in Hartree units of energy
by default and can be modified by an energy-conversion constant,
according to the units chosen (see "electron_units"_units.html). The
cutoff Rc, given in Bohrs (by default), truncates the interaction
distance. The recommended cutoff for this pair style should follow
the minimum image criterion, i.e. half of the minimum unit cell
length.
Style {eff/long} (not yet available) computes the same interactions as
style {eff/cut} except that an additional damping factor is applied so
it can be used in conjunction with the
"kspace_style"_kspace_style.html command and its {ewald} or {pppm}
option. The Coulombic cutoff specified for this style means that
pairwise interactions within this distance are computed directly;
interactions outside that distance are computed in reciprocal space.
This potential is designed to be used with "atom_style
electron"_atom_style.html definitions, in order to handle the
description of systems with interacting nuclei and explicit electrons.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
cutoff (distance units) :ul
For {eff/cut}, the cutoff coefficient is optional. If it is not used
(as in some of the examples above), the default global value specified
in the pair_style command is used.
For {eff/long} (not yet available) no cutoff will be specified for an
individual I,J type pair via the "pair_coeff"_pair_coeff.html command.
All type pairs use the same global cutoff specified in the pair_style
command.
The {eradius_limit_flag} and {pressure_flag} settings are optional.
Neither or both must be specified. If not specified they are
both set to 0 by default.
The {eradius_limit_flag} is used to restrain electrons from becoming
unbounded in size at very high temperatures were the Gaussian wave
packet representation breaks down, and from expanding as free
particles to infinite size. A setting of 0 means do not impose this
restraint. A setting of 1 imposes the restraint. The restraining
harmonic potential takes the form E = 1/2k_ss^2 for s > L_box/2, where
k_s = 1 Hartrees/Bohr^2.
The {pressure_flag} is used to control between two types of pressure
computation: if set to 0, the computed pressure does not include the
electronic radial virials contributions to the total pressure (scalar
or tensor). If set to 1, the computed pressure will include the
electronic radial virial contributions to the total pressure (scalar
and tensor).
IMPORTANT NOTE: there are two different pressures that can be reported
for eFF when defining this pair_style, 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).
:line
IMPORTANT NOTE: The currently implemented eFF gives a reasonably
accurate description for systems containing nuclei from Z = 1-6.
Users interested in applying eFF should restrict to systems where
electrons are s-like, or contain p character only insofar as a single
lobe of electron density is shifted away from the nuclear center. See
further details about some of the virtues and current limitations of
the method in "(Jaramillo-Botero)"_#Jaramillo-Botero.
Work is underway to extend the eFF to higher Z elements with
increasingly non-spherical electrons (p-block and d-block), to provide
explicit terms for electron correlation/exchange, and to improve its
computational efficiency via atom models with fixed 2 s core electrons
and atom models represented as pseudo-cores plus valence electrons.
The current version adds support for models with fixed-core and
effective pseudo-core (i.e. effective core pseudopotentials, ECP)
definitions. to enable larger timesteps (i.e. by avoiding the high
frequency vibrational modes -translational and radial- of the 2 s
electrons), and in the ECP case to reduce the p-character effects in
higher Z elements (e.g. Silicon). A fixed-core should be defined with
a mass that includes the corresponding nuclear mass plus the 2 s
electrons in atomic mass units (2x5.4857990943e-4), and a radius
equivalent to that of minimized 1s electrons (see examples under
/examples/USER/eff/fixed-core). An pseudo-core should be described
with a mass that includes the corresponding nuclear mass, plus all the
core electrons (i.e no outer shell electrons), and a radius equivalent
to that of a corresponding minimized full-electron system. The charge
for a pseudo-core atom should be given by the number of outer shell
electrons.
In general, eFF excels at computing the properties of materials in
extreme conditions and tracing the system dynamics over multi-picosend
timescales; this is particularly relevant where electron excitations
can change significantly the nature of bonding in the system. It can
capture with surprising accuracy the behavior of such systems because
it describes consistently and in an unbiased manner many different
kinds of bonds, including covalent, ionic, multicenter, ionic, and
plasma, and how they interconvert and/or change when they become
excited. eFF also excels in computing the relative thermochemistry of
isodemic reactions and conformational changes, where the bonds of the
reactants are of the same type as the bonds of the products. eFF
assumes that kinetic energy differences dominate the overall exchange
energy, which is true when the electrons present are nearly spherical
and nodeless and valid for covalent compounds such as dense hydrogen,
hydrocarbons, and diamond; alkali metals (e.g. lithium), alkali earth
metals (e.g. beryllium) and semimetals such as boron; and various
compounds containing ionic and/or multicenter bonds, such as boron
dihydride.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the cutoff distance for the
{eff/cut} style can be mixed. The default mix value is {geometric}.
See the "pair_modify" command for details.
The "pair_modify"_pair_modify.html shift option is not relevant for
these pair styles.
The {eff/long} (not yet available) style supports the
"pair_modify"_pair_modify.html table option for tabulation of the
short-range portion of the long-range Coulombic interaction.
These pair styles do not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure.
These pair styles write their information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
These pair styles can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. They do not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
These pair styles will only be enabled if LAMMPS is built with the
"user-eff" package. It will only be enabled if LAMMPS was built with
-that package. See the "Making LAMMPS"_Section_start.html#2_3 section
-for more info.
+that package. See the "Making LAMMPS"_Section_start.html#start_3
+section for more info.
These pair styles require that particles store electron attributes
such as radius, radial velocity, and radital force, as defined by the
"atom_style"_atom_style.html. The {electron} atom style does all of
this.
Thes pair styles require you to use the "communicate vel
yes"_communicate.html option so that velocites are stored by ghost
atoms.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:]
If not specified, eradius_limit_flag = 0 and pressure_flag = 0.
:line
:link(Su)
[(Su)] Su and Goddard, Excited Electron Dynamics Modeling of Warm
Dense Matter, Phys Rev Lett, 99:185003 (2007).
:link(Jaramillo-Botero)
[(Jaramillo-Botero)] Jaramillo-Botero, Su, Qi, Goddard, Large-scale,
Long-term Non-adiabatic Electron Molecular Dynamics for Describing
Material Properties and Phenomena in Extreme Environments, J Comp
Chem, 32, 497-512 (2011).
diff --git a/doc/pair_gayberne.html b/doc/pair_gayberne.html
index 274f80769..77e11eaa0 100644
--- a/doc/pair_gayberne.html
+++ b/doc/pair_gayberne.html
@@ -1,238 +1,238 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style gayberne command
</H3>
<H3>pair_style gayberne/gpu command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style gayberne gamma upsilon mu cutoff
</PRE>
<UL><LI>gamma = shift for potential minimum (typically 1)
<LI>upsilon = exponent for eta orientation-dependent energy function
<LI>mu = exponent for chi orientation-dependent energy function
<LI>cutoff = global cutoff for interactions (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style gayberne 1.0 1.0 1.0 10.0
pair_coeff * * 1.0 1.7 1.7 3.4 3.4 1.0 1.0 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>gayberne</I> styles compute a Gay-Berne anisotropic LJ interaction
<A HREF = "#Berardi">(Berardi)</A> between pairs of ellipsoidal particles or an
ellipsoidal and spherical particle via the formulas
</P>
<CENTER><IMG SRC = "Eqs/pair_gayberne.jpg">
</CENTER>
<P>where A1 and A2 are the transformation matrices from the simulation
box frame to the body frame and r12 is the center to center vector
between the particles. Ur controls the shifted distance dependent
interaction based on the distance of closest approach of the two
particles (h12) and the user-specified shift parameter gamma. When
both particles are spherical, the formula reduces to the usual
Lennard-Jones interaction (see details below for when Gay-Berne treats
a particle as "spherical").
</P>
<P>For large uniform molecules it has been shown that the energy
parameters are approximately representable in terms of local contact
curvatures <A HREF = "#Everaers">(Everaers)</A>:
</P>
<CENTER><IMG SRC = "Eqs/pair_gayberne2.jpg">
</CENTER>
<P>The variable names utilized as potential parameters are for the most
part taken from <A HREF = "#Everaers">(Everaers)</A> in order to be consistent with
the <A HREF = "pair_resquared.html">RE-squared pair potential</A>. Details on the
upsilon and mu parameters are given
<A HREF = "PDF/pair_resquared_extra.pdf">here</A>.
</P>
<P>More details of the Gay-Berne formulation are given in the references
listed below and in <A HREF = "PDF/pair_gayberne_extra.pdf">this supplementary
document</A>.
</P>
<P>Use of this pair style requires the NVE, NVT, or NPT fixes with the
<I>asphere</I> extension (e.g. <A HREF = "fix_nve_asphere.html">fix nve/asphere</A>) in
order to integrate particle rotation. Additionally, <A HREF = "atom_style.html">atom_style
ellipsoid</A> should be used since it defines the
rotational state and the size and shape of each ellipsoidal particle.
</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>epsilon = well depth (energy units)
<LI>sigma = minimum effective particle radii (distance units)
<LI>epsilon_i_a = relative well depth of type I for side-to-side interactions
<LI>epsilon_i_b = relative well depth of type I for face-to-face interactions
<LI>epsilon_i_c = relative well depth of type I for end-to-end interactions
<LI>epsilon_j_a = relative well depth of type J for side-to-side interactions
<LI>epsilon_j_b = relative well depth of type J for face-to-face interactions
<LI>epsilon_j_c = relative well depth of type J for end-to-end interactions
<LI>cutoff (distance units)
</UL>
<P>The last coefficient is optional. If not specified, the global
cutoff specified in the pair_style command is used.
</P>
<P>It is typical with the Gay-Berne potential to define <I>sigma</I> as the
minimum of the 3 shape diameters of the particles involved in an I,I
interaction, though this is not required. Note that this is a
different meaning for <I>sigma</I> than the <A HREF = "pair_resquared.html">pair_style
resquared</A> potential uses.
</P>
<P>The epsilon_i and epsilon_j coefficients are actually defined for atom
types, not for pairs of atom types. Thus, in a series of pair_coeff
commands, they only need to be specified once for each atom type.
</P>
<P>Specifically, if any of epsilon_i_a, epsilon_i_b, epsilon_i_c are
non-zero, the three values are assigned to atom type I. If all the
epsilon_i values are zero, they are ignored. If any of epsilon_j_a,
epsilon_j_b, epsilon_j_c are non-zero, the three values are assigned
to atom type J. If all three epsilon_i values are zero, they are
ignored. Thus the typical way to define the epsilon_i and epsilon_j
coefficients is to list their values in "pair_coeff I J" commands when
I = J, but set them to 0.0 when I != J. If you do list them when I !=
J, you should insure they are consistent with their values in other
pair_coeff commands.
</P>
<P>Note that if this potential is being used as a sub-style of
<A HREF = "pair_hybrid.html">pair_style hybrid</A>, and there is no "pair_coeff I I"
setting made for Gay-Berne for a particular type I (because I-I
interactions are computed by another hybrid pair potential), then you
still need to insure the epsilon a,b,c coefficients are assigned to
that type in a "pair_coeff I J" command.
</P>
<P>IMPORTANT NOTE: If the epsilon a = b = c for an atom type, and if the
shape of the particle itself is spherical, meaning its 3 shape
parameters are all the same, then the particle is treated as an LJ
sphere by the Gay-Berne potential. This is significant because if two
LJ spheres interact, then the simple Lennard-Jones formula is used to
compute their interaction energy/force using the specified epsilon and
sigma as the standard LJ parameters. This is much cheaper to compute
than the full Gay-Berne formula. To treat the particle as a LJ sphere
with sigma = D, you should normally set epsilon a = b = c = 1.0, set
the pair_coeff sigma = D, and also set the 3 shape parameters for the
particle to D. The one exception is that if the 3 shape parameters
are set to 0.0, which is a valid way in LAMMPS to specify a point
particle, then the Gay-Berne potential will treat that as shape
parameters of 1.0 (i.e. a LJ particle with sigma = 1), since it
requires finite-size particles. In this case you should still set the
pair_coeff sigma to 1.0 as well.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for this pair style can be mixed. The default mix
value is <I>geometric</I>. See the "pair_modify" command for details.
</P>
<P>This pair styles supports the <A HREF = "pair_modify.html">pair_modify</A> shift
option for the energy of the Lennard-Jones portion of the pair
interaction, but only for sphere-sphere interactions. There is no
shifting performed for ellipsoidal interactions due to the anisotropic
dependence of the interaction.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>The <I>gayberne</I> style is part of the "asphere" package. It is only
-enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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>These pair style require that atoms store torque and a quaternion to
represent their orientation, as defined by the
<A HREF = "atom_style.html">atom_style</A>. It also require they store a per-type
<A HREF = "shape.html">shape</A>. The particles cannot store a per-particle
diameter.
</P>
<P>This pair style requires that atoms be ellipsoids as defined by the
<A HREF = "atom_style.html">atom_style ellipsoid</A> command.
</P>
<P>Particles acted on by the potential can be extended aspherical or
spherical particles, or point particles. Spherical particles have all
3 of their shape parameters equal to each other. Point particles have
all 3 of their shape parameters equal to 0.0.
</P>
<P>The Gay-Berne potential does not become isotropic as r increases
<A HREF = "#Everaers">(Everaers)</A>. The distance-of-closest-approach
approximation used by LAMMPS becomes less accurate when high-aspect
ratio ellipsoids are used.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "fix_nve_asphere.html">fix nve/asphere</A>,
<A HREF = "compute_temp_asphere.html">compute temp/asphere</A>, <A HREF = "pair_resquared.html">pair_style
resquared</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Everaers"></A>
<P><B>(Everaers)</B> Everaers and Ejtehadi, Phys Rev E, 67, 041710 (2003).
</P>
<A NAME = "Berardi"></A>
<P><B>(Berardi)</B> Berardi, Fava, Zannoni, Chem Phys Lett, 297, 8-14 (1998).
Berardi, Muccioli, Zannoni, J Chem Phys, 128, 024905 (2008).
</P>
<A NAME = "Perram"></A>
<P><B>(Perram)</B> Perram and Rasmussen, Phys Rev E, 54, 6565-6572 (1996).
</P>
<A NAME = "Allen"></A>
<P><B>(Allen)</B> Allen and Germano, Mol Phys 104, 3225-3235 (2006).
</P>
</HTML>
diff --git a/doc/pair_gayberne.txt b/doc/pair_gayberne.txt
index ffa6f9ad5..6a0f7f5bc 100755
--- a/doc/pair_gayberne.txt
+++ b/doc/pair_gayberne.txt
@@ -1,228 +1,228 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style gayberne command :h3
pair_style gayberne/gpu command :h3
[Syntax:]
pair_style gayberne gamma upsilon mu cutoff :pre
gamma = shift for potential minimum (typically 1)
upsilon = exponent for eta orientation-dependent energy function
mu = exponent for chi orientation-dependent energy function
cutoff = global cutoff for interactions (distance units) :ul
[Examples:]
pair_style gayberne 1.0 1.0 1.0 10.0
pair_coeff * * 1.0 1.7 1.7 3.4 3.4 1.0 1.0 1.0 :pre
[Description:]
The {gayberne} styles compute a Gay-Berne anisotropic LJ interaction
"(Berardi)"_#Berardi between pairs of ellipsoidal particles or an
ellipsoidal and spherical particle via the formulas
:c,image(Eqs/pair_gayberne.jpg)
where A1 and A2 are the transformation matrices from the simulation
box frame to the body frame and r12 is the center to center vector
between the particles. Ur controls the shifted distance dependent
interaction based on the distance of closest approach of the two
particles (h12) and the user-specified shift parameter gamma. When
both particles are spherical, the formula reduces to the usual
Lennard-Jones interaction (see details below for when Gay-Berne treats
a particle as "spherical").
For large uniform molecules it has been shown that the energy
parameters are approximately representable in terms of local contact
curvatures "(Everaers)"_#Everaers:
:c,image(Eqs/pair_gayberne2.jpg)
The variable names utilized as potential parameters are for the most
part taken from "(Everaers)"_#Everaers in order to be consistent with
the "RE-squared pair potential"_pair_resquared.html. Details on the
upsilon and mu parameters are given
"here"_PDF/pair_resquared_extra.pdf.
More details of the Gay-Berne formulation are given in the references
listed below and in "this supplementary
document"_PDF/pair_gayberne_extra.pdf.
Use of this pair style requires the NVE, NVT, or NPT fixes with the
{asphere} extension (e.g. "fix nve/asphere"_fix_nve_asphere.html) in
order to integrate particle rotation. Additionally, "atom_style
ellipsoid"_atom_style.html should be used since it defines the
rotational state and the size and shape of each ellipsoidal particle.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
epsilon = well depth (energy units)
sigma = minimum effective particle radii (distance units)
epsilon_i_a = relative well depth of type I for side-to-side interactions
epsilon_i_b = relative well depth of type I for face-to-face interactions
epsilon_i_c = relative well depth of type I for end-to-end interactions
epsilon_j_a = relative well depth of type J for side-to-side interactions
epsilon_j_b = relative well depth of type J for face-to-face interactions
epsilon_j_c = relative well depth of type J for end-to-end interactions
cutoff (distance units) :ul
The last coefficient is optional. If not specified, the global
cutoff specified in the pair_style command is used.
It is typical with the Gay-Berne potential to define {sigma} as the
minimum of the 3 shape diameters of the particles involved in an I,I
interaction, though this is not required. Note that this is a
different meaning for {sigma} than the "pair_style
resquared"_pair_resquared.html potential uses.
The epsilon_i and epsilon_j coefficients are actually defined for atom
types, not for pairs of atom types. Thus, in a series of pair_coeff
commands, they only need to be specified once for each atom type.
Specifically, if any of epsilon_i_a, epsilon_i_b, epsilon_i_c are
non-zero, the three values are assigned to atom type I. If all the
epsilon_i values are zero, they are ignored. If any of epsilon_j_a,
epsilon_j_b, epsilon_j_c are non-zero, the three values are assigned
to atom type J. If all three epsilon_i values are zero, they are
ignored. Thus the typical way to define the epsilon_i and epsilon_j
coefficients is to list their values in "pair_coeff I J" commands when
I = J, but set them to 0.0 when I != J. If you do list them when I !=
J, you should insure they are consistent with their values in other
pair_coeff commands.
Note that if this potential is being used as a sub-style of
"pair_style hybrid"_pair_hybrid.html, and there is no "pair_coeff I I"
setting made for Gay-Berne for a particular type I (because I-I
interactions are computed by another hybrid pair potential), then you
still need to insure the epsilon a,b,c coefficients are assigned to
that type in a "pair_coeff I J" command.
IMPORTANT NOTE: If the epsilon a = b = c for an atom type, and if the
shape of the particle itself is spherical, meaning its 3 shape
parameters are all the same, then the particle is treated as an LJ
sphere by the Gay-Berne potential. This is significant because if two
LJ spheres interact, then the simple Lennard-Jones formula is used to
compute their interaction energy/force using the specified epsilon and
sigma as the standard LJ parameters. This is much cheaper to compute
than the full Gay-Berne formula. To treat the particle as a LJ sphere
with sigma = D, you should normally set epsilon a = b = c = 1.0, set
the pair_coeff sigma = D, and also set the 3 shape parameters for the
particle to D. The one exception is that if the 3 shape parameters
are set to 0.0, which is a valid way in LAMMPS to specify a point
particle, then the Gay-Berne potential will treat that as shape
parameters of 1.0 (i.e. a LJ particle with sigma = 1), since it
requires finite-size particles. In this case you should still set the
pair_coeff sigma to 1.0 as well.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for this pair style can be mixed. The default mix
value is {geometric}. See the "pair_modify" command for details.
This pair styles supports the "pair_modify"_pair_modify.html shift
option for the energy of the Lennard-Jones portion of the pair
interaction, but only for sphere-sphere interactions. There is no
shifting performed for ellipsoidal interactions due to the anisotropic
dependence of the interaction.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
This pair style does not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
The {gayberne} style is part of the "asphere" package. It is only
enabled if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
These pair style require that atoms store torque and a quaternion to
represent their orientation, as defined by the
"atom_style"_atom_style.html. It also require they store a per-type
"shape"_shape.html. The particles cannot store a per-particle
diameter.
This pair style requires that atoms be ellipsoids as defined by the
"atom_style ellipsoid"_atom_style.html command.
Particles acted on by the potential can be extended aspherical or
spherical particles, or point particles. Spherical particles have all
3 of their shape parameters equal to each other. Point particles have
all 3 of their shape parameters equal to 0.0.
The Gay-Berne potential does not become isotropic as r increases
"(Everaers)"_#Everaers. The distance-of-closest-approach
approximation used by LAMMPS becomes less accurate when high-aspect
ratio ellipsoids are used.
[Related commands:]
"pair_coeff"_pair_coeff.html, "fix nve/asphere"_fix_nve_asphere.html,
"compute temp/asphere"_compute_temp_asphere.html, "pair_style
resquared"_pair_resquared.html
[Default:] none
:line
:link(Everaers)
[(Everaers)] Everaers and Ejtehadi, Phys Rev E, 67, 041710 (2003).
:link(Berardi)
[(Berardi)] Berardi, Fava, Zannoni, Chem Phys Lett, 297, 8-14 (1998).
Berardi, Muccioli, Zannoni, J Chem Phys, 128, 024905 (2008).
:link(Perram)
[(Perram)] Perram and Rasmussen, Phys Rev E, 54, 6565-6572 (1996).
:link(Allen)
[(Allen)] Allen and Germano, Mol Phys 104, 3225-3235 (2006).
diff --git a/doc/pair_gran.html b/doc/pair_gran.html
index 7a77d914b..9e42833bf 100644
--- a/doc/pair_gran.html
+++ b/doc/pair_gran.html
@@ -1,247 +1,247 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style gran/hooke command
</H3>
<H3>pair_style gran/cuda command
</H3>
<H3>pair_style gran/hooke/history command
</H3>
<H3>pair_style gran/hertz/history command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style Kn Kt gamma_n gamma_t xmu dampflag
</PRE>
<UL><LI>style = <I>gran/hooke</I> or <I>gran/hooke/history</I> or <I>gran/hertz/history</I>
<LI>Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below)
<LI>Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below)
<LI>gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below)
<LI>gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below)
<LI>xmu = static yield criterion (unitless fraction between 0.0 and 1.0)
<LI>dampflag = 0 or 1 if tangential damping force is excluded or included
</UL>
<P>IMPORTANT NOTE: Versions of LAMMPS before 9Jan09 had different style
names for granular force fields. This is to emphasize the fact that
the Hertzian equation has changed to model polydispersity more
accurately. A side effect of the change is that the Kn, Kt, gamma_n,
and gamma_t coefficients in the pair_style command must be specified
with different values in order to reproduce calculations made with
earlier versions of LAMMPS, even for monodisperse systems. See the
NOTE below for details.
</P>
<P><B>Examples:</B>
</P>
<PRE>pair_style gran/hooke/history 200000.0 NULL 50.0 NULL 0.5 1
pair_style gran/hooke 200000.0 70000.0 50.0 30.0 0.5 0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>gran</I> styles use the following formulas for the frictional force
between two granular particles, as described in
<A HREF = "#Brilliantov">(Brilliantov)</A>, <A HREF = "#Silbert">(Silbert)</A>, and
<A HREF = "#Zhang">(Zhang)</A>, when the distance r between two particles of radii
Ri and Rj is less than their contact distance d = Ri + Rj. There is
no force between the particles when r > d.
</P>
<P>The two Hookean styles use this formula:
</P>
<CENTER><IMG SRC = "Eqs/pair_gran_hooke.jpg">
</CENTER>
<P>The Hertzian style uses this formula:
</P>
<CENTER><IMG SRC = "Eqs/pair_gran_hertz.jpg">
</CENTER>
<P>In both equations the first parenthesized term is the normal force
between the two particles and the second parenthesized term is the
tangential force. The normal force has 2 terms, a contact force and a
damping force. The tangential force also has 2 terms: a shear force
and a damping force. The shear force is a "history" effect that
accounts for the tangential displacement between the particles for the
duration of the time they are in contact. This term is included in
pair styles <I>hooke/history</I> and <I>hertz/history</I>, but is not included
in pair style <I>hooke</I>. The tangential damping force term is included
in all three pair styles if <I>dampflag</I> is set to 1; it is not included
if <I>dampflag</I> is set to 0.
</P>
<P>The other quantities in the equations are as follows:
</P>
<UL><LI>delta = d - r = overlap distance of 2 particles
<LI>Kn = elastic constant for normal contact
<LI>Kt = elastic constant for tangential contact
<LI>gamma_n = viscoelastic damping constant for normal contact
<LI>gamma_t = viscoelastic damping constant for tangential contact
<LI>m_eff = Mi Mj / (Mi + Mj) = effective mass of 2 particles of mass Mi and Mj
<LI>Delta St = tangential displacement vector between 2 spherical particles which is truncated to satisfy a frictional yield criterion
<LI>n_ij = unit vector along the line connecting the centers of the 2 particles
<LI>Vn = normal component of the relative velocity of the 2 particles
<LI>Vt = tangential component of the relative velocity of the 2 particles
</UL>
<P>The Kn, Kt, gamma_n, and gamma_t coefficients are specified as
parameters to the pair_style command. If a NULL is used for Kt, then
a default value is used where Kt = 2/7 Kn. If a NULL is used for
gamma_t, then a default value is used where gamma_t = 1/2 gamma_n.
</P>
<P>The interpretation and units for these 4 coefficients are different in
the Hookean versus Hertzian equations.
</P>
<P>The Hookean model is one where the normal push-back force for two
overlapping particles is a linear function of the overlap distance.
Thus the specified Kn is in units of (force/distance). Note that this
push-back force is independent of absolute particle size (in the
monodisperse case) and of the relative sizes of the two particles (in
the polydisperse case). This model also applies to the other terms in
the force equation so that the specified gamma_n is in units of
(1/time), Kt is in units of (force/distance), and gamma_t is in units
of (1/time).
</P>
<P>The Hertzian model is one where the normal push-back force for two
overlapping particles is proportional to the area of overlap of the
two particles, and is thus a non-linear function of overlap distance.
Thus Kn has units of force per area and is thus specified in units of
(pressure). The effects of absolute particle size (monodispersity)
and relative size (polydispersity) are captured in the radii-dependent
pre-factors. When these pre-factors are carried through to the other
terms in the force equation it means that the specified gamma_n is in
units of (1/(time*distance)), Kt is in units of (pressure), and
gamma_t is in units of (1/(time*distance)).
</P>
<P>Note that in the Hookean case, Kn can be thought of as a linear spring
constant with units of force/distance. In the Hertzian case, Kn is
like a non-linear spring constant with units of force/area or
pressure, and as shown in the <A HREF = "#Zhang">(Zhang)</A> paper, Kn = 4G /
(3(1-nu)) where nu = the Poisson ratio, G = shear modulus = E /
(2(1+nu)), and E = Young's modulus. Similarly, Kt = 8G / (2-nu).
Thus in the Hertzian case Kn and Kt can be set to values that
corresponds to properties of the material being modeled. This is also
true in the Hookean case, except that a spring constant must be chosen
that is appropriate for the absolute size of particles in the model.
Since relative particle sizes are not accounted for, the Hookean
styles may not be a suitable model for polydisperse systems.
</P>
<P>IMPORTANT NOTE: In versions of LAMMPS before 9Jan09, the equation for
Hertzian interactions did not include the sqrt(RiRj/Ri+Rj) term and
thus was not as accurate for polydisperse systems. For monodisperse
systems, sqrt(RiRj/Ri+Rj) is a constant factor that effectively scales
all 4 coefficients: Kn, Kt, gamma_n, gamma_t. Thus you can set the
values of these 4 coefficients appropriately in the current code to
reproduce the results of a previous Hertzian monodisperse calculation.
For example, for the common case of a monodisperse system with
particles of diameter 1, all 4 of these coefficients should now be set
2x larger than they were previously.
</P>
<P>Xmu is also specified in the pair_style command and is the upper limit
of the tangential force through the Coulomb criterion Ft = xmu*Fn,
where Ft and Fn are the total tangential and normal force components
in the formulas above. Thus in the Hookean case, the tangential force
between 2 particles grows according to a tangential spring and
dash-pot model until Ft/Fn = xmu and is then held at Ft = Fn*xmu until
the particles lose contact. In the Hertzian case, a similar analogy
holds, though the spring is no longer linear.
</P>
<P>For granular styles there are no additional coefficients to set for
each pair of atom types via the <A HREF = "pair_coeff.html">pair_coeff</A> command.
All settings are global and are made via the pair_style command.
However you must still use the <A HREF = "pair_coeff.html">pair_coeff</A> for all
pairs of granular atom types. For example the command
</P>
<PRE>pair_coeff * *
</PRE>
<P>should be used if all atoms in the simulation interact via a granular
potential (i.e. one of the pair styles above is used). If a granular
potential is used as a sub-style of <A HREF = "pair_hybrid.html">pair_style
hybrid</A>, then specific atom types can be used in the
pair_coeff command to determine which atoms interact via a granular
potential.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> mix, shift, table, and tail options
are not relevant for granular pair styles.
</P>
<P>These pair styles write their information to <A HREF = "restart.html">binary restart
files</A>, so a pair_style command does not need to be
specified in an input script that reads a restart file.
</P>
<P>These pair styles can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. They do not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B> none
</P>
<P>All the granular pair styles are part of the "granular" package. It
is only enabled if LAMMPS was built with that package. See the
-<A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for more info.
+<A HREF = "Section_start.html#start_3">Making LAMMPS</A> section for more info.
</P>
<P>These pair styles require that atoms store torque and angular velocity
(omega) as defined by the <A HREF = "atom_style.html">atom_style</A>. They also
require a per-particle radius is stored. The <I>sphere</I> atom style does
all of this.
</P>
<P>This pair style requires you to use the <A HREF = "communicate.html">communicate vel
yes</A> option so that velocites are stored by ghost
atoms.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Brilliantov"></A>
<P><B>(Brilliantov)</B> Brilliantov, Spahn, Hertzsch, Poschel, Phys Rev E, 53,
p 5382-5392 (1996).
</P>
<A NAME = "Silbert"></A>
<P><B>(Silbert)</B> Silbert, Ertas, Grest, Halsey, Levine, Plimpton, Phys Rev
E, 64, p 051302 (2001).
</P>
<A NAME = "Zhang"></A>
<P><B>(Zhang)</B> Zhang and Makse, Phys Rev E, 72, p 011301 (2005).
</P>
</HTML>
diff --git a/doc/pair_gran.txt b/doc/pair_gran.txt
index 9e73786d7..c1ea6710c 100644
--- a/doc/pair_gran.txt
+++ b/doc/pair_gran.txt
@@ -1,231 +1,231 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style gran/hooke command :h3
pair_style gran/cuda command :h3
pair_style gran/hooke/history command :h3
pair_style gran/hertz/history command :h3
[Syntax:]
pair_style style Kn Kt gamma_n gamma_t xmu dampflag :pre
style = {gran/hooke} or {gran/hooke/history} or {gran/hertz/history} :ulb,l
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below) :l
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below) :l
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below) :l
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below) :l
xmu = static yield criterion (unitless fraction between 0.0 and 1.0) :l
dampflag = 0 or 1 if tangential damping force is excluded or included :l,ule
IMPORTANT NOTE: Versions of LAMMPS before 9Jan09 had different style
names for granular force fields. This is to emphasize the fact that
the Hertzian equation has changed to model polydispersity more
accurately. A side effect of the change is that the Kn, Kt, gamma_n,
and gamma_t coefficients in the pair_style command must be specified
with different values in order to reproduce calculations made with
earlier versions of LAMMPS, even for monodisperse systems. See the
NOTE below for details.
[Examples:]
pair_style gran/hooke/history 200000.0 NULL 50.0 NULL 0.5 1
pair_style gran/hooke 200000.0 70000.0 50.0 30.0 0.5 0 :pre
[Description:]
The {gran} styles use the following formulas for the frictional force
between two granular particles, as described in
"(Brilliantov)"_#Brilliantov, "(Silbert)"_#Silbert, and
"(Zhang)"_#Zhang, when the distance r between two particles of radii
Ri and Rj is less than their contact distance d = Ri + Rj. There is
no force between the particles when r > d.
The two Hookean styles use this formula:
:c,image(Eqs/pair_gran_hooke.jpg)
The Hertzian style uses this formula:
:c,image(Eqs/pair_gran_hertz.jpg)
In both equations the first parenthesized term is the normal force
between the two particles and the second parenthesized term is the
tangential force. The normal force has 2 terms, a contact force and a
damping force. The tangential force also has 2 terms: a shear force
and a damping force. The shear force is a "history" effect that
accounts for the tangential displacement between the particles for the
duration of the time they are in contact. This term is included in
pair styles {hooke/history} and {hertz/history}, but is not included
in pair style {hooke}. The tangential damping force term is included
in all three pair styles if {dampflag} is set to 1; it is not included
if {dampflag} is set to 0.
The other quantities in the equations are as follows:
delta = d - r = overlap distance of 2 particles
Kn = elastic constant for normal contact
Kt = elastic constant for tangential contact
gamma_n = viscoelastic damping constant for normal contact
gamma_t = viscoelastic damping constant for tangential contact
m_eff = Mi Mj / (Mi + Mj) = effective mass of 2 particles of mass Mi and Mj
Delta St = tangential displacement vector between 2 spherical particles \
which is truncated to satisfy a frictional yield criterion
n_ij = unit vector along the line connecting the centers of the 2 particles
Vn = normal component of the relative velocity of the 2 particles
Vt = tangential component of the relative velocity of the 2 particles :ul
The Kn, Kt, gamma_n, and gamma_t coefficients are specified as
parameters to the pair_style command. If a NULL is used for Kt, then
a default value is used where Kt = 2/7 Kn. If a NULL is used for
gamma_t, then a default value is used where gamma_t = 1/2 gamma_n.
The interpretation and units for these 4 coefficients are different in
the Hookean versus Hertzian equations.
The Hookean model is one where the normal push-back force for two
overlapping particles is a linear function of the overlap distance.
Thus the specified Kn is in units of (force/distance). Note that this
push-back force is independent of absolute particle size (in the
monodisperse case) and of the relative sizes of the two particles (in
the polydisperse case). This model also applies to the other terms in
the force equation so that the specified gamma_n is in units of
(1/time), Kt is in units of (force/distance), and gamma_t is in units
of (1/time).
The Hertzian model is one where the normal push-back force for two
overlapping particles is proportional to the area of overlap of the
two particles, and is thus a non-linear function of overlap distance.
Thus Kn has units of force per area and is thus specified in units of
(pressure). The effects of absolute particle size (monodispersity)
and relative size (polydispersity) are captured in the radii-dependent
pre-factors. When these pre-factors are carried through to the other
terms in the force equation it means that the specified gamma_n is in
units of (1/(time*distance)), Kt is in units of (pressure), and
gamma_t is in units of (1/(time*distance)).
Note that in the Hookean case, Kn can be thought of as a linear spring
constant with units of force/distance. In the Hertzian case, Kn is
like a non-linear spring constant with units of force/area or
pressure, and as shown in the "(Zhang)"_#Zhang paper, Kn = 4G /
(3(1-nu)) where nu = the Poisson ratio, G = shear modulus = E /
(2(1+nu)), and E = Young's modulus. Similarly, Kt = 8G / (2-nu).
Thus in the Hertzian case Kn and Kt can be set to values that
corresponds to properties of the material being modeled. This is also
true in the Hookean case, except that a spring constant must be chosen
that is appropriate for the absolute size of particles in the model.
Since relative particle sizes are not accounted for, the Hookean
styles may not be a suitable model for polydisperse systems.
IMPORTANT NOTE: In versions of LAMMPS before 9Jan09, the equation for
Hertzian interactions did not include the sqrt(RiRj/Ri+Rj) term and
thus was not as accurate for polydisperse systems. For monodisperse
systems, sqrt(RiRj/Ri+Rj) is a constant factor that effectively scales
all 4 coefficients: Kn, Kt, gamma_n, gamma_t. Thus you can set the
values of these 4 coefficients appropriately in the current code to
reproduce the results of a previous Hertzian monodisperse calculation.
For example, for the common case of a monodisperse system with
particles of diameter 1, all 4 of these coefficients should now be set
2x larger than they were previously.
Xmu is also specified in the pair_style command and is the upper limit
of the tangential force through the Coulomb criterion Ft = xmu*Fn,
where Ft and Fn are the total tangential and normal force components
in the formulas above. Thus in the Hookean case, the tangential force
between 2 particles grows according to a tangential spring and
dash-pot model until Ft/Fn = xmu and is then held at Ft = Fn*xmu until
the particles lose contact. In the Hertzian case, a similar analogy
holds, though the spring is no longer linear.
For granular styles there are no additional coefficients to set for
each pair of atom types via the "pair_coeff"_pair_coeff.html command.
All settings are global and are made via the pair_style command.
However you must still use the "pair_coeff"_pair_coeff.html for all
pairs of granular atom types. For example the command
pair_coeff * * :pre
should be used if all atoms in the simulation interact via a granular
potential (i.e. one of the pair styles above is used). If a granular
potential is used as a sub-style of "pair_style
hybrid"_pair_hybrid.html, then specific atom types can be used in the
pair_coeff command to determine which atoms interact via a granular
potential.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
The "pair_modify"_pair_modify.html mix, shift, table, and tail options
are not relevant for granular pair styles.
These pair styles write their information to "binary restart
files"_restart.html, so a pair_style command does not need to be
specified in an input script that reads a restart file.
These pair styles can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. They do not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:] none
All the granular pair styles are part of the "granular" package. It
is only enabled if LAMMPS was built with that package. See the
-"Making LAMMPS"_Section_start.html#2_3 section for more info.
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
These pair styles require that atoms store torque and angular velocity
(omega) as defined by the "atom_style"_atom_style.html. They also
require a per-particle radius is stored. The {sphere} atom style does
all of this.
This pair style requires you to use the "communicate vel
yes"_communicate.html option so that velocites are stored by ghost
atoms.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Brilliantov)
[(Brilliantov)] Brilliantov, Spahn, Hertzsch, Poschel, Phys Rev E, 53,
p 5382-5392 (1996).
:link(Silbert)
[(Silbert)] Silbert, Ertas, Grest, Halsey, Levine, Plimpton, Phys Rev
E, 64, p 051302 (2001).
:link(Zhang)
[(Zhang)] Zhang and Makse, Phys Rev E, 72, p 011301 (2005).
diff --git a/doc/pair_gromacs.html b/doc/pair_gromacs.html
index a63db7ef3..322549cfa 100644
--- a/doc/pair_gromacs.html
+++ b/doc/pair_gromacs.html
@@ -1,160 +1,161 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style lj/gromacs command
</H3>
<H3>pair_style lj/gromacs/cuda command
</H3>
<H3>pair_style lj/gromacs/coul/gromacs command
</H3>
<H3>pair_style lj/gromacs/coul/gromacs/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style args
</PRE>
<UL><LI>style = <I>lj/gromacs</I> or <I>lj/gromacs/coul/gromacs</I>
<LI>args = list of arguments for a particular style
</UL>
<PRE> <I>lj/gromacs</I> args = inner outer
inner, outer = global switching cutoffs for Lennard Jones
<I>lj/gromacs/coul/gromacs</I> args = inner outer (inner2) (outer2)
inner, outer = global switching cutoffs for Lennard Jones (and Coulombic if only 2 args)
inner2, outer2 = global switching cutoffs for Coulombic (optional)
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style lj/gromacs 9.0 12.0
pair_coeff * * 100.0 2.0
pair_coeff 2 2 100.0 2.0 8.0 10.0
</PRE>
<PRE>pair_style lj/gromacs/coul/gromacs 9.0 12.0
pair_style lj/gromacs/coul/gromacs 8.0 10.0 7.0 9.0
pair_coeff * * 100.0 2.0
</PRE>
<P><B>Description:</B>
</P>
-<P>The <I>lj/gromacs</I> styles compute LJ and Coulombic interactions with an
-additional switching function S(r) that ramps the energy and force
+<P>The <I>lj/gromacs</I> styles compute shifted LJ and Coulombic interactions
+with an additional switching function S(r) that ramps the energy and force
smoothly to zero between an inner and outer cutoff. It is a commonly
used potential in the <A HREF = "http://www.gromacs.org">GROMACS</A> MD code and for
the coarse-grained models of <A HREF = "#Marrink">(Marrink)</A>.
</P>
<CENTER><IMG SRC = "Eqs/pair_gromacs.jpg">
</CENTER>
-<P>R1 is the inner cutoff; Rc is the outer cutoff. The coefficients A
-and B are computed by LAMMPS to perform the smoothing. The function
+<P>R1 is the inner cutoff; Rc is the outer cutoff. The coefficients A, B,
+and C are computed by LAMMPS to perform the shifting and smoothing.
+The function
S(r) is actually applied once to each term of the LJ formula and once
-to the Coulombic formula, so there are 2 or 3 sets of A,B coefficients
+to the Coulombic formula, so there are 2 or 3 sets of A,B,C coefficients
depending on which pair_style is used. The boundary conditions
applied to the smoothing function are as follows: S(r1) = S'(r1) = 0,
-S(rc) = -F(rc), S'(rc) = -F'(rc), where F(r) is the correpsonding term
-in the LJ or Coulombic function and a single quote represents a
-derivative with respect to r.
+S(rc) = -F(rc), S'(rc) = -F'(rc), where F(r) is the corresponding term
+in the LJ or Coulombic potential energy function and a
+single quote represents a derivative with respect to r.
</P>
<P>The inner and outer cutoff for the LJ and Coulombic terms can be the
same or different depending on whether 2 or 4 arguments are used in
the pair_style command. The inner LJ cutoff must be > 0, but the
inner Coulombic cutoff can be >= 0.
</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>epsilon (energy units)
<LI>sigma (distance units)
<LI>inner (distance units)
<LI>outer (distance units)
</UL>
<P>Note that sigma is defined in the LJ formula as the zero-crossing
distance for the potential, not as the energy minimum at 2^(1/6)
sigma.
</P>
<P>The last 2 coefficients are optional inner and outer cutoffs for style
<I>lj/gromacs</I>. If not specified, the global <I>inner</I> and <I>outer</I> values
are used.
</P>
<P>The last 2 coefficients cannot be used with style
<I>lj/gromacs/coul/gromacs</I> because this force field does not allow
varying cutoffs for individual atom pairs; all pairs use the global
cutoff(s) specified in the pair_style command.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the lj/cut pair styles can be mixed.
The default mix value is <I>geometric</I>. See the "pair_modify" command
for details.
</P>
<P>None of the GROMACS pair styles support the
<A HREF = "pair_modify.html">pair_modify</A> shift option, since the Lennard-Jones
portion of the pair interaction is already smoothed to 0.0 at the
cutoff.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>None of the GROMACS pair styles support the
<A HREF = "pair_modify.html">pair_modify</A> tail option for adding long-range tail
corrections to energy and pressure, since there are no corrections for
a potential that goes to 0.0 at the cutoff.
</P>
<P>All of the GROMACS pair styles write their information to <A HREF = "restart.html">binary
restart files</A>, so pair_style and pair_coeff commands do
not need to be specified in an input script that reads a restart file.
</P>
<P>All of the GROMACS pair styles can only be used via the <I>pair</I>
keyword of the <A HREF = "run_style.html">run_style respa</A> command. They do not
support the <I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Marrink"></A>
<P><B>(Marrink)</B> Marrink, de Vries, Mark, J Phys Chem B, 108, 750-760 (2004).
</P>
</HTML>
diff --git a/doc/pair_gromacs.txt b/doc/pair_gromacs.txt
index 1a1ca698b..344f51e96 100644
--- a/doc/pair_gromacs.txt
+++ b/doc/pair_gromacs.txt
@@ -1,150 +1,151 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style lj/gromacs command :h3
pair_style lj/gromacs/cuda command :h3
pair_style lj/gromacs/coul/gromacs command :h3
pair_style lj/gromacs/coul/gromacs/cuda command :h3
[Syntax:]
pair_style style args :pre
style = {lj/gromacs} or {lj/gromacs/coul/gromacs}
args = list of arguments for a particular style :ul
{lj/gromacs} args = inner outer
inner, outer = global switching cutoffs for Lennard Jones
{lj/gromacs/coul/gromacs} args = inner outer (inner2) (outer2)
inner, outer = global switching cutoffs for Lennard Jones (and Coulombic if only 2 args)
inner2, outer2 = global switching cutoffs for Coulombic (optional) :pre
[Examples:]
pair_style lj/gromacs 9.0 12.0
pair_coeff * * 100.0 2.0
pair_coeff 2 2 100.0 2.0 8.0 10.0 :pre
pair_style lj/gromacs/coul/gromacs 9.0 12.0
pair_style lj/gromacs/coul/gromacs 8.0 10.0 7.0 9.0
pair_coeff * * 100.0 2.0 :pre
[Description:]
-The {lj/gromacs} styles compute LJ and Coulombic interactions with an
-additional switching function S(r) that ramps the energy and force
+The {lj/gromacs} styles compute shifted LJ and Coulombic interactions
+with an additional switching function S(r) that ramps the energy and force
smoothly to zero between an inner and outer cutoff. It is a commonly
used potential in the "GROMACS"_http://www.gromacs.org MD code and for
the coarse-grained models of "(Marrink)"_#Marrink.
:c,image(Eqs/pair_gromacs.jpg)
-R1 is the inner cutoff; Rc is the outer cutoff. The coefficients A
-and B are computed by LAMMPS to perform the smoothing. The function
+R1 is the inner cutoff; Rc is the outer cutoff. The coefficients A, B,
+and C are computed by LAMMPS to perform the shifting and smoothing.
+The function
S(r) is actually applied once to each term of the LJ formula and once
-to the Coulombic formula, so there are 2 or 3 sets of A,B coefficients
+to the Coulombic formula, so there are 2 or 3 sets of A,B,C coefficients
depending on which pair_style is used. The boundary conditions
applied to the smoothing function are as follows: S(r1) = S'(r1) = 0,
-S(rc) = -F(rc), S'(rc) = -F'(rc), where F(r) is the correpsonding term
-in the LJ or Coulombic function and a single quote represents a
-derivative with respect to r.
+S(rc) = -F(rc), S'(rc) = -F'(rc), where F(r) is the corresponding term
+in the LJ or Coulombic potential energy function and a
+single quote represents a derivative with respect to r.
The inner and outer cutoff for the LJ and Coulombic terms can be the
same or different depending on whether 2 or 4 arguments are used in
the pair_style command. The inner LJ cutoff must be > 0, but the
inner Coulombic cutoff can be >= 0.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
epsilon (energy units)
sigma (distance units)
inner (distance units)
outer (distance units) :ul
Note that sigma is defined in the LJ formula as the zero-crossing
distance for the potential, not as the energy minimum at 2^(1/6)
sigma.
The last 2 coefficients are optional inner and outer cutoffs for style
{lj/gromacs}. If not specified, the global {inner} and {outer} values
are used.
The last 2 coefficients cannot be used with style
{lj/gromacs/coul/gromacs} because this force field does not allow
varying cutoffs for individual atom pairs; all pairs use the global
cutoff(s) specified in the pair_style command.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the lj/cut pair styles can be mixed.
The default mix value is {geometric}. See the "pair_modify" command
for details.
None of the GROMACS pair styles support the
"pair_modify"_pair_modify.html shift option, since the Lennard-Jones
portion of the pair interaction is already smoothed to 0.0 at the
cutoff.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
None of the GROMACS pair styles support the
"pair_modify"_pair_modify.html tail option for adding long-range tail
corrections to energy and pressure, since there are no corrections for
a potential that goes to 0.0 at the cutoff.
All of the GROMACS pair styles write their information to "binary
restart files"_restart.html, so pair_style and pair_coeff commands do
not need to be specified in an input script that reads a restart file.
All of the GROMACS pair styles can only be used via the {pair}
keyword of the "run_style respa"_run_style.html command. They do not
support the {inner}, {middle}, {outer} keywords.
:line
[Restrictions:] none
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Marrink)
[(Marrink)] Marrink, de Vries, Mark, J Phys Chem B, 108, 750-760 (2004).
diff --git a/doc/pair_hbond_dreiding.html b/doc/pair_hbond_dreiding.html
index 8c6358faa..624b0c22b 100644
--- a/doc/pair_hbond_dreiding.html
+++ b/doc/pair_hbond_dreiding.html
@@ -1,209 +1,209 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style hbond/dreiding/lj command
</H3>
<H3>pair_style hbond/dreiding/morse command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style N inner_distance_cutoff outer_distance_cutoff angle_cutof
</PRE>
<UL><LI>style = <I>hbond/dreiding/lj</I> or <I>hbond/dreiding/morse</I>
<LI>n = cosine angle periodicity
<LI>inner_distance_cutoff = global inner spline cutoff for Donor-Acceptor interactions (distance units)
<LI>outer_distance_cutoff = global cutoff for Donor-Acceptor interactions (distance units)
<LI>angle_cutoff = global angle cutoff for Acceptor-Hydrogen-Donor
<LI>interactions (degrees)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style hbond/dreiding/lj 4 4.5 5.0 90
pair_coeff * * 3 i 100.0 3.1
pair_coeff * * 2*5 i 100.0 3.1 2 15.0 20.0 135.0
</PRE>
<PRE>pair_style hbond/dreiding/morse 2 3.0 4.6 75.0
pair_coeff * * 3 j 100.0 1.0 2.0
pair_coeff * * 2*5 j 100.0 1.0 2.0 4.0 6.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>hbond/dreiding</I> styles compute the Acceptor-Hydrogen-Donor (AHD)
3-body hydrogen bond interaction for the
-<A HREF = "Section_howto.html#4_4">DREIDING</A> force field, given by:
+<A HREF = "Section_howto.html#howto_4">DREIDING</A> force field, given by:
</P>
<CENTER><IMG SRC = "Eqs/pair_hbond_dreiding.jpg">
</CENTER>
<P>where Rin is the inner spline distance cutoff, Rout is the outer
distance cutoff, theta_c is the angle cutoff, and n is the cosine
periodicity.
</P>
<P>Here, <I>r</I> is the radial distance between the donor (D) and acceptor
(A) atoms and <I>theta</I> is the bond angle between the acceptor, the
hydrogen (H) and the donor atoms:
</P>
<CENTER><IMG SRC = "Eqs/dreiding_hbond.jpg">
</CENTER>
<P>These 3-body interactions can be defined for pairs of acceptor and
donor atoms, based on atom types. For each donor/acceptor atom pair,
the 3rd atom in the interaction is a hydrogen permanently bonded to
the donor atom, e.g. in a bond list read in from a data file via the
<A HREF = "read_data.html">read_data</A> command. The atom types of possible
hydrogen atoms for each donor/acceptor type pair are specified by the
<A HREF = "pair_coeff.html">pair_coeff</A> command (see below).
</P>
<P>Style <I>hbond/dreiding/lj</I> is the original DREIDING potential of
<A HREF = "#Mayo">(Mayo)</A>. It uses a LJ 12/10 functional for the Donor-Acceptor
interactions. To match the results in the original paper, use n = 4.
</P>
<P>Style <I>hbond/dreiding/morse</I> is an improved version using a Morse
potential for the Donor-Acceptor interactions. <A HREF = "#Liu">(Liu)</A> showed
that the Morse form gives improved results for Dendrimer simulations,
when n = 2.
</P>
-<P>See this <A HREF = "Section_howto.html#4_4">howto section</A> of the manual for more
-information on the DREIDING forcefield.
+<P>See this <A HREF = "Section_howto.html#howto_4">howto section</A> of the manual for
+more information on the DREIDING forcefield.
</P>
<P>Because the Dreiding hydrogen bond potential is only one portion of
an overall force field which typically includes other pairwise
interactions, it is common to use it as a sub-style in a <A HREF = "pair_hybrid.html">pair_style
hybrid or hybrid/overlay</A> command.
</P>
<P>The following coefficients must be defined for pairs of eligible
donor/acceptor types via the <A HREF = "pair_coeff.html">pair_coeff</A> command as
in the examples above.
</P>
<P>IMPORTANT NOTE: Unlike other pair styles and their associated
<A HREF = "pair_coeff.html">pair_coeff</A> commands, you do not need to specify
pair_coeff settings for all possible I,J type pairs. Only I,J type
pairs for atoms which act as joint donors/acceptors need to be
specified; all other type pairs are assumed to be inactive.
</P>
<P>IMPORTANT NOTE: A <A HREF = "pair_coeff.html">pair_coeff</A> command can be
speficied multiple times for the same donor/acceptor type pair. This
enables multiple hydrogen types to be assigned to the same
donor/acceptor type pair. For other pair_styles, if the pair_coeff
command is re-used for the same I.J type pair, the settings for that
type pair are overwritten. For the hydrogen bond potentials this is
not the case; the settings are cummulative. This means the only way
to turn off a previous setting, is to re-use the pair_style command
and start over.
</P>
<P>For the <I>hbond/dreiding/lj</I> style the list of coefficients is as
follows:
</P>
<UL><LI>K = hydrogen atom type = 1 to Ntypes
<LI>donor flag = <I>i</I> or <I>j</I>
<LI>epsilon (energy units)
<LI>sigma (distance units)
<LI>n = exponent in formula above
<LI>distance cutoff (distance units)
<LI>angle cutoff (degrees)
</UL>
<P>For the <I>hbond/dreiding/morse</I> style the list of coefficients is as
follows:
</P>
<UL><LI>K = hydrogen atom type = 1 to Ntypes
<LI>donor flag = <I>i</I> or <I>j</I>
<LI>D0 (energy units)
<LI>alpha (1/distance units)
<LI>r0 (distance units)
<LI>n = exponent in formula above
<LI>distance cutoff (distance units)
<LI>angle cutoff (degrees)
</UL>
<P>A single hydrogen atom type K can be specified, or a wild-card
asterisk can be used in place of or in conjunction with the K
arguments to select multiple types as hydrogens. This takes the form
"*" or "*n" or "n*" or "m*n". See the <A HREF = "pair_coeff">pair_coeff</A> command
doc page for details.
</P>
<P>If the donor flag is <I>i</I>, then the atom of type I in the pair_coeff
command is treated as the donor, and J is the acceptor. If the donor
flag is <I>j</I>, then the atom of type J in the pair_coeff command is
treated as the donor and I is the donor. This option is required
because the <A HREF = "pair_coeff.html">pair_coeff</A> command requires that I <= J.
</P>
<P>Epsilon and sigma are settings for the hydrogen bond potential based
on a Lennard-Jones functional form. Note that sigma is defined as the
zero-crossing distance for the potential, not as the energy minimum at
2^(1/6) sigma.
</P>
<P>D0 and alpha and r0 are settings for the hydrogen bond potential based
on a Morse functional form.
</P>
<P>The last 3 coefficients for both styles are optional. If not
specified, the global n, distance cutoff, and angle cutoff specified
in the pair_style command are used. If you wish to only override the
2nd or 3rd optional parameter, you must also specify the preceding
optional parameters.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>These pair styles do not support mixing. You must explicitly identify
each donor/acceptor type pair.
</P>
<P>These styles do not support the <A HREF = "pair_modify.html">pair_modify</A> shift
option for the energy of the interactions.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant for
these pair styles.
</P>
<P>These pair styles do not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure.
</P>
<P>These pair styles do not write their information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands need to be
re-specified in an input script that reads a restart file.
</P>
<P>These pair styles can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. They do not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<P>These pair styles tally a count of how many hydrogen bonding
interactions they calculate each timestep and the hbond energy. These
quantities can be accessed via the <A HREF = "compute_pair.html">compute pair</A>
command as a vector of values of length 2.
</P>
<P>To print these quantities to the log file (with a descriptive column
heading) the following commands could be included in an input script:
</P>
<PRE>compute hb all pair hbond/dreiding/lj
variable n_hbond equal c_hb[1] #number hbonds
variable E_hbond equal c_hb[2] #hbond energy
thermo_style custom step temp epair v_E_hbond
</PRE>
<HR>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Mayo"></A>
<P><B>(Mayo)</B> Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990).
</P>
<A NAME = "Liu"></A>
<P><B>(Liu)</B> Liu, Bryantsev, Diallo, Goddard III, J. Am. Chem. Soc 131 (8)
2798 (2009)
</P>
</HTML>
diff --git a/doc/pair_hbond_dreiding.txt b/doc/pair_hbond_dreiding.txt
index bcd3c15ad..8f7c09f1f 100644
--- a/doc/pair_hbond_dreiding.txt
+++ b/doc/pair_hbond_dreiding.txt
@@ -1,201 +1,201 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style hbond/dreiding/lj command :h3
pair_style hbond/dreiding/morse command :h3
[Syntax:]
pair_style style N inner_distance_cutoff outer_distance_cutoff angle_cutof :pre
style = {hbond/dreiding/lj} or {hbond/dreiding/morse}
n = cosine angle periodicity
inner_distance_cutoff = global inner spline cutoff for Donor-Acceptor interactions (distance units)
outer_distance_cutoff = global cutoff for Donor-Acceptor interactions (distance units)
angle_cutoff = global angle cutoff for Acceptor-Hydrogen-Donor
interactions (degrees) :ul
[Examples:]
pair_style hbond/dreiding/lj 4 4.5 5.0 90
pair_coeff * * 3 i 100.0 3.1
pair_coeff * * 2*5 i 100.0 3.1 2 15.0 20.0 135.0 :pre
pair_style hbond/dreiding/morse 2 3.0 4.6 75.0
pair_coeff * * 3 j 100.0 1.0 2.0
pair_coeff * * 2*5 j 100.0 1.0 2.0 4.0 6.0 :pre
[Description:]
The {hbond/dreiding} styles compute the Acceptor-Hydrogen-Donor (AHD)
3-body hydrogen bond interaction for the
-"DREIDING"_Section_howto.html#4_4 force field, given by:
+"DREIDING"_Section_howto.html#howto_4 force field, given by:
:c,image(Eqs/pair_hbond_dreiding.jpg)
where Rin is the inner spline distance cutoff, Rout is the outer
distance cutoff, theta_c is the angle cutoff, and n is the cosine
periodicity.
Here, {r} is the radial distance between the donor (D) and acceptor
(A) atoms and {theta} is the bond angle between the acceptor, the
hydrogen (H) and the donor atoms:
:c,image(Eqs/dreiding_hbond.jpg)
These 3-body interactions can be defined for pairs of acceptor and
donor atoms, based on atom types. For each donor/acceptor atom pair,
the 3rd atom in the interaction is a hydrogen permanently bonded to
the donor atom, e.g. in a bond list read in from a data file via the
"read_data"_read_data.html command. The atom types of possible
hydrogen atoms for each donor/acceptor type pair are specified by the
"pair_coeff"_pair_coeff.html command (see below).
Style {hbond/dreiding/lj} is the original DREIDING potential of
"(Mayo)"_#Mayo. It uses a LJ 12/10 functional for the Donor-Acceptor
interactions. To match the results in the original paper, use n = 4.
Style {hbond/dreiding/morse} is an improved version using a Morse
potential for the Donor-Acceptor interactions. "(Liu)"_#Liu showed
that the Morse form gives improved results for Dendrimer simulations,
when n = 2.
-See this "howto section"_Section_howto.html#4_4 of the manual for more
-information on the DREIDING forcefield.
+See this "howto section"_Section_howto.html#howto_4 of the manual for
+more information on the DREIDING forcefield.
Because the Dreiding hydrogen bond potential is only one portion of
an overall force field which typically includes other pairwise
interactions, it is common to use it as a sub-style in a "pair_style
hybrid or hybrid/overlay"_pair_hybrid.html command.
The following coefficients must be defined for pairs of eligible
donor/acceptor types via the "pair_coeff"_pair_coeff.html command as
in the examples above.
IMPORTANT NOTE: Unlike other pair styles and their associated
"pair_coeff"_pair_coeff.html commands, you do not need to specify
pair_coeff settings for all possible I,J type pairs. Only I,J type
pairs for atoms which act as joint donors/acceptors need to be
specified; all other type pairs are assumed to be inactive.
IMPORTANT NOTE: A "pair_coeff"_pair_coeff.html command can be
speficied multiple times for the same donor/acceptor type pair. This
enables multiple hydrogen types to be assigned to the same
donor/acceptor type pair. For other pair_styles, if the pair_coeff
command is re-used for the same I.J type pair, the settings for that
type pair are overwritten. For the hydrogen bond potentials this is
not the case; the settings are cummulative. This means the only way
to turn off a previous setting, is to re-use the pair_style command
and start over.
For the {hbond/dreiding/lj} style the list of coefficients is as
follows:
K = hydrogen atom type = 1 to Ntypes
donor flag = {i} or {j}
epsilon (energy units)
sigma (distance units)
n = exponent in formula above
distance cutoff (distance units)
angle cutoff (degrees) :ul
For the {hbond/dreiding/morse} style the list of coefficients is as
follows:
K = hydrogen atom type = 1 to Ntypes
donor flag = {i} or {j}
D0 (energy units)
alpha (1/distance units)
r0 (distance units)
n = exponent in formula above
distance cutoff (distance units)
angle cutoff (degrees) :ul
A single hydrogen atom type K can be specified, or a wild-card
asterisk can be used in place of or in conjunction with the K
arguments to select multiple types as hydrogens. This takes the form
"*" or "*n" or "n*" or "m*n". See the "pair_coeff"_pair_coeff command
doc page for details.
If the donor flag is {i}, then the atom of type I in the pair_coeff
command is treated as the donor, and J is the acceptor. If the donor
flag is {j}, then the atom of type J in the pair_coeff command is
treated as the donor and I is the donor. This option is required
because the "pair_coeff"_pair_coeff.html command requires that I <= J.
Epsilon and sigma are settings for the hydrogen bond potential based
on a Lennard-Jones functional form. Note that sigma is defined as the
zero-crossing distance for the potential, not as the energy minimum at
2^(1/6) sigma.
D0 and alpha and r0 are settings for the hydrogen bond potential based
on a Morse functional form.
The last 3 coefficients for both styles are optional. If not
specified, the global n, distance cutoff, and angle cutoff specified
in the pair_style command are used. If you wish to only override the
2nd or 3rd optional parameter, you must also specify the preceding
optional parameters.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
These pair styles do not support mixing. You must explicitly identify
each donor/acceptor type pair.
These styles do not support the "pair_modify"_pair_modify.html shift
option for the energy of the interactions.
The "pair_modify"_pair_modify.html table option is not relevant for
these pair styles.
These pair styles do not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure.
These pair styles do not write their information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands need to be
re-specified in an input script that reads a restart file.
These pair styles can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. They do not support the
{inner}, {middle}, {outer} keywords.
These pair styles tally a count of how many hydrogen bonding
interactions they calculate each timestep and the hbond energy. These
quantities can be accessed via the "compute pair"_compute_pair.html
command as a vector of values of length 2.
To print these quantities to the log file (with a descriptive column
heading) the following commands could be included in an input script:
compute hb all pair hbond/dreiding/lj
variable n_hbond equal c_hb\[1\] #number hbonds
variable E_hbond equal c_hb\[2\] #hbond energy
thermo_style custom step temp epair v_E_hbond :pre
:line
[Restrictions:] none
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Mayo)
[(Mayo)] Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909
(1990).
:link(Liu)
[(Liu)] Liu, Bryantsev, Diallo, Goddard III, J. Am. Chem. Soc 131 (8)
2798 (2009)
diff --git a/doc/pair_lj.html b/doc/pair_lj.html
index b42c8ac27..a15688735 100644
--- a/doc/pair_lj.html
+++ b/doc/pair_lj.html
@@ -1,253 +1,253 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style lj/cut command
</H3>
<H3>pair_style lj/cut/cuda command
</H3>
<H3>pair_style lj/cut/experimental/cuda command
</H3>
<H3>pair_style lj/cut/gpu command
</H3>
<H3>pair_style lj/cut/opt command
</H3>
<H3>pair_style lj/cut/coul/cut command
</H3>
<H3>pair_style lj/cut/coul/cut/cuda command
</H3>
<H3>pair_style lj/cut/coul/cut/gpu command
</H3>
<H3>pair_style lj/cut/coul/debye command
</H3>
<H3>pair_style lj/cut/coul/debye/cuda command
</H3>
<H3>pair_style lj/cut/coul/long command
</H3>
<H3>pair_style lj/cut/coul/long/cuda command
</H3>
<H3>pair_style lj/cut/coul/long/gpu command
</H3>
<H3>pair_style lj/cut/coul/long/tip4p command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style args
</PRE>
<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/long</I> or <I>lj/cut/coul/long/tip4p</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)
<I>lj/cut/coul/debye</I> args = kappa cutoff (cutoff2)
kappa = Debye length (inverse distance units)
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</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)
<I>lj/cut/coul/long/tip4p</I> args = otype htype btype atype qdist cutoff (cutoff2)
otype,htype = atom types for TIP4P O and H
btype,atype = bond and angle types for TIP4P waters
qdist = distance from O atom to massless charge (distance units)
cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style lj/cut 2.5
pair_coeff * * 1 1
pair_coeff 1 1 1 1.1 2.8
</PRE>
<PRE>pair_style lj/cut/coul/cut 10.0
pair_style lj/cut/coul/cut 10.0 8.0
pair_coeff * * 100.0 3.0
pair_coeff 1 1 100.0 3.5 9.0
pair_coeff 1 1 100.0 3.5 9.0 9.0
</PRE>
<PRE>pair_style lj/cut/coul/debye 1.5 3.0
pair_style lj/cut/coul/debye 1.5 2.5 5.0
pair_coeff * * 1.0 1.0
pair_coeff 1 1 1.0 1.5 2.5
pair_coeff 1 1 1.0 1.5 2.5 5.0
</PRE>
<PRE>pair_style lj/cut/coul/long 10.0
pair_style lj/cut/coul/long 10.0 8.0
pair_coeff * * 100.0 3.0
pair_coeff 1 1 100.0 3.5 9.0
</PRE>
<PRE>pair_style lj/cut/coul/long/tip4p 1 2 7 8 0.3 12.0
pair_style lj/cut/coul/long/tip4p 1 2 7 8 0.3 12.0 10.0
pair_coeff * * 100.0 3.0
pair_coeff 1 1 100.0 3.5 9.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>lj/cut</I> styles compute the standard 12/6 Lennard-Jones potential,
given by
</P>
<CENTER><IMG SRC = "Eqs/pair_lj.jpg">
</CENTER>
<P>Rc is the cutoff.
</P>
<P>Style <I>lj/cut/coul/cut</I> adds a Coulombic pairwise interaction given by
</P>
<CENTER><IMG SRC = "Eqs/pair_coulomb.jpg">
</CENTER>
<P>where C is an energy-conversion constant, Qi and Qj are the charges on
the 2 atoms, and epsilon is the dielectric constant which can be set
by the <A HREF = "dielectric.html">dielectric</A> command. If one cutoff is
specified in the pair_style command, it is used for both the LJ and
Coulombic terms. If two cutoffs are specified, they are used as
cutoffs for the LJ and Coulombic terms respectively.
</P>
<P>Style <I>lj/cut/coul/debye</I> adds an additional exp() damping factor
to the Coulombic term, given by
</P>
<CENTER><IMG SRC = "Eqs/pair_debye.jpg">
</CENTER>
<P>where kappa is the Debye length. This potential is another way to
mimic the screening effect of a polar solvent.
</P>
<P>Style <I>lj/cut/coul/long</I> computes the same Coulombic interactions as
style <I>lj/cut/coul/cut</I> except that an additional damping factor is
applied to the Coulombic term so it can be used in conjunction with
the <A HREF = "kspace_style.html">kspace_style</A> command and its <I>ewald</I> or <I>pppm</I>
option. The Coulombic cutoff specified for this style means that
pairwise interactions within this distance are computed directly;
interactions outside that distance are computed in reciprocal space.
</P>
<P>Style <I>lj/cut/coul/long/tip4p</I> implements the TIP4P water model of
<A HREF = "#Jorgensen">(Jorgensen)</A>, which introduces a massless site located a
short distance away from the oxygen atom along the bisector of the HOH
angle. The atomic types of the oxygen and hydrogen atoms, the bond
and angle types for OH and HOH interactions, and the distance to the
massless charge site are specified as pair_style arguments.
</P>
<P>IMPORTANT NOTE: For each TIP4P water molecule in your system, the atom
IDs for the O and 2 H atoms must be consecutive, with the O atom
first. This is to enable LAMMPS to "find" the 2 H atoms associated
with each O atom. For example, if the atom ID of an O atom in a TIP4P
water molecule is 500, then its 2 H atoms must have IDs 501 and 502.
</P>
-<P>See the <A HREF = "Section_howto.html#4_8">howto section</A> for more information on
-how to use the TIP4P pair style.
+<P>See the <A HREF = "Section_howto.html#howto_8">howto section</A> for more
+information on how to use the TIP4P pair style.
</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>epsilon (energy units)
<LI>sigma (distance units)
<LI>cutoff1 (distance units)
<LI>cutoff2 (distance units)
</UL>
<P>Note that sigma is defined in the LJ formula as the zero-crossing
distance for the potential, not as the energy minimum at 2^(1/6)
sigma.
</P>
<P>The latter 2 coefficients are optional. If not specified, the global
LJ and Coulombic cutoffs specified in the pair_style command are used.
If only one cutoff is specified, it is used as the cutoff for both LJ
and Coulombic interactions for this type pair. If both coefficients
are specified, they are used as the LJ and Coulombic cutoffs for this
type pair. You cannot specify 2 cutoffs for style <I>lj/cut</I>, since it
has no Coulombic terms.
</P>
<P>For <I>lj/cut/coul/long</I> and <I>lj/cut/coul/long/tip4p</I> only the LJ cutoff
can be specified since a Coulombic cutoff cannot be specified for an
individual I,J type pair. All type pairs use the same global
Coulombic cutoff specified in the pair_style command.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the lj/cut pair styles can be mixed.
The default mix value is <I>geometric</I>. See the "pair_modify" command
for details.
</P>
<P>All of the lj/cut pair styles support the
<A HREF = "pair_modify.html">pair_modify</A> shift option for the energy of the
Lennard-Jones portion of the pair interaction.
</P>
<P>The <I>lj/cut/coul/long</I> and <I>lj/cut/coul/long/tip4p</I> pair styles
support the <A HREF = "pair_modify.html">pair_modify</A> table option since they can
tabulate the short-range portion of the long-range Coulombic
interaction.
</P>
<P>All of the lj/cut pair styles support the
<A HREF = "pair_modify.html">pair_modify</A> tail option for adding a long-range
tail correction to the energy and pressure for the Lennard-Jones
portion of the pair interaction.
</P>
<P>All of the lj/cut pair styles write their information to <A HREF = "restart.html">binary
restart files</A>, so pair_style and pair_coeff commands do
not need to be specified in an input script that reads a restart file.
</P>
<P>The lj/cut and lj/cut/coul/long pair styles support the use of the
<I>inner</I>, <I>middle</I>, and <I>outer</I> keywords of the <A HREF = "run_style.html">run_style
respa</A> command, meaning the pairwise forces can be
partitioned by distance at different levels of the rRESPA hierarchy.
The other styles only support the <I>pair</I> keyword of run_style respa.
See the <A HREF = "run_style.html">run_style</A> command for details.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>The <I>lj/cut/coul/long</I> and <I>lj/cut/coul/long/tip4p</I> styles are part of
the "kspace" package. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A>
section for more info. Note that the kspace package is installed by
default.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Jorgensen"></A>
<P><B>(Jorgensen)</B> Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem
Phys, 79, 926 (1983).
</P>
</HTML>
diff --git a/doc/pair_lj.txt b/doc/pair_lj.txt
index 443b5c27c..93f371cba 100644
--- a/doc/pair_lj.txt
+++ b/doc/pair_lj.txt
@@ -1,233 +1,233 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style lj/cut command :h3
pair_style lj/cut/cuda command :h3
pair_style lj/cut/experimental/cuda command :h3
pair_style lj/cut/gpu command :h3
pair_style lj/cut/opt command :h3
pair_style lj/cut/coul/cut command :h3
pair_style lj/cut/coul/cut/cuda command :h3
pair_style lj/cut/coul/cut/gpu command :h3
pair_style lj/cut/coul/debye command :h3
pair_style lj/cut/coul/debye/cuda command :h3
pair_style lj/cut/coul/long command :h3
pair_style lj/cut/coul/long/cuda command :h3
pair_style lj/cut/coul/long/gpu command :h3
pair_style lj/cut/coul/long/tip4p command :h3
[Syntax:]
pair_style style args :pre
style = {lj/cut} or {lj/cut/coul/cut} or {lj/cut/coul/debye} or {lj/cut/coul/long} or {lj/cut/coul/long/tip4p}
args = list of arguments for a particular style :ul
{lj/cut} args = cutoff
cutoff = global cutoff for Lennard Jones interactions (distance units)
{lj/cut/coul/cut} args = cutoff (cutoff2)
cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
{lj/cut/coul/debye} args = kappa cutoff (cutoff2)
kappa = Debye length (inverse distance units)
cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
{lj/cut/coul/long} args = cutoff (cutoff2)
cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units)
{lj/cut/coul/long/tip4p} args = otype htype btype atype qdist cutoff (cutoff2)
otype,htype = atom types for TIP4P O and H
btype,atype = bond and angle types for TIP4P waters
qdist = distance from O atom to massless charge (distance units)
cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
cutoff2 = global cutoff for Coulombic (optional) (distance units) :pre
[Examples:]
pair_style lj/cut 2.5
pair_coeff * * 1 1
pair_coeff 1 1 1 1.1 2.8 :pre
pair_style lj/cut/coul/cut 10.0
pair_style lj/cut/coul/cut 10.0 8.0
pair_coeff * * 100.0 3.0
pair_coeff 1 1 100.0 3.5 9.0
pair_coeff 1 1 100.0 3.5 9.0 9.0 :pre
pair_style lj/cut/coul/debye 1.5 3.0
pair_style lj/cut/coul/debye 1.5 2.5 5.0
pair_coeff * * 1.0 1.0
pair_coeff 1 1 1.0 1.5 2.5
pair_coeff 1 1 1.0 1.5 2.5 5.0 :pre
pair_style lj/cut/coul/long 10.0
pair_style lj/cut/coul/long 10.0 8.0
pair_coeff * * 100.0 3.0
pair_coeff 1 1 100.0 3.5 9.0 :pre
pair_style lj/cut/coul/long/tip4p 1 2 7 8 0.3 12.0
pair_style lj/cut/coul/long/tip4p 1 2 7 8 0.3 12.0 10.0
pair_coeff * * 100.0 3.0
pair_coeff 1 1 100.0 3.5 9.0 :pre
[Description:]
The {lj/cut} styles compute the standard 12/6 Lennard-Jones potential,
given by
:c,image(Eqs/pair_lj.jpg)
Rc is the cutoff.
Style {lj/cut/coul/cut} adds a Coulombic pairwise interaction given by
:c,image(Eqs/pair_coulomb.jpg)
where C is an energy-conversion constant, Qi and Qj are the charges on
the 2 atoms, and epsilon is the dielectric constant which can be set
by the "dielectric"_dielectric.html command. If one cutoff is
specified in the pair_style command, it is used for both the LJ and
Coulombic terms. If two cutoffs are specified, they are used as
cutoffs for the LJ and Coulombic terms respectively.
Style {lj/cut/coul/debye} adds an additional exp() damping factor
to the Coulombic term, given by
:c,image(Eqs/pair_debye.jpg)
where kappa is the Debye length. This potential is another way to
mimic the screening effect of a polar solvent.
Style {lj/cut/coul/long} computes the same Coulombic interactions as
style {lj/cut/coul/cut} except that an additional damping factor is
applied to the Coulombic term so it can be used in conjunction with
the "kspace_style"_kspace_style.html command and its {ewald} or {pppm}
option. The Coulombic cutoff specified for this style means that
pairwise interactions within this distance are computed directly;
interactions outside that distance are computed in reciprocal space.
Style {lj/cut/coul/long/tip4p} implements the TIP4P water model of
"(Jorgensen)"_#Jorgensen, which introduces a massless site located a
short distance away from the oxygen atom along the bisector of the HOH
angle. The atomic types of the oxygen and hydrogen atoms, the bond
and angle types for OH and HOH interactions, and the distance to the
massless charge site are specified as pair_style arguments.
IMPORTANT NOTE: For each TIP4P water molecule in your system, the atom
IDs for the O and 2 H atoms must be consecutive, with the O atom
first. This is to enable LAMMPS to "find" the 2 H atoms associated
with each O atom. For example, if the atom ID of an O atom in a TIP4P
water molecule is 500, then its 2 H atoms must have IDs 501 and 502.
-See the "howto section"_Section_howto.html#4_8 for more information on
-how to use the TIP4P pair style.
+See the "howto section"_Section_howto.html#howto_8 for more
+information on how to use the TIP4P pair style.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
epsilon (energy units)
sigma (distance units)
cutoff1 (distance units)
cutoff2 (distance units) :ul
Note that sigma is defined in the LJ formula as the zero-crossing
distance for the potential, not as the energy minimum at 2^(1/6)
sigma.
The latter 2 coefficients are optional. If not specified, the global
LJ and Coulombic cutoffs specified in the pair_style command are used.
If only one cutoff is specified, it is used as the cutoff for both LJ
and Coulombic interactions for this type pair. If both coefficients
are specified, they are used as the LJ and Coulombic cutoffs for this
type pair. You cannot specify 2 cutoffs for style {lj/cut}, since it
has no Coulombic terms.
For {lj/cut/coul/long} and {lj/cut/coul/long/tip4p} only the LJ cutoff
can be specified since a Coulombic cutoff cannot be specified for an
individual I,J type pair. All type pairs use the same global
Coulombic cutoff specified in the pair_style command.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the lj/cut pair styles can be mixed.
The default mix value is {geometric}. See the "pair_modify" command
for details.
All of the lj/cut pair styles support the
"pair_modify"_pair_modify.html shift option for the energy of the
Lennard-Jones portion of the pair interaction.
The {lj/cut/coul/long} and {lj/cut/coul/long/tip4p} pair styles
support the "pair_modify"_pair_modify.html table option since they can
tabulate the short-range portion of the long-range Coulombic
interaction.
All of the lj/cut pair styles support the
"pair_modify"_pair_modify.html tail option for adding a long-range
tail correction to the energy and pressure for the Lennard-Jones
portion of the pair interaction.
All of the lj/cut pair styles write their information to "binary
restart files"_restart.html, so pair_style and pair_coeff commands do
not need to be specified in an input script that reads a restart file.
The lj/cut and lj/cut/coul/long pair styles support the use of the
{inner}, {middle}, and {outer} keywords of the "run_style
respa"_run_style.html command, meaning the pairwise forces can be
partitioned by distance at different levels of the rRESPA hierarchy.
The other styles only support the {pair} keyword of run_style respa.
See the "run_style"_run_style.html command for details.
:line
[Restrictions:]
The {lj/cut/coul/long} and {lj/cut/coul/long/tip4p} styles are part of
the "kspace" package. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info. Note that the kspace package is installed by
default.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Jorgensen)
[(Jorgensen)] Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem
Phys, 79, 926 (1983).
diff --git a/doc/pair_lj96.html b/doc/pair_lj96.html
index 297a776f3..6e0cbbb84 100644
--- a/doc/pair_lj96.html
+++ b/doc/pair_lj96.html
@@ -1,113 +1,113 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style lj96/cut command
</H3>
<H3>pair_style lj96/cut/cuda command
</H3>
<H3>pair_style lj96/cut/gpu command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style lj96/cut cutoff
</PRE>
<UL><LI>cutoff = global cutoff for lj96/cut interactions (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style lj96/cut 2.5
pair_coeff * * 1.0 1.0 4.0
pair_coeff 1 1 1.0 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>lj96/cut</I> style compute a 9/6 Lennard-Jones potential, instead
of the standard 12/6 potential, given by
</P>
<CENTER><IMG SRC = "Eqs/pair_lj96.jpg">
</CENTER>
<P>Rc is the cutoff.
</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>epsilon (energy units)
<LI>sigma (distance units)
<LI>cutoff (distance units)
</UL>
<P>The last coefficient is optional. If not specified, the global LJ
cutoff specified in the pair_style command is used.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the lj/cut pair styles can be mixed.
The default mix value is <I>geometric</I>. See the "pair_modify" command
for details.
</P>
<P>This pair style supports the <A HREF = "pair_modify.html">pair_modify</A> shift
option for the energy of the pair interaction.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>This pair style supports the <A HREF = "pair_modify.html">pair_modify</A> tail
option for adding a long-range tail correction to the energy and
pressure of the pair interaction.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style supports the use of the <I>inner</I>, <I>middle</I>, and <I>outer</I>
keywords of the <A HREF = "run_style.html">run_style respa</A> command, meaning the
pairwise forces can be partitioned by distance at different levels of
the rRESPA hierarchy. See the <A HREF = "run_style.html">run_style</A> command for
details.
</P>
<HR>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/pair_lj96.txt b/doc/pair_lj96.txt
index 201e4f280..84ddd5b2b 100644
--- a/doc/pair_lj96.txt
+++ b/doc/pair_lj96.txt
@@ -1,106 +1,106 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style lj96/cut command :h3
pair_style lj96/cut/cuda command :h3
pair_style lj96/cut/gpu command :h3
[Syntax:]
pair_style lj96/cut cutoff :pre
cutoff = global cutoff for lj96/cut interactions (distance units) :ul
[Examples:]
pair_style lj96/cut 2.5
pair_coeff * * 1.0 1.0 4.0
pair_coeff 1 1 1.0 1.0 :pre
[Description:]
The {lj96/cut} style compute a 9/6 Lennard-Jones potential, instead
of the standard 12/6 potential, given by
:c,image(Eqs/pair_lj96.jpg)
Rc is the cutoff.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
epsilon (energy units)
sigma (distance units)
cutoff (distance units) :ul
The last coefficient is optional. If not specified, the global LJ
cutoff specified in the pair_style command is used.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the lj/cut pair styles can be mixed.
The default mix value is {geometric}. See the "pair_modify" command
for details.
This pair style supports the "pair_modify"_pair_modify.html shift
option for the energy of the pair interaction.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
This pair style supports the "pair_modify"_pair_modify.html tail
option for adding a long-range tail correction to the energy and
pressure of the pair interaction.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style supports the use of the {inner}, {middle}, and {outer}
keywords of the "run_style respa"_run_style.html command, meaning the
pairwise forces can be partitioned by distance at different levels of
the rRESPA hierarchy. See the "run_style"_run_style.html command for
details.
:line
[Restrictions:] none
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
diff --git a/doc/pair_lj_coul.html b/doc/pair_lj_coul.html
index f384644fc..a93365fd9 100644
--- a/doc/pair_lj_coul.html
+++ b/doc/pair_lj_coul.html
@@ -1,157 +1,157 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style lj/coul command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style lj/coul flag_lj flag_coul cutoff (cutoff2)
</PRE>
<UL><LI>flag_lj = <I>long</I> or <I>cut</I>
<PRE> <I>long</I> = use Kspace long-range summation for the dispersion term 1/r^6
<I>cut</I> = use a cutoff
</PRE>
<LI>flag_coul = <I>long</I> or <I>off</I>
<PRE> <I>long</I> = use Kspace long-range summation for the Coulombic term 1/r
<I>off</I> = omit the Coulombic term
</PRE>
<LI>cutoff = global cutoff for LJ (and Coulombic if only 1 cutoff) (distance units)
<LI>cutoff2 = global cutoff for Coulombic (optional) (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style lj/coul cut off 2.5
pair_style lj/coul cut long 2.5 4.0
pair_style lj/coul long long 2.5 4.0
pair_coeff * * 1 1
pair_coeff 1 1 1 3 4
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>lj/coul</I> style computes the standard 12/6 Lennard-Jones and
Coulombic potentials, given by
</P>
<CENTER><IMG SRC = "Eqs/pair_lj.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/pair_coulomb.jpg">
</CENTER>
<P>where C is an energy-conversion constant, Qi and Qj are the charges on
the 2 atoms, epsilon is the dielectric constant which can be set by
the <A HREF = "dielectric.html">dielectric</A> command, and Rc is the cutoff. If
one cutoff is specified in the pair_style command, it is used for both
the LJ and Coulombic terms. If two cutoffs are specified, they are
used as cutoffs for the LJ and Coulombic terms respectively.
</P>
<P>The purpose of this pair style is to capture long-range interactions
resulting from both attractive 1/r^6 Lennard-Jones and Coulombic 1/r
interactions. This is done by use of the <I>flag_lj</I> and <I>flag_coul</I>
settings. The <A HREF = "#Veld">In 't Veld</A> paper has more details on when it is
appropriate to include long-range 1/r^6 interactions, using this
potential.
</P>
<P>If <I>flag_lj</I> is set to <I>long</I>, no cutoff is used on the LJ 1/r^6
dispersion term. The long-range portion is calculated by using the
<A HREF = "kspace_style.html">kspace_style ewald/n</A> command. The specified LJ
cutoff then determines which portion of the LJ interactions are
computed directly by the pair potential versus which part is computed
in reciprocal space via the Kspace style. If <I>flag_lj</I> is set to
<I>cut</I>, the LJ interactions are simply cutoff, as with <A HREF = "pair_lj.html">pair_style
lj/cut</A>.
</P>
<P>If <I>flag_coul</I> is set to <I>long</I>, no cutoff is used on the Coulombic
interactions. The long-range portion is calculated by using any
style, including <I>ewald/n</I> of the <A HREF = "kspace_style.html">kspace_style</A>
command. Note that if <I>flag_lj</I> is also set to long, then only the
<I>ewald/n</I> Kspace style can perform the long-range calculations for
both the LJ and Coulombic interactions. If <I>flag_coul</I> is set to
<I>off</I>, Coulombic interactions are not computed.
</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>epsilon (energy units)
<LI>sigma (distance units)
<LI>cutoff1 (distance units)
<LI>cutoff2 (distance units)
</UL>
<P>Note that sigma is defined in the LJ formula as the zero-crossing
distance for the potential, not as the energy minimum at 2^(1/6)
sigma.
</P>
<P>The latter 2 coefficients are optional. If not specified, the global
LJ and Coulombic cutoffs specified in the pair_style command are used.
If only one cutoff is specified, it is used as the cutoff for both LJ
and Coulombic interactions for this type pair. If both coefficients
are specified, they are used as the LJ and Coulombic cutoffs for this
type pair. Note that if you are using <I>flag_lj</I> set to <I>long</I>, you
cannot specify a LJ cutoff for an atom type pair, since only one
global LJ cutoff is allowed. Similarly, if you are using <I>flag_coul</I>
set to <I>long</I>, you cannot specify a Coulombic cutoff for an atom type
pair, since only one global Coulombic cutoff is allowed.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the lj/cut pair styles can be mixed.
The default mix value is <I>geometric</I>. See the "pair_modify" command
for details.
</P>
<P>This pair style supports the <A HREF = "pair_modify.html">pair_modify</A> shift
option for the energy of the Lennard-Jones portion of the pair
interaction, assuming <I>flag_lj</I> is <I>cut</I>.
</P>
<P>This pair style supports the <A HREF = "pair_modify.html">pair_modify</A> table
option since it can tabulate the short-range portion of the long-range
Coulombic interaction.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding a long-range tail correction to the
Lennard-Jones portion of the energy and pressure.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style supports the use of the <I>inner</I>, <I>middle</I>, and <I>outer</I>
keywords of the <A HREF = "run_style.html">run_style respa</A> command, meaning the
pairwise forces can be partitioned by distance at different levels of
the rRESPA hierarchy. See the <A HREF = "run_style.html">run_style</A> command for
details.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This style is part of the "user-ewaldn" package. It is only enabled
-if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Veld"></A>
<P><B>(In 't Veld)</B> In 't Veld, Ismail, Grest, J Chem Phys (accepted) (2007).
</P>
</HTML>
diff --git a/doc/pair_lj_coul.txt b/doc/pair_lj_coul.txt
index 15c9c6431..af695001e 100644
--- a/doc/pair_lj_coul.txt
+++ b/doc/pair_lj_coul.txt
@@ -1,146 +1,146 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style lj/coul command :h3
[Syntax:]
pair_style lj/coul flag_lj flag_coul cutoff (cutoff2) :pre
flag_lj = {long} or {cut} :ulb,l
{long} = use Kspace long-range summation for the dispersion term 1/r^6
{cut} = use a cutoff :pre
flag_coul = {long} or {off} :l
{long} = use Kspace long-range summation for the Coulombic term 1/r
{off} = omit the Coulombic term :pre
cutoff = global cutoff for LJ (and Coulombic if only 1 cutoff) (distance units) :l
cutoff2 = global cutoff for Coulombic (optional) (distance units) :l,ule
[Examples:]
pair_style lj/coul cut off 2.5
pair_style lj/coul cut long 2.5 4.0
pair_style lj/coul long long 2.5 4.0
pair_coeff * * 1 1
pair_coeff 1 1 1 3 4 :pre
[Description:]
The {lj/coul} style computes the standard 12/6 Lennard-Jones and
Coulombic potentials, given by
:c,image(Eqs/pair_lj.jpg)
:c,image(Eqs/pair_coulomb.jpg)
where C is an energy-conversion constant, Qi and Qj are the charges on
the 2 atoms, epsilon is the dielectric constant which can be set by
the "dielectric"_dielectric.html command, and Rc is the cutoff. If
one cutoff is specified in the pair_style command, it is used for both
the LJ and Coulombic terms. If two cutoffs are specified, they are
used as cutoffs for the LJ and Coulombic terms respectively.
The purpose of this pair style is to capture long-range interactions
resulting from both attractive 1/r^6 Lennard-Jones and Coulombic 1/r
interactions. This is done by use of the {flag_lj} and {flag_coul}
settings. The "In 't Veld"_#Veld paper has more details on when it is
appropriate to include long-range 1/r^6 interactions, using this
potential.
If {flag_lj} is set to {long}, no cutoff is used on the LJ 1/r^6
dispersion term. The long-range portion is calculated by using the
"kspace_style ewald/n"_kspace_style.html command. The specified LJ
cutoff then determines which portion of the LJ interactions are
computed directly by the pair potential versus which part is computed
in reciprocal space via the Kspace style. If {flag_lj} is set to
{cut}, the LJ interactions are simply cutoff, as with "pair_style
lj/cut"_pair_lj.html.
If {flag_coul} is set to {long}, no cutoff is used on the Coulombic
interactions. The long-range portion is calculated by using any
style, including {ewald/n} of the "kspace_style"_kspace_style.html
command. Note that if {flag_lj} is also set to long, then only the
{ewald/n} Kspace style can perform the long-range calculations for
both the LJ and Coulombic interactions. If {flag_coul} is set to
{off}, Coulombic interactions are not computed.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
epsilon (energy units)
sigma (distance units)
cutoff1 (distance units)
cutoff2 (distance units) :ul
Note that sigma is defined in the LJ formula as the zero-crossing
distance for the potential, not as the energy minimum at 2^(1/6)
sigma.
The latter 2 coefficients are optional. If not specified, the global
LJ and Coulombic cutoffs specified in the pair_style command are used.
If only one cutoff is specified, it is used as the cutoff for both LJ
and Coulombic interactions for this type pair. If both coefficients
are specified, they are used as the LJ and Coulombic cutoffs for this
type pair. Note that if you are using {flag_lj} set to {long}, you
cannot specify a LJ cutoff for an atom type pair, since only one
global LJ cutoff is allowed. Similarly, if you are using {flag_coul}
set to {long}, you cannot specify a Coulombic cutoff for an atom type
pair, since only one global Coulombic cutoff is allowed.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance for all of the lj/cut pair styles can be mixed.
The default mix value is {geometric}. See the "pair_modify" command
for details.
This pair style supports the "pair_modify"_pair_modify.html shift
option for the energy of the Lennard-Jones portion of the pair
interaction, assuming {flag_lj} is {cut}.
This pair style supports the "pair_modify"_pair_modify.html table
option since it can tabulate the short-range portion of the long-range
Coulombic interaction.
This pair style does not support the "pair_modify"_pair_modify.html
tail option for adding a long-range tail correction to the
Lennard-Jones portion of the energy and pressure.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style supports the use of the {inner}, {middle}, and {outer}
keywords of the "run_style respa"_run_style.html command, meaning the
pairwise forces can be partitioned by distance at different levels of
the rRESPA hierarchy. See the "run_style"_run_style.html command for
details.
:line
[Restrictions:]
This style is part of the "user-ewaldn" package. It is only enabled
if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Veld)
[(In 't Veld)] In 't Veld, Ismail, Grest, J Chem Phys (accepted) (2007).
diff --git a/doc/pair_lj_expand.html b/doc/pair_lj_expand.html
index e9b31e162..c1c421261 100644
--- a/doc/pair_lj_expand.html
+++ b/doc/pair_lj_expand.html
@@ -1,117 +1,117 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style lj/expand command
</H3>
<H3>pair_style lj/expand/cuda command
</H3>
<H3>pair_style lj/expand/gpu command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style lj/expand cutoff
</PRE>
<UL><LI>cutoff = global cutoff for lj/expand interactions (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style lj/expand 2.5
pair_coeff * * 1.0 1.0 0.5
pair_coeff 1 1 1.0 1.0 -0.2 2.0
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>lj/expand</I> computes a LJ interaction with a distance shifted by
delta which can be useful when particles are of different sizes, since
it is different that using different sigma values in a standard LJ
formula:
</P>
<CENTER><IMG SRC = "Eqs/pair_lj_expand.jpg">
</CENTER>
<P>Rc is the cutoff which does not include the delta distance. I.e. the
actual force cutoff is the sum of cutoff + delta.
</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>epsilon (energy units)
<LI>sigma (distance units)
<LI>delta (distance units)
<LI>cutoff (distance units)
</UL>
<P>The delta values can be positive or negative. The last coefficient is
optional. If not specified, the global LJ cutoff is used.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon, sigma, and shift
coefficients and cutoff distance for this pair style can be mixed.
Shift is always mixed via an <I>arithmetic</I> rule. The other
coefficients are mixed according to the pair_modify mix value. The
default mix value is <I>geometric</I>. See the "pair_modify" command for
details.
</P>
<P>This pair style supports the <A HREF = "pair_modify.html">pair_modify</A> shift
option for the energy of the pair interaction.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>This pair style supports the <A HREF = "pair_modify.html">pair_modify</A> tail
option for adding a long-range tail correction to the energy and
pressure of the pair interaction.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/pair_lj_expand.txt b/doc/pair_lj_expand.txt
index def11c26d..7ec8b8e8c 100644
--- a/doc/pair_lj_expand.txt
+++ b/doc/pair_lj_expand.txt
@@ -1,110 +1,110 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style lj/expand command :h3
pair_style lj/expand/cuda command :h3
pair_style lj/expand/gpu command :h3
[Syntax:]
pair_style lj/expand cutoff :pre
cutoff = global cutoff for lj/expand interactions (distance units) :ul
[Examples:]
pair_style lj/expand 2.5
pair_coeff * * 1.0 1.0 0.5
pair_coeff 1 1 1.0 1.0 -0.2 2.0 :pre
[Description:]
Style {lj/expand} computes a LJ interaction with a distance shifted by
delta which can be useful when particles are of different sizes, since
it is different that using different sigma values in a standard LJ
formula:
:c,image(Eqs/pair_lj_expand.jpg)
Rc is the cutoff which does not include the delta distance. I.e. the
actual force cutoff is the sum of cutoff + delta.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
epsilon (energy units)
sigma (distance units)
delta (distance units)
cutoff (distance units) :ul
The delta values can be positive or negative. The last coefficient is
optional. If not specified, the global LJ cutoff is used.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon, sigma, and shift
coefficients and cutoff distance for this pair style can be mixed.
Shift is always mixed via an {arithmetic} rule. The other
coefficients are mixed according to the pair_modify mix value. The
default mix value is {geometric}. See the "pair_modify" command for
details.
This pair style supports the "pair_modify"_pair_modify.html shift
option for the energy of the pair interaction.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
This pair style supports the "pair_modify"_pair_modify.html tail
option for adding a long-range tail correction to the energy and
pressure of the pair interaction.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:] none
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
diff --git a/doc/pair_lj_sf.html b/doc/pair_lj_sf.html
index 2b7fcf5b2..42cad6d0e 100644
--- a/doc/pair_lj_sf.html
+++ b/doc/pair_lj_sf.html
@@ -1,96 +1,96 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style lj/sf command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style lj/sf cutoff
</PRE>
<UL><LI>cutoff = global cutoff for Lennard-Jones interactions (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style lj/sf 2.5
pair_coeff * * 1.0 1.0
pair_coeff 1 1 1.0 1.0 3.0
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>lj/sf</I> computes a truncated and force-shifted LJ interaction
(Shifted Force Lennard-Jones), so that both the potential and the
force go continuously to zero at the cutoff <A HREF = "#Toxvaerd">(Toxvaerd)</A>:
</P>
<CENTER><IMG SRC = "Eqs/pair_lj_sf.jpg">
</CENTER>
<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>epsilon (energy units)
<LI>sigma (distance units)
<LI>cutoff (distance units)
</UL>
<P>The last coefficient is optional. If not specified, the global
LJ cutoff specified in the pair_style command is used.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon and sigma
coefficients and cutoff distance for this pair style can be mixed.
Rin is a cutoff value and is mixed like the cutoff. The
default mix value is <I>geometric</I>. See the "pair_modify" command for
details.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> shift option is not relevant for
this pair style, since the pair interaction goes to 0.0 at the cutoff.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure, since the energy of the pair interaction is smoothed to 0.0
at the cutoff.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This pair style is part of the "user-misc" package. It is only
-enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Toxvaerd"></A>
<P><B>(Toxvaerd)</B> Toxvaerd, Dyre, J Chem Phys, 134, 081102 (2011).
</P>
</HTML>
diff --git a/doc/pair_lj_sf.txt b/doc/pair_lj_sf.txt
index 59dd9e1ec..8c0b65da2 100644
--- a/doc/pair_lj_sf.txt
+++ b/doc/pair_lj_sf.txt
@@ -1,90 +1,90 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style lj/sf command :h3
[Syntax:]
pair_style lj/sf cutoff :pre
cutoff = global cutoff for Lennard-Jones interactions (distance units) :ul
[Examples:]
pair_style lj/sf 2.5
pair_coeff * * 1.0 1.0
pair_coeff 1 1 1.0 1.0 3.0 :pre
[Description:]
Style {lj/sf} computes a truncated and force-shifted LJ interaction
(Shifted Force Lennard-Jones), so that both the potential and the
force go continuously to zero at the cutoff "(Toxvaerd)"_#Toxvaerd:
:c,image(Eqs/pair_lj_sf.jpg)
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
epsilon (energy units)
sigma (distance units)
cutoff (distance units) :ul
The last coefficient is optional. If not specified, the global
LJ cutoff specified in the pair_style command is used.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon and sigma
coefficients and cutoff distance for this pair style can be mixed.
Rin is a cutoff value and is mixed like the cutoff. The
default mix value is {geometric}. See the "pair_modify" command for
details.
The "pair_modify"_pair_modify.html shift option is not relevant for
this pair style, since the pair interaction goes to 0.0 at the cutoff.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
This pair style does not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure, since the energy of the pair interaction is smoothed to 0.0
at the cutoff.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
This pair style is part of the "user-misc" package. It is only
enabled if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Toxvaerd)
[(Toxvaerd)] Toxvaerd, Dyre, J Chem Phys, 134, 081102 (2011).
diff --git a/doc/pair_lj_smooth.html b/doc/pair_lj_smooth.html
index 8cc6c75d8..d8ad196c7 100644
--- a/doc/pair_lj_smooth.html
+++ b/doc/pair_lj_smooth.html
@@ -1,126 +1,126 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style lj/smooth command
</H3>
<H3>pair_style lj/smooth/cuda command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style lj/smooth Rin Rc
</PRE>
<UL><LI>Rin = inner cutoff beyond which force smoothing will be applied (distance units)
<LI>Rc = outer cutoff for lj/smooth interactions (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style lj/smooth 8.0 10.0
pair_coeff * * 10.0 1.5
pair_coeff 1 1 20.0 1.3 7.0 9.0
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>lj/smooth</I> computes a LJ interaction with a force smoothing
applied between the inner and outer cutoff.
</P>
<CENTER><IMG SRC = "Eqs/pair_lj_smooth.jpg">
</CENTER>
<P>The polynomial coefficients C1, C2, C3, C4 are computed by LAMMPS to
cause the force to vary smoothly from the inner cutoff Rin to the
outer cutoff Rc.
</P>
<P>At the inner cutoff the force and its 1st derivative
will match the unsmoothed LJ formula. At the outer cutoff the force
and its 1st derivative will be 0.0. The inner cutoff cannot be 0.0.
</P>
<P>IMPORTANT NOTE: this force smoothing causes the energy to be
discontinuous both in its values and 1st derivative. This can lead to
poor energy conservation and may require the use of a thermostat.
Plot the energy and force resulting from this formula via the
<A HREF = "pair_write.html">pair_write</A> command to see the effect.
</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>epsilon (energy units)
<LI>sigma (distance units)
<LI>innner (distance units)
<LI>outer (distance units)
</UL>
<P>The last 2 coefficients are optional inner and outer cutoffs. If not
specified, the global values for Rin and Rc are used.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon, sigma, Rin
coefficients and the cutoff distance for this pair style can be mixed.
Rin is a cutoff value and is mixed like the cutoff. The other
coefficients are mixed according to the pair_modify mix option. The
default mix value is <I>geometric</I>. See the "pair_modify" command for
details.
</P>
<P>This pair style supports the <A HREF = "pair_modify.html">pair_modify</A> shift
option for the energy of the pair interaction.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure, since the energy of the pair interaction is smoothed to 0.0
at the cutoff.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/pair_lj_smooth.txt b/doc/pair_lj_smooth.txt
index 33ff5118a..e11954d46 100644
--- a/doc/pair_lj_smooth.txt
+++ b/doc/pair_lj_smooth.txt
@@ -1,120 +1,120 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style lj/smooth command :h3
pair_style lj/smooth/cuda command :h3
[Syntax:]
pair_style lj/smooth Rin Rc :pre
Rin = inner cutoff beyond which force smoothing will be applied (distance units)
Rc = outer cutoff for lj/smooth interactions (distance units) :ul
[Examples:]
pair_style lj/smooth 8.0 10.0
pair_coeff * * 10.0 1.5
pair_coeff 1 1 20.0 1.3 7.0 9.0 :pre
[Description:]
Style {lj/smooth} computes a LJ interaction with a force smoothing
applied between the inner and outer cutoff.
:c,image(Eqs/pair_lj_smooth.jpg)
The polynomial coefficients C1, C2, C3, C4 are computed by LAMMPS to
cause the force to vary smoothly from the inner cutoff Rin to the
outer cutoff Rc.
At the inner cutoff the force and its 1st derivative
will match the unsmoothed LJ formula. At the outer cutoff the force
and its 1st derivative will be 0.0. The inner cutoff cannot be 0.0.
IMPORTANT NOTE: this force smoothing causes the energy to be
discontinuous both in its values and 1st derivative. This can lead to
poor energy conservation and may require the use of a thermostat.
Plot the energy and force resulting from this formula via the
"pair_write"_pair_write.html command to see the effect.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
epsilon (energy units)
sigma (distance units)
innner (distance units)
outer (distance units) :ul
The last 2 coefficients are optional inner and outer cutoffs. If not
specified, the global values for Rin and Rc are used.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon, sigma, Rin
coefficients and the cutoff distance for this pair style can be mixed.
Rin is a cutoff value and is mixed like the cutoff. The other
coefficients are mixed according to the pair_modify mix option. The
default mix value is {geometric}. See the "pair_modify" command for
details.
This pair style supports the "pair_modify"_pair_modify.html shift
option for the energy of the pair interaction.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
This pair style does not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure, since the energy of the pair interaction is smoothed to 0.0
at the cutoff.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:] none
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
diff --git a/doc/pair_lubricate.html b/doc/pair_lubricate.html
index 42f47bfd1..90455f041 100644
--- a/doc/pair_lubricate.html
+++ b/doc/pair_lubricate.html
@@ -1,154 +1,154 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style lubricate command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style lubricate mu squeeze shear pump twist cutinner cutoff T_target seed
</PRE>
<UL><LI>mu = dynamic viscosity (dynamic viscosity units)
<LI>squeeze = 0/1 for squeeze force off/on
<LI>shear = 0/1 for shear force off/on
<LI>pump = 0/1 for pump force off/on
<LI>twist = 0/1 for twist force off/on
<LI>cutinner = (distance units)
<LI>cutoff = outer cutoff for interactions (distance units)
<LI>T_target = desired temperature (temperature units)
<LI>seed = random number seed (positive integer)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style lubricate 1.5 1 1 1 0 2.3 2.4 1.3 5878598
pair_coeff 1 1 1.8 2.0
pair_coeff * *
</PRE>
<PRE>pair_style lubricate 1.0 1 1 1 0 2.3 2.4 1.3 5878598
pair_coeff * *
variable mu equal ramp(1,2)
fix 1 all adapt 1 pair lubricate mu * * v_mu
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>lubricate</I> computes pairwise interactions between mono-disperse
spherical particles via this formula from <A HREF = "#Ball">(Ball and Melrose)</A>
</P>
<CENTER><IMG SRC = "Eqs/pair_lubricate.jpg">
</CENTER>
<P>which represents the dissipation W between two nearby particles due to
their relative velocities in the presence of a background solvent with
viscosity mu. Note that this is dynamic viscosity which has units of
mass/distance/time, not kinematic viscosity.
</P>
<P>The viscosity mu can be varied in a time-dependent manner over the
course of a simluation, in which case in which case the pair_style
setting for mu will be overridden. See the <A HREF = "fix_adapt.html">fix adapt</A>
command for details.
</P>
<P>Rc is the outer cutoff specified in the pair_style command, the
translational velocities of the 2 particles are v1 and v2, the angular
velocities are w1 and w2, and n is the unit vector in the direction
from particle 1 to 2. The 4 terms represent four modes of pairwise
interaction: squeezing, shearing, pumping, and twisting. The 4 flags
in the pair_style command turn on or off each of these modes by
including or excluding each term. The 4 coefficients on each term are
functions of the separation distance of the particles and the
viscosity. Details are given in <A HREF = "#Ball">(Ball and Melrose)</A>, including
the forces and torques that result from taking derivatives of this
equation with respect to velocity (see Appendix A).
</P>
<P>Unlike most pair potentials, the two specified cutoffs (cutinner and
cutoff) refer to the surface-to-surface separation between two
particles, not center-to-center distance. Currently, this pair style
can only be used for mono-disperse extended spheres (same radii), so
that separation is r_ij - 2*radius, where r_ij is the center-to-center
distance between the particles. Within the inner cutoff <I>cutinner</I>,
the forces and torques are evaluated at a separation of cutinner. The
outer <I>cutoff</I> is the separation distance beyond which the pair-wise
forces are zero.
</P>
<P>A Langevin thermostatting term is also added to the pairwise force,
similar to that provided by the <A HREF = "fix_langevin.html">fix langevin</A> or
<A HREF = "pair_dpd.html">pair_style dpd</A> commands. The target temperature for
the thermostat is the specified <I>T_target</I>. The <I>seed</I> is used for
the random numbers generated for the thermostat.
</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>cutinner (distance units)
<LI>cutoff (distance units)
</UL>
<P>The two coefficients are optional. If neither is specified, the two
cutoffs specified in the pair_style command are used. Otherwise both
must be specified.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the two cutoff distances for this
pair style can be mixed. The default mix value is <I>geometric</I>. See
the "pair_modify" command for details.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
shift option for the energy of the pair interaction.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This style is part of the "colloid" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>This pair style requires that atoms be finite-size spheres with a
diameter, as defined by the <A HREF = "atom_style.html">atom_style sphere</A>
command.
</P>
<P>Per-particle or per-type polydispersity is not yet supported by this
pair style; all particles must have the same diameter.
</P>
<P>This pair style requires you to use the <A HREF = "communicate.html">communicate vel
yes</A> option so that velocites are stored by ghost
atoms.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Ball"></A>
<P><B>(Ball)</B> Ball and Melrose, Physica A, 247, 444-472 (1997).
</P>
</HTML>
diff --git a/doc/pair_lubricate.txt b/doc/pair_lubricate.txt
index 665cad848..cb925f428 100644
--- a/doc/pair_lubricate.txt
+++ b/doc/pair_lubricate.txt
@@ -1,148 +1,148 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style lubricate command :h3
[Syntax:]
pair_style lubricate mu squeeze shear pump twist cutinner cutoff T_target seed :pre
mu = dynamic viscosity (dynamic viscosity units)
squeeze = 0/1 for squeeze force off/on
shear = 0/1 for shear force off/on
pump = 0/1 for pump force off/on
twist = 0/1 for twist force off/on
cutinner = (distance units)
cutoff = outer cutoff for interactions (distance units)
T_target = desired temperature (temperature units)
seed = random number seed (positive integer) :ul
[Examples:]
pair_style lubricate 1.5 1 1 1 0 2.3 2.4 1.3 5878598
pair_coeff 1 1 1.8 2.0
pair_coeff * * :pre
pair_style lubricate 1.0 1 1 1 0 2.3 2.4 1.3 5878598
pair_coeff * *
variable mu equal ramp(1,2)
fix 1 all adapt 1 pair lubricate mu * * v_mu :pre
[Description:]
Style {lubricate} computes pairwise interactions between mono-disperse
spherical particles via this formula from "(Ball and Melrose)"_#Ball
:c,image(Eqs/pair_lubricate.jpg)
which represents the dissipation W between two nearby particles due to
their relative velocities in the presence of a background solvent with
viscosity mu. Note that this is dynamic viscosity which has units of
mass/distance/time, not kinematic viscosity.
The viscosity mu can be varied in a time-dependent manner over the
course of a simluation, in which case in which case the pair_style
setting for mu will be overridden. See the "fix adapt"_fix_adapt.html
command for details.
Rc is the outer cutoff specified in the pair_style command, the
translational velocities of the 2 particles are v1 and v2, the angular
velocities are w1 and w2, and n is the unit vector in the direction
from particle 1 to 2. The 4 terms represent four modes of pairwise
interaction: squeezing, shearing, pumping, and twisting. The 4 flags
in the pair_style command turn on or off each of these modes by
including or excluding each term. The 4 coefficients on each term are
functions of the separation distance of the particles and the
viscosity. Details are given in "(Ball and Melrose)"_#Ball, including
the forces and torques that result from taking derivatives of this
equation with respect to velocity (see Appendix A).
Unlike most pair potentials, the two specified cutoffs (cutinner and
cutoff) refer to the surface-to-surface separation between two
particles, not center-to-center distance. Currently, this pair style
can only be used for mono-disperse extended spheres (same radii), so
that separation is r_ij - 2*radius, where r_ij is the center-to-center
distance between the particles. Within the inner cutoff {cutinner},
the forces and torques are evaluated at a separation of cutinner. The
outer {cutoff} is the separation distance beyond which the pair-wise
forces are zero.
A Langevin thermostatting term is also added to the pairwise force,
similar to that provided by the "fix langevin"_fix_langevin.html or
"pair_style dpd"_pair_dpd.html commands. The target temperature for
the thermostat is the specified {T_target}. The {seed} is used for
the random numbers generated for the thermostat.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
cutinner (distance units)
cutoff (distance units) :ul
The two coefficients are optional. If neither is specified, the two
cutoffs specified in the pair_style command are used. Otherwise both
must be specified.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the two cutoff distances for this
pair style can be mixed. The default mix value is {geometric}. See
the "pair_modify" command for details.
This pair style does not support the "pair_modify"_pair_modify.html
shift option for the energy of the pair interaction.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
This pair style does not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
This style is part of the "colloid" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
This pair style requires that atoms be finite-size spheres with a
diameter, as defined by the "atom_style sphere"_atom_style.html
command.
Per-particle or per-type polydispersity is not yet supported by this
pair style; all particles must have the same diameter.
This pair style requires you to use the "communicate vel
yes"_communicate.html option so that velocites are stored by ghost
atoms.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Ball)
[(Ball)] Ball and Melrose, Physica A, 247, 444-472 (1997).
diff --git a/doc/pair_meam.html b/doc/pair_meam.html
index f80c4331d..4001a5cae 100644
--- a/doc/pair_meam.html
+++ b/doc/pair_meam.html
@@ -1,379 +1,379 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style meam command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style meam
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style meam
pair_coeff * * ../potentials/library.meam Si ../potentials/si.meam Si
pair_coeff * * ../potentials/library.meam Ni Al NULL Ni Al Ni Ni
</PRE>
<P><B>Description:</B>
</P>
<P>NOTE: The behavior of the MEAM potential for alloy systems has changed
as of November 2010; see description below of the mixture_ref_t
parameter
</P>
<P>Style <I>meam</I> computes pairwise interactions for a variety of materials
using modified embedded-atom method (MEAM) potentials
<A HREF = "#Baskes">(Baskes)</A>. Conceptually, it is an extension to the original
<A HREF = "pair_eam.html">EAM potentials</A> which adds angular forces. It is
thus suitable for modeling metals and alloys with fcc, bcc, hcp and
diamond cubic structures, as well as covalently bonded materials like
silicon and carbon.
</P>
<P>In the MEAM formulation, the total energy E of a system of atoms is
given by:
</P>
<CENTER><IMG SRC = "Eqs/pair_meam.jpg">
</CENTER>
<P>where F is the embedding energy which is a function of the atomic
electron density rho, and phi is a pair potential interaction. The
pair interaction is summed over all neighbors J of atom I within the
cutoff distance. As with EAM, the multi-body nature of the MEAM
potential is a result of the embedding energy term. Details of the
computation of the embedding and pair energies, as implemented in
LAMMPS, are given in <A HREF = "#Gullet">(Gullet)</A> and references therein.
</P>
<P>The various parameters in the MEAM formulas are listed in two files
which are specified by the <A HREF = "pair_coeff.html">pair_coeff</A> command.
These are ASCII text files in a format consistent with other MD codes
that implement MEAM potentials, such as the serial DYNAMO code and
Warp. Several MEAM potential files with parameters for different
materials are included in the "potentials" directory of the LAMMPS
distribution with a ".meam" suffix. All of these are parameterized in
terms of LAMMPS <A HREF = "units.html">metal units</A>.
</P>
<P>Note that unlike for other potentials, cutoffs for MEAM potentials are
not set in the pair_style or pair_coeff command; they are specified in
the MEAM potential files themselves.
</P>
<P>Only a single pair_coeff command is used with the <I>meam</I> style which
specifies two MEAM files and the element(s) to extract information
for. The MEAM elements are mapped to LAMMPS atom types by specifying
N additional arguments after the 2nd filename in the pair_coeff
command, where N is the number of LAMMPS atom types:
</P>
<UL><LI>MEAM library file
<LI>Elem1, Elem2, ...
<LI>MEAM parameter file
<LI>N element names = mapping of MEAM elements to atom types
</UL>
<P>As an example, the potentials/library.meam file has generic MEAM
settings for a variety of elements. The potentials/sic.meam file has
specific parameter settings for a Si and C alloy system. If your
LAMMPS simulation has 4 atoms types and you want the 1st 3 to be Si,
and the 4th to be C, you would use the following pair_coeff command:
</P>
<PRE>pair_coeff * * library.meam Si C sic.meam Si Si Si C
</PRE>
<P>The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The two filenames are for the library and parameter file respectively.
The Si and C arguments (between the file names) are the two elements
for which info will be extracted from the library file. The first
three trailing Si arguments map LAMMPS atom types 1,2,3 to the MEAM Si
element. The final C argument maps LAMMPS atom type 4 to the MEAM C
element.
</P>
<P>If the 2nd filename is specified as NULL, no parameter file is read,
which simply means the generic parameters in the library file are
used. Use of the NULL specification for the parameter file is
discouraged for systems with more than a single element type
(e.g. alloys), since the parameter file is expected to set element
interaction terms that are not captured by the information in the
library file.
</P>
<P>If a mapping value is specified as NULL, the mapping is not performed.
This can be used when a <I>meam</I> potential is used as part of the
<I>hybrid</I> pair style. The NULL values are placeholders for atom types
that will be used with other potentials.
</P>
<P>The MEAM library file provided with LAMMPS has the name
potentials/library.meam. It is the "meamf" file used by other MD
codes. Aside from blank and comment lines (start with #) which can
appear anywhere, it is formatted as a series of entries, each of which
has 19 parameters and can span multiple lines:
</P>
<P>elt, lat, z, ielement, atwt, alpha, b0, b1, b2, b3, alat, esub, asub,
t0, t1, t2, t3, rozero, ibar
</P>
<P>The "elt" and "lat" parameters are text strings, such as elt = Si or
Cu and lat = dia or fcc. Because the library file is used by Fortran
MD codes, these strings may be enclosed in single quotes, but this is
not required. The other numeric parameters match values in the
formulas above. The value of the "elt" string is what is used in the
pair_coeff command to identify which settings from the library file
you wish to read in. There can be multiple entries in the library
file with the same "elt" value; LAMMPS reads the 1st matching entry it
finds and ignores the rest.
</P>
<P>Other parameters in the MEAM library file correspond to single-element
potential parameters:
</P>
<PRE>lat = lattice structure of reference configuration
z = number of nearest neighbors in the reference structure
ielement = atomic number
atwt = atomic weight
alat = lattice constant of reference structure
esub = energy per atom (eV) in the reference structure at equilibrium
asub = "A" parameter for MEAM (see e.g. <A HREF = "#Baskes">(Baskes)</A>)
</PRE>
<P>The alpha, b0, b1, b2, b3, t0, t1, t2, t3 parameters correspond to the
standard MEAM parameters in the literature <A HREF = "#Baskes">(Baskes)</A> (the b
parameters are the standard beta parameters). The rozero parameter is
an element-dependent density scaling that weights the reference
background density (see e.g. equation 4.5 in <A HREF = "#Gullet">(Gullet)</A>) and
is typically 1.0 for single-element systems. The ibar parameter
selects the form of the function G(Gamma) used to compute the electron
density; options are
</P>
<PRE> 0 => G = sqrt(1+Gamma)
1 => G = exp(Gamma/2)
2 => not implemented
3 => G = 2/(1+exp(-Gamma))
4 => G = sqrt(1+Gamma)
-5 => G = +-sqrt(abs(1+Gamma))
</PRE>
<P>If used, the MEAM parameter file contains settings that override or
complement the library file settings. Examples of such parameter
files are in the potentials directory with a ".meam" suffix. Their
format is the same as is read by other Fortran MD codes. Aside from
blank and comment lines (start with #) which can appear anywhere, each
line has one of the following forms. Each line can also have a
trailing comment (starting with #) which is ignored.
</P>
<PRE>keyword = value
keyword(I) = value
keyword(I,J) = value
keyword(I,J,K) = value
</PRE>
<P>The recognized keywords are as follows:
</P>
<P>Ec, alpha, rho0, delta, lattce, attrac, repuls, nn2, Cmin, Cmax, rc, delr,
augt1, gsmooth_factor, re
</P>
<P>where
</P>
<PRE>rc = cutoff radius for cutoff function; default = 4.0
delr = length of smoothing distance for cutoff function; default = 0.1
rho0(I) = relative density for element I (overwrites value
read from meamf file)
Ec(I,J) = cohesive energy of reference structure for I-J mixture
delta(I,J) = heat of formation for I-J alloy; if Ec_IJ is input as
zero, then LAMMPS sets Ec_IJ = (Ec_II + Ec_JJ)/2 - delta_IJ
alpha(I,J) = alpha parameter for pair potential between I and J (can
be computed from bulk modulus of reference structure
re(I,J) = equilibrium distance between I and J in the reference
structure
Cmax(I,J,K) = Cmax screening parameter when I-J pair is screened
by K (I<=J); default = 2.8
Cmin(I,J,K) = Cmin screening parameter when I-J pair is screened
by K (I<=J); default = 2.0
lattce(I,J) = lattice structure of I-J reference structure:
dia = diamond (interlaced fcc for alloy)
fcc = face centered cubic
bcc = body centered cubic
dim = dimer
b1 = rock salt (NaCl structure)
hcp = hexagonal close-packed
c11 = MoSi2 structure
l12 = Cu3Au structure (lower case L, followed by 12)
b2 = CsCl structure (interpenetrating simple cubic)
nn2(I,J) = turn on second-nearest neighbor MEAM formulation for
I-J pair (see for example <A HREF = "#Lee">(Lee)</A>).
0 = second-nearest neighbor formulation off
1 = second-nearest neighbor formulation on
default = 0
attrac(I,J) = additional cubic attraction term in Rose energy I-J pair potential
default = 0
repuls(I,J) = additional cubic repulsive term in Rose energy I-J pair potential
default = 0
zbl(I,J) = blend the MEAM I-J pair potential with the ZBL potential for small
atom separations <A HREF = "#ZBL">(ZBL)</A>
default = 1
gsmooth_factor = factor determining the length of the G-function smoothing
region; only significant for ibar=0 or ibar=4.
99.0 = short smoothing region, sharp step
0.5 = long smoothing region, smooth step
default = 99.0
augt1 = integer flag for whether to augment t1 parameter by
3/5*t3 to account for old vs. new meam formulations;
0 = don't augment t1
1 = augment t1
default = 1
ialloy = integer flag to use alternative averaging rule for t parameters,
for comparison with the DYNAMO MEAM code
0 = standard averaging (matches ialloy=0 in DYNAMO)
1 = alternative averaging (matches ialloy=1 in DYNAMO)
2 = no averaging of t (use single-element values)
default = 0
mixture_ref_t = integer flag to use mixture average of t to compute the background
reference density for alloys, instead of the single-element values
(see description and warning elsewhere in this doc page)
0 = do not use mixture averaging for t in the reference density
1 = use mixture averaging for t in the reference density
default = 0
erose_form = integer value to select the form of the Rose energy function
(see description below).
default = 0
emb_lin_neg = integer value to select embedding function for negative densities
0 = F(rho)=0
1 = F(rho) = -asub*esub*rho (linear in rho, matches DYNAMO)
default = 0
bkgd_dyn = integer value to select background density formula
0 = rho_bkgd = rho_ref_meam(a) (as in the reference structure)
1 = rho_bkgd = rho0_meam(a)*Z_meam(a) (matches DYNAMO)
default = 0
</PRE>
<P>Rc, delr, re are in distance units (Angstroms in the case of metal
units). Ec and delta are in energy units (eV in the case of metal
units).
</P>
<P>Each keyword represents a quantity which is either a scalar, vector,
2d array, or 3d array and must be specified with the correct
corresponding array syntax. The indices I,J,K each run from 1 to N
where N is the number of MEAM elements being used.
</P>
<P>Thus these lines
</P>
<PRE>rho0(2) = 2.25
alpha(1,2) = 4.37
</PRE>
<P>set rho0 for the 2nd element to the value 2.25 and set alpha for the
alloy interaction between elements 1 and 2 to 4.37.
</P>
<P>The augt1 parameter is related to modifications in the MEAM
formulation of the partial electron density function. In recent
literature, an extra term is included in the expression for the
third-order density in order to make the densities orthogonal (see for
example <A HREF = "#Wang">(Wang)</A>, equation 3d); this term is included in the
MEAM implementation in lammps. However, in earlier published work
this term was not included when deriving parameters, including most of
those provided in the library.meam file included with lammps, and to
account for this difference the parameter t1 must be augmented by
3/5*t3. If augt1=1, the default, this augmentation is done
automatically. When parameter values are fit using the modified
density function, as in more recent literature, augt1 should be set to
0.
</P>
<P>The mixture_ref_t parameter is available to match results with those
of previous versions of lammps (before January 2011). Newer versions
of lammps, by default, use the single-element values of the t
parameters to compute the background reference density. This is the
proper way to compute these parameters. Earlier versions of lammps
used an alloy mixture averaged value of t to compute the background
reference density. Setting mixture_ref_t=1 gives the old behavior.
WARNING: using mixture_ref_t=1 will give results that are demonstrably
incorrect for second-neighbor MEAM, and non-standard for
first-neighbor MEAM; this option is included only for matching with
previous versions of lammps and should be avoided if possible.
</P>
<P>The parameters attrac and repuls, along with the integer selection
parameter erose_form, can be used to modify the Rose energy function
used to compute the pair potential. This function gives the energy of
the reference state as a function of interatomic spacing. The form of
this function is:
</P>
<PRE>astar = alpha * (r/re - 1.d0)
if erose_form = 0: erose = -Ec*(1+astar+a3*(astar**3)/(r/re))*exp(-astar)
if erose_form = 1: erose = -Ec*(1+astar+(-attrac+repuls/r)*(astar**3))*exp(-astar)
if erose_form = 2: erose = -Ec*(1 +astar + a3*(astar**3))*exp(-astar)
a3 = repuls, astar < 0
a3 = attrac, astar >= 0
</PRE>
<P>Most published MEAM parameter sets use the default values attrac=repulse=0.
Setting repuls=attrac=delta corresponds to the form used in several
recent published MEAM parameter sets, such as <A HREF = "#Vallone">(Vallone)</A>
</P>
<P>NOTE: The default form of the erose expression in LAMMPS was corrected
in March 2009. The current version is correct, but may show different
behavior compared with earlier versions of lammps with the attrac
and/or repuls parameters are non-zero. To obtain the previous default
form, use erose_form = 1 (this form does not seem to appear in the
literature). An alternative form (see e.g. <A HREF = "#Lee2">(Lee2)</A>) is
available using erose_form = 2.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS with
user-specifiable parameters as described above. You never need to
specify a pair_coeff command with I != J arguments for this style.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
shift, table, and tail options.
</P>
<P>This pair style does not write its information to <A HREF = "restart.html">binary restart
files</A>, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This style is part of the "meam" package. It is only enabled if
LAMMPS was built with that package, which also requires the MEAM
-library be built and linked with LAMMPS. See the <A HREF = "Section_start.html#2_3">Making
+library be built and linked with LAMMPS. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "pair_eam.html">pair_style eam</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Baskes"></A>
<P><B>(Baskes)</B> Baskes, Phys Rev B, 46, 2727-2742 (1992).
</P>
<A NAME = "Gullet"></A>
<P><B>(Gullet)</B> Gullet, Wagner, Slepoy, SANDIA Report 2003-8782 (2003).
This report may be accessed on-line via <A HREF = "http://infoserve.sandia.gov/sand_doc/2003/038782.pdf">this link</A>.
</P>
<A NAME = "Lee"></A>
<P><B>(Lee)</B> Lee, Baskes, Phys. Rev. B, 62, 8564-8567 (2000).
</P>
<A NAME = "Lee2"></A>
<P><B>(Lee2)</B> Lee, Baskes, Kim, Cho. Phys. Rev. B, 64, 184102 (2001).
</P>
<A NAME = "Valone"></A>
<P><B>(Valone)</B> Valone, Baskes, Martin, Phys. Rev. B, 73, 214209 (2006).
</P>
<A NAME = "Wang"></A>
<P><B>(Wang)</B> Wang, Van Hove, Ross, Baskes, J. Chem. Phys., 121, 5410 (2004).
</P>
<A NAME = "ZBL"></A>
<P><B>(ZBL)</B> J.F. Ziegler, J.P. Biersack, U. Littmark, 'Stopping and Ranges
of Ions in Matter' Vol 1, 1985, Pergamon Press.
</P>
</HTML>
diff --git a/doc/pair_meam.txt b/doc/pair_meam.txt
index cb7568a6a..12bae3092 100644
--- a/doc/pair_meam.txt
+++ b/doc/pair_meam.txt
@@ -1,368 +1,368 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style meam command :h3
[Syntax:]
pair_style meam :pre
[Examples:]
pair_style meam
pair_coeff * * ../potentials/library.meam Si ../potentials/si.meam Si
pair_coeff * * ../potentials/library.meam Ni Al NULL Ni Al Ni Ni :pre
[Description:]
NOTE: The behavior of the MEAM potential for alloy systems has changed
as of November 2010; see description below of the mixture_ref_t
parameter
Style {meam} computes pairwise interactions for a variety of materials
using modified embedded-atom method (MEAM) potentials
"(Baskes)"_#Baskes. Conceptually, it is an extension to the original
"EAM potentials"_pair_eam.html which adds angular forces. It is
thus suitable for modeling metals and alloys with fcc, bcc, hcp and
diamond cubic structures, as well as covalently bonded materials like
silicon and carbon.
In the MEAM formulation, the total energy E of a system of atoms is
given by:
:c,image(Eqs/pair_meam.jpg)
where F is the embedding energy which is a function of the atomic
electron density rho, and phi is a pair potential interaction. The
pair interaction is summed over all neighbors J of atom I within the
cutoff distance. As with EAM, the multi-body nature of the MEAM
potential is a result of the embedding energy term. Details of the
computation of the embedding and pair energies, as implemented in
LAMMPS, are given in "(Gullet)"_#Gullet and references therein.
The various parameters in the MEAM formulas are listed in two files
which are specified by the "pair_coeff"_pair_coeff.html command.
These are ASCII text files in a format consistent with other MD codes
that implement MEAM potentials, such as the serial DYNAMO code and
Warp. Several MEAM potential files with parameters for different
materials are included in the "potentials" directory of the LAMMPS
distribution with a ".meam" suffix. All of these are parameterized in
terms of LAMMPS "metal units"_units.html.
Note that unlike for other potentials, cutoffs for MEAM potentials are
not set in the pair_style or pair_coeff command; they are specified in
the MEAM potential files themselves.
Only a single pair_coeff command is used with the {meam} style which
specifies two MEAM files and the element(s) to extract information
for. The MEAM elements are mapped to LAMMPS atom types by specifying
N additional arguments after the 2nd filename in the pair_coeff
command, where N is the number of LAMMPS atom types:
MEAM library file
Elem1, Elem2, ...
MEAM parameter file
N element names = mapping of MEAM elements to atom types :ul
As an example, the potentials/library.meam file has generic MEAM
settings for a variety of elements. The potentials/sic.meam file has
specific parameter settings for a Si and C alloy system. If your
LAMMPS simulation has 4 atoms types and you want the 1st 3 to be Si,
and the 4th to be C, you would use the following pair_coeff command:
pair_coeff * * library.meam Si C sic.meam Si Si Si C :pre
The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The two filenames are for the library and parameter file respectively.
The Si and C arguments (between the file names) are the two elements
for which info will be extracted from the library file. The first
three trailing Si arguments map LAMMPS atom types 1,2,3 to the MEAM Si
element. The final C argument maps LAMMPS atom type 4 to the MEAM C
element.
If the 2nd filename is specified as NULL, no parameter file is read,
which simply means the generic parameters in the library file are
used. Use of the NULL specification for the parameter file is
discouraged for systems with more than a single element type
(e.g. alloys), since the parameter file is expected to set element
interaction terms that are not captured by the information in the
library file.
If a mapping value is specified as NULL, the mapping is not performed.
This can be used when a {meam} potential is used as part of the
{hybrid} pair style. The NULL values are placeholders for atom types
that will be used with other potentials.
The MEAM library file provided with LAMMPS has the name
potentials/library.meam. It is the "meamf" file used by other MD
codes. Aside from blank and comment lines (start with #) which can
appear anywhere, it is formatted as a series of entries, each of which
has 19 parameters and can span multiple lines:
elt, lat, z, ielement, atwt, alpha, b0, b1, b2, b3, alat, esub, asub,
t0, t1, t2, t3, rozero, ibar
The "elt" and "lat" parameters are text strings, such as elt = Si or
Cu and lat = dia or fcc. Because the library file is used by Fortran
MD codes, these strings may be enclosed in single quotes, but this is
not required. The other numeric parameters match values in the
formulas above. The value of the "elt" string is what is used in the
pair_coeff command to identify which settings from the library file
you wish to read in. There can be multiple entries in the library
file with the same "elt" value; LAMMPS reads the 1st matching entry it
finds and ignores the rest.
Other parameters in the MEAM library file correspond to single-element
potential parameters:
lat = lattice structure of reference configuration
z = number of nearest neighbors in the reference structure
ielement = atomic number
atwt = atomic weight
alat = lattice constant of reference structure
esub = energy per atom (eV) in the reference structure at equilibrium
asub = "A" parameter for MEAM (see e.g. "(Baskes)"_#Baskes) :pre
The alpha, b0, b1, b2, b3, t0, t1, t2, t3 parameters correspond to the
standard MEAM parameters in the literature "(Baskes)"_#Baskes (the b
parameters are the standard beta parameters). The rozero parameter is
an element-dependent density scaling that weights the reference
background density (see e.g. equation 4.5 in "(Gullet)"_#Gullet) and
is typically 1.0 for single-element systems. The ibar parameter
selects the form of the function G(Gamma) used to compute the electron
density; options are
0 => G = sqrt(1+Gamma)
1 => G = exp(Gamma/2)
2 => not implemented
3 => G = 2/(1+exp(-Gamma))
4 => G = sqrt(1+Gamma)
-5 => G = +-sqrt(abs(1+Gamma)) :pre
If used, the MEAM parameter file contains settings that override or
complement the library file settings. Examples of such parameter
files are in the potentials directory with a ".meam" suffix. Their
format is the same as is read by other Fortran MD codes. Aside from
blank and comment lines (start with #) which can appear anywhere, each
line has one of the following forms. Each line can also have a
trailing comment (starting with #) which is ignored.
keyword = value
keyword(I) = value
keyword(I,J) = value
keyword(I,J,K) = value :pre
The recognized keywords are as follows:
Ec, alpha, rho0, delta, lattce, attrac, repuls, nn2, Cmin, Cmax, rc, delr,
augt1, gsmooth_factor, re
where
rc = cutoff radius for cutoff function; default = 4.0
delr = length of smoothing distance for cutoff function; default = 0.1
rho0(I) = relative density for element I (overwrites value
read from meamf file)
Ec(I,J) = cohesive energy of reference structure for I-J mixture
delta(I,J) = heat of formation for I-J alloy; if Ec_IJ is input as
zero, then LAMMPS sets Ec_IJ = (Ec_II + Ec_JJ)/2 - delta_IJ
alpha(I,J) = alpha parameter for pair potential between I and J (can
be computed from bulk modulus of reference structure
re(I,J) = equilibrium distance between I and J in the reference
structure
Cmax(I,J,K) = Cmax screening parameter when I-J pair is screened
by K (I<=J); default = 2.8
Cmin(I,J,K) = Cmin screening parameter when I-J pair is screened
by K (I<=J); default = 2.0
lattce(I,J) = lattice structure of I-J reference structure:
dia = diamond (interlaced fcc for alloy)
fcc = face centered cubic
bcc = body centered cubic
dim = dimer
b1 = rock salt (NaCl structure)
hcp = hexagonal close-packed
c11 = MoSi2 structure
l12 = Cu3Au structure (lower case L, followed by 12)
b2 = CsCl structure (interpenetrating simple cubic)
nn2(I,J) = turn on second-nearest neighbor MEAM formulation for
I-J pair (see for example "(Lee)"_#Lee).
0 = second-nearest neighbor formulation off
1 = second-nearest neighbor formulation on
default = 0
attrac(I,J) = additional cubic attraction term in Rose energy I-J pair potential
default = 0
repuls(I,J) = additional cubic repulsive term in Rose energy I-J pair potential
default = 0
zbl(I,J) = blend the MEAM I-J pair potential with the ZBL potential for small
atom separations "(ZBL)"_#ZBL
default = 1
gsmooth_factor = factor determining the length of the G-function smoothing
region; only significant for ibar=0 or ibar=4.
99.0 = short smoothing region, sharp step
0.5 = long smoothing region, smooth step
default = 99.0
augt1 = integer flag for whether to augment t1 parameter by
3/5*t3 to account for old vs. new meam formulations;
0 = don't augment t1
1 = augment t1
default = 1
ialloy = integer flag to use alternative averaging rule for t parameters,
for comparison with the DYNAMO MEAM code
0 = standard averaging (matches ialloy=0 in DYNAMO)
1 = alternative averaging (matches ialloy=1 in DYNAMO)
2 = no averaging of t (use single-element values)
default = 0
mixture_ref_t = integer flag to use mixture average of t to compute the background
reference density for alloys, instead of the single-element values
(see description and warning elsewhere in this doc page)
0 = do not use mixture averaging for t in the reference density
1 = use mixture averaging for t in the reference density
default = 0
erose_form = integer value to select the form of the Rose energy function
(see description below).
default = 0
emb_lin_neg = integer value to select embedding function for negative densities
0 = F(rho)=0
1 = F(rho) = -asub*esub*rho (linear in rho, matches DYNAMO)
default = 0
bkgd_dyn = integer value to select background density formula
0 = rho_bkgd = rho_ref_meam(a) (as in the reference structure)
1 = rho_bkgd = rho0_meam(a)*Z_meam(a) (matches DYNAMO)
default = 0 :pre
Rc, delr, re are in distance units (Angstroms in the case of metal
units). Ec and delta are in energy units (eV in the case of metal
units).
Each keyword represents a quantity which is either a scalar, vector,
2d array, or 3d array and must be specified with the correct
corresponding array syntax. The indices I,J,K each run from 1 to N
where N is the number of MEAM elements being used.
Thus these lines
rho0(2) = 2.25
alpha(1,2) = 4.37 :pre
set rho0 for the 2nd element to the value 2.25 and set alpha for the
alloy interaction between elements 1 and 2 to 4.37.
The augt1 parameter is related to modifications in the MEAM
formulation of the partial electron density function. In recent
literature, an extra term is included in the expression for the
third-order density in order to make the densities orthogonal (see for
example "(Wang)"_#Wang, equation 3d); this term is included in the
MEAM implementation in lammps. However, in earlier published work
this term was not included when deriving parameters, including most of
those provided in the library.meam file included with lammps, and to
account for this difference the parameter t1 must be augmented by
3/5*t3. If augt1=1, the default, this augmentation is done
automatically. When parameter values are fit using the modified
density function, as in more recent literature, augt1 should be set to
0.
The mixture_ref_t parameter is available to match results with those
of previous versions of lammps (before January 2011). Newer versions
of lammps, by default, use the single-element values of the t
parameters to compute the background reference density. This is the
proper way to compute these parameters. Earlier versions of lammps
used an alloy mixture averaged value of t to compute the background
reference density. Setting mixture_ref_t=1 gives the old behavior.
WARNING: using mixture_ref_t=1 will give results that are demonstrably
incorrect for second-neighbor MEAM, and non-standard for
first-neighbor MEAM; this option is included only for matching with
previous versions of lammps and should be avoided if possible.
The parameters attrac and repuls, along with the integer selection
parameter erose_form, can be used to modify the Rose energy function
used to compute the pair potential. This function gives the energy of
the reference state as a function of interatomic spacing. The form of
this function is:
astar = alpha * (r/re - 1.d0)
if erose_form = 0: erose = -Ec*(1+astar+a3*(astar**3)/(r/re))*exp(-astar)
if erose_form = 1: erose = -Ec*(1+astar+(-attrac+repuls/r)*(astar**3))*exp(-astar)
if erose_form = 2: erose = -Ec*(1 +astar + a3*(astar**3))*exp(-astar)
a3 = repuls, astar < 0
a3 = attrac, astar >= 0 :pre
Most published MEAM parameter sets use the default values attrac=repulse=0.
Setting repuls=attrac=delta corresponds to the form used in several
recent published MEAM parameter sets, such as "(Vallone)"_#Vallone
NOTE: The default form of the erose expression in LAMMPS was corrected
in March 2009. The current version is correct, but may show different
behavior compared with earlier versions of lammps with the attrac
and/or repuls parameters are non-zero. To obtain the previous default
form, use erose_form = 1 (this form does not seem to appear in the
literature). An alternative form (see e.g. "(Lee2)"_#Lee2) is
available using erose_form = 2.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS with
user-specifiable parameters as described above. You never need to
specify a pair_coeff command with I != J arguments for this style.
This pair style does not support the "pair_modify"_pair_modify.html
shift, table, and tail options.
This pair style does not write its information to "binary restart
files"_restart.html, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
This style is part of the "meam" package. It is only enabled if
LAMMPS was built with that package, which also requires the MEAM
library be built and linked with LAMMPS. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"pair_coeff"_pair_coeff.html, "pair_style eam"_pair_eam.html
[Default:] none
:line
:link(Baskes)
[(Baskes)] Baskes, Phys Rev B, 46, 2727-2742 (1992).
:link(Gullet)
[(Gullet)] Gullet, Wagner, Slepoy, SANDIA Report 2003-8782 (2003).
This report may be accessed on-line via "this link"_sandreport.
:link(sandreport,http://infoserve.sandia.gov/sand_doc/2003/038782.pdf)
:link(Lee)
[(Lee)] Lee, Baskes, Phys. Rev. B, 62, 8564-8567 (2000).
:link(Lee2)
[(Lee2)] Lee, Baskes, Kim, Cho. Phys. Rev. B, 64, 184102 (2001).
:link(Valone)
[(Valone)] Valone, Baskes, Martin, Phys. Rev. B, 73, 214209 (2006).
:link(Wang)
[(Wang)] Wang, Van Hove, Ross, Baskes, J. Chem. Phys., 121, 5410 (2004).
:link(ZBL)
[(ZBL)] J.F. Ziegler, J.P. Biersack, U. Littmark, 'Stopping and Ranges
of Ions in Matter' Vol 1, 1985, Pergamon Press.
diff --git a/doc/pair_morse.html b/doc/pair_morse.html
index df60fd0b3..8aaf1b4de 100644
--- a/doc/pair_morse.html
+++ b/doc/pair_morse.html
@@ -1,111 +1,111 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style morse command
</H3>
<H3>pair_style morse/cuda command
</H3>
<H3>pair_style morse/gpu command
</H3>
<H3>pair_style morse/opt command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style morse cutoff
</PRE>
<UL><LI>cutoff = global cutoff for Morse interactions (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style morse 2.5
pair_coeff * * 100.0 2.0 1.5
pair_coeff 1 1 100.0 2.0 1.5 3.0
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>morse</I> computes pairwise interactions with the formula
</P>
<CENTER><IMG SRC = "Eqs/pair_morse.jpg">
</CENTER>
<P>Rc is the cutoff.
</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:
</P>
<UL><LI>D0 (energy units)
<LI>alpha (1/distance units)
<LI>r0 (distance units)
<LI>cutoff (distance units)
</UL>
<P>The last coefficient is optional. If not specified, the global morse
cutoff is used.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>None of these pair styles support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
</P>
<P>All of these pair styles support the <A HREF = "pair_modify.html">pair_modify</A>
shift option for the energy of the pair interaction.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table options is not relevant for
the Morse pair styles.
</P>
<P>None of these pair styles support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure.
</P>
<P>All of these pair styles write their information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>These pair styles can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. They do not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/pair_morse.txt b/doc/pair_morse.txt
index f650489fc..d6f8a6fd3 100644
--- a/doc/pair_morse.txt
+++ b/doc/pair_morse.txt
@@ -1,103 +1,103 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style morse command :h3
pair_style morse/cuda command :h3
pair_style morse/gpu command :h3
pair_style morse/opt command :h3
[Syntax:]
pair_style morse cutoff :pre
cutoff = global cutoff for Morse interactions (distance units) :ul
[Examples:]
pair_style morse 2.5
pair_coeff * * 100.0 2.0 1.5
pair_coeff 1 1 100.0 2.0 1.5 3.0 :pre
[Description:]
Style {morse} computes pairwise interactions with the formula
:c,image(Eqs/pair_morse.jpg)
Rc is the cutoff.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
D0 (energy units)
alpha (1/distance units)
r0 (distance units)
cutoff (distance units) :ul
The last coefficient is optional. If not specified, the global morse
cutoff is used.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
None of these pair styles support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
All of these pair styles support the "pair_modify"_pair_modify.html
shift option for the energy of the pair interaction.
The "pair_modify"_pair_modify.html table options is not relevant for
the Morse pair styles.
None of these pair styles support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure.
All of these pair styles write their information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
These pair styles can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. They do not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:] none
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
diff --git a/doc/pair_peri.html b/doc/pair_peri.html
index f29a7d094..b119d01a0 100644
--- a/doc/pair_peri.html
+++ b/doc/pair_peri.html
@@ -1,129 +1,130 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style peri/pmb command
</H3>
<H3>pair_style peri/lps command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style
</PRE>
<UL><LI>style = <I>peri/pmb</I> or <I>peri/lps</I>
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style peri/pmb
pair_coeff * * 1.6863e22 0.0015001 0.0005 0.25
</PRE>
<PRE>pair_style peri/lps
pair_coeff * * 14.9e9 14.9e9 0.0015001 0.0005 0.25
</PRE>
<P><B>Description:</B>
</P>
<P>The peridynamic pair styles implement material models that can be used
at the mescscopic and macroscopic scales.
</P>
<P>Style <I>peri/pmb</I> implements the Peridynamic bond-based prototype
microelastic brittle (PMB) model.
</P>
<P>Style <I>peri/lps</I> implements the Peridynamic state-based linear
peridynamic solid (LPS) model.
</P>
<P>The canonical papers on Peridynamics are <A HREF = "#Silling2000">(Silling 2000)</A>
and <A HREF = "#Silling2007">(Silling 2007)</A>. The implementation of Peridynamics
in LAMMPS is described in <A HREF = "#Parks">(Parks)</A>. Also see the <A HREF = "http://www.sandia.gov/~mlparks/papers/PDLAMMPS.pdf">PDLAMMPS
user guide</A> for
more details about the implementation of peridynamics in LAMMPS.
</P>
<P>The following coefficients must be defined for each pair of atom 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>
<P>For the <I>peri/pmb</I> style:
</P>
<UL><LI>c (energy/distance/volume^2 units)
<LI>horizon (distance units)
<LI>s00 (unitless)
<LI>alpha (unitless)
</UL>
<P>C is the effectively a spring constant for Peridynamic bonds, the
horizon is a cutoff distance for truncating interactions, and s00 and
alpha are used as a bond breaking criteria. The units of c are such
that c/distance = stiffness/volume^2, where stiffness is
energy/distance^2 and volume is distance^3. See the users guide for
more details.
</P>
<P>For the <I>peri/lps</I> style:
</P>
<UL><LI>K (force/area units)
<LI>G (force/area units)
<LI>horizon (distance units)
<LI>s00 (unitless)
<LI>alpha (unitless)
</UL>
<P>K is the bulk modulus and G is the shear modulus. The horizon is a
cutoff distance for truncating interactions, and s00 and alpha are
used as a bond breaking criteria. See the users guide for more
details.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>These pair styles do not support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
</P>
<P>These pair styles do not support the <A HREF = "pair_modify.html">pair_modify</A>
shift option.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table and tail options are not
relevant for these pair styles.
</P>
<P>These pair styles write their information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>These pair styles can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. They do not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>The <I>peri/pmb</I> and <I>peri/lps</I> styles are part of the "peri"
package. They are only enabled if LAMMPS was built with that package.
-See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for more info.
+See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section for more
+info.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Parks"></A>
<P><B>(Parks)</B> Parks, Lehoucq, Plimpton, Silling, Comp Phys Comm, 179(11), 777-783 (2008).
</P>
<A NAME = "Silling2000"></A>
<P><B>(Silling 2000)</B> Silling, J Mech Phys Solids, 48, 175-209 (2000).
</P>
<A NAME = "Silling2007"></A>
<P><B>(Silling 2007)</B> Silling, Epton, Weckner, Xu, Askari, J Elasticity, 88, 151-184 (2007).
</P>
</HTML>
diff --git a/doc/pair_peri.txt b/doc/pair_peri.txt
index 5dd59a2af..3a7747794 100644
--- a/doc/pair_peri.txt
+++ b/doc/pair_peri.txt
@@ -1,120 +1,121 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style peri/pmb command :h3
pair_style peri/lps command :h3
[Syntax:]
pair_style style :pre
style = {peri/pmb} or {peri/lps} :ul
[Examples:]
pair_style peri/pmb
pair_coeff * * 1.6863e22 0.0015001 0.0005 0.25 :pre
pair_style peri/lps
pair_coeff * * 14.9e9 14.9e9 0.0015001 0.0005 0.25 :pre
[Description:]
The peridynamic pair styles implement material models that can be used
at the mescscopic and macroscopic scales.
Style {peri/pmb} implements the Peridynamic bond-based prototype
microelastic brittle (PMB) model.
Style {peri/lps} implements the Peridynamic state-based linear
peridynamic solid (LPS) model.
The canonical papers on Peridynamics are "(Silling 2000)"_#Silling2000
and "(Silling 2007)"_#Silling2007. The implementation of Peridynamics
in LAMMPS is described in "(Parks)"_#Parks. Also see the "PDLAMMPS
user guide"_http://www.sandia.gov/~mlparks/papers/PDLAMMPS.pdf for
more details about the implementation of peridynamics in LAMMPS.
The following coefficients must be defined for each pair of atom types
via the "pair_coeff"_pair_coeff.html command as in the examples above,
or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below.
For the {peri/pmb} style:
c (energy/distance/volume^2 units)
horizon (distance units)
s00 (unitless)
alpha (unitless) :ul
C is the effectively a spring constant for Peridynamic bonds, the
horizon is a cutoff distance for truncating interactions, and s00 and
alpha are used as a bond breaking criteria. The units of c are such
that c/distance = stiffness/volume^2, where stiffness is
energy/distance^2 and volume is distance^3. See the users guide for
more details.
For the {peri/lps} style:
K (force/area units)
G (force/area units)
horizon (distance units)
s00 (unitless)
alpha (unitless) :ul
K is the bulk modulus and G is the shear modulus. The horizon is a
cutoff distance for truncating interactions, and s00 and alpha are
used as a bond breaking criteria. See the users guide for more
details.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
These pair styles do not support mixing. Thus, coefficients for all
I,J pairs must be specified explicitly.
These pair styles do not support the "pair_modify"_pair_modify.html
shift option.
The "pair_modify"_pair_modify.html table and tail options are not
relevant for these pair styles.
These pair styles write their information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
These pair styles can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. They do not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
The {peri/pmb} and {peri/lps} styles are part of the "peri"
package. They are only enabled if LAMMPS was built with that package.
-See the "Making LAMMPS"_Section_start.html#2_3 section for more info.
+See the "Making LAMMPS"_Section_start.html#start_3 section for more
+info.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Parks)
[(Parks)] Parks, Lehoucq, Plimpton, Silling, Comp Phys Comm, 179(11), 777-783 (2008).
:link(Silling2000)
[(Silling 2000)] Silling, J Mech Phys Solids, 48, 175-209 (2000).
:link(Silling2007)
[(Silling 2007)] Silling, Epton, Weckner, Xu, Askari, J Elasticity, 88, 151-184 (2007).
diff --git a/doc/pair_reax_c.html b/doc/pair_reax_c.html
index 8d4fabb38..94c3e5322 100644
--- a/doc/pair_reax_c.html
+++ b/doc/pair_reax_c.html
@@ -1,275 +1,280 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style reax/c command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style reax/c cfile keyword value
</PRE>
<UL><LI>cfile = NULL or name of a control file
</UL>
<PRE>one keyword value pair may be appended
keyword = <I>checkqeq</I>
<I>checkqeq</I> value = <I>yes</I> or <I>no</I> = whether or not to require qeq/reax fix
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style reax/c NULL
pair_style reax/c controlfile checkqeq no
pair_coeff * * ffield.reax 1 2 2 3
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>reax/c</I> computes the ReaxFF potential of van Duin, Goddard and
co-workers. ReaxFF uses distance-dependent bond-order functions to
represent the contributions of chemical bonding to the potential
energy. There is more than one version of ReaxFF. The version
implemented in LAMMPS uses the functional forms documented in the
supplemental information of the following paper: <A HREF = "#Chenoweth_2008">(Chenoweth et al.,
2008)</A>. The version integrated into LAMMPS matches
-the most up-to-date version of ReaxFF as of summer 2010.
+the most up-to-date version of ReaxFF as of summer 2010. For more
+technical details about the pair reax/c implementation of ReaxFF, see
+the "(Aktulga)" paper.
</P>
<P>The <I>reax/c</I> style differs from the <A HREF = "pair_reax.html">pair_style reax</A>
command in the lo-level implementation details. The <I>reax</I> style is a
Fortran library, linked to LAMMPS. The <I>reax/c</I> style was initially
implemented as stand-alone C code and is now integrated into LAMMPS as
a package.
</P>
<P>LAMMPS provides several different versions of ffield.reax in its
potentials dir, each called potentials/ffield.reax.label. These are
documented in potentials/README.reax. The default ffield.reax
contains parameterizations for the following elements: C, H, O, N, S.
</P>
<P>The format of these files is identical to that used originally by van
Duin. We have tested the accuracy of <I>pair_style reax/c</I> potential
against the original ReaxFF code for the systems mentioned above. You
can use other ffield files for specific chemical systems that may be
available elsewhere (but note that their accuracy may not have been
tested).
</P>
<P>The <I>cfile</I> setting can be specified as NULL, in which case default
settings are used. Or a control file can be specified which contains
cutoff values for the ReaxFF potential in addition to some performance
and output controls. Each line in the control specifies the value for
a control variable. The format of the control file is described
below.
</P>
<P>Two examples using <I>pair_style reax/c</I> are provided in the examples/reax
sub-directory, along with corresponding examples for
<A HREF = "pair_reax.html">pair_style reax</A>.
</P>
<P>Use of this pair style requires that a charge be defined for every
atom. See the <A HREF = "atom_style.html">atom_style</A> and
<A HREF = "read_data.html">read_data</A> commands for details on how to specify
charges.
</P>
<P>The ReaxFF parameter files provided were created using a charge
equilibration (QEq) model for handling the electrostatic interactions.
Therefore, by default, LAMMPS requires that the <A HREF = "fix_qeq_reax.html">fix
qeq/reax</A> command be used with <I>pair_style reax/c</I>
when simulating a ReaxFF model, to equilibrate charge each timestep.
Using the keyword <I>checkqeq</I> with the value <I>no</I>
turns off the check for <I>fix qeq/reax</I>,
allowing a simulation to be run without charge equilibration.
In this case, the static charges you
assign to each atom will be used for computing the electrostatic
interactions in the system.
See the <A HREF = "fix_qeq_reax.html">fix qeq/reax</A> command for details.
</P>
<P>The thermo variable <I>evdwl</I> stores the sum of all the ReaxFF potential
energy contributions, with the exception of the Coulombic and charge
equilibration contributions which are stored in the thermo variable
<I>ecoul</I>. The output of these quantities is controlled by the
<A HREF = "thermo.html">thermo</A> command.
</P>
<P>This pair style tallies a breakdown of the total ReaxFF potential
energy into sub-categories, which can be accessed via the <A HREF = "compute_pair.html">compute
pair</A> command as a vector of values of length 14.
The 14 values correspond to the following sub-categories (the variable
names in italics match those used in the original FORTRAN ReaxFF code):
</P>
<OL><LI><I>eb</I> = bond energy
<LI><I>ea</I> = atom energy
<LI><I>elp</I> = lone-pair energy
<LI><I>emol</I> = molecule energy (always 0.0)
<LI><I>ev</I> = valence angle energy
<LI><I>epen</I> = double-bond valence angle penalty
<LI><I>ecoa</I> = valence angle conjugation energy
<LI><I>ehb</I> = hydrogen bond energy
<LI><I>et</I> = torsion energy
<LI><I>eco</I> = conjugation energy
<LI><I>ew</I> = van der Waals energy
<LI><I>ep</I> = Coulomb energy
<LI><I>efi</I> = electric field energy (always 0.0)
<LI><I>eqeq</I> = charge equilibration energy
</OL>
<P>To print these quantities to the log file (with descriptive column
headings) the following commands could be included in an input script:
</P>
<PRE>compute reax all pair reax/c
variable eb equal c_reax[1]
variable ea equal c_reax[2]
...
variable eqeq equal c_reax[14]
thermo_style custom step temp epair v_eb v_ea ... v_eqeq
</PRE>
<P>Only a single pair_coeff command is used with the <I>reax/c</I> style which
specifies a ReaxFF potential file with parameters for all needed
elements. These are mapped to LAMMPS atom types by specifying N
additional arguments after the filename in the pair_coeff command,
where N is the number of LAMMPS atom types:
</P>
<UL><LI>filename
<LI>N indices = mapping of ReaxFF elements to atom types
</UL>
<P>The filename is the ReaxFF potential file. Unlike for the <I>reax</I>
pair style, any filename can be used.
</P>
<P>In the ReaxFF potential file, near the top, after the general
parameters, is the atomic parameters section that contains element
names, each with a couple dozen numeric parameters. If there are M
elements specified in the <I>ffield</I> file, think of these as numbered 1
to M. Each of the N indices you specify for the N atom types of LAMMPS
atoms must be an integer from 1 to M. Atoms with LAMMPS type 1 will
be mapped to whatever element you specify as the first index value,
etc. If a mapping value is specified as NULL, the mapping is not
performed. This can be used when the <I>reax/c</I> style is used as part
of the <I>hybrid</I> pair style. The NULL values are placeholders for atom
types that will be used with other potentials.
</P>
<P>IMPORTANT NOTE: Currently the reax/c pair style cannot be used as part
of the <I>hybrid</I> pair style. Some additional work still need to be
done to enable this.
</P>
<P>As an example, say your LAMMPS simulation has 4 atom types and the
elements are ordered as C, H, O, N in the <I>ffield</I> file. If you want
the LAMMPS atom type 1 and 2 to be C, type 3 to be N, and type 4 to be
H, you would use the following pair_coeff command:
</P>
<PRE>pair_coeff * * ffield.reax 1 1 4 2
</PRE>
<HR>
<P>The format of a line in the control file is as follows:
</P>
<PRE>variable_name value
</PRE>
<P>and it may be followed by an "!" character and a trailing comment.
</P>
<P>If the value of a control variable is not specified, then default
values are used. What follows is the list of variables along with a
brief description of their use and default values.
</P>
<P>simulation_name: Output files produced by <I>pair_style reax/c</I> carry
this name + extensions specific to their contents. Partial energies
are reported with a ".pot" extension, while the trajectory file has
".trj" extension.
</P>
<P>tabulate_long_range: To improve performance, long range interactions
can optionally be tabulated (0 means no tabulation). Value of this
variable denotes the size of the long range interaction table. The
range from 0 to long range cutoff (defined in the <I>ffield</I> file) is
divided into <I>tabulate_long_range</I> points. Then at the start of
simulation, we fill in the entries of the long range interaction table
by computing the energies and forces resulting from van der Waals and
Coulomb interactions between every possible atom type pairs present in
the input system. During the simulation we consult to the long range
interaction table to estimate the energy and forces between a pair of
atoms. Linear interpolation is used for estimation. (default value =
0)
</P>
<P>energy_update_freq: Denotes the frequency (in number of steps) of
writes into the partial energies file. (default value = 0)
</P>
<P>nbrhood_cutoff: Denotes the near neighbors cutoff (in Angstroms)
regarding the bonded interactions. (default value = 4)
</P>
<P>hbond_cutoff: Denotes the cutoff distance (in Angstroms) for hydrogen
bond interactions.(default value = 0 - means no hydrogen bonds are
present)
</P>
<P>bond_graph_cutoff: is the threshold used in determining what is a
physical bond, what is not. Bonds and angles reported in the
trajectory file rely on this cutoff. (default value = 0.3)
</P>
<P>thb_cutoff: cutoff value for the strength of bonds to be considered in
three body interactions. (default value = 0.001)
</P>
<P>write_freq: Frequency of writes into the trajectory file. (default
value = 0)
</P>
<P>traj_title: Title of the trajectory - not the name of the trajectory
file.
</P>
<P>atom_info: 1 means print only atomic positions + charge (default = 0)
</P>
<P>atom_forces: 1 adds net forces to atom lines in the trajectory file
(default = 0)
</P>
<P>atom_velocities: 1 adds atomic velocities to atoms line (default = 0)
</P>
<P>bond_info: 1 prints bonds in the trajectory file (default = 0)
</P>
<P>angle_info: 1 prints angles in the trajectory file (default = 0)
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
mix, shift, table, and tail options.
</P>
<P>This pair style does not write its information to <A HREF = "restart.html">binary restart
files</A>, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<P><B>Restrictions:</B>
</P>
<P>This pair style is part of the "user-reaxc" package. It is only
-enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+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 ReaxFF potential files provided with LAMMPS in the potentials
directory are parameterized for real <A HREF = "units.html">units</A>. You can use
the ReaxFF potential with any LAMMPS units, but you would need to
create your own potential file with coefficients listed in the
appropriate units if your simulation doesn't use "real" units.
</P>
<P>This pair style cannot yet compute per-atom energy or stress. If you
use another command that tries to calculate these quantities using
this pair style, a warning message will be printed and the quantities
will be 0.0.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "fix_qeq_reax.html">fix_qeq_reax</A>,
<A HREF = "pair_reax.html">pair_style reax</A>
</P>
<P><B>Default:</B>
</P>
<P>The keyword default is checkqeq = yes.
</P>
<HR>
<A NAME = "Chenoweth_2008"></A>
<P><B>(Chenoweth_2008)</B> Chenoweth, van Duin and Goddard,
Journal of Physical Chemistry A, 112, 1040-1053 (2008).
</P>
+<P>:link(Aktulga) <B>(Aktulga)</B> Aktulga, Fogarty, Pandit, Grama, Parallel
+Computing, to appear (2011).
+</P>
</HTML>
diff --git a/doc/pair_reax_c.txt b/doc/pair_reax_c.txt
index 4fde669ed..5c4c16433 100644
--- a/doc/pair_reax_c.txt
+++ b/doc/pair_reax_c.txt
@@ -1,268 +1,273 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style reax/c command :h3
[Syntax:]
pair_style reax/c cfile keyword value :pre
cfile = NULL or name of a control file :ul
one keyword value pair may be appended
keyword = {checkqeq}
{checkqeq} value = {yes} or {no} = whether or not to require qeq/reax fix :pre
:ule
[Examples:]
pair_style reax/c NULL
pair_style reax/c controlfile checkqeq no
pair_coeff * * ffield.reax 1 2 2 3 :pre
[Description:]
Style {reax/c} computes the ReaxFF potential of van Duin, Goddard and
co-workers. ReaxFF uses distance-dependent bond-order functions to
represent the contributions of chemical bonding to the potential
energy. There is more than one version of ReaxFF. The version
implemented in LAMMPS uses the functional forms documented in the
supplemental information of the following paper: "(Chenoweth et al.,
2008)"_#Chenoweth_2008. The version integrated into LAMMPS matches
-the most up-to-date version of ReaxFF as of summer 2010.
+the most up-to-date version of ReaxFF as of summer 2010. For more
+technical details about the pair reax/c implementation of ReaxFF, see
+the "(Aktulga)" paper.
The {reax/c} style differs from the "pair_style reax"_pair_reax.html
command in the lo-level implementation details. The {reax} style is a
Fortran library, linked to LAMMPS. The {reax/c} style was initially
implemented as stand-alone C code and is now integrated into LAMMPS as
a package.
LAMMPS provides several different versions of ffield.reax in its
potentials dir, each called potentials/ffield.reax.label. These are
documented in potentials/README.reax. The default ffield.reax
contains parameterizations for the following elements: C, H, O, N, S.
The format of these files is identical to that used originally by van
Duin. We have tested the accuracy of {pair_style reax/c} potential
against the original ReaxFF code for the systems mentioned above. You
can use other ffield files for specific chemical systems that may be
available elsewhere (but note that their accuracy may not have been
tested).
The {cfile} setting can be specified as NULL, in which case default
settings are used. Or a control file can be specified which contains
cutoff values for the ReaxFF potential in addition to some performance
and output controls. Each line in the control specifies the value for
a control variable. The format of the control file is described
below.
Two examples using {pair_style reax/c} are provided in the examples/reax
sub-directory, along with corresponding examples for
"pair_style reax"_pair_reax.html.
Use of this pair style requires that a charge be defined for every
atom. See the "atom_style"_atom_style.html and
"read_data"_read_data.html commands for details on how to specify
charges.
The ReaxFF parameter files provided were created using a charge
equilibration (QEq) model for handling the electrostatic interactions.
Therefore, by default, LAMMPS requires that the "fix
qeq/reax"_fix_qeq_reax.html command be used with {pair_style reax/c}
when simulating a ReaxFF model, to equilibrate charge each timestep.
Using the keyword {checkqeq} with the value {no}
turns off the check for {fix qeq/reax},
allowing a simulation to be run without charge equilibration.
In this case, the static charges you
assign to each atom will be used for computing the electrostatic
interactions in the system.
See the "fix qeq/reax"_fix_qeq_reax.html command for details.
The thermo variable {evdwl} stores the sum of all the ReaxFF potential
energy contributions, with the exception of the Coulombic and charge
equilibration contributions which are stored in the thermo variable
{ecoul}. The output of these quantities is controlled by the
"thermo"_thermo.html command.
This pair style tallies a breakdown of the total ReaxFF potential
energy into sub-categories, which can be accessed via the "compute
pair"_compute_pair.html command as a vector of values of length 14.
The 14 values correspond to the following sub-categories (the variable
names in italics match those used in the original FORTRAN ReaxFF code):
{eb} = bond energy
{ea} = atom energy
{elp} = lone-pair energy
{emol} = molecule energy (always 0.0)
{ev} = valence angle energy
{epen} = double-bond valence angle penalty
{ecoa} = valence angle conjugation energy
{ehb} = hydrogen bond energy
{et} = torsion energy
{eco} = conjugation energy
{ew} = van der Waals energy
{ep} = Coulomb energy
{efi} = electric field energy (always 0.0)
{eqeq} = charge equilibration energy :ol
To print these quantities to the log file (with descriptive column
headings) the following commands could be included in an input script:
compute reax all pair reax/c
variable eb equal c_reax\[1\]
variable ea equal c_reax\[2\]
...
variable eqeq equal c_reax\[14\]
thermo_style custom step temp epair v_eb v_ea ... v_eqeq :pre
Only a single pair_coeff command is used with the {reax/c} style which
specifies a ReaxFF potential file with parameters for all needed
elements. These are mapped to LAMMPS atom types by specifying N
additional arguments after the filename in the pair_coeff command,
where N is the number of LAMMPS atom types:
filename
N indices = mapping of ReaxFF elements to atom types :ul
The filename is the ReaxFF potential file. Unlike for the {reax}
pair style, any filename can be used.
In the ReaxFF potential file, near the top, after the general
parameters, is the atomic parameters section that contains element
names, each with a couple dozen numeric parameters. If there are M
elements specified in the {ffield} file, think of these as numbered 1
to M. Each of the N indices you specify for the N atom types of LAMMPS
atoms must be an integer from 1 to M. Atoms with LAMMPS type 1 will
be mapped to whatever element you specify as the first index value,
etc. If a mapping value is specified as NULL, the mapping is not
performed. This can be used when the {reax/c} style is used as part
of the {hybrid} pair style. The NULL values are placeholders for atom
types that will be used with other potentials.
IMPORTANT NOTE: Currently the reax/c pair style cannot be used as part
of the {hybrid} pair style. Some additional work still need to be
done to enable this.
As an example, say your LAMMPS simulation has 4 atom types and the
elements are ordered as C, H, O, N in the {ffield} file. If you want
the LAMMPS atom type 1 and 2 to be C, type 3 to be N, and type 4 to be
H, you would use the following pair_coeff command:
pair_coeff * * ffield.reax 1 1 4 2 :pre
:line
The format of a line in the control file is as follows:
variable_name value :pre
and it may be followed by an "!" character and a trailing comment.
If the value of a control variable is not specified, then default
values are used. What follows is the list of variables along with a
brief description of their use and default values.
simulation_name: Output files produced by {pair_style reax/c} carry
this name + extensions specific to their contents. Partial energies
are reported with a ".pot" extension, while the trajectory file has
".trj" extension.
tabulate_long_range: To improve performance, long range interactions
can optionally be tabulated (0 means no tabulation). Value of this
variable denotes the size of the long range interaction table. The
range from 0 to long range cutoff (defined in the {ffield} file) is
divided into {tabulate_long_range} points. Then at the start of
simulation, we fill in the entries of the long range interaction table
by computing the energies and forces resulting from van der Waals and
Coulomb interactions between every possible atom type pairs present in
the input system. During the simulation we consult to the long range
interaction table to estimate the energy and forces between a pair of
atoms. Linear interpolation is used for estimation. (default value =
0)
energy_update_freq: Denotes the frequency (in number of steps) of
writes into the partial energies file. (default value = 0)
nbrhood_cutoff: Denotes the near neighbors cutoff (in Angstroms)
regarding the bonded interactions. (default value = 4)
hbond_cutoff: Denotes the cutoff distance (in Angstroms) for hydrogen
bond interactions.(default value = 0 - means no hydrogen bonds are
present)
bond_graph_cutoff: is the threshold used in determining what is a
physical bond, what is not. Bonds and angles reported in the
trajectory file rely on this cutoff. (default value = 0.3)
thb_cutoff: cutoff value for the strength of bonds to be considered in
three body interactions. (default value = 0.001)
write_freq: Frequency of writes into the trajectory file. (default
value = 0)
traj_title: Title of the trajectory - not the name of the trajectory
file.
atom_info: 1 means print only atomic positions + charge (default = 0)
atom_forces: 1 adds net forces to atom lines in the trajectory file
(default = 0)
atom_velocities: 1 adds atomic velocities to atoms line (default = 0)
bond_info: 1 prints bonds in the trajectory file (default = 0)
angle_info: 1 prints angles in the trajectory file (default = 0)
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
This pair style does not support the "pair_modify"_pair_modify.html
mix, shift, table, and tail options.
This pair style does not write its information to "binary restart
files"_restart.html, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
[Restrictions:]
This pair style is part of the "user-reaxc" package. It is only
enabled if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
The ReaxFF potential files provided with LAMMPS in the potentials
directory are parameterized for real "units"_units.html. You can use
the ReaxFF potential with any LAMMPS units, but you would need to
create your own potential file with coefficients listed in the
appropriate units if your simulation doesn't use "real" units.
This pair style cannot yet compute per-atom energy or stress. If you
use another command that tries to calculate these quantities using
this pair style, a warning message will be printed and the quantities
will be 0.0.
[Related commands:]
"pair_coeff"_pair_coeff.html, "fix_qeq_reax"_fix_qeq_reax.html,
"pair_style reax"_pair_reax.html
[Default:]
The keyword default is checkqeq = yes.
:line
:link(Chenoweth_2008)
[(Chenoweth_2008)] Chenoweth, van Duin and Goddard,
Journal of Physical Chemistry A, 112, 1040-1053 (2008).
+
+:link(Aktulga) [(Aktulga)] Aktulga, Fogarty, Pandit, Grama, Parallel
+Computing, to appear (2011).
diff --git a/doc/pair_resquared.html b/doc/pair_resquared.html
index 5d46cb66f..6dc4367b5 100644
--- a/doc/pair_resquared.html
+++ b/doc/pair_resquared.html
@@ -1,241 +1,241 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style resquared command
</H3>
<H3>pair_style resquared/gpu command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style resquared cutoff
</PRE>
<UL><LI>cutoff = global cutoff for interactions (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style resquared 10.0
pair_coeff * * 1.0 1.0 1.7 3.4 3.4 1.0 1.0 1.0
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>resquared</I> computes the RE-squared anisotropic interaction
<A HREF = "#Everaers">(Everaers)</A>, <A HREF = "#Babadi">(Babadi)</A> between pairs of
ellipsoidal and/or spherical Lennard-Jones particles. For ellipsoidal
interactions, the potential considers the ellipsoid as being comprised
of small spheres of size sigma. LJ particles are a single sphere of
size sigma. The distinction is made to allow the pair style to make
efficient calculations of ellipsoid/solvent interactions.
</P>
<P>Details for the equations used are given in the references below and
in <A HREF = "PDF/pair_resquared_extra.pdf">this supplementary document</A>.
</P>
<P>Use of this pair style requires the NVE, NVT, or NPT fixes with the
<I>asphere</I> extension (e.g. <A HREF = "fix_nve_asphere.html">fix nve/asphere</A>) in
order to integrate particle rotation. Additionally, <A HREF = "atom_style.html">atom_style
ellipsoid</A> should be used since it defines the
rotational state and the size and shape of each ellipsoidal particle.
</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:
</P>
<UL><LI>A12 = Energy Prefactor/Hamaker constant (energy units)
<LI>sigma = atomic interaction diameter (distance units)
<LI>epsilon_i_a = relative well depth of type I for side-to-side interactions
<LI>epsilon_i_b = relative well depth of type I for face-to-face interactions
<LI>epsilon_i_c = relative well depth of type I for end-to-end interactions
<LI>epsilon_j_a = relative well depth of type J for side-to-side interactions
<LI>epsilon_j_b = relative well depth of type J for face-to-face interactions
<LI>epsilon_j_c = relative well depth of type J for end-to-end interactions
<LI>cutoff (distance units)
</UL>
<P>The parameters used depend on the type of the interacting particles,
i.e. ellipsoids or LJ spheres. The type of a particle is determined
by the diameters specified for its 3 shape paramters. If all 3 shape
parameters = 0.0, then the particle is treated as an LJ sphere. The
epsilon_i_* or epsilon_j_* parameters are ignored for LJ spheres. If
the 3 shape paraemters are > 0.0, then the particle is treated as an
ellipsoid (even if the 3 parameters are equal to each other).
</P>
<P>A12 specifies the energy prefactor which depends on the types of the
two interacting particles.
</P>
<P>For ellipsoid/ellipsoid interactions, the interaction is computed by
the formulas in the supplementary docuement referenced above. A12 is
the Hamaker constant as described in <A HREF = "#Everaers">(Everaers)</A>. In LJ
units:
</P>
<CENTER><IMG SRC = "Eqs/pair_resquared.jpg">
</CENTER>
<P>where rho gives the number density of the spherical particles
composing the ellipsoids and epsilon_LJ determines the interaction
strength of the spherical particles.
</P>
<P>For ellipsoid/LJ sphere interactions, the interaction is also computed
by the formulas in the supplementary docuement referenced above. A12
has a modifed form (see <A HREF = "PDF/pair_resquared_extra.pdf">here</A> for
details):
</P>
<CENTER><IMG SRC = "Eqs/pair_resquared2.jpg">
</CENTER>
<P>For ellipsoid/LJ sphere interactions, a correction to the distance-
of-closest approach equation has been implemented to reduce the error
from two particles of disparate sizes; see <A HREF = "PDF/pair_resquared_extra.pdf">this supplementary
document</A>.
</P>
<P>For LJ sphere/LJ sphere interactions, the interaction is computed
using the standard Lennard-Jones formula, which is much cheaper to
compute than the ellipsoidal formulas. A12 is used as epsilon in the
standard LJ formula:
</P>
<CENTER><IMG SRC = "Eqs/pair_resquared3.jpg">
</CENTER>
<P>and the specified <I>sigma</I> is used as the sigma in the standard LJ
formula.
</P>
<P>When one of both of the interacting particles are ellipsoids, then
<I>sigma</I> specifies the diameter of the continuous distribution of
constituent particles within each ellipsoid used to model the
RE-squared potential. Note that this is a different meaning for
<I>sigma</I> than the <A HREF = "pair_gayberne.html">pair_style gayberne</A> potential
uses.
</P>
<P>The epsilon_i and epsilon_j coefficients are defined for atom types,
not for pairs of atom types. Thus, in a series of pair_coeff
commands, they only need to be specified once for each atom type.
</P>
<P>Specifically, if any of epsilon_i_a, epsilon_i_b, epsilon_i_c are
non-zero, the three values are assigned to atom type I. If all the
epsilon_i values are zero, they are ignored. If any of epsilon_j_a,
epsilon_j_b, epsilon_j_c are non-zero, the three values are assigned
to atom type J. If all three epsilon_i values are zero, they are
ignored. Thus the typical way to define the epsilon_i and epsilon_j
coefficients is to list their values in "pair_coeff I J" commands when
I = J, but set them to 0.0 when I != J. If you do list them when I !=
J, you should insure they are consistent with their values in other
pair_coeff commands.
</P>
<P>Note that if this potential is being used as a sub-style of
<A HREF = "pair_hybrid.html">pair_style hybrid</A>, and there is no "pair_coeff I I"
setting made for RE-squared for a particular type I (because I-I
interactions are computed by another hybrid pair potential), then you
still need to insure the epsilon a,b,c coefficients are assigned to
that type in a "pair_coeff I J" command.
</P>
<P>For large uniform molecules it has been shown that the epsilon_*_*
energy parameters are approximately representable in terms of local
contact curvatures <A HREF = "#Everaers">(Everaers)</A>:
</P>
<CENTER><IMG SRC = "Eqs/pair_resquared4.jpg">
</CENTER>
<P>where a, b, and c give the particle diameters.
</P>
<P>The last coefficient is optional. If not specified, the global cutoff
specified in the pair_style command is used.
</P>
<HR>
<P>Styles with a <I>cuda</I>, <I>gpu</I>, or <I>opt</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">this section</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", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A>
+those packages. 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#2_6">-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.
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_6">-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">this section</A> of the manual for more
instructions on how to use the accelerated styles effectively.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance can be mixed, but only for sphere pairs. The
default mix value is <I>geometric</I>. See the "pair_modify" command for
details. Other type pairs cannot be mixed, due to the different
meanings of the energy prefactors used to calculate the interactions
and the implicit dependence of the ellipsoid-sphere interaction on the
equation for the Hamaker constant presented here. Mixing of sigma and
epsilon followed by calculation of the energy prefactors using the
equations above is recommended.
</P>
<P>This pair styles supports the <A HREF = "pair_modify.html">pair_modify</A> shift
option for the energy of the Lennard-Jones portion of the pair
interaction, but only for sphere-sphere interactions. There is no
shifting performed for ellipsoidal interactions due to the anisotropic
dependence of the interaction.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords of the <A HREF = "run_style.html">run_style
command</A>.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This style is part of the "asphere" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>This pair style requires that atoms be ellipsoids as defined by the
<A HREF = "atom_style.html">atom_style ellipsoid</A> command.
</P>
<P>Particles acted on by the potential can be extended aspherical or
spherical particles, or point particles. Spherical particles have all
3 of their shape parameters equal to each other. Point particles have
all 3 of their shape parameters equal to 0.0.
</P>
<P>The distance-of-closest-approach approximation used by LAMMPS becomes
less accurate when high-aspect ratio ellipsoids are used.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "fix_nve_asphere.html">fix nve/asphere</A>,
<A HREF = "compute_temp_asphere.html">compute temp/asphere</A>, <A HREF = "pair_gayberne.html">pair_style
gayberne</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Everaers"></A>
<P><B>(Everaers)</B> Everaers and Ejtehadi, Phys Rev E, 67, 041710 (2003).
</P>
<A NAME = "Babadi"></A>
<P><B>(Berardi)</B> Babadi, Ejtehadi, Everaers, J Comp Phys, 219, 770-779 (2006).
</P>
</HTML>
diff --git a/doc/pair_resquared.txt b/doc/pair_resquared.txt
index dfd330c72..1315cc4e8 100755
--- a/doc/pair_resquared.txt
+++ b/doc/pair_resquared.txt
@@ -1,233 +1,233 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style resquared command :h3
pair_style resquared/gpu command :h3
[Syntax:]
pair_style resquared cutoff :pre
cutoff = global cutoff for interactions (distance units) :ul
[Examples:]
pair_style resquared 10.0
pair_coeff * * 1.0 1.0 1.7 3.4 3.4 1.0 1.0 1.0 :pre
[Description:]
Style {resquared} computes the RE-squared anisotropic interaction
"(Everaers)"_#Everaers, "(Babadi)"_#Babadi between pairs of
ellipsoidal and/or spherical Lennard-Jones particles. For ellipsoidal
interactions, the potential considers the ellipsoid as being comprised
of small spheres of size sigma. LJ particles are a single sphere of
size sigma. The distinction is made to allow the pair style to make
efficient calculations of ellipsoid/solvent interactions.
Details for the equations used are given in the references below and
in "this supplementary document"_PDF/pair_resquared_extra.pdf.
Use of this pair style requires the NVE, NVT, or NPT fixes with the
{asphere} extension (e.g. "fix nve/asphere"_fix_nve_asphere.html) in
order to integrate particle rotation. Additionally, "atom_style
ellipsoid"_atom_style.html should be used since it defines the
rotational state and the size and shape of each ellipsoidal particle.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
A12 = Energy Prefactor/Hamaker constant (energy units)
sigma = atomic interaction diameter (distance units)
epsilon_i_a = relative well depth of type I for side-to-side interactions
epsilon_i_b = relative well depth of type I for face-to-face interactions
epsilon_i_c = relative well depth of type I for end-to-end interactions
epsilon_j_a = relative well depth of type J for side-to-side interactions
epsilon_j_b = relative well depth of type J for face-to-face interactions
epsilon_j_c = relative well depth of type J for end-to-end interactions
cutoff (distance units) :ul
The parameters used depend on the type of the interacting particles,
i.e. ellipsoids or LJ spheres. The type of a particle is determined
by the diameters specified for its 3 shape paramters. If all 3 shape
parameters = 0.0, then the particle is treated as an LJ sphere. The
epsilon_i_* or epsilon_j_* parameters are ignored for LJ spheres. If
the 3 shape paraemters are > 0.0, then the particle is treated as an
ellipsoid (even if the 3 parameters are equal to each other).
A12 specifies the energy prefactor which depends on the types of the
two interacting particles.
For ellipsoid/ellipsoid interactions, the interaction is computed by
the formulas in the supplementary docuement referenced above. A12 is
the Hamaker constant as described in "(Everaers)"_#Everaers. In LJ
units:
:c,image(Eqs/pair_resquared.jpg)
where rho gives the number density of the spherical particles
composing the ellipsoids and epsilon_LJ determines the interaction
strength of the spherical particles.
For ellipsoid/LJ sphere interactions, the interaction is also computed
by the formulas in the supplementary docuement referenced above. A12
has a modifed form (see "here"_PDF/pair_resquared_extra.pdf for
details):
:c,image(Eqs/pair_resquared2.jpg)
For ellipsoid/LJ sphere interactions, a correction to the distance-
of-closest approach equation has been implemented to reduce the error
from two particles of disparate sizes; see "this supplementary
document"_PDF/pair_resquared_extra.pdf.
For LJ sphere/LJ sphere interactions, the interaction is computed
using the standard Lennard-Jones formula, which is much cheaper to
compute than the ellipsoidal formulas. A12 is used as epsilon in the
standard LJ formula:
:c,image(Eqs/pair_resquared3.jpg)
and the specified {sigma} is used as the sigma in the standard LJ
formula.
When one of both of the interacting particles are ellipsoids, then
{sigma} specifies the diameter of the continuous distribution of
constituent particles within each ellipsoid used to model the
RE-squared potential. Note that this is a different meaning for
{sigma} than the "pair_style gayberne"_pair_gayberne.html potential
uses.
The epsilon_i and epsilon_j coefficients are defined for atom types,
not for pairs of atom types. Thus, in a series of pair_coeff
commands, they only need to be specified once for each atom type.
Specifically, if any of epsilon_i_a, epsilon_i_b, epsilon_i_c are
non-zero, the three values are assigned to atom type I. If all the
epsilon_i values are zero, they are ignored. If any of epsilon_j_a,
epsilon_j_b, epsilon_j_c are non-zero, the three values are assigned
to atom type J. If all three epsilon_i values are zero, they are
ignored. Thus the typical way to define the epsilon_i and epsilon_j
coefficients is to list their values in "pair_coeff I J" commands when
I = J, but set them to 0.0 when I != J. If you do list them when I !=
J, you should insure they are consistent with their values in other
pair_coeff commands.
Note that if this potential is being used as a sub-style of
"pair_style hybrid"_pair_hybrid.html, and there is no "pair_coeff I I"
setting made for RE-squared for a particular type I (because I-I
interactions are computed by another hybrid pair potential), then you
still need to insure the epsilon a,b,c coefficients are assigned to
that type in a "pair_coeff I J" command.
For large uniform molecules it has been shown that the epsilon_*_*
energy parameters are approximately representable in terms of local
contact curvatures "(Everaers)"_#Everaers:
:c,image(Eqs/pair_resquared4.jpg)
where a, b, and c give the particle diameters.
The last coefficient is optional. If not specified, the global cutoff
specified in the pair_style command is used.
:line
Styles with a {cuda}, {gpu}, or {opt} 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 "this section"_Section_accelerate.html of the manual.
The accelerated styles take the same arguments and should produce the
same results, except for round-off and precision issues.
These accelerated styles are part of the "user-cuda", "gpu", and "opt"
packages respectively. They are only enabled if LAMMPS was built with
-those packages. See the "Making LAMMPS"_Section_start.html#2_3
+those packages. See the "Making LAMMPS"_Section_start.html#start_3
section for more info.
You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the "-suffix command-line
-switch"_Section_start.html#2_6 when you invoke LAMMPS, or you can use
-the "suffix"_suffix.html command in your input script.
+switch"_Section_start.html#start_6 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
See "this section"_Section_accelerate.html of the manual for more
instructions on how to use the accelerated styles effectively.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
and cutoff distance can be mixed, but only for sphere pairs. The
default mix value is {geometric}. See the "pair_modify" command for
details. Other type pairs cannot be mixed, due to the different
meanings of the energy prefactors used to calculate the interactions
and the implicit dependence of the ellipsoid-sphere interaction on the
equation for the Hamaker constant presented here. Mixing of sigma and
epsilon followed by calculation of the energy prefactors using the
equations above is recommended.
This pair styles supports the "pair_modify"_pair_modify.html shift
option for the energy of the Lennard-Jones portion of the pair
interaction, but only for sphere-sphere interactions. There is no
shifting performed for ellipsoidal interactions due to the anisotropic
dependence of the interaction.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
This pair style does not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords of the "run_style
command"_run_style.html.
:line
[Restrictions:]
This style is part of the "asphere" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
This pair style requires that atoms be ellipsoids as defined by the
"atom_style ellipsoid"_atom_style.html command.
Particles acted on by the potential can be extended aspherical or
spherical particles, or point particles. Spherical particles have all
3 of their shape parameters equal to each other. Point particles have
all 3 of their shape parameters equal to 0.0.
The distance-of-closest-approach approximation used by LAMMPS becomes
less accurate when high-aspect ratio ellipsoids are used.
[Related commands:]
"pair_coeff"_pair_coeff.html, "fix nve/asphere"_fix_nve_asphere.html,
"compute temp/asphere"_compute_temp_asphere.html, "pair_style
gayberne"_pair_gayberne.html
[Default:] none
:line
:link(Everaers)
[(Everaers)] Everaers and Ejtehadi, Phys Rev E, 67, 041710 (2003).
:link(Babadi)
[(Berardi)] Babadi, Ejtehadi, Everaers, J Comp Phys, 219, 770-779 (2006).
diff --git a/doc/pair_style.html b/doc/pair_style.html
index afbdcb8a7..0fd687181 100644
--- a/doc/pair_style.html
+++ b/doc/pair_style.html
@@ -1,184 +1,184 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style style args
</PRE>
<UL><LI>style = one of the styles from the list below
<LI>args = arguments used by a particular style
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style lj/cut 2.5
pair_style eam/alloy
pair_style hybrid lj/charmm/coul/long 10.0 eam
pair_style table linear 1000
pair_style none
</PRE>
<P><B>Description:</B>
</P>
<P>Set the formula(s) LAMMPS uses to compute pairwise interactions. In
LAMMPS, pair potentials are defined between pairs of atoms that are
within a cutoff distance and the set of active interactions typically
changes over time. See the <A HREF = "bond_style.html">bond_style</A> command to
define potentials between pairs of bonded atoms, which typically
remain in place for the duration of a simulation.
</P>
<P>In LAMMPS, pairwise force fields encompass a variety of interactions,
some of which include many-body effects, e.g. EAM, Stillinger-Weber,
Tersoff, REBO potentials. They are still classified as "pairwise"
potentials because the set of interacting atoms changes with time
(unlike molecular bonds) and thus a neighbor list is used to find
nearby interacting atoms.
</P>
<P>Hybrid models where specified pairs of atom types interact via
different pair potentials can be setup using the <I>hybrid</I> pair style.
</P>
<P>The coefficients associated with a pair style are typically set for
each pair of atom types, and are specified by the
<A HREF = "pair_coeff.html">pair_coeff</A> command or read from a file by the
<A HREF = "read_data.html">read_data</A> or <A HREF = "read_restart.html">read_restart</A>
commands.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> command sets options for mixing of
type I-J interaction coefficients and adding energy offsets or tail
corrections to Lennard-Jones potentials. Details on these options as
they pertain to individual potentials are described on the doc page
for the potential. Likewise, info on whether the potential
information is stored in a <A HREF = "write_restart.html">restart file</A> is listed
on the potential doc page.
</P>
<P>In the formulas listed for each pair style, <I>E</I> is the energy of a
pairwise interaction between two atoms separated by a distance <I>r</I>.
The force between the atoms is the negative derivative of this
expression.
</P>
<P>If the pair_style command has a cutoff argument, it sets global
cutoffs for all pairs of atom types. The distance(s) can be smaller
or larger than the dimensions of the simulation box.
</P>
<P>Typically, the global cutoff value can be overridden for a specific
pair of atom types by the <A HREF = "pair_coeff.html">pair_coeff</A> command. The
pair style settings (including global cutoffs) can be changed by a
subsequent pair_style command using the same style. This will reset
the cutoffs for all atom type pairs, including those previously set
explicitly by a <A HREF = "pair_coeff.html">pair_coeff</A> command. The exceptions
to this are that pair_style <I>table</I> and <I>hybrid</I> settings cannot be
reset. A new pair_style command for these styles will wipe out all
previously specified pair_coeff values.
</P>
<HR>
<P>Here is an alphabetic list of pair styles defined in LAMMPS. Click on
the style to display the formula it computes, arguments specified in
the pair_style command, and coefficients specified by the associated
<A HREF = "pair_coeff.html">pair_coeff</A> command:
</P>
<UL><LI><A HREF = "pair_none.html">pair_style none</A> - turn off pairwise interactions
<LI><A HREF = "pair_hybrid.html">pair_style hybrid</A> - multiple styles of pairwise interactions
<LI><A HREF = "pair_hybrid.html">pair_style hybrid/overlay</A> - multiple styles of superposed pairwise interactions
</UL>
<UL><LI><A HREF = "pair_adp.html">pair_style adp</A> - angular dependent potential (ADP) of Mishin
<LI><A HREF = "pair_airebo.html">pair_style airebo</A> - AIREBO potential of Stuart
<LI><A HREF = "pair_born.html">pair_style born</A> - Born-Mayer-Huggins potential
<LI><A HREF = "pair_born.html">pair_style born/coul/long</A> - Born-Mayer-Huggins with long-range Coulomb
<LI><A HREF = "pair_buck.html">pair_style buck</A> - Buckingham potential
<LI><A HREF = "pair_buck.html">pair_style buck/coul/cut</A> - Buckingham with cutoff Coulomb
<LI><A HREF = "pair_buck.html">pair_style buck/coul/long</A> - Buckingham with long-range Coulomb
<LI><A HREF = "pair_colloid.html">pair_style colloid</A> - integrated colloidal potential
<LI><A HREF = "pair_coul.html">pair_style coul/cut</A> - cutoff Coulombic potential
<LI><A HREF = "pair_coul.html">pair_style coul/debye</A> - cutoff Coulombic potential with Debye screening
<LI><A HREF = "pair_coul.html">pair_style coul/long</A> - long-range Coulombic potential
<LI><A HREF = "pair_dipole.html">pair_style dipole/cut</A> - point dipoles with cutoff
<LI><A HREF = "pair_dpd.html">pair_style dpd</A> - dissipative particle dynamics (DPD)
<LI><A HREF = "pair_dpd.html">pair_style dpd/tstat</A> - DPD thermostatting
<LI><A HREF = "pair_dsmc.html">pair_style dsmc</A> - Direct Simulation Monte Carlo (DSMC)
<LI><A HREF = "pair_eam.html">pair_style eam</A> - embedded atom method (EAM)
<LI><A HREF = "pair_eam.html">pair_style eam/alloy</A> - alloy EAM
<LI><A HREF = "pair_eam.html">pair_style eam/fs</A> - Finnis-Sinclair EAM
<LI><A HREF = "pair_eim.html">pair_style eim</A> - embedded ion method (EIM)
<LI><A HREF = "pair_gauss.html">pair_style gauss</A> - Gaussian potential
<LI><A HREF = "pair_gayberne.html">pair_style gayberne</A> - Gay-Berne ellipsoidal potential
<LI><A HREF = "pair_gran.html">pair_style gran/hertz/history</A> - granular potential with Hertzian interactions
<LI><A HREF = "pair_gran.html">pair_style gran/hooke</A> - granular potential with history effects
<LI><A HREF = "pair_gran.html">pair_style gran/hooke/history</A> - granular potential without history effects
<LI><A HREF = "pair_hbond_dreiding.html">pair_style hbond/dreiding/lj</A> - DREIDING hydrogen bonding LJ potential
<LI><A HREF = "pair_hbond_dreiding.html">pair_style hbond/dreiding/morse</A> - DREIDING hydrogen bonding Morse potential
<LI><A HREF = "pair_charmm.html">pair_style lj/charmm/coul/charmm</A> - CHARMM potential with cutoff Coulomb
<LI><A HREF = "pair_charmm.html">pair_style lj/charmm/coul/charmm/implicit</A> - CHARMM for implicit solvent
<LI><A HREF = "pair_charmm.html">pair_style lj/charmm/coul/long</A> - CHARMM with long-range Coulomb
<LI><A HREF = "pair_class2.html">pair_style lj/class2</A> - COMPASS (class 2) force field with no Coulomb
<LI><A HREF = "pair_class2.html">pair_style lj/class2/coul/cut</A> - COMPASS with cutoff Coulomb
<LI><A HREF = "pair_class2.html">pair_style lj/class2/coul/long</A> - COMPASS with long-range Coulomb
<LI><A HREF = "pair_lj.html">pair_style lj/cut</A> - cutoff Lennard-Jones potential with no Coulomb
<LI><A HREF = "pair_lj.html">pair_style lj/cut/coul/cut</A> - LJ with cutoff Coulomb
<LI><A HREF = "pair_lj.html">pair_style lj/cut/coul/debye</A> - LJ with Debye screening added to Coulomb
<LI><A HREF = "pair_lj.html">pair_style lj/cut/coul/long</A> - LJ with long-range Coulomb
<LI><A HREF = "pair_lj.html">pair_style lj/cut/coul/long/tip4p</A> - LJ with long-range Coulomb for TIP4P water
<LI><A HREF = "pair_lj_expand.html">pair_style lj/expand</A> - Lennard-Jones for variable size particles
<LI><A HREF = "pair_gromacs.html">pair_style lj/gromacs</A> - GROMACS-style Lennard-Jones potential
<LI><A HREF = "pair_gromacs.html">pair_style lj/gromacs/coul/gromacs</A> - GROMACS-style LJ and Coulombic potential
<LI><A HREF = "pair_lj_smooth.html">pair_style lj/smooth</A> - smoothed Lennard-Jones potential
<LI><A HREF = "pair_lj96.html">pair_style lj96/cut</A> - Lennard-Jones 9/6 potential
<LI><A HREF = "pair_lubricate.html">pair_style lubricate</A> - hydrodynamic lubrication forces
<LI><A HREF = "pair_meam.html">pair_style meam</A> - modified embedded atom method (MEAM)
<LI><A HREF = "pair_morse.html">pair_style morse</A> - Morse potential
<LI><A HREF = "pair_peri.html">pair_style peri/lps</A> - peridynamic LPS potential
<LI><A HREF = "pair_peri.html">pair_style peri/pmb</A> - peridynamic PMB potential
<LI><A HREF = "pair_reax.html">pair_style reax</A> - ReaxFF potential
<LI><A HREF = "pair_airebo.html">pair_style rebo</A> - 2nd generation REBO potential of Brenner
<LI><A HREF = "pair_resquared.html">pair_style resquared</A> - Everaers RE-Squared ellipsoidal potential
<LI><A HREF = "pair_soft.html">pair_style soft</A> - Soft (cosine) potential
<LI><A HREF = "pair_sw.html">pair_style sw</A> - Stillinger-Weber 3-body potential
<LI><A HREF = "pair_table.html">pair_style table</A> - tabulated pair potential
<LI><A HREF = "pair_tersoff.html">pair_style tersoff</A> - Tersoff 3-body potential
<LI><A HREF = "pair_tersoff_zbl.html">pair_style tersoff/zbl</A> - Tersoff/ZBL 3-body potential
<LI><A HREF = "pair_yukawa.html">pair_style yukawa</A> - Yukawa potential
<LI><A HREF = "pair_yukawa_colloid.html">pair_style yukawa/colloid</A> - screened Yukawa potential for finite-size particles
</UL>
<P>There are also additional pair 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 pair section of <A HREF = "Section_commands.html#3_5">this
+the individual styles are given in the pair section of <A HREF = "Section_commands.html#cmd_5">this
page</A>.
</P>
<P>There are also additional accelerated pair styles included in the
LAMMPS distribution for faster performance on CPUs and GPUs. The list
of these with links to the individual styles are given in the pair
-section of <A HREF = "Section_commands.html#3_5">this page</A>.
+section of <A HREF = "Section_commands.html#cmd_5">this page</A>.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command must be used before any coefficients are set by the
<A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "read_data.html">read_data</A>, or
<A HREF = "read_restart.html">read_restart</A> commands.
</P>
<P>Some pair styles are part of specific packages. They are only enabled
-if LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
-LAMMPS</A> section for more info on packages. The
-doc pages for individual pair potentials tell if it is part of a
+if LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info on packages.
+The doc pages for individual pair potentials tell if it is part of a
package.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "read_data.html">read_data</A>,
<A HREF = "pair_modify.html">pair_modify</A>, <A HREF = "kspace_style.html">kspace_style</A>,
<A HREF = "dielectric.html">dielectric</A>, <A HREF = "pair_write.html">pair_write</A>
</P>
<P><B>Default:</B>
</P>
<PRE>pair_style none
</PRE>
</HTML>
diff --git a/doc/pair_style.txt b/doc/pair_style.txt
index 5af324b41..d7ae16d69 100644
--- a/doc/pair_style.txt
+++ b/doc/pair_style.txt
@@ -1,179 +1,179 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style command :h3
[Syntax:]
pair_style style args :pre
style = one of the styles from the list below
args = arguments used by a particular style :ul
[Examples:]
pair_style lj/cut 2.5
pair_style eam/alloy
pair_style hybrid lj/charmm/coul/long 10.0 eam
pair_style table linear 1000
pair_style none :pre
[Description:]
Set the formula(s) LAMMPS uses to compute pairwise interactions. In
LAMMPS, pair potentials are defined between pairs of atoms that are
within a cutoff distance and the set of active interactions typically
changes over time. See the "bond_style"_bond_style.html command to
define potentials between pairs of bonded atoms, which typically
remain in place for the duration of a simulation.
In LAMMPS, pairwise force fields encompass a variety of interactions,
some of which include many-body effects, e.g. EAM, Stillinger-Weber,
Tersoff, REBO potentials. They are still classified as "pairwise"
potentials because the set of interacting atoms changes with time
(unlike molecular bonds) and thus a neighbor list is used to find
nearby interacting atoms.
Hybrid models where specified pairs of atom types interact via
different pair potentials can be setup using the {hybrid} pair style.
The coefficients associated with a pair style are typically set for
each pair of atom types, and are specified by the
"pair_coeff"_pair_coeff.html command or read from a file by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands.
The "pair_modify"_pair_modify.html command sets options for mixing of
type I-J interaction coefficients and adding energy offsets or tail
corrections to Lennard-Jones potentials. Details on these options as
they pertain to individual potentials are described on the doc page
for the potential. Likewise, info on whether the potential
information is stored in a "restart file"_write_restart.html is listed
on the potential doc page.
In the formulas listed for each pair style, {E} is the energy of a
pairwise interaction between two atoms separated by a distance {r}.
The force between the atoms is the negative derivative of this
expression.
If the pair_style command has a cutoff argument, it sets global
cutoffs for all pairs of atom types. The distance(s) can be smaller
or larger than the dimensions of the simulation box.
Typically, the global cutoff value can be overridden for a specific
pair of atom types by the "pair_coeff"_pair_coeff.html command. The
pair style settings (including global cutoffs) can be changed by a
subsequent pair_style command using the same style. This will reset
the cutoffs for all atom type pairs, including those previously set
explicitly by a "pair_coeff"_pair_coeff.html command. The exceptions
to this are that pair_style {table} and {hybrid} settings cannot be
reset. A new pair_style command for these styles will wipe out all
previously specified pair_coeff values.
:line
Here is an alphabetic list of pair styles defined in LAMMPS. Click on
the style to display the formula it computes, arguments specified in
the pair_style command, and coefficients specified by the associated
"pair_coeff"_pair_coeff.html command:
"pair_style none"_pair_none.html - turn off pairwise interactions
"pair_style hybrid"_pair_hybrid.html - multiple styles of pairwise interactions
"pair_style hybrid/overlay"_pair_hybrid.html - multiple styles of superposed pairwise interactions :ul
"pair_style adp"_pair_adp.html - angular dependent potential (ADP) of Mishin
"pair_style airebo"_pair_airebo.html - AIREBO potential of Stuart
"pair_style born"_pair_born.html - Born-Mayer-Huggins potential
"pair_style born/coul/long"_pair_born.html - Born-Mayer-Huggins with long-range Coulomb
"pair_style buck"_pair_buck.html - Buckingham potential
"pair_style buck/coul/cut"_pair_buck.html - Buckingham with cutoff Coulomb
"pair_style buck/coul/long"_pair_buck.html - Buckingham with long-range Coulomb
"pair_style colloid"_pair_colloid.html - integrated colloidal potential
"pair_style coul/cut"_pair_coul.html - cutoff Coulombic potential
"pair_style coul/debye"_pair_coul.html - cutoff Coulombic potential with Debye screening
"pair_style coul/long"_pair_coul.html - long-range Coulombic potential
"pair_style dipole/cut"_pair_dipole.html - point dipoles with cutoff
"pair_style dpd"_pair_dpd.html - dissipative particle dynamics (DPD)
"pair_style dpd/tstat"_pair_dpd.html - DPD thermostatting
"pair_style dsmc"_pair_dsmc.html - Direct Simulation Monte Carlo (DSMC)
"pair_style eam"_pair_eam.html - embedded atom method (EAM)
"pair_style eam/alloy"_pair_eam.html - alloy EAM
"pair_style eam/fs"_pair_eam.html - Finnis-Sinclair EAM
"pair_style eim"_pair_eim.html - embedded ion method (EIM)
"pair_style gauss"_pair_gauss.html - Gaussian potential
"pair_style gayberne"_pair_gayberne.html - Gay-Berne ellipsoidal potential
"pair_style gran/hertz/history"_pair_gran.html - granular potential with Hertzian interactions
"pair_style gran/hooke"_pair_gran.html - granular potential with history effects
"pair_style gran/hooke/history"_pair_gran.html - granular potential without history effects
"pair_style hbond/dreiding/lj"_pair_hbond_dreiding.html - DREIDING hydrogen bonding LJ potential
"pair_style hbond/dreiding/morse"_pair_hbond_dreiding.html - DREIDING hydrogen bonding Morse potential
"pair_style lj/charmm/coul/charmm"_pair_charmm.html - CHARMM potential with cutoff Coulomb
"pair_style lj/charmm/coul/charmm/implicit"_pair_charmm.html - CHARMM for implicit solvent
"pair_style lj/charmm/coul/long"_pair_charmm.html - CHARMM with long-range Coulomb
"pair_style lj/class2"_pair_class2.html - COMPASS (class 2) force field with no Coulomb
"pair_style lj/class2/coul/cut"_pair_class2.html - COMPASS with cutoff Coulomb
"pair_style lj/class2/coul/long"_pair_class2.html - COMPASS with long-range Coulomb
"pair_style lj/cut"_pair_lj.html - cutoff Lennard-Jones potential with no Coulomb
"pair_style lj/cut/coul/cut"_pair_lj.html - LJ with cutoff Coulomb
"pair_style lj/cut/coul/debye"_pair_lj.html - LJ with Debye screening added to Coulomb
"pair_style lj/cut/coul/long"_pair_lj.html - LJ with long-range Coulomb
"pair_style lj/cut/coul/long/tip4p"_pair_lj.html - LJ with long-range Coulomb for TIP4P water
"pair_style lj/expand"_pair_lj_expand.html - Lennard-Jones for variable size particles
"pair_style lj/gromacs"_pair_gromacs.html - GROMACS-style Lennard-Jones potential
"pair_style lj/gromacs/coul/gromacs"_pair_gromacs.html - GROMACS-style LJ and Coulombic potential
"pair_style lj/smooth"_pair_lj_smooth.html - smoothed Lennard-Jones potential
"pair_style lj96/cut"_pair_lj96.html - Lennard-Jones 9/6 potential
"pair_style lubricate"_pair_lubricate.html - hydrodynamic lubrication forces
"pair_style meam"_pair_meam.html - modified embedded atom method (MEAM)
"pair_style morse"_pair_morse.html - Morse potential
"pair_style peri/lps"_pair_peri.html - peridynamic LPS potential
"pair_style peri/pmb"_pair_peri.html - peridynamic PMB potential
"pair_style reax"_pair_reax.html - ReaxFF potential
"pair_style rebo"_pair_airebo.html - 2nd generation REBO potential of Brenner
"pair_style resquared"_pair_resquared.html - Everaers RE-Squared ellipsoidal potential
"pair_style soft"_pair_soft.html - Soft (cosine) potential
"pair_style sw"_pair_sw.html - Stillinger-Weber 3-body potential
"pair_style table"_pair_table.html - tabulated pair potential
"pair_style tersoff"_pair_tersoff.html - Tersoff 3-body potential
"pair_style tersoff/zbl"_pair_tersoff_zbl.html - Tersoff/ZBL 3-body potential
"pair_style yukawa"_pair_yukawa.html - Yukawa potential
"pair_style yukawa/colloid"_pair_yukawa_colloid.html - screened Yukawa potential for finite-size particles :ul
There are also additional pair 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 pair section of "this
-page"_Section_commands.html#3_5.
+page"_Section_commands.html#cmd_5.
There are also additional accelerated pair styles included in the
LAMMPS distribution for faster performance on CPUs and GPUs. The list
of these with links to the individual styles are given in the pair
-section of "this page"_Section_commands.html#3_5.
+section of "this page"_Section_commands.html#cmd_5.
:line
[Restrictions:]
This command must be used before any coefficients are set by the
"pair_coeff"_pair_coeff.html, "read_data"_read_data.html, or
"read_restart"_read_restart.html commands.
Some pair styles are part of specific packages. They are only enabled
if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info on packages. The
-doc pages for individual pair potentials tell if it is part of a
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
+The doc pages for individual pair potentials tell if it is part of a
package.
[Related commands:]
"pair_coeff"_pair_coeff.html, "read_data"_read_data.html,
"pair_modify"_pair_modify.html, "kspace_style"_kspace_style.html,
"dielectric"_dielectric.html, "pair_write"_pair_write.html
[Default:]
pair_style none :pre
diff --git a/doc/pair_sw.html b/doc/pair_sw.html
index 0a15874ba..9789f23e3 100644
--- a/doc/pair_sw.html
+++ b/doc/pair_sw.html
@@ -1,187 +1,187 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style sw command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style sw
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style sw
pair_coeff * * si.sw Si
pair_coeff * * GaN.sw Ga N Ga
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>sw</I> style computes a 3-body <A HREF = "#Stillinger">Stillinger-Weber</A>
potential for the energy E of a system of atoms as
</P>
<CENTER><IMG SRC = "Eqs/pair_sw.jpg">
</CENTER>
<P>where phi2 is a two-body term and phi3 is a three-body term. The
summations in the formula are over all neighbors J and K of atom I
within a cutoff distance = a*sigma.
</P>
<P>Only a single pair_coeff command is used with the <I>sw</I> style which
specifies a Stillinger-Weber potential file with parameters for all
needed elements. These are mapped to LAMMPS atom types by specifying
N additional arguments after the filename in the pair_coeff command,
where N is the number of LAMMPS atom types:
</P>
<UL><LI>filename
<LI>N element names = mapping of SW elements to atom types
</UL>
<P>As an example, imagine a file SiC.sw has Stillinger-Weber values for
Si and C. If your LAMMPS simulation has 4 atoms types and you want
the 1st 3 to be Si, and the 4th to be C, you would use the following
pair_coeff command:
</P>
<PRE>pair_coeff * * SiC.sw Si Si Si C
</PRE>
<P>The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The first three Si arguments map LAMMPS atom types 1,2,3 to the Si
element in the SW file. The final C argument maps LAMMPS atom type 4
to the C element in the SW file. If a mapping value is specified as
NULL, the mapping is not performed. This can be used when a <I>sw</I>
potential is used as part of the <I>hybrid</I> pair style. The NULL values
are placeholders for atom types that will be used with other
potentials.
</P>
<P>Stillinger-Weber files in the <I>potentials</I> directory of the LAMMPS
distribution have a ".sw" suffix. Lines that are not blank or
comments (starting with #) define parameters for a triplet of
elements. The parameters in a single entry correspond to the two-body
and three-body coefficients in the formula above:
</P>
<UL><LI>element 1 (the center atom in a 3-body interaction)
<LI>element 2
<LI>element 3
<LI>epsilon (energy units)
<LI>sigma (distance units)
<LI>a
<LI>lambda
<LI>gamma
<LI>costheta0
<LI>A
<LI>B
<LI>p
<LI>q
<LI>tol
</UL>
<P>The A, B, p, and q parameters are used only for two-body
interactions. The lambda and costheta0 parameters are used only for
three-body interactions. The epsilon, sigma and a parameters are used
for both two-body and three-body interactions. gamma is used only in the
three-body interactions, but is defined for pairs of atoms.
The non-annotated parameters are unitless.
</P>
<P>LAMMPS introduces an additional performance-optimization parameter tol
that is used for both two-body and three-body interactions. In the
Stillinger-Weber potential, the interaction energies become negligibly
small at atomic separations substantially less than the theoretical
cutoff distances. LAMMPS therefore defines a virtual cutoff distance
based on a user defined tolerance tol. The use of the virtual cutoff
distance in constructing atom neighbor lists can significantly reduce
the neighbor list sizes and therefore the computational cost. LAMMPS
provides a <I>tol</I> value for each of the three-body entries so that they
can be separately controlled. If tol = 0.0, then the standard
Stillinger-Weber cutoff is used.
</P>
<P>The Stillinger-Weber potential file must contain entries for all the
elements listed in the pair_coeff command. It can also contain
entries for additional elements not being used in a particular
simulation; LAMMPS ignores those entries.
</P>
<P>For a single-element simulation, only a single entry is required
(e.g. SiSiSi). For a two-element simulation, the file must contain 8
entries (for SiSiSi, SiSiC, SiCSi, SiCC, CSiSi, CSiC, CCSi, CCC), that
specify SW parameters for all permutations of the two elements
interacting in three-body configurations. Thus for 3 elements, 27
entries would be required, etc.
</P>
<P>As annotated above, the first element in the entry is the center atom
in a three-body interaction. Thus an entry for SiCC means a Si atom
with 2 C atoms as neighbors. The parameter values used for the
two-body interaction come from the entry where the 2nd and 3rd
elements are the same. Thus the two-body parameters for Si
interacting with C, comes from the SiCC entry. The three-body
parameters can in principle be specific to the three elements of the
configuration. In the literature, however, the three-body parameters
are usually defined by simple formulas involving two sets of pair-wise
parameters, corresponding to the ij and ik pairs, where i is the
center atom. The user must ensure that the correct combining rule is
used to calculate the values of the threebody parameters for
alloys. Note also that the function phi3 contains two exponential
screening factors with parameter values from the ij pair and ik
pairs. So phi3 for a C atom bonded to a Si atom and a second C atom
will depend on the three-body parameters for the CSiC entry, and also
on the two-body parameters for the CCC and CSiSi entries. Since the
order of the two neighbors is arbitrary, the threebody parameters for
entries CSiC and CCSi should be the same. Similarly, the two-body
parameters for entries SiCC and CSiSi should also be the same. The
parameters used only for two-body interactions (A, B, p, and q) in
entries whose 2nd and 3rd element are different (e.g. SiCSi) are not
used for anything and can be set to 0.0 if desired.
This is also true for the parameters in phi3 that are
taken from the ij and ik pairs (sigma, a, gamma)
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS as
described above from values in the potential file.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
shift, table, and tail options.
</P>
<P>This pair style does not write its information to <A HREF = "restart.html">binary restart
files</A>, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This pair style is part of the "manybody" package. It is only enabled
if LAMMPS was built with that package (which it is by default). See
-the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for more info.
+the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section for more info.
</P>
<P>This pair style requires the <A HREF = "newton.html">newton</A> setting to be "on"
for pair interactions.
</P>
<P>The Stillinger-Weber potential files provided with LAMMPS (see the
potentials directory) are parameterized for metal <A HREF = "units.html">units</A>.
You can use the SW potential with any LAMMPS units, but you would need
to create your own SW potential file with coefficients listed in the
appropriate units if your simulation doesn't use "metal" units.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Stillinger"></A>
<P><B>(Stillinger)</B> Stillinger and Weber, Phys Rev B, 31, 5262 (1985).
</P>
</HTML>
diff --git a/doc/pair_sw.txt b/doc/pair_sw.txt
index 28e06419c..c6083a3fe 100644
--- a/doc/pair_sw.txt
+++ b/doc/pair_sw.txt
@@ -1,181 +1,181 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style sw command :h3
[Syntax:]
pair_style sw :pre
[Examples:]
pair_style sw
pair_coeff * * si.sw Si
pair_coeff * * GaN.sw Ga N Ga :pre
[Description:]
The {sw} style computes a 3-body "Stillinger-Weber"_#Stillinger
potential for the energy E of a system of atoms as
:c,image(Eqs/pair_sw.jpg)
where phi2 is a two-body term and phi3 is a three-body term. The
summations in the formula are over all neighbors J and K of atom I
within a cutoff distance = a*sigma.
Only a single pair_coeff command is used with the {sw} style which
specifies a Stillinger-Weber potential file with parameters for all
needed elements. These are mapped to LAMMPS atom types by specifying
N additional arguments after the filename in the pair_coeff command,
where N is the number of LAMMPS atom types:
filename
N element names = mapping of SW elements to atom types :ul
As an example, imagine a file SiC.sw has Stillinger-Weber values for
Si and C. If your LAMMPS simulation has 4 atoms types and you want
the 1st 3 to be Si, and the 4th to be C, you would use the following
pair_coeff command:
pair_coeff * * SiC.sw Si Si Si C :pre
The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The first three Si arguments map LAMMPS atom types 1,2,3 to the Si
element in the SW file. The final C argument maps LAMMPS atom type 4
to the C element in the SW file. If a mapping value is specified as
NULL, the mapping is not performed. This can be used when a {sw}
potential is used as part of the {hybrid} pair style. The NULL values
are placeholders for atom types that will be used with other
potentials.
Stillinger-Weber files in the {potentials} directory of the LAMMPS
distribution have a ".sw" suffix. Lines that are not blank or
comments (starting with #) define parameters for a triplet of
elements. The parameters in a single entry correspond to the two-body
and three-body coefficients in the formula above:
element 1 (the center atom in a 3-body interaction)
element 2
element 3
epsilon (energy units)
sigma (distance units)
a
lambda
gamma
costheta0
A
B
p
q
tol :ul
The A, B, p, and q parameters are used only for two-body
interactions. The lambda and costheta0 parameters are used only for
three-body interactions. The epsilon, sigma and a parameters are used
for both two-body and three-body interactions. gamma is used only in the
three-body interactions, but is defined for pairs of atoms.
The non-annotated parameters are unitless.
LAMMPS introduces an additional performance-optimization parameter tol
that is used for both two-body and three-body interactions. In the
Stillinger-Weber potential, the interaction energies become negligibly
small at atomic separations substantially less than the theoretical
cutoff distances. LAMMPS therefore defines a virtual cutoff distance
based on a user defined tolerance tol. The use of the virtual cutoff
distance in constructing atom neighbor lists can significantly reduce
the neighbor list sizes and therefore the computational cost. LAMMPS
provides a {tol} value for each of the three-body entries so that they
can be separately controlled. If tol = 0.0, then the standard
Stillinger-Weber cutoff is used.
The Stillinger-Weber potential file must contain entries for all the
elements listed in the pair_coeff command. It can also contain
entries for additional elements not being used in a particular
simulation; LAMMPS ignores those entries.
For a single-element simulation, only a single entry is required
(e.g. SiSiSi). For a two-element simulation, the file must contain 8
entries (for SiSiSi, SiSiC, SiCSi, SiCC, CSiSi, CSiC, CCSi, CCC), that
specify SW parameters for all permutations of the two elements
interacting in three-body configurations. Thus for 3 elements, 27
entries would be required, etc.
As annotated above, the first element in the entry is the center atom
in a three-body interaction. Thus an entry for SiCC means a Si atom
with 2 C atoms as neighbors. The parameter values used for the
two-body interaction come from the entry where the 2nd and 3rd
elements are the same. Thus the two-body parameters for Si
interacting with C, comes from the SiCC entry. The three-body
parameters can in principle be specific to the three elements of the
configuration. In the literature, however, the three-body parameters
are usually defined by simple formulas involving two sets of pair-wise
parameters, corresponding to the ij and ik pairs, where i is the
center atom. The user must ensure that the correct combining rule is
used to calculate the values of the threebody parameters for
alloys. Note also that the function phi3 contains two exponential
screening factors with parameter values from the ij pair and ik
pairs. So phi3 for a C atom bonded to a Si atom and a second C atom
will depend on the three-body parameters for the CSiC entry, and also
on the two-body parameters for the CCC and CSiSi entries. Since the
order of the two neighbors is arbitrary, the threebody parameters for
entries CSiC and CCSi should be the same. Similarly, the two-body
parameters for entries SiCC and CSiSi should also be the same. The
parameters used only for two-body interactions (A, B, p, and q) in
entries whose 2nd and 3rd element are different (e.g. SiCSi) are not
used for anything and can be set to 0.0 if desired.
This is also true for the parameters in phi3 that are
taken from the ij and ik pairs (sigma, a, gamma)
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS as
described above from values in the potential file.
This pair style does not support the "pair_modify"_pair_modify.html
shift, table, and tail options.
This pair style does not write its information to "binary restart
files"_restart.html, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
This pair style is part of the "manybody" package. It is only enabled
if LAMMPS was built with that package (which it is by default). See
-the "Making LAMMPS"_Section_start.html#2_3 section for more info.
+the "Making LAMMPS"_Section_start.html#start_3 section for more info.
This pair style requires the "newton"_newton.html setting to be "on"
for pair interactions.
The Stillinger-Weber potential files provided with LAMMPS (see the
potentials directory) are parameterized for metal "units"_units.html.
You can use the SW potential with any LAMMPS units, but you would need
to create your own SW potential file with coefficients listed in the
appropriate units if your simulation doesn't use "metal" units.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Stillinger)
[(Stillinger)] Stillinger and Weber, Phys Rev B, 31, 5262 (1985).
diff --git a/doc/pair_tersoff.html b/doc/pair_tersoff.html
index f3ac21bf2..bcec40982 100644
--- a/doc/pair_tersoff.html
+++ b/doc/pair_tersoff.html
@@ -1,217 +1,217 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style tersoff command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style tersoff
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style tersoff
pair_coeff * * Si.tersoff Si
pair_coeff * * SiC.tersoff Si C Si
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>tersoff</I> style computes a 3-body Tersoff potential
<A HREF = "#Tersoff_1">(Tersoff_1)</A> for the energy E of a system of atoms as
</P>
<CENTER><IMG SRC = "Eqs/pair_tersoff_1.jpg">
</CENTER>
<P>where f_R is a two-body term and f_A includes three-body interactions.
The summations in the formula are over all neighbors J and K of atom I
within a cutoff distance = R + D.
</P>
<P>Only a single pair_coeff command is used with the <I>tersoff</I> style
which specifies a Tersoff potential file with parameters for all
needed elements. These are mapped to LAMMPS atom types by specifying
N additional arguments after the filename in the pair_coeff command,
where N is the number of LAMMPS atom types:
</P>
<UL><LI>filename
<LI>N element names = mapping of Tersoff elements to atom types
</UL>
<P>As an example, imagine the SiC.tersoff file has Tersoff values for Si
and C. If your LAMMPS simulation has 4 atoms types and you want the
1st 3 to be Si, and the 4th to be C, you would use the following
pair_coeff command:
</P>
<PRE>pair_coeff * * SiC.tersoff Si Si Si C
</PRE>
<P>The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The first three Si arguments map LAMMPS atom types 1,2,3 to the Si
element in the Tersoff file. The final C argument maps LAMMPS atom
type 4 to the C element in the Tersoff file. If a mapping value is
specified as NULL, the mapping is not performed. This can be used
when a <I>tersoff</I> potential is used as part of the <I>hybrid</I> pair style.
The NULL values are placeholders for atom types that will be used with
other potentials.
</P>
<P>Tersoff files in the <I>potentials</I> directory of the LAMMPS distribution
have a ".tersoff" suffix. Lines that are not blank or comments
(starting with #) define parameters for a triplet of elements. The
parameters in a single entry correspond to coefficients in the formula
above:
</P>
<UL><LI>element 1 (the center atom in a 3-body interaction)
<LI>element 2 (the atom bonded to the center atom)
<LI>element 3 (the atom influencing the 1-2 bond in a bond-order sense)
<LI>m
<LI>gamma
<LI>lambda3 (1/distance units)
<LI>c
<LI>d
<LI>costheta0 (can be a value < -1 or > 1)
<LI>n
<LI>beta
<LI>lambda2 (1/distance units)
<LI>B (energy units)
<LI>R (distance units)
<LI>D (distance units)
<LI>lambda1 (1/distance units)
<LI>A (energy units)
</UL>
<P>The n, beta, lambda2, B, lambda1, and A parameters are only used for
two-body interactions. The m, gamma, lambda3, c, d, and costheta0
parameters are only used for three-body interactions. The R and D
parameters are used for both two-body and three-body interactions. The
non-annotated parameters are unitless. The value of m must be 3 or 1.
</P>
<P>The Tersoff potential file must contain entries for all the elements
listed in the pair_coeff command. It can also contain entries for
additional elements not being used in a particular simulation; LAMMPS
ignores those entries.
</P>
<P>For a single-element simulation, only a single entry is required
(e.g. SiSiSi). For a two-element simulation, the file must contain 8
entries (for SiSiSi, SiSiC, SiCSi, SiCC, CSiSi, CSiC, CCSi, CCC), that
specify Tersoff parameters for all permutations of the two elements
interacting in three-body configurations. Thus for 3 elements, 27
entries would be required, etc.
</P>
<P>As annotated above, the first element in the entry is the center atom
in a three-body interaction and it is bonded to the 2nd atom and the
bond is influenced by the 3rd atom. Thus an entry for SiCC means Si
bonded to a C with another C atom influencing the bond. Thus
three-body parameters for SiCSi and SiSiC entries will not, in
general, be the same. The parameters used for the two-body
interaction come from the entry where the 2nd element is repeated.
Thus the two-body parameters for Si interacting with C, comes from the
SiCC entry.
</P>
<P>The parameters used for a particular
three-body interaction come from the entry with the corresponding
three elements. The parameters used only for two-body interactions
(n, beta, lambda2, B, lambda1, and A) in entries whose 2nd and 3rd
element are different (e.g. SiCSi) are not used for anything and can
be set to 0.0 if desired.
</P>
<P>Note that the twobody parameters in entries such as SiCC and CSiSi
are often the same, due to the common use of symmetric mixing rules,
but this is not always the case. For example, the beta and n parameters in
Tersoff_2 <A HREF = "#Tersoff_2">(Tersoff_2)</A> are not symmetric.
</P>
<P>We chose the above form so as to enable users to define all commonly
used variants of the Tersoff potential. In particular, our form
reduces to the original Tersoff form when m = 3 and gamma = 1, while
it reduces to the form of <A HREF = "#Albe">Albe et al.</A> when beta = 1 and m = 1.
Note that in the current Tersoff implementation in LAMMPS, m must be
specified as either 3 or 1. Tersoff used a slightly different but
equivalent form for alloys, which we will refer to as Tersoff_2
potential <A HREF = "#Tersoff_2">(Tersoff_2)</A>.
</P>
<P>LAMMPS parameter values for Tersoff_2 can be obtained as follows:
gamma = 1, just as for Tersoff_1, but now lambda3 = 0 and the value of
m has no effect. The parameters for species i and j can be calculated
using the Tersoff_2 mixing rules:
</P>
<CENTER><IMG SRC = "Eqs/pair_tersoff_2.jpg">
</CENTER>
<P>Tersoff_2 parameters R and S must be converted to the LAMMPS
parameters R and D (R is different in both forms), using the following
relations: R=(R'+S')/2 and D=(S'-R')/2, where the primes indicate the
Tersoff_2 parameters.
</P>
<P>In the potentials directory, the file SiCGe.tersoff provides the
LAMMPS parameters for Tersoff's various versions of Si, as well as his
alloy parameters for Si, C, and Ge. This file can be used for pure Si,
(three different versions), pure C, pure Ge, binary SiC, and binary
SiGe. LAMMPS will generate an error if this file is used with any
combination involving C and Ge, since there are no entries for the GeC
interactions (Tersoff did not publish parameters for this
cross-interaction.) Tersoff files are also provided for the SiC alloy
(SiC.tersoff) and the GaN (GaN.tersoff) alloys.
</P>
<P>Many thanks to Rutuparna Narulkar, David Farrell, and Xiaowang Zhou
for helping clarify how Tersoff parameters for alloys have been
defined in various papers.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS as
described above from values in the potential file.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
shift, table, and tail options.
</P>
<P>This pair style does not write its information to <A HREF = "restart.html">binary restart
files</A>, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This pair style is part of the "manybody" package. It is only enabled
if LAMMPS was built with that package (which it is by default). See
-the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for more info.
+the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section for more info.
</P>
<P>This pair style requires the <A HREF = "newton.html">newton</A> setting to be "on"
for pair interactions.
</P>
<P>The Tersoff potential files provided with LAMMPS (see the potentials
directory) are parameterized for metal <A HREF = "units.html">units</A>. You can
use the Tersoff potential with any LAMMPS units, but you would need to
create your own Tersoff potential file with coefficients listed in the
appropriate units if your simulation doesn't use "metal" units.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Tersoff_1"></A>
<P><B>(Tersoff_1)</B> J. Tersoff, Phys Rev B, 37, 6991 (1988).
</P>
<A NAME = "Albe"></A>
<P><B>(Albe)</B> J. Nord, K. Albe, P. Erhart, and K. Nordlund, J. Phys.:
Condens. Matter, 15, 5649(2003).
</P>
<A NAME = "Tersoff_2"></A>
<P><B>(Tersoff_2)</B> J. Tersoff, Phys Rev B, 39, 5566 (1989); errata (PRB 41, 3248)
</P>
</HTML>
diff --git a/doc/pair_tersoff.txt b/doc/pair_tersoff.txt
index 600eee4ac..d5c9eb857 100644
--- a/doc/pair_tersoff.txt
+++ b/doc/pair_tersoff.txt
@@ -1,209 +1,209 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style tersoff command :h3
[Syntax:]
pair_style tersoff :pre
[Examples:]
pair_style tersoff
pair_coeff * * Si.tersoff Si
pair_coeff * * SiC.tersoff Si C Si :pre
[Description:]
The {tersoff} style computes a 3-body Tersoff potential
"(Tersoff_1)"_#Tersoff_1 for the energy E of a system of atoms as
:c,image(Eqs/pair_tersoff_1.jpg)
where f_R is a two-body term and f_A includes three-body interactions.
The summations in the formula are over all neighbors J and K of atom I
within a cutoff distance = R + D.
Only a single pair_coeff command is used with the {tersoff} style
which specifies a Tersoff potential file with parameters for all
needed elements. These are mapped to LAMMPS atom types by specifying
N additional arguments after the filename in the pair_coeff command,
where N is the number of LAMMPS atom types:
filename
N element names = mapping of Tersoff elements to atom types :ul
As an example, imagine the SiC.tersoff file has Tersoff values for Si
and C. If your LAMMPS simulation has 4 atoms types and you want the
1st 3 to be Si, and the 4th to be C, you would use the following
pair_coeff command:
pair_coeff * * SiC.tersoff Si Si Si C :pre
The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The first three Si arguments map LAMMPS atom types 1,2,3 to the Si
element in the Tersoff file. The final C argument maps LAMMPS atom
type 4 to the C element in the Tersoff file. If a mapping value is
specified as NULL, the mapping is not performed. This can be used
when a {tersoff} potential is used as part of the {hybrid} pair style.
The NULL values are placeholders for atom types that will be used with
other potentials.
Tersoff files in the {potentials} directory of the LAMMPS distribution
have a ".tersoff" suffix. Lines that are not blank or comments
(starting with #) define parameters for a triplet of elements. The
parameters in a single entry correspond to coefficients in the formula
above:
element 1 (the center atom in a 3-body interaction)
element 2 (the atom bonded to the center atom)
element 3 (the atom influencing the 1-2 bond in a bond-order sense)
m
gamma
lambda3 (1/distance units)
c
d
costheta0 (can be a value < -1 or > 1)
n
beta
lambda2 (1/distance units)
B (energy units)
R (distance units)
D (distance units)
lambda1 (1/distance units)
A (energy units) :ul
The n, beta, lambda2, B, lambda1, and A parameters are only used for
two-body interactions. The m, gamma, lambda3, c, d, and costheta0
parameters are only used for three-body interactions. The R and D
parameters are used for both two-body and three-body interactions. The
non-annotated parameters are unitless. The value of m must be 3 or 1.
The Tersoff potential file must contain entries for all the elements
listed in the pair_coeff command. It can also contain entries for
additional elements not being used in a particular simulation; LAMMPS
ignores those entries.
For a single-element simulation, only a single entry is required
(e.g. SiSiSi). For a two-element simulation, the file must contain 8
entries (for SiSiSi, SiSiC, SiCSi, SiCC, CSiSi, CSiC, CCSi, CCC), that
specify Tersoff parameters for all permutations of the two elements
interacting in three-body configurations. Thus for 3 elements, 27
entries would be required, etc.
As annotated above, the first element in the entry is the center atom
in a three-body interaction and it is bonded to the 2nd atom and the
bond is influenced by the 3rd atom. Thus an entry for SiCC means Si
bonded to a C with another C atom influencing the bond. Thus
three-body parameters for SiCSi and SiSiC entries will not, in
general, be the same. The parameters used for the two-body
interaction come from the entry where the 2nd element is repeated.
Thus the two-body parameters for Si interacting with C, comes from the
SiCC entry.
The parameters used for a particular
three-body interaction come from the entry with the corresponding
three elements. The parameters used only for two-body interactions
(n, beta, lambda2, B, lambda1, and A) in entries whose 2nd and 3rd
element are different (e.g. SiCSi) are not used for anything and can
be set to 0.0 if desired.
Note that the twobody parameters in entries such as SiCC and CSiSi
are often the same, due to the common use of symmetric mixing rules,
but this is not always the case. For example, the beta and n parameters in
Tersoff_2 "(Tersoff_2)"_#Tersoff_2 are not symmetric.
We chose the above form so as to enable users to define all commonly
used variants of the Tersoff potential. In particular, our form
reduces to the original Tersoff form when m = 3 and gamma = 1, while
it reduces to the form of "Albe et al."_#Albe when beta = 1 and m = 1.
Note that in the current Tersoff implementation in LAMMPS, m must be
specified as either 3 or 1. Tersoff used a slightly different but
equivalent form for alloys, which we will refer to as Tersoff_2
potential "(Tersoff_2)"_#Tersoff_2.
LAMMPS parameter values for Tersoff_2 can be obtained as follows:
gamma = 1, just as for Tersoff_1, but now lambda3 = 0 and the value of
m has no effect. The parameters for species i and j can be calculated
using the Tersoff_2 mixing rules:
:c,image(Eqs/pair_tersoff_2.jpg)
Tersoff_2 parameters R and S must be converted to the LAMMPS
parameters R and D (R is different in both forms), using the following
relations: R=(R'+S')/2 and D=(S'-R')/2, where the primes indicate the
Tersoff_2 parameters.
In the potentials directory, the file SiCGe.tersoff provides the
LAMMPS parameters for Tersoff's various versions of Si, as well as his
alloy parameters for Si, C, and Ge. This file can be used for pure Si,
(three different versions), pure C, pure Ge, binary SiC, and binary
SiGe. LAMMPS will generate an error if this file is used with any
combination involving C and Ge, since there are no entries for the GeC
interactions (Tersoff did not publish parameters for this
cross-interaction.) Tersoff files are also provided for the SiC alloy
(SiC.tersoff) and the GaN (GaN.tersoff) alloys.
Many thanks to Rutuparna Narulkar, David Farrell, and Xiaowang Zhou
for helping clarify how Tersoff parameters for alloys have been
defined in various papers.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS as
described above from values in the potential file.
This pair style does not support the "pair_modify"_pair_modify.html
shift, table, and tail options.
This pair style does not write its information to "binary restart
files"_restart.html, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
This pair style is part of the "manybody" package. It is only enabled
if LAMMPS was built with that package (which it is by default). See
-the "Making LAMMPS"_Section_start.html#2_3 section for more info.
+the "Making LAMMPS"_Section_start.html#start_3 section for more info.
This pair style requires the "newton"_newton.html setting to be "on"
for pair interactions.
The Tersoff potential files provided with LAMMPS (see the potentials
directory) are parameterized for metal "units"_units.html. You can
use the Tersoff potential with any LAMMPS units, but you would need to
create your own Tersoff potential file with coefficients listed in the
appropriate units if your simulation doesn't use "metal" units.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Tersoff_1)
[(Tersoff_1)] J. Tersoff, Phys Rev B, 37, 6991 (1988).
:link(Albe)
[(Albe)] J. Nord, K. Albe, P. Erhart, and K. Nordlund, J. Phys.:
Condens. Matter, 15, 5649(2003).
:link(Tersoff_2)
[(Tersoff_2)] J. Tersoff, Phys Rev B, 39, 5566 (1989); errata (PRB 41, 3248)
diff --git a/doc/pair_tersoff_zbl.html b/doc/pair_tersoff_zbl.html
index 8d3966e16..8fda7458d 100644
--- a/doc/pair_tersoff_zbl.html
+++ b/doc/pair_tersoff_zbl.html
@@ -1,243 +1,243 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style tersoff/zbl command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style tersoff/zbl
</PRE>
<P><B>Examples:</B>
</P>
<PRE>pair_style tersoff/zbl
pair_coeff * * SiC.tersoff.zbl Si C Si
</PRE>
<P><B>Description:</B>
</P>
<P>The <I>tersoff/zbl</I> style computes a 3-body Tersoff potential
<A HREF = "#Tersoff_1">(Tersoff_1)</A> with a close-separation pairwise modification
based on a Coulomb potential and the Ziegler-Biersack-Littmark
universal screening function <A HREF = "#ZBL">(ZBL)</A>, giving the energy E of a
system of atoms as
</P>
<CENTER><IMG SRC = "Eqs/pair_tersoff_zbl.jpg">
</CENTER>
<P>The f_F term is a fermi-like function used to smoothly connect the ZBL
repulsive potential with the Tersoff potential. There are 2
parameters used to adjust it: A_F and r_C. A_F controls how "sharp"
the transition is between the two, and r_C is essentially the cutoff
for the ZBL potential.
</P>
<P>For the ZBL portion, there are two terms. The first is the Coulomb
repulsive term, with Z1, Z2 as the number of protons in each nucleus,
e as the electron charge (1 for metal and real units) and epsilon0 as
the permittivity of vacuum. The second part is the ZBL universal
screening function, with a0 being the Bohr radius (typically 0.529
Angstroms), and the remainder of the coefficients provided by the
original paper. This screening function should be applicable to most
systems. However, it is only accurate for small separations
(i.e. less than 1 Angstrom).
</P>
<P>For the Tersoff portion, f_R is a two-body term and f_A includes
three-body interactions. The summations in the formula are over all
neighbors J and K of atom I within a cutoff distance = R + D.
</P>
<P>Only a single pair_coeff command is used with the <I>tersoff/zbl</I> style
which specifies a Tersoff/ZBL potential file with parameters for all
needed elements. These are mapped to LAMMPS atom types by specifying
N additional arguments after the filename in the pair_coeff command,
where N is the number of LAMMPS atom types:
</P>
<UL><LI>filename
<LI>N element names = mapping of Tersoff/ZBL elements to atom types
</UL>
<P>As an example, imagine the SiC.tersoff.zbl file has Tersoff/ZBL values
for Si and C. If your LAMMPS simulation has 4 atoms types and you
want the 1st 3 to be Si, and the 4th to be C, you would use the
following pair_coeff command:
</P>
<PRE>pair_coeff * * SiC.tersoff Si Si Si C
</PRE>
<P>The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The first three Si arguments map LAMMPS atom types 1,2,3 to the Si
element in the Tersoff/ZBL file. The final C argument maps LAMMPS
atom type 4 to the C element in the Tersoff/ZBL file. If a mapping
value is specified as NULL, the mapping is not performed. This can be
used when a <I>tersoff/zbl</I> potential is used as part of the <I>hybrid</I>
pair style. The NULL values are placeholders for atom types that will
be used with other potentials.
</P>
<P>Tersoff/ZBL files in the <I>potentials</I> directory of the LAMMPS
distribution have a ".tersoff.zbl" suffix. Lines that are not blank
or comments (starting with #) define parameters for a triplet of
elements. The parameters in a single entry correspond to coefficients
in the formula above:
</P>
<UL><LI>element 1 (the center atom in a 3-body interaction)
<LI>element 2 (the atom bonded to the center atom)
<LI>element 3 (the atom influencing the 1-2 bond in a bond-order sense)
<LI>m
<LI>gamma
<LI>lambda3 (1/distance units)
<LI>c
<LI>d
<LI>costheta0 (can be a value < -1 or > 1)
<LI>n
<LI>beta
<LI>lambda2 (1/distance units)
<LI>B (energy units)
<LI>R (distance units)
<LI>D (distance units)
<LI>lambda1 (1/distance units)
<LI>A (energy units)
<LI>Z_i
<LI>Z_j
<LI>ZBLcut (distance units)
<LI>ZBLexpscale (1/distance units)
</UL>
<P>The n, beta, lambda2, B, lambda1, and A parameters are only used for
two-body interactions. The m, gamma, lambda3, c, d, and costheta0
parameters are only used for three-body interactions. The R and D
parameters are used for both two-body and three-body interactions. The
Z_i,Z_j, ZBLcut, ZBLexpscale parameters are used in the ZBL repulsive
portion of the potential and in the Fermi-like function. The
non-annotated parameters are unitless. The value of m must be 3 or 1.
</P>
<P>The Tersoff/ZBL potential file must contain entries for all the
elements listed in the pair_coeff command. It can also contain
entries for additional elements not being used in a particular
simulation; LAMMPS ignores those entries.
</P>
<P>For a single-element simulation, only a single entry is required
(e.g. SiSiSi). For a two-element simulation, the file must contain 8
entries (for SiSiSi, SiSiC, SiCSi, SiCC, CSiSi, CSiC, CCSi, CCC), that
specify Tersoff parameters for all permutations of the two elements
interacting in three-body configurations. Thus for 3 elements, 27
entries would be required, etc.
</P>
<P>As annotated above, the first element in the entry is the center atom
in a three-body interaction and it is bonded to the 2nd atom and the
bond is influenced by the 3rd atom. Thus an entry for SiCC means Si
bonded to a C with another C atom influencing the bond. Thus
three-body parameters for SiCSi and SiSiC entries will not, in
general, be the same. The parameters used for the two-body
interaction come from the entry where the 2nd element is repeated.
Thus the two-body parameters for Si interacting with C, comes from the
SiCC entry. By symmetry, the twobody parameters in the SiCC and CSiSi
entries should thus be the same. The parameters used for a particular
three-body interaction come from the entry with the corresponding
three elements. The parameters used only for two-body interactions
(n, beta, lambda2, B, lambda1, and A) in entries whose 2nd and 3rd
element are different (e.g. SiCSi) are not used for anything and can
be set to 0.0 if desired.
</P>
<P>We chose the above form so as to enable users to define all commonly
used variants of the Tersoff portion of the potential. In particular,
our form reduces to the original Tersoff form when m = 3 and gamma =
1, while it reduces to the form of <A HREF = "#Albe">Albe et al.</A> when beta = 1
and m = 1. Note that in the current Tersoff implementation in LAMMPS,
m must be specified as either 3 or 1. Tersoff used a slightly
different but equivalent form for alloys, which we will refer to as
Tersoff_2 potential <A HREF = "#Tersoff_2">(Tersoff_2)</A>.
</P>
<P>LAMMPS parameter values for Tersoff_2 can be obtained as follows:
gamma = 1, just as for Tersoff_1, but now lambda3 = 0 and the value of
m has no effect. The parameters for species i and j can be calculated
using the Tersoff_2 mixing rules:
</P>
<CENTER><IMG SRC = "Eqs/pair_tersoff_2.jpg">
</CENTER>
<P>Values not shown are determined by the first atom type. Finally, the
Tersoff_2 parameters R and S must be converted to the LAMMPS
parameters R and D (R is different in both forms), using the following
relations: R=(R'+S')/2 and D=(S'-R')/2, where the primes indicate the
Tersoff_2 parameters.
</P>
<P>In the potentials directory, the file SiCGe.tersoff provides the
LAMMPS parameters for Tersoff's various versions of Si, as well as his
alloy parameters for Si, C, and Ge. This file can be used for pure Si,
(three different versions), pure C, pure Ge, binary SiC, and binary
SiGe. LAMMPS will generate an error if this file is used with any
combination involving C and Ge, since there are no entries for the GeC
interactions (Tersoff did not publish parameters for this
cross-interaction.) Tersoff files are also provided for the SiC alloy
(SiC.tersoff) and the GaN (GaN.tersoff) alloys.
</P>
<P>Many thanks to Rutuparna Narulkar, David Farrell, and Xiaowang Zhou
for helping clarify how Tersoff parameters for alloys have been
defined in various papers. Also thanks to Ram Devanathan for
providing the base ZBL implementation.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS as
described above from values in the potential file.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
shift, table, and tail options.
</P>
<P>This pair style does not write its information to <A HREF = "restart.html">binary restart
files</A>, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This pair style is part of the "manybody" package. It is only enabled
if LAMMPS was built with that package (which it is by default). See
-the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for more info.
+the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section for more info.
</P>
<P>This pair style requires the <A HREF = "newton.html">newton</A> setting to be "on"
for pair interactions.
</P>
<P>The Tersoff/ZBL potential files provided with LAMMPS (see the
potentials directory) are parameterized for metal <A HREF = "units.html">units</A>.
You can use the Tersoff potential with any LAMMPS units, but you would
need to create your own Tersoff potential file with coefficients
listed in the appropriate units if your simulation doesn't use "metal"
units.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
<HR>
<A NAME = "Tersoff_1"></A>
<P><B>(Tersoff_1)</B> J. Tersoff, Phys Rev B, 37, 6991 (1988).
</P>
<A NAME = "ZBL"></A>
<P><B>(ZBL)</B> J.F. Ziegler, J.P. Biersack, U. Littmark, 'Stopping and Ranges
of Ions in Matter' Vol 1, 1985, Pergamon Press.
</P>
<A NAME = "Albe"></A>
<P><B>(Albe)</B> J. Nord, K. Albe, P. Erhartand K. Nordlund, J. Phys.:
Condens. Matter, 15, 5649(2003).
</P>
<A NAME = "Tersoff_2"></A>
<P><B>(Tersoff_2)</B> J. Tersoff, Phys Rev B, 39, 5566 (1989)
</P>
</HTML>
diff --git a/doc/pair_tersoff_zbl.txt b/doc/pair_tersoff_zbl.txt
index 349c5cdf7..34aa45a2c 100644
--- a/doc/pair_tersoff_zbl.txt
+++ b/doc/pair_tersoff_zbl.txt
@@ -1,234 +1,234 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style tersoff/zbl command :h3
[Syntax:]
pair_style tersoff/zbl :pre
[Examples:]
pair_style tersoff/zbl
pair_coeff * * SiC.tersoff.zbl Si C Si :pre
[Description:]
The {tersoff/zbl} style computes a 3-body Tersoff potential
"(Tersoff_1)"_#Tersoff_1 with a close-separation pairwise modification
based on a Coulomb potential and the Ziegler-Biersack-Littmark
universal screening function "(ZBL)"_#ZBL, giving the energy E of a
system of atoms as
:c,image(Eqs/pair_tersoff_zbl.jpg)
The f_F term is a fermi-like function used to smoothly connect the ZBL
repulsive potential with the Tersoff potential. There are 2
parameters used to adjust it: A_F and r_C. A_F controls how "sharp"
the transition is between the two, and r_C is essentially the cutoff
for the ZBL potential.
For the ZBL portion, there are two terms. The first is the Coulomb
repulsive term, with Z1, Z2 as the number of protons in each nucleus,
e as the electron charge (1 for metal and real units) and epsilon0 as
the permittivity of vacuum. The second part is the ZBL universal
screening function, with a0 being the Bohr radius (typically 0.529
Angstroms), and the remainder of the coefficients provided by the
original paper. This screening function should be applicable to most
systems. However, it is only accurate for small separations
(i.e. less than 1 Angstrom).
For the Tersoff portion, f_R is a two-body term and f_A includes
three-body interactions. The summations in the formula are over all
neighbors J and K of atom I within a cutoff distance = R + D.
Only a single pair_coeff command is used with the {tersoff/zbl} style
which specifies a Tersoff/ZBL potential file with parameters for all
needed elements. These are mapped to LAMMPS atom types by specifying
N additional arguments after the filename in the pair_coeff command,
where N is the number of LAMMPS atom types:
filename
N element names = mapping of Tersoff/ZBL elements to atom types :ul
As an example, imagine the SiC.tersoff.zbl file has Tersoff/ZBL values
for Si and C. If your LAMMPS simulation has 4 atoms types and you
want the 1st 3 to be Si, and the 4th to be C, you would use the
following pair_coeff command:
pair_coeff * * SiC.tersoff Si Si Si C :pre
The 1st 2 arguments must be * * so as to span all LAMMPS atom types.
The first three Si arguments map LAMMPS atom types 1,2,3 to the Si
element in the Tersoff/ZBL file. The final C argument maps LAMMPS
atom type 4 to the C element in the Tersoff/ZBL file. If a mapping
value is specified as NULL, the mapping is not performed. This can be
used when a {tersoff/zbl} potential is used as part of the {hybrid}
pair style. The NULL values are placeholders for atom types that will
be used with other potentials.
Tersoff/ZBL files in the {potentials} directory of the LAMMPS
distribution have a ".tersoff.zbl" suffix. Lines that are not blank
or comments (starting with #) define parameters for a triplet of
elements. The parameters in a single entry correspond to coefficients
in the formula above:
element 1 (the center atom in a 3-body interaction)
element 2 (the atom bonded to the center atom)
element 3 (the atom influencing the 1-2 bond in a bond-order sense)
m
gamma
lambda3 (1/distance units)
c
d
costheta0 (can be a value < -1 or > 1)
n
beta
lambda2 (1/distance units)
B (energy units)
R (distance units)
D (distance units)
lambda1 (1/distance units)
A (energy units)
Z_i
Z_j
ZBLcut (distance units)
ZBLexpscale (1/distance units) :ul
The n, beta, lambda2, B, lambda1, and A parameters are only used for
two-body interactions. The m, gamma, lambda3, c, d, and costheta0
parameters are only used for three-body interactions. The R and D
parameters are used for both two-body and three-body interactions. The
Z_i,Z_j, ZBLcut, ZBLexpscale parameters are used in the ZBL repulsive
portion of the potential and in the Fermi-like function. The
non-annotated parameters are unitless. The value of m must be 3 or 1.
The Tersoff/ZBL potential file must contain entries for all the
elements listed in the pair_coeff command. It can also contain
entries for additional elements not being used in a particular
simulation; LAMMPS ignores those entries.
For a single-element simulation, only a single entry is required
(e.g. SiSiSi). For a two-element simulation, the file must contain 8
entries (for SiSiSi, SiSiC, SiCSi, SiCC, CSiSi, CSiC, CCSi, CCC), that
specify Tersoff parameters for all permutations of the two elements
interacting in three-body configurations. Thus for 3 elements, 27
entries would be required, etc.
As annotated above, the first element in the entry is the center atom
in a three-body interaction and it is bonded to the 2nd atom and the
bond is influenced by the 3rd atom. Thus an entry for SiCC means Si
bonded to a C with another C atom influencing the bond. Thus
three-body parameters for SiCSi and SiSiC entries will not, in
general, be the same. The parameters used for the two-body
interaction come from the entry where the 2nd element is repeated.
Thus the two-body parameters for Si interacting with C, comes from the
SiCC entry. By symmetry, the twobody parameters in the SiCC and CSiSi
entries should thus be the same. The parameters used for a particular
three-body interaction come from the entry with the corresponding
three elements. The parameters used only for two-body interactions
(n, beta, lambda2, B, lambda1, and A) in entries whose 2nd and 3rd
element are different (e.g. SiCSi) are not used for anything and can
be set to 0.0 if desired.
We chose the above form so as to enable users to define all commonly
used variants of the Tersoff portion of the potential. In particular,
our form reduces to the original Tersoff form when m = 3 and gamma =
1, while it reduces to the form of "Albe et al."_#Albe when beta = 1
and m = 1. Note that in the current Tersoff implementation in LAMMPS,
m must be specified as either 3 or 1. Tersoff used a slightly
different but equivalent form for alloys, which we will refer to as
Tersoff_2 potential "(Tersoff_2)"_#Tersoff_2.
LAMMPS parameter values for Tersoff_2 can be obtained as follows:
gamma = 1, just as for Tersoff_1, but now lambda3 = 0 and the value of
m has no effect. The parameters for species i and j can be calculated
using the Tersoff_2 mixing rules:
:c,image(Eqs/pair_tersoff_2.jpg)
Values not shown are determined by the first atom type. Finally, the
Tersoff_2 parameters R and S must be converted to the LAMMPS
parameters R and D (R is different in both forms), using the following
relations: R=(R'+S')/2 and D=(S'-R')/2, where the primes indicate the
Tersoff_2 parameters.
In the potentials directory, the file SiCGe.tersoff provides the
LAMMPS parameters for Tersoff's various versions of Si, as well as his
alloy parameters for Si, C, and Ge. This file can be used for pure Si,
(three different versions), pure C, pure Ge, binary SiC, and binary
SiGe. LAMMPS will generate an error if this file is used with any
combination involving C and Ge, since there are no entries for the GeC
interactions (Tersoff did not publish parameters for this
cross-interaction.) Tersoff files are also provided for the SiC alloy
(SiC.tersoff) and the GaN (GaN.tersoff) alloys.
Many thanks to Rutuparna Narulkar, David Farrell, and Xiaowang Zhou
for helping clarify how Tersoff parameters for alloys have been
defined in various papers. Also thanks to Ram Devanathan for
providing the base ZBL implementation.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, where types I and J correspond to
two different element types, mixing is performed by LAMMPS as
described above from values in the potential file.
This pair style does not support the "pair_modify"_pair_modify.html
shift, table, and tail options.
This pair style does not write its information to "binary restart
files"_restart.html, since it is stored in potential files. Thus, you
need to re-specify the pair_style and pair_coeff commands in an input
script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
This pair style is part of the "manybody" package. It is only enabled
if LAMMPS was built with that package (which it is by default). See
-the "Making LAMMPS"_Section_start.html#2_3 section for more info.
+the "Making LAMMPS"_Section_start.html#start_3 section for more info.
This pair style requires the "newton"_newton.html setting to be "on"
for pair interactions.
The Tersoff/ZBL potential files provided with LAMMPS (see the
potentials directory) are parameterized for metal "units"_units.html.
You can use the Tersoff potential with any LAMMPS units, but you would
need to create your own Tersoff potential file with coefficients
listed in the appropriate units if your simulation doesn't use "metal"
units.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
:line
:link(Tersoff_1)
[(Tersoff_1)] J. Tersoff, Phys Rev B, 37, 6991 (1988).
:link(ZBL)
[(ZBL)] J.F. Ziegler, J.P. Biersack, U. Littmark, 'Stopping and Ranges
of Ions in Matter' Vol 1, 1985, Pergamon Press.
:link(Albe)
[(Albe)] J. Nord, K. Albe, P. Erhartand K. Nordlund, J. Phys.:
Condens. Matter, 15, 5649(2003).
:link(Tersoff_2)
[(Tersoff_2)] J. Tersoff, Phys Rev B, 39, 5566 (1989)
diff --git a/doc/pair_yukawa_colloid.html b/doc/pair_yukawa_colloid.html
index 698450f12..4c5d472a4 100644
--- a/doc/pair_yukawa_colloid.html
+++ b/doc/pair_yukawa_colloid.html
@@ -1,128 +1,128 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>pair_style yukawa/colloid command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>pair_style yukawa/colloid kappa cutoff
</PRE>
<UL><LI>kappa = screening length (inverse distance units)
<LI>cutoff = global cutoff for colloidal Yukawa interactions (distance units)
</UL>
<P><B>Examples:</B>
</P>
<PRE>pair_style yukawa/colloid 2.0 2.5
pair_coeff 1 1 100.0 2.3
pair_coeff * * 100.0
</PRE>
<P><B>Description:</B>
</P>
<P>Style <I>yukawa/colloid</I> computes pairwise interactions with the formula
</P>
<CENTER><IMG SRC = "Eqs/pair_yukawa_colloid.jpg">
</CENTER>
<P>where Ri and Rj are the radii of the two particles and Rc is the
cutoff.
</P>
<P>In contrast to <A HREF = "pair_yukawa.html">pair_style yukawa</A>, this functional
form arises from the Coulombic interaction between two colloid
particles, screened due to the presence of an electrolyte.
<A HREF = "pair_yukawa.html">Pair_style yukawa</A> is a screened Coulombic potential
between two point-charges and uses no such approximation.
</P>
<P>This potential applies to nearby particle pairs for which the Derjagin
approximation holds, meaning h << Ri + Rj, where h is the
surface-to-surface separation of the two particles.
</P>
<P>When used in combination with <A HREF = "pair_colloid.html">pair_style colloid</A>,
the two terms become the so-called DLVO potential, which combines
electrostatic repulsion and van der Waals attraction.
</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>A (energy/distance units)
<LI>cutoff (distance units)
</UL>
<P>The prefactor A is determined from the relationship between surface
charge and surface potential due to the presence of electrolyte. Note
that the A for this potential style has different units than the A
used in <A HREF = "pair_yukawa.html">pair_style yukawa</A>. For low surface
potentials, i.e. less than about 25 mV, A can be written as:
</P>
<PRE>A = 2 * PI * R*eps*eps0 * kappa * psi^2
</PRE>
<P>where
</P>
<UL><LI>R = colloid radius (distance units)
<LI>eps0 = permittivity of free space (charge^2/energy/distance units)
<LI>eps = relative permittivity of fluid medium (dimensionless)
<LI>kappa = inverse screening length (1/distance units)
<LI>psi = surface potential (energy/charge units)
</UL>
<P>The last coefficient is optional. If not specified, the global
yukawa/colloid cutoff is used.
</P>
<HR>
<P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>:
</P>
<P>For atom type pairs I,J and I != J, the A coefficient and cutoff
distance for this pair style can be mixed. A is an energy value mixed
like a LJ epsilon. The default mix value is <I>geometric</I>. See the
"pair_modify" command for details.
</P>
<P>This pair style supports the <A HREF = "pair_modify.html">pair_modify</A> shift
option for the energy of the pair interaction.
</P>
<P>The <A HREF = "pair_modify.html">pair_modify</A> table option is not relevant
for this pair style.
</P>
<P>This pair style does not support the <A HREF = "pair_modify.html">pair_modify</A>
tail option for adding long-range tail corrections to energy and
pressure.
</P>
<P>This pair style writes its information to <A HREF = "restart.html">binary restart
files</A>, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
</P>
<P>This pair style can only be used via the <I>pair</I> keyword of the
<A HREF = "run_style.html">run_style respa</A> command. It does not support the
<I>inner</I>, <I>middle</I>, <I>outer</I> keywords.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This style is part of the "colloid" package. It is only enabled if
-LAMMPS was built with that package. See the <A HREF = "Section_start.html#2_3">Making
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>This pair style requires that atoms be finite-size spheres with a
diameter, as defined by the <A HREF = "atom_style.html">atom_style sphere</A>
command.
</P>
<P>Per-particle polydispersity is not yet supported by this pair style;
per-type polydispersity is allowed. This means all particles of the
same type must have the same diameter. Each type can have a different
diameter.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "pair_coeff.html">pair_coeff</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/pair_yukawa_colloid.txt b/doc/pair_yukawa_colloid.txt
index 5e7f9ac84..4cce25340 100644
--- a/doc/pair_yukawa_colloid.txt
+++ b/doc/pair_yukawa_colloid.txt
@@ -1,123 +1,123 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style yukawa/colloid command :h3
[Syntax:]
pair_style yukawa/colloid kappa cutoff :pre
kappa = screening length (inverse distance units)
cutoff = global cutoff for colloidal Yukawa interactions (distance units) :ul
[Examples:]
pair_style yukawa/colloid 2.0 2.5
pair_coeff 1 1 100.0 2.3
pair_coeff * * 100.0 :pre
[Description:]
Style {yukawa/colloid} computes pairwise interactions with the formula
:c,image(Eqs/pair_yukawa_colloid.jpg)
where Ri and Rj are the radii of the two particles and Rc is the
cutoff.
In contrast to "pair_style yukawa"_pair_yukawa.html, this functional
form arises from the Coulombic interaction between two colloid
particles, screened due to the presence of an electrolyte.
"Pair_style yukawa"_pair_yukawa.html is a screened Coulombic potential
between two point-charges and uses no such approximation.
This potential applies to nearby particle pairs for which the Derjagin
approximation holds, meaning h << Ri + Rj, where h is the
surface-to-surface separation of the two particles.
When used in combination with "pair_style colloid"_pair_colloid.html,
the two terms become the so-called DLVO potential, which combines
electrostatic repulsion and van der Waals attraction.
The following coefficients must be defined for each pair of atoms
types via the "pair_coeff"_pair_coeff.html command as in the examples
above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands, or by mixing as described below:
A (energy/distance units)
cutoff (distance units) :ul
The prefactor A is determined from the relationship between surface
charge and surface potential due to the presence of electrolyte. Note
that the A for this potential style has different units than the A
used in "pair_style yukawa"_pair_yukawa.html. For low surface
potentials, i.e. less than about 25 mV, A can be written as:
A = 2 * PI * R*eps*eps0 * kappa * psi^2 :pre
where
R = colloid radius (distance units)
eps0 = permittivity of free space (charge^2/energy/distance units)
eps = relative permittivity of fluid medium (dimensionless)
kappa = inverse screening length (1/distance units)
psi = surface potential (energy/charge units) :ul
The last coefficient is optional. If not specified, the global
yukawa/colloid cutoff is used.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
For atom type pairs I,J and I != J, the A coefficient and cutoff
distance for this pair style can be mixed. A is an energy value mixed
like a LJ epsilon. The default mix value is {geometric}. See the
"pair_modify" command for details.
This pair style supports the "pair_modify"_pair_modify.html shift
option for the energy of the pair interaction.
The "pair_modify"_pair_modify.html table option is not relevant
for this pair style.
This pair style does not support the "pair_modify"_pair_modify.html
tail option for adding long-range tail corrections to energy and
pressure.
This pair style writes its information to "binary restart
files"_restart.html, so pair_style and pair_coeff commands do not need
to be specified in an input script that reads a restart file.
This pair style can only be used via the {pair} keyword of the
"run_style respa"_run_style.html command. It does not support the
{inner}, {middle}, {outer} keywords.
:line
[Restrictions:]
This style is part of the "colloid" package. It is only enabled if
LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#2_3 section for more info.
+LAMMPS"_Section_start.html#start_3 section for more info.
This pair style requires that atoms be finite-size spheres with a
diameter, as defined by the "atom_style sphere"_atom_style.html
command.
Per-particle polydispersity is not yet supported by this pair style;
per-type polydispersity is allowed. This means all particles of the
same type must have the same diameter. Each type can have a different
diameter.
[Related commands:]
"pair_coeff"_pair_coeff.html
[Default:] none
diff --git a/doc/prd.html b/doc/prd.html
index 88006d197..ae9cbcda4 100644
--- a/doc/prd.html
+++ b/doc/prd.html
@@ -1,313 +1,314 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>prd command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>prd N t_event n_dephase t_dephase t_correlate compute-ID seed keyword value ...
</PRE>
<UL><LI>N = # of timesteps to run (not including dephasing/quenching)
<LI>t_event = timestep interval between event checks
<LI>n_dephase = number of velocity randomizations to perform in each dephase run
<LI>t_dephase = number of timesteps to run dynamics after each velocity randomization during dephase
<LI>t_correlate = number of timesteps within which 2 consecutive events are considered to be correlated
<LI>compute-ID = ID of the compute used for event detection
<LI>random_seed = random # seed (positive integer)
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>min</I> or <I>temp</I> or <I>vel</I>
<PRE> <I>min</I> values = etol ftol maxiter maxeval
etol = stopping tolerance for energy, used in quenching
ftol = stopping tolerance for force, used in quenching
maxiter = max iterations of minimize, used in quenching
maxeval = max number of force/energy evaluations, used in quenching
<I>temp</I> value = Tdephase
Tdephase = target temperature for velocity randomization, used in dephasing
<I>vel</I> values = loop dist
loop = <I>all</I> or <I>local</I> or <I>geom</I>, used in dephasing
dist = <I>uniform</I> or <I>gaussian</I>, used in dephasing
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>prd 5000 100 10 10 100 1 54982
prd 5000 100 10 10 100 1 54982 min 0.1 0.1 100 200
</PRE>
<P><B>Description:</B>
</P>
<P>Run a parallel replica dynamics (PRD) simulation using multiple
replicas of a system. One or more replicas can be used.
</P>
<P>PRD is described in <A HREF = "#Voter">this paper</A> by Art Voter. It is a method
for performing accelerated dynamics that is suitable for
infrequent-event systems that obey first-order kinetics. A good
overview of accelerated dynamics methods for such systems in given in
<A HREF = "#Voter2">this review paper</A> from the same group. To quote from the
paper: "The dynamical evolution is characterized by vibrational
excursions within a potential basin, punctuated by occasional
transitions between basins." The transition probability is
characterized by p(t) = k*exp(-kt) where k is the rate constant.
Running multiple replicas gives an effective enhancement in the
timescale spanned by the multiple simulations, while waiting for an
event to occur.
</P>
<P>Each replica runs on a partition of one or more processors. Processor
partitions are defined at run-time using the -partition command-line
-switch; see <A HREF = "Section_start.html#2_6">this section</A> of the manual. Note
-that if you have MPI installed, you can run a multi-replica simulation
-with more replicas (partitions) than you have physical processors, e.g
-you can run a 10-replica simulation on one or two processors. For
-PRD, this makes little sense, since this offers no effective parallel
-speed-up in searching for infrequent events. See <A HREF = "Section_howto.html#4_5">this
-section</A> of the manual for further discussion.
+switch; see <A HREF = "Section_start.html#start_6">this section</A> of the manual.
+Note that if you have MPI installed, you can run a multi-replica
+simulation with more replicas (partitions) than you have physical
+processors, e.g you can run a 10-replica simulation on one or two
+processors. For PRD, this makes little sense, since this offers no
+effective parallel speed-up in searching for infrequent events. See
+<A HREF = "Section_howto.html#howto_5">this section</A> of the manual for further
+discussion.
</P>
<P>When a PRD simulation is performed, it is assumed that each replica is
running the same model, though LAMMPS does not check for this.
I.e. the simulation domain, the number of atoms, the interaction
potentials, etc should be the same for every replica.
</P>
<P>A PRD run has several stages, which are repeated each time an "event"
occurs in one of the replicas, as defined below. The logic for a PRD
run is as follows:
</P>
<PRE>while (time remains):
dephase for n_dephase*t_dephase steps
until (event occurs on some replica):
run dynamics for t_event steps
quench
check for uncorrelated event on any replica
until (no correlated event occurs):
run dynamics for t_correlate steps
quench
check for correlated event on this replica
event replica shares state with all replicas
</PRE>
<P>Before this loop begins, the state of the system on replica 0 is
shared with all replicas, so that all replicas begin from the same
initial state. The first potential energy basin is identified by
quenching (an energy minimization, see below) the initial state and
storing the resulting coordinates for reference.
</P>
<P>In the first stage, dephasing is performed by each replica
independently to eliminate correlations between replicas. This is
done by choosing a random set of velocities, based on the
<I>random_seed</I> that is specified, and running <I>t_dephase</I> timesteps of
dynamics. This is repeated <I>n_dephase</I> times. If the <I>temp</I> keyword
is not specified, the target temperature for velocity randomization
for each replica is the current temperature of that replica.
Otherwise, it is the specified <I>Tdephase</I> temperature. The style of
velocity randomization is controlled using the keyword <I>vel</I> with
arguments that have the same meaning as their counterparts in the
<A HREF = "velocity.html">velocity</A> command.
</P>
<P>In the second stage, each replica runs dynamics continuously, stopping
every <I>t_event</I> steps to check if a transition event has occurred.
This check is performed by quenching the system and comparing the
resulting atom coordinates to the coordinates from the previous basin.
The first time through the PRD loop, the "previous basin" is the set
of quenched coordinates from the initial state of the system.
</P>
<P>A quench is an energy minimization and is performed by whichever
algorithm has been defined by the <A HREF = "min_style.html">min_style</A> command.
Minimization parameters may be set via the
<A HREF = "min_modify.html">min_modify</A> command and by the <I>min</I> keyword of the
PRD command. The latter are the settings that would be used with the
<A HREF = "minimize.html">minimize</A> command. Note that typically, you do not
need to perform a highly-converged minimization to detect a transition
event.
</P>
<P>The event check is performed by a compute with the specified
<I>compute-ID</I>. Currently there is only one compute that works with the
PRD commmand, which is the <A HREF = "compute_event_displace.html">compute
event/displace</A> command. Other
event-checking computes may be added. <A HREF = "compute_event_displace.html">Compute
event/displace</A> checks whether any atom in
the compute group has moved further than a specified threshold
distance. If so, an "event" has occurred.
</P>
<P>In the third stage, the replica on which the event occurred (event
replica) continues to run dynamics to search for correlated events.
This is done by running dynamics for <I>t_correlate</I> steps, quenching
every <I>t_event</I> steps, and checking if another event has occurred.
The first time no correlated event occurs, the final state of the
event replica is shared with all replicas, the new basin reference
coordinates are updated with the quenched state, and the outer loop
begins again. While the replica event is searching for correlated
events, all the other replicas also run dynamics and event checking
with the same schedule, but the final states are always overwritten by
the state of the event replica.
</P>
<HR>
<P>Four kinds of output can be generated during a PRD run: event
statistics, thermodynamic output by each replica, dump files, and
restart files.
</P>
<P>When running with multiple partitions (each of which is a replica in
this case), the print-out to the screen and master log.lammps file is
limited to event statistics. Note that if a PRD run is performed on
only a single replica then the event statistics will be intermixed
with the usual thermodynamic output discussed below.
</P>
<P>The quantities printed each time an event occurs are the timestep,
CPU time, clock, event number, a correlation flag,
the number of coincident events, and the replica number of the chosen event.
</P>
<P>The timestep is the usual LAMMPS timestep, except that time does not
advance during dephasing or quenches, but only during dynamics. Note
that are two kinds of dynamics in the PRD loop listed above. The
first is when all replicas are performing independent dynamics. The
second is when correlated events are being searched for and only one
replica is running dynamics.
</P>
<P>The CPU time is the total processor time since the start of the PRD
run.
</P>
<P>The clock is the same as the timestep except that it advances by M
steps every timestep during the first kind of dynamics when the M
replicas are running independently. The clock represents the real
time that effectively elapses during a PRD simulation of <I>N</I> steps on
M replicas. If most of the PRD run is spent in the second stage of
the loop above, searching for infrequent events, then the clock will
advance nearly N*M steps. Note the clock time between events will be
drawn from p(t).
</P>
<P>The event number is a counter that increments with each event, whether
it is uncorrelated or correlated.
</P>
<P>The correlation flag will be 0 when an uncorrelated event occurs
during the second stage of the loop listed above, i.e. when all
replicas are running independently. The correlation flag will be 1
when a correlated event occurs during the third stage of the loop
listed above, i.e. when only one replica is running dynamics.
</P>
<P>When more than one replica detects an event at the end of the second
stage, then one of them is chosen at random. The number of coincident
events is the number of replicas that detected an event. Normally, we
expect this value to be 1. If it is often greater than 1, then either
the number of replicas is too large, or <I>t_event</I> is too large.
</P>
<P>The replica number is the ID of the replica (from 0 to M-1) that
found the event.
</P>
<HR>
<P>When running on multiple partitions, LAMMPS produces additional log
files for each partition, e.g. log.lammps.0, log.lammps.1, etc. For
the PRD command, these contain the thermodynamic output for each
replica. You will see short runs and minimizations corresponding to
the dynamics and quench operations of the loop listed above. The
timestep will be reset aprpopriately depending on whether the
operation advances time or not.
</P>
<P>After the PRD command completes, timing statistics for the PRD run are
printed in each replica's log file, giving a breakdown of how much CPU
time was spent in each stage (dephasing, dynamics, quenching, etc).
</P>
<HR>
<P>Any <A HREF = "dump.html">dump files</A> defined in the input script, will be
written to during a PRD run at timesteps corresponding to both
uncorrelated and correlated events. This means the the requested dump
frequency in the <A HREF = "dump.html">dump</A> command is ignored. There will be
one dump file (per dump command) created for all partitions.
</P>
<P>The atom coordinates of the dump snapshot are those of the minimum
energy configuration resulting from quenching following a transition
event. The timesteps written into the dump files correspond to the
timestep at which the event occurred and NOT the clock. A dump
snapshot corresponding to the initial minimum state used for event
detection is written to the dump file at the beginning of each PRD
run.
</P>
<HR>
<P>If the <A HREF = "restart.html">restart</A> command is used, a single restart file
for all the partitions is generated, which allows a PRD run to be
continued by a new input script in the usual manner.
</P>
<P>The restart file is generated at the end of the loop listed above. If
no correlated events are found, this means it contains a snapshot of
the system at time T + <I>t_correlate</I>, where T is the time at which the
uncorrelated event occurred. If correlated events were found, then it
contains a snapshot of the system at time T + <I>t_correlate</I>, where T
is the time of the last correlated event.
</P>
<P>The restart frequency specified in the <A HREF = "restart.html">restart</A> command
is interpreted differently when performing a PRD run. It does not
mean the timestep interval between restart files. Instead it means an
event interval for uncorrelated events. Thus a frequency of 1 means
write a restart file every time an uncorrelated event occurs. A
frequency of 10 means write a restart file every 10th uncorrelated
event.
</P>
<P>When an input script reads a restart file from a previous PRD run, the
new script can be run on a different number of replicas or processors.
However, it is assumed that <I>t_correlate</I> in the new PRD command is
the same as it was previously. If not, the calculation of the "clock"
value for the first event in the new run will be slightly off.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command can only be used if LAMMPS was built with the "replica"
-package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info on packages.
+package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info on packages.
</P>
<P><I>N</I> and <I>t_correlate</I> settings must be integer multiples of
<I>t_event</I>.
</P>
<P>Runs restarted from restart file written during a PRD run will not
produce identical results due to changes in the random numbers used
for dephasing.
</P>
<P>This command cannot be used when any fixes are defined that keep track
of elapsed time to perform time-dependent operations. Examples
include the "ave" fixes such as <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A>. Also <A HREF = "fix_dt_reset.html">fix
dt/reset</A> and <A HREF = "fix_deposit.html">fix deposit</A>.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_event_displace.html">compute event/displace</A>,
<A HREF = "min_modify.html">min_modify</A>, <A HREF = "min_style.html">min_style</A>,
<A HREF = "run_style.html">run_style</A>, <A HREF = "minimize.html">minimize</A>,
<A HREF = "velocity.html">velocity</A>, <A HREF = "temper.html">temper</A>, <A HREF = "neb.html">neb</A>,
<A HREF = "tad.html">tad</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are <I>min</I> = 0.1 0.1 40 50, no <I>temp</I> setting, and
<I>vel</I> = <I>geom</I> <I>gaussian</I>.
</P>
<HR>
<A NAME = "Voter"></A>
<P><B>(Voter)</B> Voter, Phys Rev B, 57, 13985 (1998).
</P>
<A NAME = "Voter2"></A>
<P><B>(Voter2)</B> Voter, Montalenti, Germann, Annual Review of Materials
Research 32, 321 (2002).
</P>
</HTML>
diff --git a/doc/prd.txt b/doc/prd.txt
index 8016d5c29..52f6820d8 100644
--- a/doc/prd.txt
+++ b/doc/prd.txt
@@ -1,296 +1,297 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
prd command :h3
[Syntax:]
prd N t_event n_dephase t_dephase t_correlate compute-ID seed keyword value ... :pre
N = # of timesteps to run (not including dephasing/quenching) :ulb,l
t_event = timestep interval between event checks :l
n_dephase = number of velocity randomizations to perform in each dephase run :l
t_dephase = number of timesteps to run dynamics after each velocity randomization during dephase :l
t_correlate = number of timesteps within which 2 consecutive events are considered to be correlated :l
compute-ID = ID of the compute used for event detection :l
random_seed = random # seed (positive integer) :l
zero or more keyword/value pairs may be appended :l
keyword = {min} or {temp} or {vel} :l
{min} values = etol ftol maxiter maxeval
etol = stopping tolerance for energy, used in quenching
ftol = stopping tolerance for force, used in quenching
maxiter = max iterations of minimize, used in quenching
maxeval = max number of force/energy evaluations, used in quenching
{temp} value = Tdephase
Tdephase = target temperature for velocity randomization, used in dephasing
{vel} values = loop dist
loop = {all} or {local} or {geom}, used in dephasing
dist = {uniform} or {gaussian}, used in dephasing :pre
:ule
[Examples:]
prd 5000 100 10 10 100 1 54982
prd 5000 100 10 10 100 1 54982 min 0.1 0.1 100 200 :pre
[Description:]
Run a parallel replica dynamics (PRD) simulation using multiple
replicas of a system. One or more replicas can be used.
PRD is described in "this paper"_#Voter by Art Voter. It is a method
for performing accelerated dynamics that is suitable for
infrequent-event systems that obey first-order kinetics. A good
overview of accelerated dynamics methods for such systems in given in
"this review paper"_#Voter2 from the same group. To quote from the
paper: "The dynamical evolution is characterized by vibrational
excursions within a potential basin, punctuated by occasional
transitions between basins." The transition probability is
characterized by p(t) = k*exp(-kt) where k is the rate constant.
Running multiple replicas gives an effective enhancement in the
timescale spanned by the multiple simulations, while waiting for an
event to occur.
Each replica runs on a partition of one or more processors. Processor
partitions are defined at run-time using the -partition command-line
-switch; see "this section"_Section_start.html#2_6 of the manual. Note
-that if you have MPI installed, you can run a multi-replica simulation
-with more replicas (partitions) than you have physical processors, e.g
-you can run a 10-replica simulation on one or two processors. For
-PRD, this makes little sense, since this offers no effective parallel
-speed-up in searching for infrequent events. See "this
-section"_Section_howto.html#4_5 of the manual for further discussion.
+switch; see "this section"_Section_start.html#start_6 of the manual.
+Note that if you have MPI installed, you can run a multi-replica
+simulation with more replicas (partitions) than you have physical
+processors, e.g you can run a 10-replica simulation on one or two
+processors. For PRD, this makes little sense, since this offers no
+effective parallel speed-up in searching for infrequent events. See
+"this section"_Section_howto.html#howto_5 of the manual for further
+discussion.
When a PRD simulation is performed, it is assumed that each replica is
running the same model, though LAMMPS does not check for this.
I.e. the simulation domain, the number of atoms, the interaction
potentials, etc should be the same for every replica.
A PRD run has several stages, which are repeated each time an "event"
occurs in one of the replicas, as defined below. The logic for a PRD
run is as follows:
while (time remains):
dephase for n_dephase*t_dephase steps
until (event occurs on some replica):
run dynamics for t_event steps
quench
check for uncorrelated event on any replica
until (no correlated event occurs):
run dynamics for t_correlate steps
quench
check for correlated event on this replica
event replica shares state with all replicas :pre
Before this loop begins, the state of the system on replica 0 is
shared with all replicas, so that all replicas begin from the same
initial state. The first potential energy basin is identified by
quenching (an energy minimization, see below) the initial state and
storing the resulting coordinates for reference.
In the first stage, dephasing is performed by each replica
independently to eliminate correlations between replicas. This is
done by choosing a random set of velocities, based on the
{random_seed} that is specified, and running {t_dephase} timesteps of
dynamics. This is repeated {n_dephase} times. If the {temp} keyword
is not specified, the target temperature for velocity randomization
for each replica is the current temperature of that replica.
Otherwise, it is the specified {Tdephase} temperature. The style of
velocity randomization is controlled using the keyword {vel} with
arguments that have the same meaning as their counterparts in the
"velocity"_velocity.html command.
In the second stage, each replica runs dynamics continuously, stopping
every {t_event} steps to check if a transition event has occurred.
This check is performed by quenching the system and comparing the
resulting atom coordinates to the coordinates from the previous basin.
The first time through the PRD loop, the "previous basin" is the set
of quenched coordinates from the initial state of the system.
A quench is an energy minimization and is performed by whichever
algorithm has been defined by the "min_style"_min_style.html command.
Minimization parameters may be set via the
"min_modify"_min_modify.html command and by the {min} keyword of the
PRD command. The latter are the settings that would be used with the
"minimize"_minimize.html command. Note that typically, you do not
need to perform a highly-converged minimization to detect a transition
event.
The event check is performed by a compute with the specified
{compute-ID}. Currently there is only one compute that works with the
PRD commmand, which is the "compute
event/displace"_compute_event_displace.html command. Other
event-checking computes may be added. "Compute
event/displace"_compute_event_displace.html checks whether any atom in
the compute group has moved further than a specified threshold
distance. If so, an "event" has occurred.
In the third stage, the replica on which the event occurred (event
replica) continues to run dynamics to search for correlated events.
This is done by running dynamics for {t_correlate} steps, quenching
every {t_event} steps, and checking if another event has occurred.
The first time no correlated event occurs, the final state of the
event replica is shared with all replicas, the new basin reference
coordinates are updated with the quenched state, and the outer loop
begins again. While the replica event is searching for correlated
events, all the other replicas also run dynamics and event checking
with the same schedule, but the final states are always overwritten by
the state of the event replica.
:line
Four kinds of output can be generated during a PRD run: event
statistics, thermodynamic output by each replica, dump files, and
restart files.
When running with multiple partitions (each of which is a replica in
this case), the print-out to the screen and master log.lammps file is
limited to event statistics. Note that if a PRD run is performed on
only a single replica then the event statistics will be intermixed
with the usual thermodynamic output discussed below.
The quantities printed each time an event occurs are the timestep,
CPU time, clock, event number, a correlation flag,
the number of coincident events, and the replica number of the chosen event.
The timestep is the usual LAMMPS timestep, except that time does not
advance during dephasing or quenches, but only during dynamics. Note
that are two kinds of dynamics in the PRD loop listed above. The
first is when all replicas are performing independent dynamics. The
second is when correlated events are being searched for and only one
replica is running dynamics.
The CPU time is the total processor time since the start of the PRD
run.
The clock is the same as the timestep except that it advances by M
steps every timestep during the first kind of dynamics when the M
replicas are running independently. The clock represents the real
time that effectively elapses during a PRD simulation of {N} steps on
M replicas. If most of the PRD run is spent in the second stage of
the loop above, searching for infrequent events, then the clock will
advance nearly N*M steps. Note the clock time between events will be
drawn from p(t).
The event number is a counter that increments with each event, whether
it is uncorrelated or correlated.
The correlation flag will be 0 when an uncorrelated event occurs
during the second stage of the loop listed above, i.e. when all
replicas are running independently. The correlation flag will be 1
when a correlated event occurs during the third stage of the loop
listed above, i.e. when only one replica is running dynamics.
When more than one replica detects an event at the end of the second
stage, then one of them is chosen at random. The number of coincident
events is the number of replicas that detected an event. Normally, we
expect this value to be 1. If it is often greater than 1, then either
the number of replicas is too large, or {t_event} is too large.
The replica number is the ID of the replica (from 0 to M-1) that
found the event.
:line
When running on multiple partitions, LAMMPS produces additional log
files for each partition, e.g. log.lammps.0, log.lammps.1, etc. For
the PRD command, these contain the thermodynamic output for each
replica. You will see short runs and minimizations corresponding to
the dynamics and quench operations of the loop listed above. The
timestep will be reset aprpopriately depending on whether the
operation advances time or not.
After the PRD command completes, timing statistics for the PRD run are
printed in each replica's log file, giving a breakdown of how much CPU
time was spent in each stage (dephasing, dynamics, quenching, etc).
:line
Any "dump files"_dump.html defined in the input script, will be
written to during a PRD run at timesteps corresponding to both
uncorrelated and correlated events. This means the the requested dump
frequency in the "dump"_dump.html command is ignored. There will be
one dump file (per dump command) created for all partitions.
The atom coordinates of the dump snapshot are those of the minimum
energy configuration resulting from quenching following a transition
event. The timesteps written into the dump files correspond to the
timestep at which the event occurred and NOT the clock. A dump
snapshot corresponding to the initial minimum state used for event
detection is written to the dump file at the beginning of each PRD
run.
:line
If the "restart"_restart.html command is used, a single restart file
for all the partitions is generated, which allows a PRD run to be
continued by a new input script in the usual manner.
The restart file is generated at the end of the loop listed above. If
no correlated events are found, this means it contains a snapshot of
the system at time T + {t_correlate}, where T is the time at which the
uncorrelated event occurred. If correlated events were found, then it
contains a snapshot of the system at time T + {t_correlate}, where T
is the time of the last correlated event.
The restart frequency specified in the "restart"_restart.html command
is interpreted differently when performing a PRD run. It does not
mean the timestep interval between restart files. Instead it means an
event interval for uncorrelated events. Thus a frequency of 1 means
write a restart file every time an uncorrelated event occurs. A
frequency of 10 means write a restart file every 10th uncorrelated
event.
When an input script reads a restart file from a previous PRD run, the
new script can be run on a different number of replicas or processors.
However, it is assumed that {t_correlate} in the new PRD command is
the same as it was previously. If not, the calculation of the "clock"
value for the first event in the new run will be slightly off.
:line
[Restrictions:]
This command can only be used if LAMMPS was built with the "replica"
-package. See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info on packages.
+package. See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
{N} and {t_correlate} settings must be integer multiples of
{t_event}.
Runs restarted from restart file written during a PRD run will not
produce identical results due to changes in the random numbers used
for dephasing.
This command cannot be used when any fixes are defined that keep track
of elapsed time to perform time-dependent operations. Examples
include the "ave" fixes such as "fix
ave/spatial"_fix_ave_spatial.html. Also "fix
dt/reset"_fix_dt_reset.html and "fix deposit"_fix_deposit.html.
[Related commands:]
"compute event/displace"_compute_event_displace.html,
"min_modify"_min_modify.html, "min_style"_min_style.html,
"run_style"_run_style.html, "minimize"_minimize.html,
"velocity"_velocity.html, "temper"_temper.html, "neb"_neb.html,
"tad"_tad.html
[Default:]
The option defaults are {min} = 0.1 0.1 40 50, no {temp} setting, and
{vel} = {geom} {gaussian}.
:line
:link(Voter)
[(Voter)] Voter, Phys Rev B, 57, 13985 (1998).
:link(Voter2)
[(Voter2)] Voter, Montalenti, Germann, Annual Review of Materials
Research 32, 321 (2002).
diff --git a/doc/processors.html b/doc/processors.html
index e62e18fde..4839bee67 100644
--- a/doc/processors.html
+++ b/doc/processors.html
@@ -1,68 +1,68 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>processors command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>processors Px Py Pz
</PRE>
<UL><LI>Px,Py,Pz = # of processors in each dimension of a 3d grid
</UL>
<P><B>Examples:</B>
</P>
<PRE>processors 2 4 4
processors * * 5
processors * 1 10
</PRE>
<P><B>Description:</B>
</P>
<P>Specify how processors are mapped as a 3d logical grid to the global
simulation box, namely Px by Py by Pz.
</P>
<P>Any of the Px, Py, Pz parameters can be specified with an asterisk
"*", which means LAMMPS will choose the number of processors in that
dimension. It will do this based on the size and shape of the global
simulation box so as to minimize the surface-to-volume ratio of each
processor's sub-domain.
</P>
<P>Since LAMMPS does not load-balance by changing the grid of 3d
processors on-the-fly, this command can be used to override the LAMMPS
default if it is known to be sub-optimal for a particular problem.
For example, a problem where the atom's extent will change
dramatically in a particular dimension over the course of the
simulation.
</P>
<P>The product of Px, Py, Pz must equal P, the total # of processors
LAMMPS is running on. For a <A HREF = "dimension.html">2d simulation</A>, Pz must
equal 1. If multiple partitions are being used then P is the number
-of processors in this partition; see <A HREF = "Section_start.html#2_6">this
-section</A> for an explanation of the -partition
-command-line switch.
+of processors in this partition; see <A HREF = "Section_start.html#start_6">this
+section</A> for an explanation of the
+-partition command-line switch.
</P>
<P>Note that if you run on a large, prime number of processors P, then a
grid such as 1 x P x 1 will be required, which may incur extra
communication costs.
</P>
<P><B>Restrictions:</B>
</P>
<P>This command cannot be used after the simulation box is defined by a
<A HREF = "read_data.html">read_data</A> or <A HREF = "create_box.html">create_box</A> command.
It can be used before a restart file is read to change the 3d
processor grid from what is specified in the restart file.
</P>
<P><B>Related commands:</B> none
</P>
<P><B>Default:</B>
</P>
<P>Px Py Pz = * * *
</P>
</HTML>
diff --git a/doc/processors.txt b/doc/processors.txt
index 01a87dd40..ae5b89f8c 100644
--- a/doc/processors.txt
+++ b/doc/processors.txt
@@ -1,63 +1,63 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
processors command :h3
[Syntax:]
processors Px Py Pz :pre
Px,Py,Pz = # of processors in each dimension of a 3d grid :ul
[Examples:]
processors 2 4 4
processors * * 5
processors * 1 10 :pre
[Description:]
Specify how processors are mapped as a 3d logical grid to the global
simulation box, namely Px by Py by Pz.
Any of the Px, Py, Pz parameters can be specified with an asterisk
"*", which means LAMMPS will choose the number of processors in that
dimension. It will do this based on the size and shape of the global
simulation box so as to minimize the surface-to-volume ratio of each
processor's sub-domain.
Since LAMMPS does not load-balance by changing the grid of 3d
processors on-the-fly, this command can be used to override the LAMMPS
default if it is known to be sub-optimal for a particular problem.
For example, a problem where the atom's extent will change
dramatically in a particular dimension over the course of the
simulation.
The product of Px, Py, Pz must equal P, the total # of processors
LAMMPS is running on. For a "2d simulation"_dimension.html, Pz must
equal 1. If multiple partitions are being used then P is the number
of processors in this partition; see "this
-section"_Section_start.html#2_6 for an explanation of the -partition
-command-line switch.
+section"_Section_start.html#start_6 for an explanation of the
+-partition command-line switch.
Note that if you run on a large, prime number of processors P, then a
grid such as 1 x P x 1 will be required, which may incur extra
communication costs.
[Restrictions:]
This command cannot be used after the simulation box is defined by a
"read_data"_read_data.html or "create_box"_create_box.html command.
It can be used before a restart file is read to change the 3d
processor grid from what is specified in the restart file.
[Related commands:] none
[Default:]
Px Py Pz = * * *
diff --git a/doc/read_data.html b/doc/read_data.html
index 882e5ed1c..1bfc95bbb 100644
--- a/doc/read_data.html
+++ b/doc/read_data.html
@@ -1,733 +1,733 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>read_data command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>read_data file
</PRE>
<UL><LI>file = name of data file to read in
</UL>
<P><B>Examples:</B>
</P>
<PRE>read_data data.lj
read_data ../run7/data.polymer.gz
</PRE>
<P><B>Description:</B>
</P>
<P>Read in a data file containing information LAMMPS needs to run a
simulation. The file can be ASCII text or a gzipped text file
(detected by a .gz suffix). This is one of 3 ways to specify initial
atom coordinates; see the <A HREF = "read_restart.html">read_restart</A> and
<A HREF = "create_atoms.html">create_atoms</A> commands for alternative methods.
</P>
<P>The structure of the data file is important, though many settings and
sections are optional or can come in any order. See the examples
directory for sample data files for different problems.
</P>
<P>A data file has a header and a body. The header appears first. The
first line of the header is always skipped; it typically contains a
description of the file. Then lines are read one at a time. Lines
can have a trailing comment starting with '#' that is ignored. If the
line is blank (only whitespace after comment is deleted), it is
skipped. If the line contains a header keyword, the corresponding
value(s) is read from the line. If it doesn't contain a header
keyword, the line begins the body of the file.
</P>
<P>The body of the file contains zero or more sections. The first line
of a section has only a keyword. The next line is skipped. The
remaining lines of the section contain values. The number of lines
depends on the section keyword as described below. Zero or more blank
lines can be used between sections. Sections can appear in any order,
with a few exceptions as noted below.
</P>
<P>The formatting of individual lines in the data file (indentation,
spacing between words and numbers) is not important except that header
and section keywords (e.g. atoms, xlo xhi, Masses, Bond Coeffs) must
be capitalized as shown and can't have extra white space between their
words - e.g. two spaces or a tab between "Bond" and "Coeffs" is not
valid.
</P>
<HR>
<P>These are the recognized header keywords. Header lines can come in
any order. The value(s) are read from the beginning of the line.
Thus the keyword <I>atoms</I> should be in a line like "1000 atoms"; the
keyword <I>ylo yhi</I> should be in a line like "-10.0 10.0 ylo yhi"; the
keyword <I>xy xz yz</I> should be in a line like "0.0 5.0 6.0 xy xz yz".
All these settings have a default value of 0, except the lo/hi box
size defaults are -0.5 and 0.5. A line need only appear if the value
is different than the default.
</P>
<UL><LI><I>atoms</I> = # of atoms in system
<LI><I>bonds</I> = # of bonds in system
<LI><I>angles</I> = # of angles in system
<LI><I>dihedrals</I> = # of dihedrals in system
<LI><I>impropers</I> = # of impropers in system
<LI><I>atom types</I> = # of atom types in system
<LI><I>bond types</I> = # of bond types in system
<LI><I>angle types</I> = # of angle types in system
<LI><I>dihedral types</I> = # of dihedral types in system
<LI><I>improper types</I> = # of improper types in system
<LI><I>extra bond per atom</I> = leave space for this many new bonds per atom
<LI><I>ellipsoids</I> = # of ellipsoids in system
<LI><I>xlo xhi</I> = simulation box boundaries in x dimension
<LI><I>ylo yhi</I> = simulation box boundaries in y dimension
<LI><I>zlo zhi</I> = simulation box boundaries in z dimension
<LI><I>xy xz yz</I> = simulation box tilt factors for triclinic system
</UL>
<P>The initial simulation box size is determined by the lo/hi settings.
In any dimension, the system may be periodic or non-periodic; see the
<A HREF = "boundary.html">boundary</A> command.
</P>
<P>If the <I>xy xz yz</I> line does not appear, LAMMPS will set up an
axis-aligned (orthogonal) simulation box. If the line does appear,
LAMMPS creates a non-orthogonal simulation domain shaped as a
parallelepiped with triclinic symmetry. The parallelepiped has its
"origin" at (xlo,ylo,zlo) and is defined by 3 edge vectors starting
from the origin given by A = (xhi-xlo,0,0); B = (xy,yhi-ylo,0); C =
(xz,yz,zhi-zlo). <I>Xy,xz,yz</I> can be 0.0 or positive or negative values
and are called "tilt factors" because they are the amount of
displacement applied to faces of an originally orthogonal box to
transform it into the parallelepiped.
</P>
<P>The tilt factors (xy,xz,yz) can not skew the box more than half the
distance of the corresponding parallel box length. For example, if
xlo = 2 and xhi = 12, then the x box length is 10 and the xy tilt
factor must be between -5 and 5. Similarly, both xz and yz must be
between -(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is not a
limitation, since if the maximum tilt factor is 5 (as in this
example), then configurations with tilt = ..., -15, -5, 5, 15, 25,
... are all geometrically equivalent.
</P>
-<P>See <A HREF = "Section_howto.html#4_12">this section</A> of the doc pages for a
+<P>See <A HREF = "Section_howto.html#howto_12">this section</A> of the doc pages for a
geometric description of triclinic boxes, as defined by LAMMPS, and
how to transform these parameters to and from other commonly used
triclinic representations.
</P>
<P>When a triclinic system is used, the simulation domain must be
periodic in any dimensions with a non-zero tilt factor, as defined by
the <A HREF = "boundary.html">boundary</A> command. I.e. if the xy tilt factor is
non-zero, then both the x and y dimensions must be periodic.
Similarly, x and z must be periodic if xz is non-zero and y and z must
be periodic if yz is non-zero. Also note that if your simulation will
tilt the box, e.g. via the <A HREF = "fix_deform.html">fix deform</A> command, the
simulation box must be defined as triclinic, even if the tilt factors
are initially 0.0.
</P>
<P>For 2d simulations, the <I>zlo zhi</I> values should be set to bound the z
coords for atoms that appear in the file; the default of -0.5 0.5 is
valid if all z coords are 0.0. For 2d triclinic simulations, the xz
and yz tilt factors must be 0.0.
</P>
<P>If the system is periodic (in a dimension), then atom coordinates can
be outside the bounds (in that dimension); they will be remapped (in a
periodic sense) back inside the box.
</P>
<P>IMPORTANT NOTE: If the system is non-periodic (in a dimension), then
all atoms in the data file must have coordinates (in that dimension)
that are "greater than or equal to" the lo value and "less than or
equal to" the hi value. If the non-periodic dimension is of style
"fixed" (see the <A HREF = "boundary.html">boundary</A> command), then the atom
coords must be strictly "less than" the hi value, due to the way
LAMMPS assign atoms to processors. Note that you should not make the
lo/hi values radically smaller/larger than the extent of the atoms.
For example, if your atoms extend from 0 to 50, you should not specify
the box bounds as -10000 and 10000. This is because LAMMPS uses the
specified box size to layout the 3d grid of processors. A huge
(mostly empty) box will be sub-optimal for performance when using
"fixed" boundary conditions (see the <A HREF = "boundary.html">boundary</A>
command). When using "shrink-wrap" boundary conditions (see the
<A HREF = "boundary.html">boundary</A> command), a huge (mostly empty) box may cause
a parallel simulation to lose atoms the first time that LAMMPS
shrink-wraps the box around the atoms.
</P>
<P>The "extra bond per atom" setting should be used if new bonds will be
added to the system when a simulation runs, e.g. by using the <A HREF = "fix_bond_create.html">fix
bond/create</A> command. This will pre-allocate
space in LAMMPS data structures for storing the new bonds.
</P>
<P>The "ellipsoids<A HREF = "atom_style.html"> setting is only used with atom_style
ellipsoid</A> and specifies how many of the atoms are
finite-size ellipsoids; the remainder are point particles. See the
discussion of ellipseflag and the <I>Ellipsoids</I> section below.
</P>
<HR>
<P>These are the section keywords for the body of the file.
</P>
<UL><LI><I>Atoms, Velocities, Ellipsoids, Masses</I> = atom-property sections
<LI><I>Bonds, Angles, Dihedrals, Impropers</I> = molecular topology sections
<LI><I>Pair Coeffs, Bond Coeffs, Angle Coeffs, Dihedral Coeffs, Improper Coeffs</I> = force field sections
<LI><I>BondBond Coeffs, BondAngle Coeffs, MiddleBondTorsion Coeffs, EndBondTorsion Coeffs, AngleTorsion Coeffs, AngleAngleTorsion Coeffs, BondBond13 Coeffs, AngleAngle Coeffs</I> = class 2 force field sections
</UL>
<P>Each section is listed below in alphabetic order. The format of each
section is described including the number of lines it must contain and
rules (if any) for where it can appear in the data file.
</P>
<P>Any individual line in the various sections can have a trailing
comment starting with "#" for annotation purposes. E.g. in the
Atoms section:
</P>
<PRE>10 1 17 -1.0 10.0 5.0 6.0 # salt ion
</PRE>
<HR>
<P><I>Angle Coeffs</I> section:
</P>
<UL><LI>one line per angle type
<LI>line syntax: ID coeffs
<PRE> ID = angle type (1-N)
coeffs = list of coeffs
</PRE>
<LI>example:
<PRE> 6 70 108.5 0 0
</PRE>
</UL>
<P>The number and meaning of the coefficients are specific to the defined
angle style. See the <A HREF = "angle_style.html">angle_style</A> and
<A HREF = "angle_coeff.html">angle_coeff</A> commands for details. Coefficients can
also be set via the <A HREF = "angle_coeff.html">angle_coeff</A> command in the
input script.
</P>
<HR>
<P><I>AngleAngle Coeffs</I> section:
</P>
<UL><LI>one line per improper type
<LI>line syntax: ID coeffs
<PRE> ID = improper type (1-N)
coeffs = list of coeffs (see <A HREF = "improper_coeff.html">improper_coeff</A>)
</PRE>
</UL>
<HR>
<P><I>AngleAngleTorsion Coeffs</I> section:
</P>
<UL><LI>one line per dihedral type
<LI>line syntax: ID coeffs
<PRE> ID = dihedral type (1-N)
coeffs = list of coeffs (see <A HREF = "dihedral_coeff.html">dihedral_coeff</A>)
</PRE>
</UL>
<HR>
<P><I>Angles</I> section:
</P>
<UL><LI>one line per angle
<LI>line syntax: ID type atom1 atom2 atom3
<PRE> ID = number of angle (1-Nangles)
type = angle type (1-Nangletype)
atom1,atom2,atom3 = IDs of 1st,2nd,3rd atoms in angle
</PRE>
example:
<BR>
<PRE> 2 2 17 29 430
</PRE>
</UL>
<P>The 3 atoms are ordered linearly within the angle. Thus the central
atom (around which the angle is computed) is the atom2 in the list.
E.g. H,O,H for a water molecule. The <I>Angles</I> section must appear
after the <I>Atoms</I> section. All values in this section must be
integers (1, not 1.0).
</P>
<HR>
<P><I>AngleTorsion Coeffs</I> section:
</P>
<UL><LI>one line per dihedral type
<LI>line syntax: ID coeffs
<PRE> ID = dihedral type (1-N)
coeffs = list of coeffs (see <A HREF = "dihedral_coeff.html">dihedral_coeff</A>)
</PRE>
</UL>
<HR>
<P><I>Atoms</I> section:
</P>
<UL><LI>one line per atom
<LI>line syntax: depends on atom style
</UL>
<P>An <I>Atoms</I> section must appear in the data file if natoms > 0 in the
header section. The atoms can be listed in any order. These are the
line formats for each <A HREF = "atom_style.html">atom style</A> in LAMMPS. As
discussed below, each line can optionally have 3 flags (nx,ny,nz)
appended to it, which indicate which image of a periodic simulation
box the atom is in. These may be important to include for some kinds
of analysis.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >angle</TD><TD > atom-ID molecule-ID atom-type x y z</TD></TR>
<TR><TD >atomic</TD><TD > atom-ID atom-type x y z</TD></TR>
<TR><TD >bond</TD><TD > atom-ID molecule-ID atom-type x y z</TD></TR>
<TR><TD >charge</TD><TD > atom-ID atom-type q x y z</TD></TR>
<TR><TD >dipole</TD><TD > atom-ID atom-type q x y z mux muy muz</TD></TR>
<TR><TD >electron</TD><TD > atom-ID atom-type q spin eradius x y z</TD></TR>
<TR><TD >ellipsoid</TD><TD > atom-ID atom-type ellipsoidflag density x y z</TD></TR>
<TR><TD >full</TD><TD > atom-ID molecule-ID atom-type q x y z</TD></TR>
<TR><TD >molecular</TD><TD > atom-ID molecule-ID atom-type x y z</TD></TR>
<TR><TD >peri</TD><TD > atom-ID atom-type volume density x y z</TD></TR>
<TR><TD >sphere</TD><TD > atom-ID atom-type diameter density x y z</TD></TR>
<TR><TD >wavepacket</TD><TD > atom-ID atom-type charge spin eradius etag cs_re cs_im x y z</TD></TR>
<TR><TD >hybrid</TD><TD > atom-ID atom-type x y z sub-style1 sub-style2 ...
</TD></TR></TABLE></DIV>
<P>The keywords have these meanings:
</P>
<UL><LI>atom-ID = integer ID of atom
<LI>molecule-ID = integer ID of molecule the atom belongs to
<LI>atom-type = type of atom (1-Ntype)
<LI>q = charge on atom (charge units)
<LI>diameter = diameter of spherical atom (distance units)
<LI>ellipsoidflag = 1 for ellipsoidal particles, 0 for point particles
<LI>density = density of atom (mass/distance^3 units)
<LI>volume = volume of atom (distance^3 units)
<LI>x,y,z = coordinates of atom
<LI>mux,muy,muz = components of dipole moment of atom (dipole units)
<LI>spin = electron spin (+1/-1), 0 = nuclei, 2 = fixed-core, 3 = pseudo-cores (i.e. ECP)
<LI>eradius = electron radius (or fixed-core radius)
<LI>etag = integer ID of electron that each wavepacket belongs to
<LI>cs_re,cs_im = real/imaginary parts of wavepacket coefficients
</UL>
<P>The units for these quantities depend on the unit style; see the
<A HREF = "units.html">units</A> command for details.
</P>
<P>For 2d simulations specify z as 0.0, or a value within the <I>zlo zhi</I>
setting in the data file header.
</P>
<P>The atom-ID is used to identify the atom throughout the simulation and
in dump files. Normally, it is a unique value from 1 to Natoms for
each atom. Unique values larger than Natoms can be used, but they
will cause extra memory to be allocated on each processor, if an atom
map array is used (see the <A HREF = "atom_modify.html">atom_modify</A> command).
If an atom map array is not used (e.g. an atomic system with no
bonds), and velocities are not assigned in the data file, and you
don't care if unique atom IDs appear in dump files, then the atom-IDs
can all be set to 0.
</P>
<P>The molecule ID is a 2nd identifier attached to an atom. Normally, it
is a number from 1 to N, identifying which molecule the atom belongs
to. It can be 0 if it is an unbonded atom or if you don't care to
keep track of molecule assignments.
</P>
<P>The diameter specifies the size of a finite-size spherical particle.
It can be set to 0.0, which means that atom is a point particle.
</P>
<P>The ellipseflag determines whether the particle is a finite-size
ellipsoid of finite size, or a point particle. Additional attributes
must be defined for each ellipsoid in the <I>Ellipsoids</I> section.
</P>
<P>Some pair styles and fixes and computes that operate on finite-size
particles allow for a mixture of finite-size and point particles. See
the doc pages of individual commands for details.
</P>
<P>The density is used in conjunction with the particle volume for
finite-size particles to set the mass of the particle as mass =
density * volume. If the volume is 0.0, meaning a point particle,
then the density value is used as the mass.
</P>
<P>For atom_style hybrid, following the 5 initial values (ID,type,x,y,z),
specific values for each sub-style must be listed. The order of the
sub-styles is the same as they were listed in the
<A HREF = "atom_style.html">atom_style</A> command. The sub-style specific values
are those that are not the 5 standard ones (ID,type,x,y,z). For
example, for the "charge" sub-style, a "q" value would appear. For
the "full" sub-style, a "molecule-ID" and "q" would appear. These are
listed in the same order they appear as listed above. Thus if
</P>
<PRE>atom_style hybrid charge sphere
</PRE>
<P>were used in the input script, each atom line would have these fields:
</P>
<PRE>atom-ID atom-type x y z q diameter density
</PRE>
<P>Atom lines (all lines or none of them) can optionally list 3 trailing
integer values: nx,ny,nz. For periodic dimensions, they specify which
image of the simulation box the atom is considered to be in. An image
of 0 means it is inside the box as defined. A value of 2 means add 2
box lengths to get the true value. A value of -1 means subtract 1 box
length to get the true value. LAMMPS updates these flags as atoms
cross periodic boundaries during the simulation. The flags can be
output with atom snapshots via the <A HREF = "dump.html">dump</A> command.
</P>
<P>If nx,ny,nz values are not set in the data file, LAMMPS initializes
them to 0. If image information is needed for later analysis and they
are not all initially 0, it's important to set them correctly in the
data file. Also, if you plan to use the <A HREF = "replicate.html">replicate</A>
command to generate a larger system, these flags must be listed
correctly for bonded atoms when the bond crosses a periodic boundary.
I.e. the values of the image flags should be different by 1 (in the
appropriate dimension) for the two atoms in such a bond.
</P>
<P>Atom velocities and other atom quantities not defined above are set to
0.0 when the <I>Atoms</I> section is read. Velocities can be set later by
a <I>Velocities</I> section in the data file or by a
<A HREF = "velocity.html">velocity</A> or <A HREF = "set.html">set</A> command in the input
script.
</P>
<HR>
<P><I>Bond Coeffs</I> section:
</P>
<UL><LI>one line per bond type
<LI>line syntax: ID coeffs
<PRE> ID = bond type (1-N)
coeffs = list of coeffs
</PRE>
<LI>example:
<PRE> 4 250 1.49
</PRE>
</UL>
<P>The number and meaning of the coefficients are specific to the defined
bond style. See the <A HREF = "bond_style.html">bond_style</A> and
<A HREF = "bond_coeff.html">bond_coeff</A> commands for details. Coefficients can
also be set via the <A HREF = "bond_coeff.html">bond_coeff</A> command in the input
script.
</P>
<HR>
<P><I>BondAngle Coeffs</I> section:
</P>
<UL><LI>one line per angle type
<LI>line syntax: ID coeffs
<PRE> ID = angle type (1-N)
coeffs = list of coeffs (see class 2 section of <A HREF = "angle_coeff.html">angle_coeff</A>)
</PRE>
</UL>
<HR>
<P><I>BondBond Coeffs</I> section:
</P>
<UL><LI>one line per angle type
<LI>line syntax: ID coeffs
<PRE> ID = angle type (1-N)
coeffs = list of coeffs (see class 2 section of <A HREF = "angle_coeff.html">angle_coeff</A>)
</PRE>
</UL>
<HR>
<P><I>BondBond13 Coeffs</I> section:
</P>
<UL><LI>one line per dihedral type
<LI>line syntax: ID coeffs
<PRE> ID = dihedral type (1-N)
coeffs = list of coeffs (see class 2 section of <A HREF = "dihedral_coeff.html">dihedral_coeff</A>)
</PRE>
</UL>
<HR>
<P><I>Bonds</I> section:
</P>
<UL><LI>one line per bond
<LI>line syntax: ID type atom1 atom2
<PRE> ID = bond number (1-Nbonds)
type = bond type (1-Nbondtype)
atom1,atom2 = IDs of 1st,2nd atoms in bond
</PRE>
<LI>example:
<PRE> 12 3 17 29
</PRE>
</UL>
<P>The <I>Bonds</I> section must appear after the <I>Atoms</I> section. All values
in this section must be integers (1, not 1.0).
</P>
<HR>
<P><I>Dihedral Coeffs</I> section:
</P>
<UL><LI>one line per dihedral type
<LI>line syntax: ID coeffs
<PRE> ID = dihedral type (1-N)
coeffs = list of coeffs
</PRE>
<LI>example:
<PRE> 3 0.6 1 0 1
</PRE>
</UL>
<P>The number and meaning of the coefficients are specific to the defined
dihedral style. See the <A HREF = "dihedral_style.html">dihedral_style</A> and
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> commands for details.
Coefficients can also be set via the
<A HREF = "dihedral_coeff.html">dihedral_coeff</A> command in the input script.
</P>
<HR>
<P><I>Dihedrals</I> section:
</P>
<UL><LI>one line per dihedral
<LI>line syntax: ID type atom1 atom2 atom3 atom4
<PRE> ID = number of dihedral (1-Ndihedrals)
type = dihedral type (1-Ndihedraltype)
atom1,atom2,atom3,atom4 = IDs of 1st,2nd,3rd,4th atoms in dihedral
</PRE>
<LI>example:
<PRE> 12 4 17 29 30 21
</PRE>
</UL>
<P>The 4 atoms are ordered linearly within the dihedral. The <I>Dihedrals</I>
section must appear after the <I>Atoms</I> section. All values in this
section must be integers (1, not 1.0).
</P>
<HR>
<P><I>Ellipsoids</I> section:
</P>
<UL><LI>one line per ellipsoid
<LI>line syntax: atom-ID shapex shapey shapez quatw quati quatj quatk
<PRE> atom-ID = ID of atom which is an ellipsoid
shapex,shapey,shapez = 3 diameters of ellipsoid (distance units)
quatw,quati,quatj,quatk = quaternion components for orientation of atom
type = bond type (1-Nbondtype)
atom1,atom2 = IDs of 1st,2nd atoms in bond
</PRE>
<LI>example:
<PRE> 12 3 17 29
</PRE>
</UL>
<P>The <I>Ellipsoids</I> section must appear if <A HREF = "atom_style.html">atom_style
ellipsoid</A> is used and any atoms are listed in the
<I>Atoms</I> section with an ellipsoidflag = 1. The number of ellipsoids
should be specified in the header section via the "ellipsoids"
keyword.
</P>
<P>The 3 shape values specify the 3 diameters or aspect ratios of a
finite-size ellipsoidal particle, when it is oriented along the 3
coordinate axes. They must all be non-zero values.
</P>
<P>The values <I>quatw</I>, <I>quati</I>, <I>quatj</I>, and <I>quatk</I> set the orientation
of the atom as a quaternion (4-vector). Note that the shape
attributes 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 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)). These
4 components are quatw, quati, quatj, and quatk as specified above.
LAMMPS normalizes each atom's quaternion in case (a,b,c) is not
specified as a unit vector.
</P>
<P>The <I>Ellipsoids</I> section must appear after the <I>Atoms</I> section.
</P>
<HR>
<P><I>EndBondTorsion Coeffs</I> section:
</P>
<UL><LI>one line per dihedral type
<LI>line syntax: ID coeffs
<PRE> ID = dihedral type (1-N)
coeffs = list of coeffs (see class 2 section of <A HREF = "dihedral_coeff.html">dihedral_coeff</A>)
</PRE>
</UL>
<HR>
<P><I>Improper Coeffs</I> section:
</P>
<UL><LI>one line per improper type
<LI>line syntax: ID coeffs
<PRE> ID = improper type (1-N)
coeffs = list of coeffs
</PRE>
<LI>example:
<PRE> 2 20 0.0548311
</PRE>
</UL>
<P>The number and meaning of the coefficients are specific to the defined
improper style. See the <A HREF = "improper_style.html">improper_style</A> and
<A HREF = "improper_coeff.html">improper_coeff</A> commands for details.
Coefficients can also be set via the
<A HREF = "improper_coeff.html">improper_coeff</A> command in the input script.
</P>
<HR>
<P><I>Impropers</I> section:
</P>
<UL><LI>one line per improper
<LI>line syntax: ID type atom1 atom2 atom3 atom4
<PRE> ID = number of improper (1-Nimpropers)
type = improper type (1-Nimpropertype)
atom1,atom2,atom3,atom4 = IDs of 1st,2nd,3rd,4th atoms in improper
</PRE>
<LI>example:
<PRE> 12 3 17 29 13 100
</PRE>
</UL>
<P>The ordering of the 4 atoms determines the definition of the improper
angle used in the formula for each <A HREF = "improper_style.html">improper
style</A>. See the doc pages for individual styles
for details.
</P>
<P>The <I>Impropers</I> section must appear after the <I>Atoms</I> section. All
values in this section must be integers (1, not 1.0).
</P>
<HR>
<P><I>Masses</I> section:
</P>
<UL><LI>one line per atom type
<LI>line syntax: ID mass
<PRE> ID = atom type (1-N)
mass = mass value
</PRE>
<LI>example:
<PRE> 3 1.01
</PRE>
</UL>
<P>This defines the mass of each atom type. This can also be set via the
<A HREF = "mass.html">mass</A> command in the input script. This section cannot be
used for atom styles that define a mass for individual atoms -
e.g. <A HREF = "atom_style.html">atom_style sphere</A>.
</P>
<HR>
<P><I>MiddleBondTorsion Coeffs</I> section:
</P>
<UL><LI>one line per dihedral type
<LI>line syntax: ID coeffs
<PRE> ID = dihedral type (1-N)
coeffs = list of coeffs (see class 2 section of <A HREF = "dihedral_coeff.html">dihedral_coeff</A>)
</PRE>
</UL>
<HR>
<P><I>Pair Coeffs</I> section:
</P>
<UL><LI>one line per atom type
<LI>line syntax: ID coeffs
<PRE> ID = atom type (1-N)
coeffs = list of coeffs
</PRE>
<LI>example:
<PRE> 3 0.022 2.35197 0.022 2.35197
</PRE>
</UL>
<P>The number and meaning of the coefficients are specific to the defined
pair style. See the <A HREF = "pair_style.html">pair_style</A> and
<A HREF = "pair_coeff.html">pair_coeff</A> commands for details. Coefficients can
also be set via the <A HREF = "pair_coeff.html">pair_coeff</A> command in the input
script.
</P>
<HR>
<P><I>Velocities</I> section:
</P>
<UL><LI>one line per atom
<LI>line syntax: depends on atom style
</UL>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >all styles except those listed</TD><TD > atom-ID vx vy vz</TD></TR>
<TR><TD >dipole</TD><TD > atom-ID vx vy vz wx wy wz</TD></TR>
<TR><TD >electron</TD><TD > atom-ID vx vy vz evel</TD></TR>
<TR><TD >ellipsoid</TD><TD > atom-ID vx vy vz lx ly lz</TD></TR>
<TR><TD >sphere</TD><TD > atom-ID vx vy vz wx wy wz
</TD></TR></TABLE></DIV>
<P>where the keywords have these meanings:
</P>
<P>vx,vy,vz = translational velocity of atom
lx,ly,lz = angular momentum of aspherical atom
wx,wy,wz = angular velocity of spherical atom
evel = electron radial velocity (0 for fixed-core):ul
</P>
<P>The velocity lines can appear in any order. This section can only be
used after an <I>Atoms</I> section. This is because the <I>Atoms</I> section
must have assigned a unique atom ID to each atom so that velocities
can be assigned to them.
</P>
<P>Vx, vy, vz, and evel are in <A HREF = "units.html">units</A> of velocity. Lx, ly,
lz are in units of angular momentum (distance-velocity-mass). Wx, Wy,
Wz are in units of angular velocity (radians/time).
</P>
<P>Translational velocities can also be set by the
<A HREF = "velocity.html">velocity</A> command in the input script.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>To read gzipped data files, you must compile LAMMPS with the
--DLAMMPS_GZIP option - see the <A HREF = "Section_start.html#2_2">Making LAMMPS</A>
-section of the documentation.
+-DLAMMPS_GZIP option - see the <A HREF = "Section_start.html#start_2">Making
+LAMMPS</A> section of the documentation.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "read_restart.html">read_restart</A>, <A HREF = "create_atoms.html">create_atoms</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/read_data.txt b/doc/read_data.txt
index be693515c..593b93e57 100644
--- a/doc/read_data.txt
+++ b/doc/read_data.txt
@@ -1,648 +1,648 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
read_data command :h3
[Syntax:]
read_data file :pre
file = name of data file to read in :ul
[Examples:]
read_data data.lj
read_data ../run7/data.polymer.gz :pre
[Description:]
Read in a data file containing information LAMMPS needs to run a
simulation. The file can be ASCII text or a gzipped text file
(detected by a .gz suffix). This is one of 3 ways to specify initial
atom coordinates; see the "read_restart"_read_restart.html and
"create_atoms"_create_atoms.html commands for alternative methods.
The structure of the data file is important, though many settings and
sections are optional or can come in any order. See the examples
directory for sample data files for different problems.
A data file has a header and a body. The header appears first. The
first line of the header is always skipped; it typically contains a
description of the file. Then lines are read one at a time. Lines
can have a trailing comment starting with '#' that is ignored. If the
line is blank (only whitespace after comment is deleted), it is
skipped. If the line contains a header keyword, the corresponding
value(s) is read from the line. If it doesn't contain a header
keyword, the line begins the body of the file.
The body of the file contains zero or more sections. The first line
of a section has only a keyword. The next line is skipped. The
remaining lines of the section contain values. The number of lines
depends on the section keyword as described below. Zero or more blank
lines can be used between sections. Sections can appear in any order,
with a few exceptions as noted below.
The formatting of individual lines in the data file (indentation,
spacing between words and numbers) is not important except that header
and section keywords (e.g. atoms, xlo xhi, Masses, Bond Coeffs) must
be capitalized as shown and can't have extra white space between their
words - e.g. two spaces or a tab between "Bond" and "Coeffs" is not
valid.
:line
These are the recognized header keywords. Header lines can come in
any order. The value(s) are read from the beginning of the line.
Thus the keyword {atoms} should be in a line like "1000 atoms"; the
keyword {ylo yhi} should be in a line like "-10.0 10.0 ylo yhi"; the
keyword {xy xz yz} should be in a line like "0.0 5.0 6.0 xy xz yz".
All these settings have a default value of 0, except the lo/hi box
size defaults are -0.5 and 0.5. A line need only appear if the value
is different than the default.
{atoms} = # of atoms in system
{bonds} = # of bonds in system
{angles} = # of angles in system
{dihedrals} = # of dihedrals in system
{impropers} = # of impropers in system
{atom types} = # of atom types in system
{bond types} = # of bond types in system
{angle types} = # of angle types in system
{dihedral types} = # of dihedral types in system
{improper types} = # of improper types in system
{extra bond per atom} = leave space for this many new bonds per atom
{ellipsoids} = # of ellipsoids in system
{xlo xhi} = simulation box boundaries in x dimension
{ylo yhi} = simulation box boundaries in y dimension
{zlo zhi} = simulation box boundaries in z dimension
{xy xz yz} = simulation box tilt factors for triclinic system :ul
The initial simulation box size is determined by the lo/hi settings.
In any dimension, the system may be periodic or non-periodic; see the
"boundary"_boundary.html command.
If the {xy xz yz} line does not appear, LAMMPS will set up an
axis-aligned (orthogonal) simulation box. If the line does appear,
LAMMPS creates a non-orthogonal simulation domain shaped as a
parallelepiped with triclinic symmetry. The parallelepiped has its
"origin" at (xlo,ylo,zlo) and is defined by 3 edge vectors starting
from the origin given by A = (xhi-xlo,0,0); B = (xy,yhi-ylo,0); C =
(xz,yz,zhi-zlo). {Xy,xz,yz} can be 0.0 or positive or negative values
and are called "tilt factors" because they are the amount of
displacement applied to faces of an originally orthogonal box to
transform it into the parallelepiped.
The tilt factors (xy,xz,yz) can not skew the box more than half the
distance of the corresponding parallel box length. For example, if
xlo = 2 and xhi = 12, then the x box length is 10 and the xy tilt
factor must be between -5 and 5. Similarly, both xz and yz must be
between -(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is not a
limitation, since if the maximum tilt factor is 5 (as in this
example), then configurations with tilt = ..., -15, -5, 5, 15, 25,
... are all geometrically equivalent.
-See "this section"_Section_howto.html#4_12 of the doc pages for a
+See "this section"_Section_howto.html#howto_12 of the doc pages for a
geometric description of triclinic boxes, as defined by LAMMPS, and
how to transform these parameters to and from other commonly used
triclinic representations.
When a triclinic system is used, the simulation domain must be
periodic in any dimensions with a non-zero tilt factor, as defined by
the "boundary"_boundary.html command. I.e. if the xy tilt factor is
non-zero, then both the x and y dimensions must be periodic.
Similarly, x and z must be periodic if xz is non-zero and y and z must
be periodic if yz is non-zero. Also note that if your simulation will
tilt the box, e.g. via the "fix deform"_fix_deform.html command, the
simulation box must be defined as triclinic, even if the tilt factors
are initially 0.0.
For 2d simulations, the {zlo zhi} values should be set to bound the z
coords for atoms that appear in the file; the default of -0.5 0.5 is
valid if all z coords are 0.0. For 2d triclinic simulations, the xz
and yz tilt factors must be 0.0.
If the system is periodic (in a dimension), then atom coordinates can
be outside the bounds (in that dimension); they will be remapped (in a
periodic sense) back inside the box.
IMPORTANT NOTE: If the system is non-periodic (in a dimension), then
all atoms in the data file must have coordinates (in that dimension)
that are "greater than or equal to" the lo value and "less than or
equal to" the hi value. If the non-periodic dimension is of style
"fixed" (see the "boundary"_boundary.html command), then the atom
coords must be strictly "less than" the hi value, due to the way
LAMMPS assign atoms to processors. Note that you should not make the
lo/hi values radically smaller/larger than the extent of the atoms.
For example, if your atoms extend from 0 to 50, you should not specify
the box bounds as -10000 and 10000. This is because LAMMPS uses the
specified box size to layout the 3d grid of processors. A huge
(mostly empty) box will be sub-optimal for performance when using
"fixed" boundary conditions (see the "boundary"_boundary.html
command). When using "shrink-wrap" boundary conditions (see the
"boundary"_boundary.html command), a huge (mostly empty) box may cause
a parallel simulation to lose atoms the first time that LAMMPS
shrink-wraps the box around the atoms.
The "extra bond per atom" setting should be used if new bonds will be
added to the system when a simulation runs, e.g. by using the "fix
bond/create"_fix_bond_create.html command. This will pre-allocate
space in LAMMPS data structures for storing the new bonds.
The "ellipsoids" setting is only used with atom_style
ellipsoid"_atom_style.html and specifies how many of the atoms are
finite-size ellipsoids; the remainder are point particles. See the
discussion of ellipseflag and the {Ellipsoids} section below.
:line
These are the section keywords for the body of the file.
{Atoms, Velocities, Ellipsoids, Masses} = atom-property sections
{Bonds, Angles, Dihedrals, Impropers} = molecular topology sections
{Pair Coeffs, Bond Coeffs, Angle Coeffs, Dihedral Coeffs, \
Improper Coeffs} = force field sections
{BondBond Coeffs, BondAngle Coeffs, MiddleBondTorsion Coeffs, \
EndBondTorsion Coeffs, AngleTorsion Coeffs, AngleAngleTorsion Coeffs, \
BondBond13 Coeffs, AngleAngle Coeffs} = class 2 force field sections :ul
Each section is listed below in alphabetic order. The format of each
section is described including the number of lines it must contain and
rules (if any) for where it can appear in the data file.
Any individual line in the various sections can have a trailing
comment starting with "#" for annotation purposes. E.g. in the
Atoms section:
10 1 17 -1.0 10.0 5.0 6.0 # salt ion :pre
:line
{Angle Coeffs} section:
one line per angle type :ulb,l
line syntax: ID coeffs :l
ID = angle type (1-N)
coeffs = list of coeffs :pre
example: :l
6 70 108.5 0 0 :pre
:ule
The number and meaning of the coefficients are specific to the defined
angle style. See the "angle_style"_angle_style.html and
"angle_coeff"_angle_coeff.html commands for details. Coefficients can
also be set via the "angle_coeff"_angle_coeff.html command in the
input script.
:line
{AngleAngle Coeffs} section:
one line per improper type :ulb,l
line syntax: ID coeffs :l
ID = improper type (1-N)
coeffs = list of coeffs (see "improper_coeff"_improper_coeff.html) :pre
:ule
:line
{AngleAngleTorsion Coeffs} section:
one line per dihedral type :ulb,l
line syntax: ID coeffs :l
ID = dihedral type (1-N)
coeffs = list of coeffs (see "dihedral_coeff"_dihedral_coeff.html) :pre
:ule
:line
{Angles} section:
one line per angle :ulb,l
line syntax: ID type atom1 atom2 atom3 :l
ID = number of angle (1-Nangles)
type = angle type (1-Nangletype)
atom1,atom2,atom3 = IDs of 1st,2nd,3rd atoms in angle :pre
example: :b
2 2 17 29 430 :pre
:ule
The 3 atoms are ordered linearly within the angle. Thus the central
atom (around which the angle is computed) is the atom2 in the list.
E.g. H,O,H for a water molecule. The {Angles} section must appear
after the {Atoms} section. All values in this section must be
integers (1, not 1.0).
:line
{AngleTorsion Coeffs} section:
one line per dihedral type :ulb,l
line syntax: ID coeffs :l
ID = dihedral type (1-N)
coeffs = list of coeffs (see "dihedral_coeff"_dihedral_coeff.html) :pre
:ule
:line
{Atoms} section:
one line per atom
line syntax: depends on atom style :ul
An {Atoms} section must appear in the data file if natoms > 0 in the
header section. The atoms can be listed in any order. These are the
line formats for each "atom style"_atom_style.html in LAMMPS. As
discussed below, each line can optionally have 3 flags (nx,ny,nz)
appended to it, which indicate which image of a periodic simulation
box the atom is in. These may be important to include for some kinds
of analysis.
angle: atom-ID molecule-ID atom-type x y z
atomic: atom-ID atom-type x y z
bond: atom-ID molecule-ID atom-type x y z
charge: atom-ID atom-type q x y z
dipole: atom-ID atom-type q x y z mux muy muz
electron: atom-ID atom-type q spin eradius x y z
ellipsoid: atom-ID atom-type ellipsoidflag density x y z
full: atom-ID molecule-ID atom-type q x y z
molecular: atom-ID molecule-ID atom-type x y z
peri: atom-ID atom-type volume density x y z
sphere: atom-ID atom-type diameter density x y z
wavepacket: atom-ID atom-type charge spin eradius etag cs_re cs_im x y z
hybrid: atom-ID atom-type x y z sub-style1 sub-style2 ... :tb(s=:)
The keywords have these meanings:
atom-ID = integer ID of atom
molecule-ID = integer ID of molecule the atom belongs to
atom-type = type of atom (1-Ntype)
q = charge on atom (charge units)
diameter = diameter of spherical atom (distance units)
ellipsoidflag = 1 for ellipsoidal particles, 0 for point particles
density = density of atom (mass/distance^3 units)
volume = volume of atom (distance^3 units)
x,y,z = coordinates of atom
mux,muy,muz = components of dipole moment of atom (dipole units)
spin = electron spin (+1/-1), 0 = nuclei, 2 = fixed-core, 3 = pseudo-cores (i.e. ECP)
eradius = electron radius (or fixed-core radius)
etag = integer ID of electron that each wavepacket belongs to
cs_re,cs_im = real/imaginary parts of wavepacket coefficients :ul
The units for these quantities depend on the unit style; see the
"units"_units.html command for details.
For 2d simulations specify z as 0.0, or a value within the {zlo zhi}
setting in the data file header.
The atom-ID is used to identify the atom throughout the simulation and
in dump files. Normally, it is a unique value from 1 to Natoms for
each atom. Unique values larger than Natoms can be used, but they
will cause extra memory to be allocated on each processor, if an atom
map array is used (see the "atom_modify"_atom_modify.html command).
If an atom map array is not used (e.g. an atomic system with no
bonds), and velocities are not assigned in the data file, and you
don't care if unique atom IDs appear in dump files, then the atom-IDs
can all be set to 0.
The molecule ID is a 2nd identifier attached to an atom. Normally, it
is a number from 1 to N, identifying which molecule the atom belongs
to. It can be 0 if it is an unbonded atom or if you don't care to
keep track of molecule assignments.
The diameter specifies the size of a finite-size spherical particle.
It can be set to 0.0, which means that atom is a point particle.
The ellipseflag determines whether the particle is a finite-size
ellipsoid of finite size, or a point particle. Additional attributes
must be defined for each ellipsoid in the {Ellipsoids} section.
Some pair styles and fixes and computes that operate on finite-size
particles allow for a mixture of finite-size and point particles. See
the doc pages of individual commands for details.
The density is used in conjunction with the particle volume for
finite-size particles to set the mass of the particle as mass =
density * volume. If the volume is 0.0, meaning a point particle,
then the density value is used as the mass.
For atom_style hybrid, following the 5 initial values (ID,type,x,y,z),
specific values for each sub-style must be listed. The order of the
sub-styles is the same as they were listed in the
"atom_style"_atom_style.html command. The sub-style specific values
are those that are not the 5 standard ones (ID,type,x,y,z). For
example, for the "charge" sub-style, a "q" value would appear. For
the "full" sub-style, a "molecule-ID" and "q" would appear. These are
listed in the same order they appear as listed above. Thus if
atom_style hybrid charge sphere :pre
were used in the input script, each atom line would have these fields:
atom-ID atom-type x y z q diameter density :pre
Atom lines (all lines or none of them) can optionally list 3 trailing
integer values: nx,ny,nz. For periodic dimensions, they specify which
image of the simulation box the atom is considered to be in. An image
of 0 means it is inside the box as defined. A value of 2 means add 2
box lengths to get the true value. A value of -1 means subtract 1 box
length to get the true value. LAMMPS updates these flags as atoms
cross periodic boundaries during the simulation. The flags can be
output with atom snapshots via the "dump"_dump.html command.
If nx,ny,nz values are not set in the data file, LAMMPS initializes
them to 0. If image information is needed for later analysis and they
are not all initially 0, it's important to set them correctly in the
data file. Also, if you plan to use the "replicate"_replicate.html
command to generate a larger system, these flags must be listed
correctly for bonded atoms when the bond crosses a periodic boundary.
I.e. the values of the image flags should be different by 1 (in the
appropriate dimension) for the two atoms in such a bond.
Atom velocities and other atom quantities not defined above are set to
0.0 when the {Atoms} section is read. Velocities can be set later by
a {Velocities} section in the data file or by a
"velocity"_velocity.html or "set"_set.html command in the input
script.
:line
{Bond Coeffs} section:
one line per bond type :ulb,l
line syntax: ID coeffs :l
ID = bond type (1-N)
coeffs = list of coeffs :pre
example: :l
4 250 1.49 :pre
:ule
The number and meaning of the coefficients are specific to the defined
bond style. See the "bond_style"_bond_style.html and
"bond_coeff"_bond_coeff.html commands for details. Coefficients can
also be set via the "bond_coeff"_bond_coeff.html command in the input
script.
:line
{BondAngle Coeffs} section:
one line per angle type :ulb,l
line syntax: ID coeffs :l
ID = angle type (1-N)
coeffs = list of coeffs (see class 2 section of "angle_coeff"_angle_coeff.html) :pre
:ule
:line
{BondBond Coeffs} section:
one line per angle type :ulb,l
line syntax: ID coeffs :l
ID = angle type (1-N)
coeffs = list of coeffs (see class 2 section of "angle_coeff"_angle_coeff.html) :pre
:ule
:line
{BondBond13 Coeffs} section:
one line per dihedral type :ulb,l
line syntax: ID coeffs :l
ID = dihedral type (1-N)
coeffs = list of coeffs (see class 2 section of "dihedral_coeff"_dihedral_coeff.html) :pre
:ule
:line
{Bonds} section:
one line per bond :ulb,l
line syntax: ID type atom1 atom2 :l
ID = bond number (1-Nbonds)
type = bond type (1-Nbondtype)
atom1,atom2 = IDs of 1st,2nd atoms in bond :pre
example: :l
12 3 17 29 :pre
:ule
The {Bonds} section must appear after the {Atoms} section. All values
in this section must be integers (1, not 1.0).
:line
{Dihedral Coeffs} section:
one line per dihedral type :ulb,l
line syntax: ID coeffs :l
ID = dihedral type (1-N)
coeffs = list of coeffs :pre
example: :l
3 0.6 1 0 1 :pre
:ule
The number and meaning of the coefficients are specific to the defined
dihedral style. See the "dihedral_style"_dihedral_style.html and
"dihedral_coeff"_dihedral_coeff.html commands for details.
Coefficients can also be set via the
"dihedral_coeff"_dihedral_coeff.html command in the input script.
:line
{Dihedrals} section:
one line per dihedral :ulb,l
line syntax: ID type atom1 atom2 atom3 atom4 :l
ID = number of dihedral (1-Ndihedrals)
type = dihedral type (1-Ndihedraltype)
atom1,atom2,atom3,atom4 = IDs of 1st,2nd,3rd,4th atoms in dihedral :pre
example: :l
12 4 17 29 30 21 :pre
:ule
The 4 atoms are ordered linearly within the dihedral. The {Dihedrals}
section must appear after the {Atoms} section. All values in this
section must be integers (1, not 1.0).
:line
{Ellipsoids} section:
one line per ellipsoid :ulb,l
line syntax: atom-ID shapex shapey shapez quatw quati quatj quatk :l
atom-ID = ID of atom which is an ellipsoid
shapex,shapey,shapez = 3 diameters of ellipsoid (distance units)
quatw,quati,quatj,quatk = quaternion components for orientation of atom
type = bond type (1-Nbondtype)
atom1,atom2 = IDs of 1st,2nd atoms in bond :pre
example: :l
12 3 17 29 :pre
:ule
The {Ellipsoids} section must appear if "atom_style
ellipsoid"_atom_style.html is used and any atoms are listed in the
{Atoms} section with an ellipsoidflag = 1. The number of ellipsoids
should be specified in the header section via the "ellipsoids"
keyword.
The 3 shape values specify the 3 diameters or aspect ratios of a
finite-size ellipsoidal particle, when it is oriented along the 3
coordinate axes. They must all be non-zero values.
The values {quatw}, {quati}, {quatj}, and {quatk} set the orientation
of the atom as a quaternion (4-vector). Note that the shape
attributes 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 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)). These
4 components are quatw, quati, quatj, and quatk as specified above.
LAMMPS normalizes each atom's quaternion in case (a,b,c) is not
specified as a unit vector.
The {Ellipsoids} section must appear after the {Atoms} section.
:line
{EndBondTorsion Coeffs} section:
one line per dihedral type :ulb,l
line syntax: ID coeffs :l
ID = dihedral type (1-N)
coeffs = list of coeffs (see class 2 section of "dihedral_coeff"_dihedral_coeff.html) :pre
:ule
:line
{Improper Coeffs} section:
one line per improper type :ulb,l
line syntax: ID coeffs :l
ID = improper type (1-N)
coeffs = list of coeffs :pre
example: :l
2 20 0.0548311 :pre
:ule
The number and meaning of the coefficients are specific to the defined
improper style. See the "improper_style"_improper_style.html and
"improper_coeff"_improper_coeff.html commands for details.
Coefficients can also be set via the
"improper_coeff"_improper_coeff.html command in the input script.
:line
{Impropers} section:
one line per improper :ulb,l
line syntax: ID type atom1 atom2 atom3 atom4 :l
ID = number of improper (1-Nimpropers)
type = improper type (1-Nimpropertype)
atom1,atom2,atom3,atom4 = IDs of 1st,2nd,3rd,4th atoms in improper :pre
example: :l
12 3 17 29 13 100 :pre
:ule
The ordering of the 4 atoms determines the definition of the improper
angle used in the formula for each "improper
style"_improper_style.html. See the doc pages for individual styles
for details.
The {Impropers} section must appear after the {Atoms} section. All
values in this section must be integers (1, not 1.0).
:line
{Masses} section:
one line per atom type :ulb,l
line syntax: ID mass :l
ID = atom type (1-N)
mass = mass value :pre
example: :l
3 1.01 :pre
:ule
This defines the mass of each atom type. This can also be set via the
"mass"_mass.html command in the input script. This section cannot be
used for atom styles that define a mass for individual atoms -
e.g. "atom_style sphere"_atom_style.html.
:line
{MiddleBondTorsion Coeffs} section:
one line per dihedral type :ulb,l
line syntax: ID coeffs :l
ID = dihedral type (1-N)
coeffs = list of coeffs (see class 2 section of "dihedral_coeff"_dihedral_coeff.html) :pre
:ule
:line
{Pair Coeffs} section:
one line per atom type :ulb,l
line syntax: ID coeffs :l
ID = atom type (1-N)
coeffs = list of coeffs :pre
example: :l
3 0.022 2.35197 0.022 2.35197 :pre
:ule
The number and meaning of the coefficients are specific to the defined
pair style. See the "pair_style"_pair_style.html and
"pair_coeff"_pair_coeff.html commands for details. Coefficients can
also be set via the "pair_coeff"_pair_coeff.html command in the input
script.
:line
{Velocities} section:
one line per atom
line syntax: depends on atom style :ul
all styles except those listed: atom-ID vx vy vz
dipole: atom-ID vx vy vz wx wy wz
electron: atom-ID vx vy vz evel
ellipsoid: atom-ID vx vy vz lx ly lz
sphere: atom-ID vx vy vz wx wy wz :tb(s=:)
where the keywords have these meanings:
vx,vy,vz = translational velocity of atom
lx,ly,lz = angular momentum of aspherical atom
wx,wy,wz = angular velocity of spherical atom
evel = electron radial velocity (0 for fixed-core):ul
The velocity lines can appear in any order. This section can only be
used after an {Atoms} section. This is because the {Atoms} section
must have assigned a unique atom ID to each atom so that velocities
can be assigned to them.
Vx, vy, vz, and evel are in "units"_units.html of velocity. Lx, ly,
lz are in units of angular momentum (distance-velocity-mass). Wx, Wy,
Wz are in units of angular velocity (radians/time).
Translational velocities can also be set by the
"velocity"_velocity.html command in the input script.
:line
[Restrictions:]
To read gzipped data files, you must compile LAMMPS with the
--DLAMMPS_GZIP option - see the "Making LAMMPS"_Section_start.html#2_2
-section of the documentation.
+-DLAMMPS_GZIP option - see the "Making
+LAMMPS"_Section_start.html#start_2 section of the documentation.
[Related commands:]
"read_restart"_read_restart.html, "create_atoms"_create_atoms.html
[Default:] none
diff --git a/doc/read_restart.html b/doc/read_restart.html
index 25ccf115e..073b9d4df 100644
--- a/doc/read_restart.html
+++ b/doc/read_restart.html
@@ -1,144 +1,144 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>read_restart command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>read_restart file
</PRE>
<UL><LI>file = name of binary restart file to read in
</UL>
<P><B>Examples:</B>
</P>
<PRE>read_restart save.10000
read_restart restart.*
read_restart poly.*.%
</PRE>
<PRE>
</PRE>
<P><B>Description:</B>
</P>
<P>Read in a previously saved simulation from a restart file. This
allows continuation of a previous run. Information about what is
stored in a restart file is given below.
</P>
<P>Restart files are saved in binary format to enable exact restarts,
meaning that the trajectories of a restarted run will precisely match
those produced by the original run had it continued on. Several
things can prevent exact restarts due to round-off effects, in which
case the trajectories in the 2 runs will slowly diverge. These
include running on a different number of processors or changing
certain settings such as those set by the <A HREF = "newton.html">newton</A> or
<A HREF = "processors.html">processors</A> commands. LAMMPS will issue a warning in
these cases. Certain fixes will also not restart exactly, though they
should provide statistically similar results. These include <A HREF = "fix_shake.html">fix
shake</A> and <A HREF = "fix_langevin.html">fix langevin</A>. If a
restarted run is immediately different than the run which produced the
-restart file, it could be a LAMMPS bug, so consider <A HREF = "Section_errors.html#10_2">reporting
+restart file, it could be a LAMMPS bug, so consider <A HREF = "Section_errors.html#err_2">reporting
it</A> if you think the behavior is wrong.
</P>
<P>Because restart files are binary, they may not be portable to other
machines. They can be converted to ASCII data files using the
<A HREF = "Section_tools.html#restart">restart2data tool</A> in the tools
sub-directory of the LAMMPS distribution.
</P>
<P>Similar to how restart files are written (see the
<A HREF = "write_restart.html">write_restart</A> and <A HREF = "restart.html">restart</A>
commands), the restart filename can contain two wild-card characters.
If a "*" appears in the filename, the directory is searched for all
filenames that match the pattern where "*" is replaced with a timestep
value. The file with the largest timestep value is read in. Thus,
this effectively means, read the latest restart file. It's useful if
you want your script to continue a run from where it left off. See
the <A HREF = "run.html">run</A> command and its "upto" option for how to specify
the run command so it doesn't need to be changed either.
</P>
<P>If a "%" character appears in the restart filename, LAMMPS expects a
set of multiple files to exist. The <A HREF = "restart.html">restart</A> and
<A HREF = "write_restart.html">write_restart</A> commands explain how such sets are
created. Read_restart will first read a filename where "%" is
replaced by "base". This file tells LAMMPS how many processors
created the set. Read_restart then reads the additional files. For
example, if the restart file was specified as save.% when it was
written, then read_restart reads the files save.base, save.0, save.1,
... save.P-1, where P is the number of processors that created the
restart file. The processors in the current LAMMPS simulation share
the work of reading these files; each reads a roughly equal subset of
the files. The number of processors which created the set can be
different the number of processors in the current LAMMPS simulation.
This can be a fast mode of input on parallel machines that support
parallel I/O.
</P>
<HR>
<P>A restart file stores the following information about a simulation:
units and atom style, simulation box size and shape and boundary
settings, group definitions, per-type atom settings such as mass,
per-atom attributes including their group assignments and molecular
topology attributes, force field styles and coefficients, and
<A HREF = "special_bonds.html">special_bonds</A> settings. This means that commands
for these quantities do not need to be re-specified in the input
script that reads the restart file, though you can redefine settings
after the restart file is read.
</P>
<P>One exception is that some pair styles do not store their info in
restart files. The doc pages for individual pair styles note if this
is the case. This is also true of bond_style hybrid (and angle_style,
dihedral_style, improper_style hybrid).
</P>
<P>Information about <A HREF = "kspace_style.html">kspace_style</A> settings are not
stored in the restart file. Hence if you wish to use an Ewald or PPPM
solver, these commands must be re-issued after the restart file is
read.
</P>
<P>The list of <A HREF = "fix.html">fixes</A> used for a simulation is not stored in
the restart file. This means the new input script should specify all
fixes it will use. Note that some fixes store an internal "state"
which is written to the restart file. This allows the fix to continue
on with its calculations in a restarted simulation. To re-enable such
a fix, the fix command in the new input script must use the same
fix-ID and group-ID as was used in the input script that wrote the
restart file. If a match is found, LAMMPS prints a message indicating
that the fix is being re-enabled. If no match is found before the
first run or minimization is performed by the new script, the "state"
information for the saved fix is discarded. See the doc pages for
individual fixes for info on which ones can be restarted in this
manner.
</P>
<P>Bond interactions (angle, etc) that have been turned off by the <A HREF = "fix_shake.html">fix
shake</A> or <A HREF = "delete_bonds.html">delete_bonds</A> command will
be written to a restart file as if they are turned on. This means
they will need to be turned off again in a new run after the restart
file is read.
</P>
<P>Bonds that are broken (e.g. by a bond-breaking potential) are written
to the restart file as broken bonds with a type of 0. Thus these
bonds will still be broken when the restart file is read.
</P>
<P>IMPORTANT NOTE: No other information is stored in the restart file.
This means that an input script that reads a restart file should
specify settings for quantities like <A HREF = "timestep.html">timestep size</A>,
<A HREF = "thermo_style.html">thermodynamic</A>, <A HREF = "doc/neighbor.html">neighbor list</A>
criteria including settings made via the
<A HREF = "doc/neigh_modify.html">neigh_modify</A> comand, <A HREF = "dump.html">dump</A> file
output, <A HREF = "region.html">geometric regions</A>, etc.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "read_data.html">read_data</A>, <A HREF = "write_restart.html">write_restart</A>,
<A HREF = "restart.html">restart</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/read_restart.txt b/doc/read_restart.txt
index 854a27bd2..c4afb2a57 100644
--- a/doc/read_restart.txt
+++ b/doc/read_restart.txt
@@ -1,139 +1,139 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
read_restart command :h3
[Syntax:]
read_restart file :pre
file = name of binary restart file to read in :ul
[Examples:]
read_restart save.10000
read_restart restart.*
read_restart poly.*.% :pre
:pre
[Description:]
Read in a previously saved simulation from a restart file. This
allows continuation of a previous run. Information about what is
stored in a restart file is given below.
Restart files are saved in binary format to enable exact restarts,
meaning that the trajectories of a restarted run will precisely match
those produced by the original run had it continued on. Several
things can prevent exact restarts due to round-off effects, in which
case the trajectories in the 2 runs will slowly diverge. These
include running on a different number of processors or changing
certain settings such as those set by the "newton"_newton.html or
"processors"_processors.html commands. LAMMPS will issue a warning in
these cases. Certain fixes will also not restart exactly, though they
should provide statistically similar results. These include "fix
shake"_fix_shake.html and "fix langevin"_fix_langevin.html. If a
restarted run is immediately different than the run which produced the
restart file, it could be a LAMMPS bug, so consider "reporting
-it"_Section_errors.html#10_2 if you think the behavior is wrong.
+it"_Section_errors.html#err_2 if you think the behavior is wrong.
Because restart files are binary, they may not be portable to other
machines. They can be converted to ASCII data files using the
"restart2data tool"_Section_tools.html#restart in the tools
sub-directory of the LAMMPS distribution.
Similar to how restart files are written (see the
"write_restart"_write_restart.html and "restart"_restart.html
commands), the restart filename can contain two wild-card characters.
If a "*" appears in the filename, the directory is searched for all
filenames that match the pattern where "*" is replaced with a timestep
value. The file with the largest timestep value is read in. Thus,
this effectively means, read the latest restart file. It's useful if
you want your script to continue a run from where it left off. See
the "run"_run.html command and its "upto" option for how to specify
the run command so it doesn't need to be changed either.
If a "%" character appears in the restart filename, LAMMPS expects a
set of multiple files to exist. The "restart"_restart.html and
"write_restart"_write_restart.html commands explain how such sets are
created. Read_restart will first read a filename where "%" is
replaced by "base". This file tells LAMMPS how many processors
created the set. Read_restart then reads the additional files. For
example, if the restart file was specified as save.% when it was
written, then read_restart reads the files save.base, save.0, save.1,
... save.P-1, where P is the number of processors that created the
restart file. The processors in the current LAMMPS simulation share
the work of reading these files; each reads a roughly equal subset of
the files. The number of processors which created the set can be
different the number of processors in the current LAMMPS simulation.
This can be a fast mode of input on parallel machines that support
parallel I/O.
:line
A restart file stores the following information about a simulation:
units and atom style, simulation box size and shape and boundary
settings, group definitions, per-type atom settings such as mass,
per-atom attributes including their group assignments and molecular
topology attributes, force field styles and coefficients, and
"special_bonds"_special_bonds.html settings. This means that commands
for these quantities do not need to be re-specified in the input
script that reads the restart file, though you can redefine settings
after the restart file is read.
One exception is that some pair styles do not store their info in
restart files. The doc pages for individual pair styles note if this
is the case. This is also true of bond_style hybrid (and angle_style,
dihedral_style, improper_style hybrid).
Information about "kspace_style"_kspace_style.html settings are not
stored in the restart file. Hence if you wish to use an Ewald or PPPM
solver, these commands must be re-issued after the restart file is
read.
The list of "fixes"_fix.html used for a simulation is not stored in
the restart file. This means the new input script should specify all
fixes it will use. Note that some fixes store an internal "state"
which is written to the restart file. This allows the fix to continue
on with its calculations in a restarted simulation. To re-enable such
a fix, the fix command in the new input script must use the same
fix-ID and group-ID as was used in the input script that wrote the
restart file. If a match is found, LAMMPS prints a message indicating
that the fix is being re-enabled. If no match is found before the
first run or minimization is performed by the new script, the "state"
information for the saved fix is discarded. See the doc pages for
individual fixes for info on which ones can be restarted in this
manner.
Bond interactions (angle, etc) that have been turned off by the "fix
shake"_fix_shake.html or "delete_bonds"_delete_bonds.html command will
be written to a restart file as if they are turned on. This means
they will need to be turned off again in a new run after the restart
file is read.
Bonds that are broken (e.g. by a bond-breaking potential) are written
to the restart file as broken bonds with a type of 0. Thus these
bonds will still be broken when the restart file is read.
IMPORTANT NOTE: No other information is stored in the restart file.
This means that an input script that reads a restart file should
specify settings for quantities like "timestep size"_timestep.html,
"thermodynamic"_thermo_style.html, "neighbor list"_doc/neighbor.html
criteria including settings made via the
"neigh_modify"_doc/neigh_modify.html comand, "dump"_dump.html file
output, "geometric regions"_region.html, etc.
[Restrictions:] none
[Related commands:]
"read_data"_read_data.html, "write_restart"_write_restart.html,
"restart"_restart.html
[Default:] none
diff --git a/doc/region.html b/doc/region.html
index df278065f..a9b089de7 100644
--- a/doc/region.html
+++ b/doc/region.html
@@ -1,309 +1,309 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>region command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>region ID style args keyword arg ...
</PRE>
<UL><LI>ID = user-assigned name for the region
<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)
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)
<I>prism</I> args = xlo xhi ylo yhi zlo zhi xy xz yz
xlo,xhi,ylo,yhi,zlo,zhi = bounds of untilted prism (distance units)
xy = distance to tilt y in x direction (distance units)
xz = distance to tilt z in x direction (distance units)
yz = distance to tilt z in y direction (distance units)
<I>sphere</I> args = x y z radius
x,y,z = center of sphere (distance units)
radius = radius of sphere (distance units)
<I>union</I> args = N reg-ID1 reg-ID2 ...
N = # of regions to follow, must be 2 or greater
reg-ID1,reg-ID2, ... = IDs of regions to join together
<I>intersect</I> args = N reg-ID1 reg-ID2 ...
N = # of regions to follow, must be 2 or greater
reg-ID1,reg-ID2, ... = IDs of regions to intersect
</PRE>
<LI>zero or more keyword/arg pairs may be appended
<LI>keyword = <I>side</I> or <I>units</I> or <I>move</I> or <I>rotate</I>
<PRE> <I>side</I> value = <I>in</I> or <I>out</I>
<I>in</I> = the region is inside the specified geometry
<I>out</I> = the region is outside the specified geometry
<I>units</I> value = <I>lattice</I> or <I>box</I>
<I>lattice</I> = the geometry is defined in lattice units
<I>box</I> = the geometry is defined in simulation box units
<I>move</I> args = v_x v_y v_z
v_x,v_y,v_z = equal-style variables for x,y,z displacement of region over time
<I>rotate</I> args = v_theta Px Py Pz Rx Ry Rz
v_theta = equal-style variable for rotaton of region over time (in radians)
Px,Py,Pz = origin for axis of rotation (distance units)
Rx,Ry,Rz = axis of rotation vector
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>region 1 block -3.0 5.0 INF 10.0 INF INF
region 2 sphere 0.0 0.0 0.0 5 side out
region void cylinder y 2 3 5 -5.0 EDGE units box
region 1 prism 0 10 0 10 0 10 2 0 0
region outside union 4 side1 side2 side3 side4
region 2 sphere 0.0 0.0 0.0 5 side out move v_left v_up NULL
</PRE>
<P><B>Description:</B>
</P>
<P>This command defines a geometric region of space. Various other
commands use regions. For example, the region can be filled with
atoms via the <A HREF = "create_atoms.html">create_atoms</A> command. Or a bounding
box around the region, can be used to define the simulation box via
the <A HREF = "create_box.html">create_box</A> command. Or the atoms in the region
can be identified as a group via the <A HREF = "group.html">group</A> command, or
deleted via the <A HREF = "delete_atoms.html">delete_atoms</A> command. Or the
surface of the region can be used as a boundary wall via the <A HREF = "fix_wall_region.html">fix
wall/region</A> command.
</P>
<P>Commands which use regions typically test whether an atom's position
is contained in the region or not. For this purpose, coordinates
exactly on the region boundary are considered to be interior to the
region. This means, for example, for a spherical region, an atom on
the sphere surface would be part of the region if the sphere were
defined with the <I>side in</I> keyword, but would not be part of the
region if it were defined using the <I>side out</I> keyword. See more
details on the <I>side</I> keyword below.
</P>
<P>Normally, regions in LAMMPS are "static", meaning their geometric
extent does not change with time. If the <I>move</I> or <I>rotate</I> keyword
is used, as described below, the region becomes "dynamic", meaning
it's location or orientation changes with time. This may be useful,
for example, when thermostatting a region, via the compute temp/region
command, or when the fix wall/region command uses a region surface as
a bounding wall on particle motion, i.e. a rotating container.
</P>
<P>The <I>delete</I> style removes the named region. Since there is little
overhead to defining extra regions, there is normally no need to do
this, unless you are defining and discarding large numbers of regions
in your input script.
</P>
<P>The lo/hi values for <I>block</I> or <I>cone</I> or <I>cylinder</I> or <I>prism</I> styles
can be specified as EDGE or INF. EDGE means they extend all the way
to the global simulation box boundary. Note that this is the current
box boundary; if the box changes size during a simulation, the region
does not. INF means a large negative or positive number (1.0e20), so
it should encompass the simulation box even if it changes size. If a
region is defined before the simulation box has been created (via
<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> commands), then an EDGE or INF
parameter cannot be used. For a <I>prism</I> region, a non-zero tilt
factor in any pair of dimensions cannot be used if both the lo/hi
values in either of those dimensions are INF. E.g. if the xy tilt is
non-zero, then xlo and xhi cannot both be INF, nor can ylo and yhi.
</P>
<P>IMPORTANT NOTE: Regions in LAMMPS do not get wrapped across periodic
boundaries, as specified by the <A HREF = "boundary.html">boundary</A> command. For
example, a spherical region that is defined so that it overlaps a
periodic boundary is not treated as 2 half-spheres, one on either side
of the simulation box.
</P>
<P>IMPORTANT NOTE: Regions in LAMMPS are always 3d geometric objects,
regardless of whether the <A HREF = "dimension.html">dimension</A> of a simulation
is 2d or 3d. Thus when using regions in a 2d simulation, you should
be careful to define the region so that its intersection with the 2d
x-y plane of the simulation has the 2d geometric extent you want.
</P>
<P>For style <I>cone</I>, an axis-aligned cone is defined which is like a
<I>cylinder</I> except that two different radii (one at each end) can be
defined. Either of the radii (but not both) can be 0.0.
</P>
<P>For style <I>cone</I> and <I>cylinder</I>, the c1,c2 params are coordinates in
the 2 other dimensions besides the cylinder axis dimension. For dim =
x, c1/c2 = y/z; for dim = y, c1/c2 = x/z; for dim = z, c1/c2 = x/y.
Thus the third example above specifies a cylinder with its axis in the
y-direction located at x = 2.0 and z = 3.0, with a radius of 5.0, and
extending in the y-direction from -5.0 to the upper box boundary.
</P>
<P>For style <I>plane</I>, a plane is defined which contain the point
(px,py,pz) and has a normal vector (nx,ny,nz). The normal vector does
not have to be of unit length. The "inside" of the plane is the
half-space in the direction of the normal vector; see the discussion
of the <I>side</I> option below.
</P>
<P>For style <I>prism</I>, a parallelepiped is defined (it's too hard to spell
parallelepiped in an input script!). The parallelepiped has its
"origin" at (xlo,ylo,zlo) and is defined by 3 edge vectors starting
from the origin given by A = (xhi-xlo,0,0); B = (xy,yhi-ylo,0); C =
(xz,yz,zhi-zlo). <I>Xy,xz,yz</I> can be 0.0 or positive or negative values
and are called "tilt factors" because they are the amount of
displacement applied to faces of an originally orthogonal box to
transform it into the parallelepiped.
</P>
<P>A prism region that will be used with the <A HREF = "create_box.html">create_box</A>
command to define a triclinic simulation box must have tilt factors
(xy,xz,yz) that do not skew the box more than half the distance of
corresponding the parallel box length. For example, if xlo = 2 and
xhi = 12, then the x box length is 10 and the xy tilt factor must be
between -5 and 5. Similarly, both xz and yz must be between
-(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is not a limitation,
since if the maximum tilt factor is 5 (as in this example), then
configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all
geometrically equivalent.
</P>
-<P>See <A HREF = "Section_howto.html#4_12">this section</A> of the doc pages for a
+<P>See <A HREF = "Section_howto.html#howto_12">this section</A> of the doc pages for a
geometric description of triclinic boxes, as defined by LAMMPS, and
how to transform these parameters to and from other commonly used
triclinic representations.
</P>
<P>The <I>union</I> style creates a region consisting of the volume of all the
listed regions combined. The <I>intersect</I> style creates a region
consisting of the volume that is common to all the listed regions.
</P>
<HR>
<P>The <I>side</I> keyword determines whether the region is considered to be
inside or outside of the specified geometry. Using this keyword in
conjunction with <I>union</I> and <I>intersect</I> regions, complex geometries
can be built up. For example, if the interior of two spheres were
each defined as regions, and a <I>union</I> style with <I>side</I> = out was
constructed listing the region-IDs of the 2 spheres, the resulting
region would be all the volume in the simulation box that was outside
both of the spheres.
</P>
<P>The <I>units</I> keyword determines the meaning of the distance units used
to define the region for any argument above listed as having distance
units. It also affects the scaling of the velocity vector specfied
with the <I>vel</I> keyword, the amplitude vector specified with the
<I>wiggle</I> keyword, and the rotation point specified with the <I>rotate</I>
keyword, since they each involve a distance metric.
</P>
<P>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 spacings which are used as follows:
</P>
<UL><LI>For style <I>block</I>, the lattice spacing in dimension x is applied to
xlo and xhi, similarly the spacings in dimensions y,z are applied to
ylo/yhi and zlo/zhi.
<LI>For style <I>cone</I>, the lattice spacing in argument <I>dim</I> is applied to
lo and hi. The spacings in the two radial dimensions are applied to
c1 and c2. The two cone radii are scaled by the lattice
spacing in the dimension corresponding to c1.
<LI>For style <I>cylinder</I>, the lattice spacing in argument <I>dim</I> is applied
to lo and hi. The spacings in the two radial dimensions are applied
to c1 and c2. The cylinder radius is scaled by the lattice
spacing in the dimension corresponding to c1.
<LI>For style <I>plane</I>, the lattice spacing in dimension x is applied to
px and nx, similarly the spacings in dimensions y,z are applied to
py/ny and pz/nz.
<LI>For style <I>prism</I>, the lattice spacing in dimension x is applied to
xlo and xhi, similarly for ylo/yhi and zlo/zhi. The lattice spacing
in dimension x is applied to xy and xz, and the spacing in dimension y
to yz.
<LI>For style <I>sphere</I>, the lattice spacing in dimensions x,y,z are
applied to the sphere center x,y,z. The spacing in dimension x is
applied to the sphere radius.
</UL>
<HR>
<P>If the <I>move</I> or <I>rotate</I> keywords are used, the region is "dynamic",
meaning its location or orientation changes with time. These keywords
cannot be used with a <I>union</I> or <I>intersect</I> style region. Instead,
the keywords should be used to make the individual sub-regions of the
<I>union</I> or <I>intersect</I> region dynamic. Normally, each sub-region
should be "dynamic" in the same manner (e.g. rotate around the same
point), though this is not a requirement.
</P>
<P>The <I>move</I> keyword allows one or more <A HREF = "variable.html">equal-style
variables</A> to be used to specify the x,y,z displacement
of the region, typically as a function of time. A variable is
specified as v_name, where name is the variable name. Any of the
three variables can be specified as NULL, in which case no
displacement is calculated in that dimension.
</P>
<P>Note that equal-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. Thus it is easy to specify a region displacement that
change as a function of time or spans consecutive runs in a continuous
fashion. For the latter, see the <I>start</I> and <I>stop</I> keywords of the
<A HREF = "run.html">run</A> command and the <I>elaplong</I> keyword of <A HREF = "thermo_style.html">thermo_style
custom</A> for details.
</P>
<P>For example, these commands would displace a region from its initial
position, in the positive x direction, effectively at a constant
velocity:
</P>
<PRE>variable dx equal ramp(0,10)
region 2 sphere 10.0 10.0 0.0 5 move v_dx NULL NULL
</PRE>
<P>Note that the initial displacemet is 0.0, though that is not required.
</P>
<P>Either of these varaibles would "wiggle" the region back and forth in
the y direction:
</P>
<PRE>variable dy equal swiggle(0,5,100)
variable dysame equal 5*sin(2*PI*elaplong*dt/100)
region 2 sphere 10.0 10.0 0.0 5 move NULL v_dy NULL
</PRE>
<P>The <I>rotate</I> keyword rotates the region around a rotation axis <I>R</I> =
(Rx,Ry,Rz) that goes thru a point <I>P</I> = (Px,Py,Pz). The rotation
angle is calculated, presumably as a function of time, by a variable
specified as v_theta, where theta is the variable name. The variable
should generate its result in radians. The direction of rotation for
the region around the rotation axis is consistent with the right-hand
rule: if your right-hand thumb points along <I>R</I>, then your fingers
wrap around the axis in the direction of rotation.
</P>
<P>The <I>move</I> and <I>rotate</I> keywords can be used together. In this case,
the displacement specified by the <I>move</I> keyword is applied to the <I>P</I>
point of the <I>rotate</I> keyword.
</P>
<P><B>Restrictions:</B>
</P>
<P>A prism cannot be of 0.0 thickness in any dimension; use a small z
thickness for 2d simulations. For 2d simulations, the xz and yz
parameters must be 0.0.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "lattice.html">lattice</A>, <A HREF = "create_atoms.html">create_atoms</A>,
<A HREF = "delete_atoms.html">delete_atoms</A>, <A HREF = "group.html">group</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are side = in, units = lattice, and no move or
rotation.
</P>
</HTML>
diff --git a/doc/region.txt b/doc/region.txt
index 0f72de9d5..c8da7594f 100644
--- a/doc/region.txt
+++ b/doc/region.txt
@@ -1,298 +1,298 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
region command :h3
[Syntax:]
region ID style args keyword arg ... :pre
ID = user-assigned name for the region :ulb,l
style = {delete} or {block} or {cone} or {cylinder} or {plane} or {prism} or {sphere} or {union} or {intersect} :l
{delete} = no args
{block} args = xlo xhi ylo yhi zlo zhi
xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all dimensions (distance units)
{cone} args = dim c1 c2 radlo radhi lo hi
dim = {x} or {y} or {z} = 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)
{cylinder} args = dim c1 c2 radius lo hi
dim = {x} or {y} or {z} = axis of cylinder
c1,c2 = coords of cylinder axis in other 2 dimensions (distance units)
radius = cylinder radius (distance units)
lo,hi = bounds of cylinder in dim (distance units)
{plane} 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)
{prism} args = xlo xhi ylo yhi zlo zhi xy xz yz
xlo,xhi,ylo,yhi,zlo,zhi = bounds of untilted prism (distance units)
xy = distance to tilt y in x direction (distance units)
xz = distance to tilt z in x direction (distance units)
yz = distance to tilt z in y direction (distance units)
{sphere} args = x y z radius
x,y,z = center of sphere (distance units)
radius = radius of sphere (distance units)
{union} args = N reg-ID1 reg-ID2 ...
N = # of regions to follow, must be 2 or greater
reg-ID1,reg-ID2, ... = IDs of regions to join together
{intersect} args = N reg-ID1 reg-ID2 ...
N = # of regions to follow, must be 2 or greater
reg-ID1,reg-ID2, ... = IDs of regions to intersect :pre
zero or more keyword/arg pairs may be appended :l
keyword = {side} or {units} or {move} or {rotate} :l
{side} value = {in} or {out}
{in} = the region is inside the specified geometry
{out} = the region is outside the specified geometry
{units} value = {lattice} or {box}
{lattice} = the geometry is defined in lattice units
{box} = the geometry is defined in simulation box units
{move} args = v_x v_y v_z
v_x,v_y,v_z = equal-style variables for x,y,z displacement of region over time
{rotate} args = v_theta Px Py Pz Rx Ry Rz
v_theta = equal-style variable for rotaton of region over time (in radians)
Px,Py,Pz = origin for axis of rotation (distance units)
Rx,Ry,Rz = axis of rotation vector :pre
:ule
[Examples:]
region 1 block -3.0 5.0 INF 10.0 INF INF
region 2 sphere 0.0 0.0 0.0 5 side out
region void cylinder y 2 3 5 -5.0 EDGE units box
region 1 prism 0 10 0 10 0 10 2 0 0
region outside union 4 side1 side2 side3 side4
region 2 sphere 0.0 0.0 0.0 5 side out move v_left v_up NULL :pre
[Description:]
This command defines a geometric region of space. Various other
commands use regions. For example, the region can be filled with
atoms via the "create_atoms"_create_atoms.html command. Or a bounding
box around the region, can be used to define the simulation box via
the "create_box"_create_box.html command. Or the atoms in the region
can be identified as a group via the "group"_group.html command, or
deleted via the "delete_atoms"_delete_atoms.html command. Or the
surface of the region can be used as a boundary wall via the "fix
wall/region"_fix_wall_region.html command.
Commands which use regions typically test whether an atom's position
is contained in the region or not. For this purpose, coordinates
exactly on the region boundary are considered to be interior to the
region. This means, for example, for a spherical region, an atom on
the sphere surface would be part of the region if the sphere were
defined with the {side in} keyword, but would not be part of the
region if it were defined using the {side out} keyword. See more
details on the {side} keyword below.
Normally, regions in LAMMPS are "static", meaning their geometric
extent does not change with time. If the {move} or {rotate} keyword
is used, as described below, the region becomes "dynamic", meaning
it's location or orientation changes with time. This may be useful,
for example, when thermostatting a region, via the compute temp/region
command, or when the fix wall/region command uses a region surface as
a bounding wall on particle motion, i.e. a rotating container.
The {delete} style removes the named region. Since there is little
overhead to defining extra regions, there is normally no need to do
this, unless you are defining and discarding large numbers of regions
in your input script.
The lo/hi values for {block} or {cone} or {cylinder} or {prism} styles
can be specified as EDGE or INF. EDGE means they extend all the way
to the global simulation box boundary. Note that this is the current
box boundary; if the box changes size during a simulation, the region
does not. INF means a large negative or positive number (1.0e20), so
it should encompass the simulation box even if it changes size. If a
region is defined before the simulation box has been created (via
"create_box"_create_box.html or "read_data"_read_data.html or
"read_restart"_read_restart.html commands), then an EDGE or INF
parameter cannot be used. For a {prism} region, a non-zero tilt
factor in any pair of dimensions cannot be used if both the lo/hi
values in either of those dimensions are INF. E.g. if the xy tilt is
non-zero, then xlo and xhi cannot both be INF, nor can ylo and yhi.
IMPORTANT NOTE: Regions in LAMMPS do not get wrapped across periodic
boundaries, as specified by the "boundary"_boundary.html command. For
example, a spherical region that is defined so that it overlaps a
periodic boundary is not treated as 2 half-spheres, one on either side
of the simulation box.
IMPORTANT NOTE: Regions in LAMMPS are always 3d geometric objects,
regardless of whether the "dimension"_dimension.html of a simulation
is 2d or 3d. Thus when using regions in a 2d simulation, you should
be careful to define the region so that its intersection with the 2d
x-y plane of the simulation has the 2d geometric extent you want.
For style {cone}, an axis-aligned cone is defined which is like a
{cylinder} except that two different radii (one at each end) can be
defined. Either of the radii (but not both) can be 0.0.
For style {cone} and {cylinder}, the c1,c2 params are coordinates in
the 2 other dimensions besides the cylinder axis dimension. For dim =
x, c1/c2 = y/z; for dim = y, c1/c2 = x/z; for dim = z, c1/c2 = x/y.
Thus the third example above specifies a cylinder with its axis in the
y-direction located at x = 2.0 and z = 3.0, with a radius of 5.0, and
extending in the y-direction from -5.0 to the upper box boundary.
For style {plane}, a plane is defined which contain the point
(px,py,pz) and has a normal vector (nx,ny,nz). The normal vector does
not have to be of unit length. The "inside" of the plane is the
half-space in the direction of the normal vector; see the discussion
of the {side} option below.
For style {prism}, a parallelepiped is defined (it's too hard to spell
parallelepiped in an input script!). The parallelepiped has its
"origin" at (xlo,ylo,zlo) and is defined by 3 edge vectors starting
from the origin given by A = (xhi-xlo,0,0); B = (xy,yhi-ylo,0); C =
(xz,yz,zhi-zlo). {Xy,xz,yz} can be 0.0 or positive or negative values
and are called "tilt factors" because they are the amount of
displacement applied to faces of an originally orthogonal box to
transform it into the parallelepiped.
A prism region that will be used with the "create_box"_create_box.html
command to define a triclinic simulation box must have tilt factors
(xy,xz,yz) that do not skew the box more than half the distance of
corresponding the parallel box length. For example, if xlo = 2 and
xhi = 12, then the x box length is 10 and the xy tilt factor must be
between -5 and 5. Similarly, both xz and yz must be between
-(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is not a limitation,
since if the maximum tilt factor is 5 (as in this example), then
configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all
geometrically equivalent.
-See "this section"_Section_howto.html#4_12 of the doc pages for a
+See "this section"_Section_howto.html#howto_12 of the doc pages for a
geometric description of triclinic boxes, as defined by LAMMPS, and
how to transform these parameters to and from other commonly used
triclinic representations.
The {union} style creates a region consisting of the volume of all the
listed regions combined. The {intersect} style creates a region
consisting of the volume that is common to all the listed regions.
:line
The {side} keyword determines whether the region is considered to be
inside or outside of the specified geometry. Using this keyword in
conjunction with {union} and {intersect} regions, complex geometries
can be built up. For example, if the interior of two spheres were
each defined as regions, and a {union} style with {side} = out was
constructed listing the region-IDs of the 2 spheres, the resulting
region would be all the volume in the simulation box that was outside
both of the spheres.
The {units} keyword determines the meaning of the distance units used
to define the region for any argument above listed as having distance
units. It also affects the scaling of the velocity vector specfied
with the {vel} keyword, the amplitude vector specified with the
{wiggle} keyword, and the rotation point specified with the {rotate}
keyword, since they each involve a distance metric.
A {box} value selects standard distance units as defined by the
"units"_units.html command, e.g. Angstroms for units = real or metal.
A {lattice} value means the distance units are in lattice spacings.
The "lattice"_lattice.html command must have been previously used to
define the lattice spacings which are used as follows:
For style {block}, the lattice spacing in dimension x is applied to
xlo and xhi, similarly the spacings in dimensions y,z are applied to
ylo/yhi and zlo/zhi. :ulb,l
For style {cone}, the lattice spacing in argument {dim} is applied to
lo and hi. The spacings in the two radial dimensions are applied to
c1 and c2. The two cone radii are scaled by the lattice
spacing in the dimension corresponding to c1. :l
For style {cylinder}, the lattice spacing in argument {dim} is applied
to lo and hi. The spacings in the two radial dimensions are applied
to c1 and c2. The cylinder radius is scaled by the lattice
spacing in the dimension corresponding to c1. :l
For style {plane}, the lattice spacing in dimension x is applied to
px and nx, similarly the spacings in dimensions y,z are applied to
py/ny and pz/nz. :l
For style {prism}, the lattice spacing in dimension x is applied to
xlo and xhi, similarly for ylo/yhi and zlo/zhi. The lattice spacing
in dimension x is applied to xy and xz, and the spacing in dimension y
to yz. :l
For style {sphere}, the lattice spacing in dimensions x,y,z are
applied to the sphere center x,y,z. The spacing in dimension x is
applied to the sphere radius. :l,ule
:line
If the {move} or {rotate} keywords are used, the region is "dynamic",
meaning its location or orientation changes with time. These keywords
cannot be used with a {union} or {intersect} style region. Instead,
the keywords should be used to make the individual sub-regions of the
{union} or {intersect} region dynamic. Normally, each sub-region
should be "dynamic" in the same manner (e.g. rotate around the same
point), though this is not a requirement.
The {move} keyword allows one or more "equal-style
variables"_variable.html to be used to specify the x,y,z displacement
of the region, typically as a function of time. A variable is
specified as v_name, where name is the variable name. Any of the
three variables can be specified as NULL, in which case no
displacement is calculated in that dimension.
Note that equal-style variables can specify formulas with various
mathematical functions, and include "thermo_style"_thermo_style.html
command keywords for the simulation box parameters and timestep and
elapsed time. Thus it is easy to specify a region displacement that
change as a function of time or spans consecutive runs in a continuous
fashion. For the latter, see the {start} and {stop} keywords of the
"run"_run.html command and the {elaplong} keyword of "thermo_style
custom"_thermo_style.html for details.
For example, these commands would displace a region from its initial
position, in the positive x direction, effectively at a constant
velocity:
variable dx equal ramp(0,10)
region 2 sphere 10.0 10.0 0.0 5 move v_dx NULL NULL :pre
Note that the initial displacemet is 0.0, though that is not required.
Either of these varaibles would "wiggle" the region back and forth in
the y direction:
variable dy equal swiggle(0,5,100)
variable dysame equal 5*sin(2*PI*elaplong*dt/100)
region 2 sphere 10.0 10.0 0.0 5 move NULL v_dy NULL :pre
The {rotate} keyword rotates the region around a rotation axis {R} =
(Rx,Ry,Rz) that goes thru a point {P} = (Px,Py,Pz). The rotation
angle is calculated, presumably as a function of time, by a variable
specified as v_theta, where theta is the variable name. The variable
should generate its result in radians. The direction of rotation for
the region around the rotation axis is consistent with the right-hand
rule: if your right-hand thumb points along {R}, then your fingers
wrap around the axis in the direction of rotation.
The {move} and {rotate} keywords can be used together. In this case,
the displacement specified by the {move} keyword is applied to the {P}
point of the {rotate} keyword.
[Restrictions:]
A prism cannot be of 0.0 thickness in any dimension; use a small z
thickness for 2d simulations. For 2d simulations, the xz and yz
parameters must be 0.0.
[Related commands:]
"lattice"_lattice.html, "create_atoms"_create_atoms.html,
"delete_atoms"_delete_atoms.html, "group"_group.html
[Default:]
The option defaults are side = in, units = lattice, and no move or
rotation.
diff --git a/doc/run.html b/doc/run.html
index da99cd1fb..f190d487a 100644
--- a/doc/run.html
+++ b/doc/run.html
@@ -1,194 +1,194 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>run command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>run N keyword values ...
</PRE>
<UL><LI>N = # of timesteps
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>upto</I> or <I>start</I> or <I>stop</I> or <I>pre</I> or <I>post</I> or <I>every</I>
<PRE> <I>upto</I> value = none
<I>start</I> value = N1
N1 = timestep at which 1st run started
<I>stop</I> value = N2
N2 = timestep at which last run will end
<I>pre</I> value = <I>no</I> or <I>yes</I>
<I>post</I> value = <I>no</I> or <I>yes</I>
<I>every</I> values = M c1 c2 ...
M = break the run into M-timestep segments and invoke one or more commands between each segment
c1,c2,...,cN = one or more LAMMPS commands, each enclosed in quotes
c1 = NULL means no command will be invoked
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>run 10000
run 1000000 upto
run 100 start 0 stop 1000
run 1000 pre no post yes
run 100000 start 0 stop 1000000 every 1000 "print 'Protein Rg = $r'"
run 100000 every 1000 NULL
</PRE>
<P><B>Description:</B>
</P>
<P>Run or continue dynamics for a specified number of timesteps.
</P>
<P>When the <A HREF = "run_style.html">run style</A> is <I>respa</I>, N refers to outer
loop (largest) timesteps.
</P>
<P>A value of N = 0 is acceptable; only the thermodynamics of the system
are computed and printed without taking a timestep.
</P>
<P>The <I>upto</I> keyword means to perform a run starting at the current
timestep up to the specified timestep. E.g. if the current timestep
is 10,000 and "run 100000 upto" is used, then an additional 90,000
timesteps will be run. This can be useful for very long runs on a
machine that allocates chunks of time and terminate your job when time
is exceeded. If you need to restart your script multiple times
(reading in the last restart file), you can keep restarting your
script with the same run command until the simulation finally
completes.
</P>
<P>The <I>start</I> or <I>stop</I> keywords can be used if multiple runs are being
performed and you want a <A HREF = "fix.html">fix</A> command that changes some
value over time (e.g. temperature) to make the change across the
entire set of runs and not just a single run. See the doc page for
individual fixes to see which ones can be used with the <I>start/stop</I>
keywords.
</P>
<P>For example, consider this fix followed by 10 run commands:
</P>
<PRE>fix 1 all nvt 200.0 300.0 1.0
run 1000 start 0 stop 10000
run 1000 start 0 stop 10000
...
run 1000 start 0 stop 10000
</PRE>
<P>The NVT fix ramps the target temperature from 200.0 to 300.0 during a
run. If the run commands did not have the start/stop keywords (just
"run 1000"), then the temperature would ramp from 200.0 to 300.0
during the 1000 steps of each run. With the start/stop keywords, the
ramping takes place over the 10000 steps of all runs together.
</P>
<P>The <I>pre</I> and <I>post</I> keywords can be used to streamline the setup,
clean-up, and associated output to the screen that happens before and
after a run. This can be useful if you wish to do many short runs in
succession (e.g. LAMMPS is being called as a library which is doing
other computations between successive short LAMMPS runs).
</P>
<P>By default (pre and post = yes), LAMMPS creates neighbor lists,
computes forces, and imposes fix constraints before every run. And
after every run it gathers and prints timings statistics. If a run is
just a continuation of a previous run (i.e. no settings are changed),
the initial computation is not necessary; the old neighbor list is
still valid as are the forces. So if <I>pre</I> is specified as "no" then
the initial setup is skipped, except for printing thermodynamic info.
Note that if <I>pre</I> is set to "no" for the very 1st run LAMMPS
performs, then it is overridden, since the initial setup computations
must be done.
</P>
<P>IMPORTANT NOTE: If your input script changes settings between 2 runs
(e.g. adds a <A HREF = "fix.html">fix</A> or <A HREF = "dump.html">dump</A> or
<A HREF = "compute.html">compute</A> or changes a <A HREF = "neigh_modify.html">neighbor</A> list
parameter), then the initial setup must be performed. LAMMPS does not
check for this, but it would be an error to use the <I>pre no</I> option in
this case.
</P>
<P>If <I>post</I> is specified as "no", the full timing summary is skipped;
only a one-line summary timing is printed.
</P>
<P>The <I>every</I> keyword provides a means of breaking a LAMMPS run into a
series of shorter runs. Optionally, one or more LAMMPS commands (c1,
c2, ..., cN) will be executed in between the short runs. If used, the
<I>every</I> keyword must be the last keyword, since it has a variable
number of arguments. Each of the trailing arguments is a single
LAMMPS command, and each command should be enclosed in quotes, so that
the entire command will be treated as a single argument. This will
also prevent any variables in the command from being evaluated until
it is executed multiple times during the run. Note that if a command
itself needs one of its arguments quoted (e.g. the <A HREF = "print.html">print</A>
command), then you can use a combination of single and double quotes,
as in the example above or below.
</P>
<P>The <I>every</I> keyword is a means to avoid listing a long series of runs
and interleaving commands in your input script. For example, a
<A HREF = "print.html">print</A> command could be invoked or a <A HREF = "fix.html">fix</A> could
be redefined, e.g. to reset a thermostat temperature. Or this could
be useful for invoking a command you have added to LAMMPS that wraps
some other code (e.g. as a library) to perform a computation
periodically during a long LAMMPS run. See <A HREF = "Section_modify.html">this
section</A> of the documentation for info about how
-to add new commands to LAMMPS. See <A HREF = "Section_howto.html#4_10">this
-section</A> of the documentation for ideas about
-how to couple LAMMPS to other codes.
+to add new commands to LAMMPS. See <A HREF = "Section_howto.html#howto_10">this
+section</A> of the documentation for ideas
+about how to couple LAMMPS to other codes.
</P>
<P>With the <I>every</I> option, N total steps are simulated, in shorter runs
of M steps each. After each M-length run, the specified commands are
invoked. If only a single command is specified as NULL, then no
command is invoked. Thus these lines:
</P>
<PRE>variable q equal x[100]
run 6000 every 2000 "print Coord = $q"
</PRE>
<P>are the equivalent of:
</P>
<PRE>variable q equal x[100]
run 2000
print Coord = $q
run 2000
print Coord = $q
run 2000
print Coord = $q
</PRE>
<P>which does 3 runs of 2000 steps and prints the x-coordinate of a
particular atom between runs. Note that the variable "$q" will
be evaluated afresh each time the print command is executed.
</P>
<P>Note that by using the line continuation character "&", the run every
command can be spread across many lines, though it is still a single
command:
</P>
<PRE>run 100000 every 1000 &
"print 'Minimum value = $a'" &
"print 'Maximum value = $b'" &
"print 'Temp = $c'" &
"print 'Press = $d'"
</PRE>
<P>If the <I>pre</I> and <I>post</I> options are set to "no" when used with the
<I>every</I> keyword, then the 1st run will do the full setup and the last
run will print the full timing summary, but these operations will be
skipped for intermediate runs.
</P>
<P><B>Restrictions:</B>
</P>
<P>The number of specified timesteps N must fit in a signed 32-bit
integer, so you are limited to slightly more than 2 billion steps
(2^31) in a single run. However, you can perform successive runs to
run a simulation for any number of steps (ok, up to 2^63 steps).
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "minimize.html">minimize</A>, <A HREF = "run_style.html">run_style</A>,
<A HREF = "temper.html">temper</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are start = the current timestep, stop = current
timestep + N, pre = yes, and post = yes.
</P>
</HTML>
diff --git a/doc/run.txt b/doc/run.txt
index febf22777..c3d50ed7f 100644
--- a/doc/run.txt
+++ b/doc/run.txt
@@ -1,185 +1,185 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
run command :h3
[Syntax:]
run N keyword values ... :pre
N = # of timesteps :ulb,l
zero or more keyword/value pairs may be appended :l
keyword = {upto} or {start} or {stop} or {pre} or {post} or {every} :l
{upto} value = none
{start} value = N1
N1 = timestep at which 1st run started
{stop} value = N2
N2 = timestep at which last run will end
{pre} value = {no} or {yes}
{post} value = {no} or {yes}
{every} values = M c1 c2 ...
M = break the run into M-timestep segments and invoke one or more commands between each segment
c1,c2,...,cN = one or more LAMMPS commands, each enclosed in quotes
c1 = NULL means no command will be invoked :pre
:ule
[Examples:]
run 10000
run 1000000 upto
run 100 start 0 stop 1000
run 1000 pre no post yes
run 100000 start 0 stop 1000000 every 1000 "print 'Protein Rg = $r'"
run 100000 every 1000 NULL :pre
[Description:]
Run or continue dynamics for a specified number of timesteps.
When the "run style"_run_style.html is {respa}, N refers to outer
loop (largest) timesteps.
A value of N = 0 is acceptable; only the thermodynamics of the system
are computed and printed without taking a timestep.
The {upto} keyword means to perform a run starting at the current
timestep up to the specified timestep. E.g. if the current timestep
is 10,000 and "run 100000 upto" is used, then an additional 90,000
timesteps will be run. This can be useful for very long runs on a
machine that allocates chunks of time and terminate your job when time
is exceeded. If you need to restart your script multiple times
(reading in the last restart file), you can keep restarting your
script with the same run command until the simulation finally
completes.
The {start} or {stop} keywords can be used if multiple runs are being
performed and you want a "fix"_fix.html command that changes some
value over time (e.g. temperature) to make the change across the
entire set of runs and not just a single run. See the doc page for
individual fixes to see which ones can be used with the {start/stop}
keywords.
For example, consider this fix followed by 10 run commands:
fix 1 all nvt 200.0 300.0 1.0
run 1000 start 0 stop 10000
run 1000 start 0 stop 10000
...
run 1000 start 0 stop 10000 :pre
The NVT fix ramps the target temperature from 200.0 to 300.0 during a
run. If the run commands did not have the start/stop keywords (just
"run 1000"), then the temperature would ramp from 200.0 to 300.0
during the 1000 steps of each run. With the start/stop keywords, the
ramping takes place over the 10000 steps of all runs together.
The {pre} and {post} keywords can be used to streamline the setup,
clean-up, and associated output to the screen that happens before and
after a run. This can be useful if you wish to do many short runs in
succession (e.g. LAMMPS is being called as a library which is doing
other computations between successive short LAMMPS runs).
By default (pre and post = yes), LAMMPS creates neighbor lists,
computes forces, and imposes fix constraints before every run. And
after every run it gathers and prints timings statistics. If a run is
just a continuation of a previous run (i.e. no settings are changed),
the initial computation is not necessary; the old neighbor list is
still valid as are the forces. So if {pre} is specified as "no" then
the initial setup is skipped, except for printing thermodynamic info.
Note that if {pre} is set to "no" for the very 1st run LAMMPS
performs, then it is overridden, since the initial setup computations
must be done.
IMPORTANT NOTE: If your input script changes settings between 2 runs
(e.g. adds a "fix"_fix.html or "dump"_dump.html or
"compute"_compute.html or changes a "neighbor"_neigh_modify.html list
parameter), then the initial setup must be performed. LAMMPS does not
check for this, but it would be an error to use the {pre no} option in
this case.
If {post} is specified as "no", the full timing summary is skipped;
only a one-line summary timing is printed.
The {every} keyword provides a means of breaking a LAMMPS run into a
series of shorter runs. Optionally, one or more LAMMPS commands (c1,
c2, ..., cN) will be executed in between the short runs. If used, the
{every} keyword must be the last keyword, since it has a variable
number of arguments. Each of the trailing arguments is a single
LAMMPS command, and each command should be enclosed in quotes, so that
the entire command will be treated as a single argument. This will
also prevent any variables in the command from being evaluated until
it is executed multiple times during the run. Note that if a command
itself needs one of its arguments quoted (e.g. the "print"_print.html
command), then you can use a combination of single and double quotes,
as in the example above or below.
The {every} keyword is a means to avoid listing a long series of runs
and interleaving commands in your input script. For example, a
"print"_print.html command could be invoked or a "fix"_fix.html could
be redefined, e.g. to reset a thermostat temperature. Or this could
be useful for invoking a command you have added to LAMMPS that wraps
some other code (e.g. as a library) to perform a computation
periodically during a long LAMMPS run. See "this
section"_Section_modify.html of the documentation for info about how
to add new commands to LAMMPS. See "this
-section"_Section_howto.html#4_10 of the documentation for ideas about
-how to couple LAMMPS to other codes.
+section"_Section_howto.html#howto_10 of the documentation for ideas
+about how to couple LAMMPS to other codes.
With the {every} option, N total steps are simulated, in shorter runs
of M steps each. After each M-length run, the specified commands are
invoked. If only a single command is specified as NULL, then no
command is invoked. Thus these lines:
variable q equal x\[100\]
run 6000 every 2000 "print Coord = $q" :pre
are the equivalent of:
variable q equal x\[100\]
run 2000
print Coord = $q
run 2000
print Coord = $q
run 2000
print Coord = $q :pre
which does 3 runs of 2000 steps and prints the x-coordinate of a
particular atom between runs. Note that the variable "$q" will
be evaluated afresh each time the print command is executed.
Note that by using the line continuation character "&", the run every
command can be spread across many lines, though it is still a single
command:
run 100000 every 1000 &
"print 'Minimum value = $a'" &
"print 'Maximum value = $b'" &
"print 'Temp = $c'" &
"print 'Press = $d'" :pre
If the {pre} and {post} options are set to "no" when used with the
{every} keyword, then the 1st run will do the full setup and the last
run will print the full timing summary, but these operations will be
skipped for intermediate runs.
[Restrictions:]
The number of specified timesteps N must fit in a signed 32-bit
integer, so you are limited to slightly more than 2 billion steps
(2^31) in a single run. However, you can perform successive runs to
run a simulation for any number of steps (ok, up to 2^63 steps).
[Related commands:]
"minimize"_minimize.html, "run_style"_run_style.html,
"temper"_temper.html
[Default:]
The option defaults are start = the current timestep, stop = current
timestep + N, pre = yes, and post = yes.
diff --git a/doc/suffix.html b/doc/suffix.html
index 85199d16d..f60a58138 100644
--- a/doc/suffix.html
+++ b/doc/suffix.html
@@ -1,74 +1,74 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>suffix command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>suffix style
</PRE>
<UL><LI>style = <I>off</I> or <I>on</I> or <I>opt</I> or <I>gpu</I> or <I>cuda</I>
</UL>
<P><B>Examples:</B>
</P>
<PRE>suffix off
suffix on
suffix gpu
</PRE>
<P><B>Description:</B>
</P>
<P>This command allows you to use variants of various styles if they
-exist. In that respect it operates the same as the <A HREF = "Section_start.html#2_6">-suffix
-command-line switch</A>. It also has options to
-turn off/on any suffix setting made via the command line.
+exist. In that respect it operates the same as the <A HREF = "Section_start.html#start_6">-suffix
+command-line switch</A>. It also has options
+to turn off/on any suffix setting made via the command line.
</P>
<P>The specified style can be <I>opt</I> or <I>gpu</I> or <I>cuda</I>. These refer to
-optional packages that LAMMPS can be built with, as described in <A HREF = "Section_start.html#2_3">this
+optional packages that LAMMPS can be built with, as described in <A HREF = "Section_start.html#start_3">this
section of the manual</A>. The "opt" style
corrsponds to the OPT package, the "gpu" style to the GPU package, and
the "cuda" style to the USER-CUDA package.
</P>
<P>These are the variants these packages provide:
</P>
<UL><LI>OPT = a handful of pair styles, cache-optimized for faster CPU performance
<LI>GPU = a handful of pair styles and the PPPM kspace_style, optimized to run on one or more GPUs or multicore CPU/GPU nodes
<LI>USER-CUDA = a collection of atom, pair, fix, compute, and intergrate styles, optimized to run on one or more NVIDIA GPUs
</UL>
<P>As an example, all of the packages provide a <A HREF = "pair_lj.html">pair_style
lj/cut</A> variant, with style names lj/cut/opt or
lj/cut/gpu or lj/cut/cuda. A variant styles can be specified
explicitly in your input script, e.g. pair_style lj/cut/gpu. If the
suffix command is used with the appropriate style, you do not need to
modify your input script. The specified suffix (opt,gpu,cuda) is
automatically appended whenever your input script command creates a
new <A HREF = "atom_style.html">atom</A>, <A HREF = "pair_style.html">pair</A>, <A HREF = "fix.html">fix</A>,
<A HREF = "compute.html">compute</A>, or <A HREF = "run_style.html">run</A> style. If the variant
version does not exist, the standard version is created.
</P>
<P>If the specified style is <I>off</I>, then any previously specified suffix
is temporarily disabled, whether it was specified by a command-line
switch or a previous suffix command. If the specified style is <I>on</I>,
a disabled suffix is turned back on. The use of these 2 commands lets
your input script use a standard LAMMPS style (i.e. a non-accelerated
variant), which can be useful for testing or benchmarking purposes.
Of course this is also possible by not using any suffix commands, and
explictly appending or not appending the suffix to the relevant
commands in your input script.
</P>
<P><B>Restrictions:</B> none
</P>
<P><B>Related commands:</B>
</P>
-<P><A HREF = "Section_start.html#2_6">Command-line switch -suffix</A>
+<P><A HREF = "Section_start.html#start_6">Command-line switch -suffix</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/suffix.txt b/doc/suffix.txt
index af34e03db..758ce38e9 100644
--- a/doc/suffix.txt
+++ b/doc/suffix.txt
@@ -1,69 +1,69 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
suffix command :h3
[Syntax:]
suffix style :pre
style = {off} or {on} or {opt} or {gpu} or {cuda} :ul
[Examples:]
suffix off
suffix on
suffix gpu :pre
[Description:]
This command allows you to use variants of various styles if they
exist. In that respect it operates the same as the "-suffix
-command-line switch"_Section_start.html#2_6. It also has options to
-turn off/on any suffix setting made via the command line.
+command-line switch"_Section_start.html#start_6. It also has options
+to turn off/on any suffix setting made via the command line.
The specified style can be {opt} or {gpu} or {cuda}. These refer to
optional packages that LAMMPS can be built with, as described in "this
-section of the manual"_Section_start.html#2_3. The "opt" style
+section of the manual"_Section_start.html#start_3. The "opt" style
corrsponds to the OPT package, the "gpu" style to the GPU package, and
the "cuda" style to the USER-CUDA package.
These are the variants these packages provide:
OPT = a handful of pair styles, cache-optimized for faster CPU performance
GPU = a handful of pair styles and the PPPM kspace_style, optimized to run on one or more GPUs or multicore CPU/GPU nodes
USER-CUDA = a collection of atom, pair, fix, compute, and intergrate styles, optimized to run on one or more NVIDIA GPUs :ul
As an example, all of the packages provide a "pair_style
lj/cut"_pair_lj.html variant, with style names lj/cut/opt or
lj/cut/gpu or lj/cut/cuda. A variant styles can be specified
explicitly in your input script, e.g. pair_style lj/cut/gpu. If the
suffix command is used with the appropriate style, you do not need to
modify your input script. The specified suffix (opt,gpu,cuda) is
automatically appended whenever your input script command creates a
new "atom"_atom_style.html, "pair"_pair_style.html, "fix"_fix.html,
"compute"_compute.html, or "run"_run_style.html style. If the variant
version does not exist, the standard version is created.
If the specified style is {off}, then any previously specified suffix
is temporarily disabled, whether it was specified by a command-line
switch or a previous suffix command. If the specified style is {on},
a disabled suffix is turned back on. The use of these 2 commands lets
your input script use a standard LAMMPS style (i.e. a non-accelerated
variant), which can be useful for testing or benchmarking purposes.
Of course this is also possible by not using any suffix commands, and
explictly appending or not appending the suffix to the relevant
commands in your input script.
[Restrictions:] none
[Related commands:]
-"Command-line switch -suffix"_Section_start.html#2_6
+"Command-line switch -suffix"_Section_start.html#start_6
[Default:] none
diff --git a/doc/tad.html b/doc/tad.html
index 29e8b21cb..ff74027e2 100644
--- a/doc/tad.html
+++ b/doc/tad.html
@@ -1,315 +1,314 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>tad command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>tad N t_event T_lo T_hi delta tmax compute-ID seed keyword value ...
</PRE>
<UL><LI>N = # of timesteps to run (not including dephasing/quenching)
<LI>t_event = timestep interval between event checks
<LI>T_lo = temperature at which event times are desired
<LI>T_hi = temperature at which MD simulation is performed
<LI>delta = desired confidence level for stopping criterion
<LI>tmax = reciprocal of lowest expected preexponential factor (time units)
<LI>compute-ID = ID of the compute used for event detection
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>min</I> or <I>neb</I> or <I>min_style</I> or <I>neb_style</I> or <I>neb_log</I>
<PRE> <I>min</I> values = etol ftol maxiter maxeval
etol = stopping tolerance for energy (energy units)
ftol = stopping tolerance for force (force units)
maxiter = max iterations of minimize
maxeval = max number of force/energy evaluations
<I>neb</I> values = ftol N1 N2 Nevery
etol = stopping tolerance for energy (energy units)
ftol = stopping tolerance for force (force units)
N1 = max # of iterations (timesteps) to run initial NEB
N2 = max # of iterations (timesteps) to run barrier-climbing NEB
Nevery = print NEB statistics every this many timesteps
<I>min_style</I> value = <I>cg</I> or <I>hftn</I> or <I>sd</I> or <I>quickmin</I> or <I>fire</I>
<I>neb_style</I> value = <I>quickmin</I> or <I>fire</I>
<I>neb_log</I> value = file where NEB statistics are printed
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>tad 2000 50 1800 2300 0.01 0.01 event 54985
tad 2000 50 1800 2300 0.01 0.01 event 54985 &
min 1e-05 1e-05 100 100 &
neb 0.0 0.01 200 200 20 &
min_style cg &
neb_style fire &
neb_log log.neb
</PRE>
<P><B>Description:</B>
</P>
<P>Run a temperature accelerated dynamics (TAD) simulation. This method
requires two or more partitions to perform NEB transition state
searches.
</P>
<P>TAD is described in <A HREF = "#Voter">this paper</A> by Art Voter. It is a method
that uses accelerated dynamics at an elevated temperature to generate
results at a specified lower temperature. A good overview of
accelerated dynamics methods for such systems is given in <A HREF = "#Voter2">this review
paper</A> from the same group. In general, these methods assume
that the long-time dynamics is dominated by infrequent events i.e. the
system is is confined to low energy basins for long periods,
punctuated by brief, randomly-occurring transitions to adjacent
basins. TAD is suitable for infrequent-event systems, where in
addition, the transition kinetics are well-approximated by harmonic
transition state theory (hTST). In hTST, the temperature dependence of
transition rates follows the Arrhenius relation. As a consequence a
set of event times generated in a high-temperature simulation can be
mapped to a set of much longer estimated times in the low-temperature
system. However, because this mapping involves the energy barrier of
the transition event, which is different for each event, the first
event at the high temperature may not be the earliest event at the low
temperature. TAD handles this by first generating a set of possible
events from the current basin. After each event, the simulation is
reflected backwards into the current basin. This is repeated until
the stopping criterion is satisfied, at which point the event with the
earliest low-temperature occurrence time is selected. The stopping
criterion is that the confidence measure be greater than
1-<I>delta</I>. The confidence measure is the probability that no earlier
low-temperature event will occur at some later time in the
high-temperature simulation. hTST provides an lower bound for this
probability, based on the user-specified minimum pre-exponential
factor (reciprocal of <I>tmax</I>).
</P>
<P>In order to estimate the energy barrier for each event, the TAD method
invokes the <A HREF = "neb.html">NEB</A> method. Each NEB replica runs on a
partition of processors. The current NEB implementation in LAMMPS
restricts you to having exactly one processor per replica. For more
information, see the documentation for the <A HREF = "neb.html">neb</A> command. In
the current LAMMPS implementation of TAD, all the non-NEB TAD
operations are performed on the first partition, while the other
-partitions remain idle. See <A HREF = "Section_howto.html#4_5">this
-section</A> of the manual for further discussion
-of multi-replica simulations.
+partitions remain idle. See <A HREF = "Section_howto.html#howto_5">this section</A>
+of the manual for further discussion of multi-replica simulations.
</P>
<P>A TAD run has several stages, which are repeated each time an event is
performed. The logic for a TAD run is as follows:
</P>
<PRE>while (time remains):
while (time < tstop):
until (event occurs):
run dynamics for t_event steps
quench
run neb calculation using all replicas
compute tlo from energy barrier
update earliest event
update tstop
reflect back into current basin
execute earliest event
</PRE>
<P>Before this outer loop begins, the initial potential energy basin is
identified by quenching (an energy minimization, see below) the
initial state and storing the resulting coordinates for reference.
</P>
<P>Inside the inner loop, dynamics is run continuously according to
whatever integrator has been specified by the user, stopping every
<I>t_event</I> steps to check if a transition event has occurred. This
check is performed by quenching the system and comparing the resulting
atom coordinates to the coordinates from the previous basin.
</P>
<P>A quench is an energy minimization and is performed by whichever
algorithm has been defined by the <I>min</I> and <I>min_style</I> keywords or
their default values. Note that typically, you do not need to perform
a highly-converged minimization to detect a transition event.
</P>
<P>The event check is performed by a compute with the specified
<I>compute-ID</I>. Currently there is only one compute that works with the
TAD commmand, which is the <A HREF = "compute_event_displace.html">compute
event/displace</A> command. Other
event-checking computes may be added. <A HREF = "compute_event_displace.html">Compute
event/displace</A> checks whether any atom in
the compute group has moved further than a specified threshold
distance. If so, an "event" has occurred.
</P>
<P>The neb calculation is similar to that invoked by the <A HREF = "neb.html">neb</A>
command, except that the final state is generated internally, instead
of being read in from a file. The TAD implementation provides default
values for the NEB settings, which can be overridden using the <I>neb</I>
and <I>neb_style</I> keywords.
</P>
<HR>
<P>A key aspect of the TAD method is setting the stopping criterion
appropriately. If this criterion is too conservative, then many
events must be generated before one is finally executed. Conversely,
if this criterion is too aggressive, high-entropy high-barrier events
will be over-sampled, while low-entropy low-barrier events will be
under-sampled. If the lowest pre-exponential factor is known fairly
accurately, then it can be used to estimate <I>tmax</I>, and the value of
<I>delta</I> can be set to the desired confidence level e.g. <I>delta</I> = 0.05
corresponds to 95% confidence. However, for systems where the dynamics
are not well characterized (the most common case), it will be
necessary to experiment with the values of <I>delta</I> and <I>tmax</I> to get a
good trade-off between accuracy and performance.
</P>
<P>A second key aspect is the choice of <I>t_hi</I>. A larger value greatly
increases the rate at which new events are generated. However, too
large a value introduces errors due to anharmonicity (not accounted
for within hTST). Once again, for any given system, experimentation is
necessary to determine the best value of <I>t_hi</I>.
</P>
<HR>
<P>Five kinds of output can be generated during a TAD run: event
statistics, NEB statistics, thermodynamic output by each replica, dump
files, and restart files.
</P>
<P>Event statistics are printed to the screen and master log.lammps file
each time an event is executed. The quantities are the timestep, CPU
time, global event number <I>N</I>, local event number <I>M</I>, event status,
energy barrier, time margin, <I>t_lo</I> and <I>delt_lo</I>. The timestep is
the usual LAMMPS timestep, which corresponds to the high-temperature
time at which the event was detected, in units of timestep. The CPU
time is the total processor time since the start of the TAD run. The
global event number <I>N</I> is a counter that increments with each
executed event. The local event number <I>M</I> is a counter that resets to
zero upon entering each new basin. The event status is <I>E</I> when an
event is executed, and is <I>D</I> for an event that is detected, while
<I>DF</I> is for a detected event that is also the earliest (first) event
at the low temperature.
</P>
<P>The time margin is the ratio of the high temperature time in the
current basin to the stopping time. This last number can be used to
judge whether the stopping time is too short or too long (see above).
</P>
<P><I>t_lo</I> is the low-temperature event time when the current basin was
entered, in units of timestep. del<I>t_lo</I> is the time of each detected
event, measured relative to <I>t_lo</I>. <I>delt_lo</I> is equal to the
high-temperature time since entering the current basin, scaled by an
exponential factor that depends on the hi/lo temperature ratio and the
energy barrier for that event.
</P>
<P>On lines for executed events, with status <I>E</I>, the global event number
is incremented by one, and the timestep, local event number, energy
barrier, <I>t_lo</I>, and <I>delt_lo</I> match the last event with status <I>DF</I>
in the immediately preceding block of detected events.
</P>
<P>The NEB statistics are written to the file specified by the <I>neb_log</I>
keyword. If the keyword value is "none", then no NEB statistics are
printed out. The statistics are written every <I>Nevery</I> timesteps. See
the <A HREF = "neb.html">neb</A> command for a full description of the NEB
statistics. When invoked from TAD, NEB statistics are never printed to
the screen.
</P>
<P>Because the NEB calculation must run on multiple partitions, LAMMPS
produces additional screen and log files for each partition,
e.g. log.lammps.0, log.lammps.1, etc. For the TAD command, these
contain the thermodynamic output of each NEB replica. In addition, the
log file for the first partition, log.lammps.0, will contain
thermodynamic output from short runs and minimizations corresponding
to the dynamics and quench operations, as well as a line for each new
detected event, as described above.
</P>
<P>After the TAD command completes, timing statistics for the TAD run are
printed in each replica's log file, giving a breakdown of how much CPU
time was spent in each stage (NEB, dynamics, quenching, etc).
</P>
<P>Any <A HREF = "dump.html">dump files</A> defined in the input script will be written
to during a TAD run at timesteps when an event is executed. This
means the the requested dump frequency in the <A HREF = "dump.html">dump</A> command
is ignored. There will be one dump file (per dump command) created
for all partitions. The atom coordinates of the dump snapshot are
those of the minimum energy configuration resulting from quenching
following the executed event. The timesteps written into the dump
files correspond to the timestep at which the event occurred and NOT
the clock. A dump snapshot corresponding to the initial minimum state
used for event detection is written to the dump file at the beginning
of each TAD run.
</P>
<P>If the <A HREF = "restart.html">restart</A> command is used, a single restart file
for all the partitions is generated, which allows a TAD run to be
continued by a new input script in the usual manner. The restart file
is generated after an event is executed. The restart file contains a
snapshot of the system in the new quenched state, including the event
number and the low-temperature time. The restart frequency specified
in the <A HREF = "restart.html">restart</A> command is interpreted differently when
performing a TAD run. It does not mean the timestep interval between
restart files. Instead it means an event interval for executed
events. Thus a frequency of 1 means write a restart file every time
an event is executed. A frequency of 10 means write a restart file
every 10th executed event. When an input script reads a restart file
from a previous TAD run, the new script can be run on a different
number of replicas or processors.
</P>
<P>Note that within a single state, the dynamics will typically
temporarily continue beyond the event that is ultimately chosen, until
the stopping criterionis satisfied. When the event is eventually
executed, the timestep counter is reset to the value when the event
was detected. Similarly, after each quench and NEB minimization, the
timestep counter is reset to the value at the start of the
minimization. This means that the timesteps listed in the replica log
files do not always increase monotonically. However, the timestep
values printed to the master log file, dump files, and restart files
are always monotonically increasing.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command can only be used if LAMMPS was built with the "replica"
-package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info on packages.
+package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info on packages.
</P>
<P><I>N</I> setting must be integer multiple of <I>t_event</I>.
</P>
<P>Runs restarted from restart files written during a TAD run will only
produce identical results if the user-specified integrator supports
exact restarts. So <A HREF = "fix_nh.html">fix nvt</A> will produce an exact
restart, but <A HREF = "fix_langevin.html">fix langevin</A> will not.
</P>
<P>This command cannot be used when any fixes are defined that keep track
of elapsed time to perform time-dependent operations. Examples
include the "ave" fixes such as <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A>. Also <A HREF = "fix_dt_reset.html">fix
dt/reset</A> and <A HREF = "fix_deposit.html">fix deposit</A>.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_event_displace.html">compute event/displace</A>,
<A HREF = "min_modify.html">min_modify</A>, <A HREF = "min_style.html">min_style</A>,
<A HREF = "run_style.html">run_style</A>, <A HREF = "minimize.html">minimize</A>,
<A HREF = "temper.html">temper</A>, <A HREF = "neb.html">neb</A>,
<A HREF = "prd.html">prd</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are <I>min</I> = 0.1 0.1 40 50, <I>neb</I> = 0.01 100 100
10, <I>min_style</I> = <I>cg</I>, <I>neb_style</I> = <I>quickmin</I>, and <I>neb_log</I> =
"none"
</P>
<HR>
<A NAME = "Voter"></A>
<P><B>(Voter)</B> Sørensen and Voter, J Chem Phys, 112, 9599 (2000)
</P>
<A NAME = "Voter2"></A>
<P><B>(Voter2)</B> Voter, Montalenti, Germann, Annual Review of Materials
Research 32, 321 (2002).
</P>
</HTML>
diff --git a/doc/tad.txt b/doc/tad.txt
index a7f9d3088..85115cfa2 100644
--- a/doc/tad.txt
+++ b/doc/tad.txt
@@ -1,301 +1,300 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
tad command :h3
[Syntax:]
tad N t_event T_lo T_hi delta tmax compute-ID \
seed keyword value ... :pre
N = # of timesteps to run (not including dephasing/quenching) :ulb,l
t_event = timestep interval between event checks :l
T_lo = temperature at which event times are desired :l
T_hi = temperature at which MD simulation is performed :l
delta = desired confidence level for stopping criterion :l
tmax = reciprocal of lowest expected preexponential factor (time units) :l
compute-ID = ID of the compute used for event detection :l
zero or more keyword/value pairs may be appended :l
keyword = {min} or {neb} or {min_style} or {neb_style} or {neb_log} :l
{min} values = etol ftol maxiter maxeval
etol = stopping tolerance for energy (energy units)
ftol = stopping tolerance for force (force units)
maxiter = max iterations of minimize
maxeval = max number of force/energy evaluations
{neb} values = ftol N1 N2 Nevery
etol = stopping tolerance for energy (energy units)
ftol = stopping tolerance for force (force units)
N1 = max # of iterations (timesteps) to run initial NEB
N2 = max # of iterations (timesteps) to run barrier-climbing NEB
Nevery = print NEB statistics every this many timesteps
{min_style} value = {cg} or {hftn} or {sd} or {quickmin} or {fire}
{neb_style} value = {quickmin} or {fire}
{neb_log} value = file where NEB statistics are printed :pre
:ule
[Examples:]
tad 2000 50 1800 2300 0.01 0.01 event 54985
tad 2000 50 1800 2300 0.01 0.01 event 54985 &
min 1e-05 1e-05 100 100 &
neb 0.0 0.01 200 200 20 &
min_style cg &
neb_style fire &
neb_log log.neb :pre
[Description:]
Run a temperature accelerated dynamics (TAD) simulation. This method
requires two or more partitions to perform NEB transition state
searches.
TAD is described in "this paper"_#Voter by Art Voter. It is a method
that uses accelerated dynamics at an elevated temperature to generate
results at a specified lower temperature. A good overview of
accelerated dynamics methods for such systems is given in "this review
paper"_#Voter2 from the same group. In general, these methods assume
that the long-time dynamics is dominated by infrequent events i.e. the
system is is confined to low energy basins for long periods,
punctuated by brief, randomly-occurring transitions to adjacent
basins. TAD is suitable for infrequent-event systems, where in
addition, the transition kinetics are well-approximated by harmonic
transition state theory (hTST). In hTST, the temperature dependence of
transition rates follows the Arrhenius relation. As a consequence a
set of event times generated in a high-temperature simulation can be
mapped to a set of much longer estimated times in the low-temperature
system. However, because this mapping involves the energy barrier of
the transition event, which is different for each event, the first
event at the high temperature may not be the earliest event at the low
temperature. TAD handles this by first generating a set of possible
events from the current basin. After each event, the simulation is
reflected backwards into the current basin. This is repeated until
the stopping criterion is satisfied, at which point the event with the
earliest low-temperature occurrence time is selected. The stopping
criterion is that the confidence measure be greater than
1-{delta}. The confidence measure is the probability that no earlier
low-temperature event will occur at some later time in the
high-temperature simulation. hTST provides an lower bound for this
probability, based on the user-specified minimum pre-exponential
factor (reciprocal of {tmax}).
In order to estimate the energy barrier for each event, the TAD method
invokes the "NEB"_neb.html method. Each NEB replica runs on a
partition of processors. The current NEB implementation in LAMMPS
restricts you to having exactly one processor per replica. For more
information, see the documentation for the "neb"_neb.html command. In
the current LAMMPS implementation of TAD, all the non-NEB TAD
operations are performed on the first partition, while the other
-partitions remain idle. See "this
-section"_Section_howto.html#4_5 of the manual for further discussion
-of multi-replica simulations.
+partitions remain idle. See "this section"_Section_howto.html#howto_5
+of the manual for further discussion of multi-replica simulations.
A TAD run has several stages, which are repeated each time an event is
performed. The logic for a TAD run is as follows:
while (time remains):
while (time < tstop):
until (event occurs):
run dynamics for t_event steps
quench
run neb calculation using all replicas
compute tlo from energy barrier
update earliest event
update tstop
reflect back into current basin
execute earliest event :pre
Before this outer loop begins, the initial potential energy basin is
identified by quenching (an energy minimization, see below) the
initial state and storing the resulting coordinates for reference.
Inside the inner loop, dynamics is run continuously according to
whatever integrator has been specified by the user, stopping every
{t_event} steps to check if a transition event has occurred. This
check is performed by quenching the system and comparing the resulting
atom coordinates to the coordinates from the previous basin.
A quench is an energy minimization and is performed by whichever
algorithm has been defined by the {min} and {min_style} keywords or
their default values. Note that typically, you do not need to perform
a highly-converged minimization to detect a transition event.
The event check is performed by a compute with the specified
{compute-ID}. Currently there is only one compute that works with the
TAD commmand, which is the "compute
event/displace"_compute_event_displace.html command. Other
event-checking computes may be added. "Compute
event/displace"_compute_event_displace.html checks whether any atom in
the compute group has moved further than a specified threshold
distance. If so, an "event" has occurred.
The neb calculation is similar to that invoked by the "neb"_neb.html
command, except that the final state is generated internally, instead
of being read in from a file. The TAD implementation provides default
values for the NEB settings, which can be overridden using the {neb}
and {neb_style} keywords.
:line
A key aspect of the TAD method is setting the stopping criterion
appropriately. If this criterion is too conservative, then many
events must be generated before one is finally executed. Conversely,
if this criterion is too aggressive, high-entropy high-barrier events
will be over-sampled, while low-entropy low-barrier events will be
under-sampled. If the lowest pre-exponential factor is known fairly
accurately, then it can be used to estimate {tmax}, and the value of
{delta} can be set to the desired confidence level e.g. {delta} = 0.05
corresponds to 95% confidence. However, for systems where the dynamics
are not well characterized (the most common case), it will be
necessary to experiment with the values of {delta} and {tmax} to get a
good trade-off between accuracy and performance.
A second key aspect is the choice of {t_hi}. A larger value greatly
increases the rate at which new events are generated. However, too
large a value introduces errors due to anharmonicity (not accounted
for within hTST). Once again, for any given system, experimentation is
necessary to determine the best value of {t_hi}.
:line
Five kinds of output can be generated during a TAD run: event
statistics, NEB statistics, thermodynamic output by each replica, dump
files, and restart files.
Event statistics are printed to the screen and master log.lammps file
each time an event is executed. The quantities are the timestep, CPU
time, global event number {N}, local event number {M}, event status,
energy barrier, time margin, {t_lo} and {delt_lo}. The timestep is
the usual LAMMPS timestep, which corresponds to the high-temperature
time at which the event was detected, in units of timestep. The CPU
time is the total processor time since the start of the TAD run. The
global event number {N} is a counter that increments with each
executed event. The local event number {M} is a counter that resets to
zero upon entering each new basin. The event status is {E} when an
event is executed, and is {D} for an event that is detected, while
{DF} is for a detected event that is also the earliest (first) event
at the low temperature.
The time margin is the ratio of the high temperature time in the
current basin to the stopping time. This last number can be used to
judge whether the stopping time is too short or too long (see above).
{t_lo} is the low-temperature event time when the current basin was
entered, in units of timestep. del{t_lo} is the time of each detected
event, measured relative to {t_lo}. {delt_lo} is equal to the
high-temperature time since entering the current basin, scaled by an
exponential factor that depends on the hi/lo temperature ratio and the
energy barrier for that event.
On lines for executed events, with status {E}, the global event number
is incremented by one, and the timestep, local event number, energy
barrier, {t_lo}, and {delt_lo} match the last event with status {DF}
in the immediately preceding block of detected events.
The NEB statistics are written to the file specified by the {neb_log}
keyword. If the keyword value is "none", then no NEB statistics are
printed out. The statistics are written every {Nevery} timesteps. See
the "neb"_neb.html command for a full description of the NEB
statistics. When invoked from TAD, NEB statistics are never printed to
the screen.
Because the NEB calculation must run on multiple partitions, LAMMPS
produces additional screen and log files for each partition,
e.g. log.lammps.0, log.lammps.1, etc. For the TAD command, these
contain the thermodynamic output of each NEB replica. In addition, the
log file for the first partition, log.lammps.0, will contain
thermodynamic output from short runs and minimizations corresponding
to the dynamics and quench operations, as well as a line for each new
detected event, as described above.
After the TAD command completes, timing statistics for the TAD run are
printed in each replica's log file, giving a breakdown of how much CPU
time was spent in each stage (NEB, dynamics, quenching, etc).
Any "dump files"_dump.html defined in the input script will be written
to during a TAD run at timesteps when an event is executed. This
means the the requested dump frequency in the "dump"_dump.html command
is ignored. There will be one dump file (per dump command) created
for all partitions. The atom coordinates of the dump snapshot are
those of the minimum energy configuration resulting from quenching
following the executed event. The timesteps written into the dump
files correspond to the timestep at which the event occurred and NOT
the clock. A dump snapshot corresponding to the initial minimum state
used for event detection is written to the dump file at the beginning
of each TAD run.
If the "restart"_restart.html command is used, a single restart file
for all the partitions is generated, which allows a TAD run to be
continued by a new input script in the usual manner. The restart file
is generated after an event is executed. The restart file contains a
snapshot of the system in the new quenched state, including the event
number and the low-temperature time. The restart frequency specified
in the "restart"_restart.html command is interpreted differently when
performing a TAD run. It does not mean the timestep interval between
restart files. Instead it means an event interval for executed
events. Thus a frequency of 1 means write a restart file every time
an event is executed. A frequency of 10 means write a restart file
every 10th executed event. When an input script reads a restart file
from a previous TAD run, the new script can be run on a different
number of replicas or processors.
Note that within a single state, the dynamics will typically
temporarily continue beyond the event that is ultimately chosen, until
the stopping criterionis satisfied. When the event is eventually
executed, the timestep counter is reset to the value when the event
was detected. Similarly, after each quench and NEB minimization, the
timestep counter is reset to the value at the start of the
minimization. This means that the timesteps listed in the replica log
files do not always increase monotonically. However, the timestep
values printed to the master log file, dump files, and restart files
are always monotonically increasing.
:line
[Restrictions:]
This command can only be used if LAMMPS was built with the "replica"
-package. See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info on packages.
+package. See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
{N} setting must be integer multiple of {t_event}.
Runs restarted from restart files written during a TAD run will only
produce identical results if the user-specified integrator supports
exact restarts. So "fix nvt"_fix_nh.html will produce an exact
restart, but "fix langevin"_fix_langevin.html will not.
This command cannot be used when any fixes are defined that keep track
of elapsed time to perform time-dependent operations. Examples
include the "ave" fixes such as "fix
ave/spatial"_fix_ave_spatial.html. Also "fix
dt/reset"_fix_dt_reset.html and "fix deposit"_fix_deposit.html.
[Related commands:]
"compute event/displace"_compute_event_displace.html,
"min_modify"_min_modify.html, "min_style"_min_style.html,
"run_style"_run_style.html, "minimize"_minimize.html,
"temper"_temper.html, "neb"_neb.html,
"prd"_prd.html
[Default:]
The option defaults are {min} = 0.1 0.1 40 50, {neb} = 0.01 100 100
10, {min_style} = {cg}, {neb_style} = {quickmin}, and {neb_log} =
"none"
:line
:link(Voter)
[(Voter)] Sørensen and Voter, J Chem Phys, 112, 9599 (2000)
:link(Voter2)
[(Voter2)] Voter, Montalenti, Germann, Annual Review of Materials
Research 32, 321 (2002).
diff --git a/doc/temper.html b/doc/temper.html
index ff67dbc3f..ce9f7e8b4 100644
--- a/doc/temper.html
+++ b/doc/temper.html
@@ -1,136 +1,137 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>temper command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>temper N M temp fix-ID seed1 seed2 index
</PRE>
<UL><LI>N = total # of timesteps to run
<LI>M = attempt a tempering swap every this many steps
<LI>temp = initial temperature for this ensemble
<LI>fix-ID = ID of the fix that will control temperature during the run
<LI>seed1 = random # seed used to decide on adjacent temperature to partner with
<LI>seed2 = random # seed for Boltzmann factor in Metropolis swap
<LI>index = which temperature (0 to N-1) I am simulating (optional)
</UL>
<P><B>Examples:</B>
</P>
<PRE>temper 100000 100 $t tempfix 0 58728
temper 40000 100 $t tempfix 0 32285 $w
</PRE>
<P><B>Description:</B>
</P>
<P>Run a parallel tempering or replica exchange simulation using multiple
replicas (ensembles) of a system. Two or more replicas must be used.
</P>
<P>Each replica runs on a partition of one or more processors. Processor
partitions are defined at run-time using the -partition command-line
-switch; see <A HREF = "Section_start.html#2_6">this section</A> of the manual. Note
-that if you have MPI installed, you can run a multi-replica simulation
-with more replicas (partitions) than you have physical processors, e.g
-you can run a 10-replica simulation on one or two processors. You
-will simply not get the performance speed-up you would see with one or
-more physical processors per replica. See <A HREF = "Section_howto.html#4_5">this
-section</A> of the manual for further discussion.
+switch; see <A HREF = "Section_start.html#start_6">this section</A> of the manual.
+Note that if you have MPI installed, you can run a multi-replica
+simulation with more replicas (partitions) than you have physical
+processors, e.g you can run a 10-replica simulation on one or two
+processors. You will simply not get the performance speed-up you
+would see with one or more physical processors per replica. See <A HREF = "Section_howto.html#howto_5">this
+section</A> of the manual for further
+discussion.
</P>
<P>Each replica's temperature is controlled at a different value by a fix
with <I>fix-ID</I> that controls temperature. Possible fix styles are
<A HREF = "fix_nh.html">nvt</A>, <A HREF = "fix_nh.html">temp/berendsen</A>,
<A HREF = "fix_langevin.html">langevin</A> and <A HREF = "fix_temp_rescale.html">temp/rescale</A>.
The desired temperature is specified by <I>temp</I>, which is typically a
variable previously set in the input script, so that each partition is
assigned a different temperature. See the <A HREF = "variable.html">variable</A>
command for more details. For example:
</P>
<PRE>variable t world 300.0 310.0 320.0 330.0
fix myfix all nvt $t $t 100.0
temper 100000 100 $t myfix 3847 58382
</PRE>
<P>would define 4 temperatures, and assign one of them to the thermostat
used by each replica, and to the temper command.
</P>
<P>As the tempering simulation runs for <I>N</I> timesteps, a temperature swap
between adjacent ensembles will be attempted every <I>M</I> timesteps. If
<I>seed1</I> is 0, then the swap attempts will alternate between odd and
even pairings. If <I>seed1</I> is non-zero then it is used as a seed in a
random number generator to randomly choose an odd or even pairing each
time. Each attempted swap of temperatures is either accepted or
rejected based on a Boltzmann-weighted Metropolis criterion which uses
<I>seed2</I> in the random number generator.
</P>
<P>As a tempering run proceeds, multiple log files and screen output
files are created, one per replica. By default these files are named
log.lammps.M and screen.M where M is the replica number from 0 to N-1,
-with N = # of replicas. See the <A HREF = "Section_start.html#2_6">section on command-line
+with N = # of replicas. See the <A HREF = "Section_start.html#start_6">section on command-line
switches</A> for info on how to change these
names.
</P>
<P>The main screen and log file (log.lammps) will list information about
which temperature is assigned to each replica at each thermodynamic
output timestep. E.g. for a simulation with 16 replicas:
</P>
<PRE>Running on 16 partitions of processors
Step T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15
0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
500 1 0 3 2 5 4 6 7 8 9 10 11 12 13 14 15
1000 2 0 4 1 5 3 6 7 8 9 10 11 12 14 13 15
1500 2 1 4 0 5 3 6 7 9 8 10 11 12 14 13 15
2000 2 1 3 0 6 4 5 7 10 8 9 11 12 14 13 15
2500 2 1 3 0 6 4 5 7 11 8 9 10 12 14 13 15
...
</PRE>
<P>The column headings T0 to TN-1 mean which temperature is currently
assigned to the replica 0 to N-1. Thus the columns represent replicas
and the value in each column is its temperature (also numbered 0 to
N-1). For example, a 0 in the 4th column (column T3, step 2500) means
that the 4th replica is assigned temperature 0, i.e. the lowest
temperature. You can verify this time sequence of temperature
assignments for the Nth replica by comparing the Nth column of screen
output to the thermodynamic data in the corresponding log.lammps.N or
screen.N files as time proceeds.
</P>
<P>The last argument <I>index</I> in the temper command is optional and is
used when restarting a tempering run from a set of restart files (one
for each replica) which had previously swapped to new temperatures.
The <I>index</I> value (from 0 to N-1, where N is the # of replicas)
identifies which temperature the replica was simulating on the
timestep the restart files were written. Obviously, this argument
must be a variable so that each partition has the correct value. Set
the variable to the <I>N</I> values listed in the log file for the previous
run for the replica temperatures at that timestep. For example if the
log file listed the following for a simulation with 5 replicas:
</P>
<PRE>500000 2 4 0 1 3
</PRE>
<P>then a setting of
</P>
<PRE>variable w proc 2 4 0 1 3
</PRE>
<P>would be used to restart the run with a tempering command like the
example above with $w as the last argument.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command can only be used if LAMMPS was built with the "replica"
-package. See the <A HREF = "Section_start.html#2_3">Making LAMMPS</A> section for
-more info on packages.
+package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section
+for more info on packages.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "variable.html">variable</A>, <A HREF = "prd.html">prd</A>, <A HREF = "neb.html">neb</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/temper.txt b/doc/temper.txt
index 4f6ba7179..ac79b6e5d 100644
--- a/doc/temper.txt
+++ b/doc/temper.txt
@@ -1,131 +1,132 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
temper command :h3
[Syntax:]
temper N M temp fix-ID seed1 seed2 index :pre
N = total # of timesteps to run
M = attempt a tempering swap every this many steps
temp = initial temperature for this ensemble
fix-ID = ID of the fix that will control temperature during the run
seed1 = random # seed used to decide on adjacent temperature to partner with
seed2 = random # seed for Boltzmann factor in Metropolis swap
index = which temperature (0 to N-1) I am simulating (optional) :ul
[Examples:]
temper 100000 100 $t tempfix 0 58728
temper 40000 100 $t tempfix 0 32285 $w :pre
[Description:]
Run a parallel tempering or replica exchange simulation using multiple
replicas (ensembles) of a system. Two or more replicas must be used.
Each replica runs on a partition of one or more processors. Processor
partitions are defined at run-time using the -partition command-line
-switch; see "this section"_Section_start.html#2_6 of the manual. Note
-that if you have MPI installed, you can run a multi-replica simulation
-with more replicas (partitions) than you have physical processors, e.g
-you can run a 10-replica simulation on one or two processors. You
-will simply not get the performance speed-up you would see with one or
-more physical processors per replica. See "this
-section"_Section_howto.html#4_5 of the manual for further discussion.
+switch; see "this section"_Section_start.html#start_6 of the manual.
+Note that if you have MPI installed, you can run a multi-replica
+simulation with more replicas (partitions) than you have physical
+processors, e.g you can run a 10-replica simulation on one or two
+processors. You will simply not get the performance speed-up you
+would see with one or more physical processors per replica. See "this
+section"_Section_howto.html#howto_5 of the manual for further
+discussion.
Each replica's temperature is controlled at a different value by a fix
with {fix-ID} that controls temperature. Possible fix styles are
"nvt"_fix_nh.html, "temp/berendsen"_fix_nh.html,
"langevin"_fix_langevin.html and "temp/rescale"_fix_temp_rescale.html.
The desired temperature is specified by {temp}, which is typically a
variable previously set in the input script, so that each partition is
assigned a different temperature. See the "variable"_variable.html
command for more details. For example:
variable t world 300.0 310.0 320.0 330.0
fix myfix all nvt $t $t 100.0
temper 100000 100 $t myfix 3847 58382 :pre
would define 4 temperatures, and assign one of them to the thermostat
used by each replica, and to the temper command.
As the tempering simulation runs for {N} timesteps, a temperature swap
between adjacent ensembles will be attempted every {M} timesteps. If
{seed1} is 0, then the swap attempts will alternate between odd and
even pairings. If {seed1} is non-zero then it is used as a seed in a
random number generator to randomly choose an odd or even pairing each
time. Each attempted swap of temperatures is either accepted or
rejected based on a Boltzmann-weighted Metropolis criterion which uses
{seed2} in the random number generator.
As a tempering run proceeds, multiple log files and screen output
files are created, one per replica. By default these files are named
log.lammps.M and screen.M where M is the replica number from 0 to N-1,
with N = # of replicas. See the "section on command-line
-switches"_Section_start.html#2_6 for info on how to change these
+switches"_Section_start.html#start_6 for info on how to change these
names.
The main screen and log file (log.lammps) will list information about
which temperature is assigned to each replica at each thermodynamic
output timestep. E.g. for a simulation with 16 replicas:
Running on 16 partitions of processors
Step T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15
0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
500 1 0 3 2 5 4 6 7 8 9 10 11 12 13 14 15
1000 2 0 4 1 5 3 6 7 8 9 10 11 12 14 13 15
1500 2 1 4 0 5 3 6 7 9 8 10 11 12 14 13 15
2000 2 1 3 0 6 4 5 7 10 8 9 11 12 14 13 15
2500 2 1 3 0 6 4 5 7 11 8 9 10 12 14 13 15
... :pre
The column headings T0 to TN-1 mean which temperature is currently
assigned to the replica 0 to N-1. Thus the columns represent replicas
and the value in each column is its temperature (also numbered 0 to
N-1). For example, a 0 in the 4th column (column T3, step 2500) means
that the 4th replica is assigned temperature 0, i.e. the lowest
temperature. You can verify this time sequence of temperature
assignments for the Nth replica by comparing the Nth column of screen
output to the thermodynamic data in the corresponding log.lammps.N or
screen.N files as time proceeds.
The last argument {index} in the temper command is optional and is
used when restarting a tempering run from a set of restart files (one
for each replica) which had previously swapped to new temperatures.
The {index} value (from 0 to N-1, where N is the # of replicas)
identifies which temperature the replica was simulating on the
timestep the restart files were written. Obviously, this argument
must be a variable so that each partition has the correct value. Set
the variable to the {N} values listed in the log file for the previous
run for the replica temperatures at that timestep. For example if the
log file listed the following for a simulation with 5 replicas:
500000 2 4 0 1 3 :pre
then a setting of
variable w proc 2 4 0 1 3 :pre
would be used to restart the run with a tempering command like the
example above with $w as the last argument.
:line
[Restrictions:]
This command can only be used if LAMMPS was built with the "replica"
-package. See the "Making LAMMPS"_Section_start.html#2_3 section for
-more info on packages.
+package. See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
[Related commands:]
"variable"_variable.html, "prd"_prd.html, "neb"_neb.html
[Default:] none
diff --git a/doc/thermo_style.html b/doc/thermo_style.html
index 11d4e7a8b..3c5844354 100644
--- a/doc/thermo_style.html
+++ b/doc/thermo_style.html
@@ -1,324 +1,324 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>thermo_style command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>thermo_style style args
</PRE>
<UL><LI>style = <I>one</I> or <I>multi</I> or <I>custom</I>
<LI>args = list of arguments for a particular style
<PRE> <I>one</I> args = none
<I>multi</I> args = none
<I>custom</I> args = list of attributes
possible attributes = step, elapsed, elaplong, dt, cpu, tpcpu, spcpu,
atoms, temp, press, pe, ke, etotal, enthalpy,
evdwl, ecoul, epair, ebond, eangle, edihed, eimp,
emol, elong, etail,
vol, lx, ly, lz, xlo, xhi, ylo, yhi, zlo, zhi,
xy, xz, yz, xlat, ylat, zlat,
pxx, pyy, pzz, pxy, pxz, pyz,
fmax, fnorm,
cella, cellb, cellc, cellalpha, cellbeta, cellgamma,
c_ID, c_ID[I], c_ID[I][J],
f_ID, f_ID[I], f_ID[I][J],
v_name
step = timestep
elapsed = timesteps since start of this run
elaplong = timesteps since start of initial run in a series of runs
dt = timestep size
cpu = elapsed CPU time in seconds
tpcpu = time per CPU second
spcpu = timesteps per CPU second
atoms = # of atoms
temp = temperature
press = pressure
pe = total potential energy
ke = kinetic energy
etotal = total energy (pe + ke)
enthalpy = enthalpy (etotal + press*vol)
evdwl = VanderWaal pairwise energy
ecoul = Coulombic pairwise energy
epair = pairwise energy (evdwl + ecoul + elong + etail)
ebond = bond energy
eangle = angle energy
edihed = dihedral energy
eimp = improper energy
emol = molecular energy (ebond + eangle + edihed + eimp)
elong = long-range kspace energy
etail = VanderWaal energy long-range tail correction
vol = volume
lx,ly,lz = box lengths in x,y,z
xlo,xhi,ylo,yhi,zlo,zhi = box boundaries
xy,xz,yz = box tilt for triclinic (non-orthogonal) simulation boxes
xlat,ylat,zlat = lattice spacings as calculated by <A HREF = "lattice.html">lattice</A> command
pxx,pyy,pzz,pxy,pxz,pyz = 6 components of pressure tensor
fmax = max component of force on any atom in any dimension
fnorm = length of force vector for all atoms
cella,cellb,cellc = periodic cell lattice constants a,b,c
cellalpha, cellbeta, cellgamma = periodic cell angles alpha,beta,gamma
c_ID = global scalar value calculated by a compute with ID
c_ID[I] = Ith component of global vector calculated by a compute with ID
c_ID[I][J] = I,J component of global array calculated by a compute with ID
f_ID = global scalar value calculated by a fix with ID
f_ID[I] = Ith component of global vector calculated by a fix with ID
f_ID[I][J] = I,J component of global array calculated by a fix with ID
v_name = scalar value calculated by an equal-style variable with name
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>thermo_style multi
thermo_style custom step temp pe etotal press vol
thermo_style custom step temp etotal c_myTemp v_abc
</PRE>
<P><B>Description:</B>
</P>
<P>Set the style and content for printing thermodynamic data to the
screen and log file.
</P>
<P>Style <I>one</I> prints a one-line summary of thermodynamic info that is
the equivalent of "thermo_style custom step temp epair emol etotal
press". The line contains only numeric values.
</P>
<P>Style <I>multi</I> prints a multiple-line listing of thermodynamic info
that is the equivalent of "thermo_style custom etotal ke temp pe ebond
eangle edihed eimp evdwl ecoul elong press". The listing contains
numeric values and a string ID for each quantity.
</P>
<P>Style <I>custom</I> is the most general setting and allows you to specify
which of the keywords listed above you want printed on each
thermodynamic timestep. Note that the keywords c_ID, f_ID, v_name are
references to <A HREF = "compute.html">computes</A>, <A HREF = "fix.html">fixes</A>, and
equal-style <A HREF = "variable.html"">variables</A> that have been defined
elsewhere in the input script or can even be new styles which users
have added to LAMMPS (see the <A HREF = "Section_modify.html">Section_modify</A>
section of the documentation). Thus the <I>custom</I> style provides a
flexible means of outputting essentially any desired quantity as a
simulation proceeds.
</P>
<P>All styles except <I>custom</I> have <I>vol</I> appended to their list of
outputs if the simulation box volume changes during the simulation.
</P>
<P>The values printed by the various keywords are instantaneous values,
calculated on the current timestep. Time-averaged quantities, which
include values from previous timesteps, can be output by using the
f_ID keyword and accessing a fix that does time-averaging such as the
<A HREF = "fix_ave_time.html">fix ave/time</A> command.
</P>
<P>Options invoked by the <A HREF = "thermo_modify.html">thermo_modify</A> command can
be used to set the one- or multi-line format of the print-out, the
normalization of thermodynamic output (total values versus per-atom
values for extensive quantities (ones which scale with the number of
atoms in the system), and the numeric precision of each printed value.
</P>
<P>IMPORTANT NOTE: When you use a "thermo_style" command, all
thermodynamic settings are restored to their default values, including
those previously set by a <A HREF = "thermo_modify.html">thermo_modify</A> command.
Thus if your input script specifies a thermo_style command, you should
use the thermo_modify command after it.
</P>
<HR>
<P>Several of the thermodynamic quantities require a temperature to be
computed: "temp", "press", "ke", "etotal", "enthalpy", "pxx", etc. By
default this is done by using a <I>temperature</I> compute which is created
when LAMMPS starts up, as if this command had been issued:
</P>
<PRE>compute thermo_temp all temp
</PRE>
<P>See the <A HREF = "compute_temp.html">compute temp</A> command for details. Note
that the ID of this compute is <I>thermo_temp</I> and the group is <I>all</I>.
You can change the attributes of this temperature (e.g. its
degrees-of-freedom) via the <A HREF = "compute_modify.html">compute_modify</A>
command. Alternatively, you can directly assign a new compute (that
calculates temperature) which you have defined, to be used for
calculating any thermodynamic quantity that requires a temperature.
This is done via the <A HREF = "thermo_modify.html">thermo_modify</A> command.
</P>
<P>Several of the thermodynamic quantities require a pressure to be
computed: "press", "enthalpy", "pxx", etc. By default this is done by
using a <I>pressure</I> compute which is created when LAMMPS starts up, as
if this command had been issued:
</P>
<PRE>compute thermo_press all pressure thermo_temp
</PRE>
<P>See the <A HREF = "compute_pressure.html">compute pressure</A> command for details.
Note that the ID of this compute is <I>thermo_press</I> and the group is
<I>all</I>. You can change the attributes of this pressure via the
<A HREF = "compute_modify.html">compute_modify</A> command. Alternatively, you can
directly assign a new compute (that calculates pressure) which you
have defined, to be used for calculating any thermodynamic quantity
that requires a pressure. This is done via the
<A HREF = "thermo_modify.html">thermo_modify</A> command.
</P>
<P>Several of the thermodynamic quantities require a potential energy to
be computed: "pe", "etotal", "ebond", etc. This is done by using a
<I>pe</I> compute which is created when LAMMPS starts up, as if this
command had been issued:
</P>
<PRE>compute thermo_pe all pe
</PRE>
<P>See the <A HREF = "compute_pe.html">compute pe</A> command for details. Note that
the ID of this compute is <I>thermo_pe</I> and the group is <I>all</I>. You can
change the attributes of this potential energy via the
<A HREF = "compute_modify.html">compute_modify</A> command.
</P>
<HR>
<P>The kinetic energy of the system <I>ke</I> is inferred from the temperature
of the system with 1/2 Kb T of energy for each degree of freedom.
Thus, using different <A HREF = "compute.html">compute commands</A> for calculating
temperature, via the <A HREF = "thermo_modify.html">thermo_modify temp</A> command,
may yield different kinetic energies, since different computes that
calculate temperature can subtract out different non-thermal
components of velocity and/or include different degrees of freedom
(translational, rotational, etc).
</P>
<P>The potential energy of the system <I>pe</I> will include contributions
from fixes if the <A HREF = "fix_modify.html">fix_modify thermo</A> option is set
for a fix that calculates such a contribution. For example, the <A HREF = "fix_wall.html">fix
wall/lj93</A> fix calculates the energy of atoms
interacting with the wall. See the doc pages for "individual fixes"
to see which ones contribute.
</P>
<P>A long-range tail correction <I>etail</I> for the VanderWaal pairwise
energy will be non-zero only if the <A HREF = "pair_modify.html">pair_modify
tail</A> option is turned on. The <I>etail</I> contribution
is included in <I>evdwl</I>, <I>pe</I>, and <I>etotal</I>, and the corresponding tail
correction to the pressure is included in <I>press</I> and <I>pxx</I>, <I>pyy</I>,
etc.
</P>
<HR>
<P>The <I>step</I>, <I>elapsed</I>, and <I>elaplong</I> keywords refer to timestep
count. <I>Step</I> is the current timestep, or iteration count when a
<A HREF = "minimize.html">minimization</A> is being performed. <I>Elapsed</I> is the
number of timesteps elapsed since the beginning of this run.
<I>Elaplong</I> is the number of timesteps elapsed since the beginning of
an initial run in a series of runs. See the <I>start</I> and <I>stop</I>
keywords for the <A HREF = "run.html">run</A> for info on how to invoke a series of
runs that keep track of an initial starting time. If these keywords
are not used, then <I>elapsed</I> and <I>elaplong</I> are the same value.
</P>
<P>The <I>cpu</I> keyword is elapsed CPU seconds since the beginning of this
run. The <I>tpcpu</I> and <I>spcpu</I> keywords are measures of how fast your
simulation is currently running. The <I>tpcpu</I> keyword is simulation
time per CPU second, where simulation time is in time
<A HREF = "units.html">units</A>. E.g. for metal units, the <I>tpcpu</I> value would be
picoseconds per CPU second. The <I>spcpu</I> keyword is the number of
timesteps per CPU second. Both quantities are on-the-fly metrics,
measured relative to the last time they were invoked. Thus if you are
printing out thermodyamic output every 100 timesteps, the two keywords
will continually output the time and timestep rate for the last 100
steps. The <I>tpcpu</I> keyword does not attempt to track any changes in
timestep size, e.g. due to using the <A HREF = "fix_dt_reset.html">fix dt/reset</A>
command.
</P>
<P>The <I>fmax</I> and <I>fnorm</I> keywords are useful for monitoring the progress
of an <A HREF = "minimize.html">energy minimization</A>. The <I>fmax</I> keyword
calculates the maximum force in any dimension on any atom in the
system, or the infinity-norm of the force vector for the system. The
<I>fnorm</I> keyword calculates the 2-norm or length of the force vector.
</P>
-<P>The keywords <I>cella</I>, <I>cellb</I>, <I>cellc</I>, <I>cellalpha</I>, <I>cellbeta</I>, <I>cellgamma</I>,
-correspond to the usual crystallographic quantities that define
-the periodic unit cell of a crystal.
-See <A HREF = "Section_howto.html#4_12">this section</A> of the doc pages for a
-geometric description of triclinic periodic cells, including
-a precise defintion of these quantities in terms of the internal
-LAMMPS cell dimensions <I>lx</I>, <I>ly</I>, <I>lz</I>, <I>yz</I>, <I>xz</I>, <I>xy</I>,
+<P>The keywords <I>cella</I>, <I>cellb</I>, <I>cellc</I>, <I>cellalpha</I>, <I>cellbeta</I>,
+<I>cellgamma</I>, correspond to the usual crystallographic quantities that
+define the periodic unit cell of a crystal. See <A HREF = "Section_howto.html#howto_12">this
+section</A> of the doc pages for a geometric
+description of triclinic periodic cells, including a precise defintion
+of these quantities in terms of the internal LAMMPS cell dimensions
+<I>lx</I>, <I>ly</I>, <I>lz</I>, <I>yz</I>, <I>xz</I>, <I>xy</I>,
</P>
<HR>
<P>The <I>c_ID</I> and <I>c_ID[I]</I> and <I>c_ID[I][J]</I> keywords allow global
values calculated by a compute to be output. As discussed on the
<A HREF = "compute.html">compute</A> doc page, computes can calculate global,
per-atom, or local values. Only global values can be referenced by
this command. However, per-atom compute values can be referenced in a
<A HREF = "variable.html">variable</A> and the variable referenced by thermo_style
custom, as discussed below.
</P>
<P>The ID in the keyword should be replaced by the actual ID of a compute
that has been defined elsewhere in the input script. See the
<A HREF = "compute.html">compute</A> command for details. If the compute calculates
a global scalar, vector, or array, then the keyword formats with 0, 1,
or 2 brackets will reference a scalar value from the compute.
</P>
<P>Note that some computes calculate "intensive" global quantities like
temperature; others calculate "extensive" global quantities like
kinetic energy that are summed over all atoms in the compute group.
Intensive quantities are printed directly without normalization by
thermo_style custom. Extensive quantities may be normalized by the
total number of atoms in the simulation (NOT the number of atoms in
the compute group) when output, depending on the <A HREF = "thermo_modify.html">thermo_modify
norm</A> option being used.
</P>
<P>The <I>f_ID</I> and <I>f_ID[I]</I> and <I>f_ID[I][J]</I> keywords allow global
values calculated by a fix to be output. As discussed on the
<A HREF = "fix.html">fix</A> doc page, fixes can calculate global, per-atom, or
local values. Only global values can be referenced by this command.
However, per-atom fix values can be referenced in a
<A HREF = "variable.html">variable</A> and the variable referenced by thermo_style
custom, as discussed below.
</P>
<P>The ID in the keyword should be replaced by the actual ID of a fix
that has been defined elsewhere in the input script. See the
<A HREF = "fix.html">fix</A> command for details. If the fix calculates a global
scalar, vector, or array, then the keyword formats with 0, 1, or 2
brackets will reference a scalar value from the fix.
</P>
<P>Note that some fixes calculate "intensive" global quantities like
timestep size; others calculate "extensive" global quantities like
energy that are summed over all atoms in the fix group. Intensive
quantities are printed directly without normalization by thermo_style
custom. Extensive quantities may be normalized by the total number of
atoms in the simulation (NOT the number of atoms in the fix group)
when output, depending on the <A HREF = "thermo_modify.html">thermo_modify norm</A>
option being used.
</P>
<P>The <I>v_name</I> keyword allow the current value of a variable to be
output. The name in the keyword should be replaced by the variable
name that has been defined elsewhere in the input script. Only
equal-style variables can be referenced. See the
<A HREF = "variable.html">variable</A> command for details. Variables of style
<I>equal</I> can reference per-atom properties or thermodynamic keywords,
or they can invoke other computes, fixes, or variables when evaluated,
so this is a very general means of creating thermodynamic output.
</P>
<P>See <A HREF = "Section_modify.html">this section</A> for information on how to add
new compute and fix styles to LAMMPS to calculate quantities that can
then be referenced with these keywords to generate thermodynamic
output.
</P>
<HR>
<P><B>Restrictions:</B>
</P>
<P>This command must come after the simulation box is defined by 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><B>Related commands:</B>
</P>
<P><A HREF = "thermo.html">thermo</A>, <A HREF = "thermo_modify.html">thermo_modify</A>,
<A HREF = "fix_modify.html">fix_modify</A>, <A HREF = "compute_temp.html">compute temp</A>,
<A HREF = "compute_pressure.html">compute pressure</A>
</P>
<P><B>Default:</B>
</P>
<PRE>thermo_style one
</PRE>
</HTML>
diff --git a/doc/thermo_style.txt b/doc/thermo_style.txt
index 03ad2c917..8f4a64148 100644
--- a/doc/thermo_style.txt
+++ b/doc/thermo_style.txt
@@ -1,316 +1,316 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
thermo_style command :h3
[Syntax:]
thermo_style style args :pre
style = {one} or {multi} or {custom} :ulb,l
args = list of arguments for a particular style :l
{one} args = none
{multi} args = none
{custom} args = list of attributes
possible attributes = step, elapsed, elaplong, dt, cpu, tpcpu, spcpu,
atoms, temp, press, pe, ke, etotal, enthalpy,
evdwl, ecoul, epair, ebond, eangle, edihed, eimp,
emol, elong, etail,
vol, lx, ly, lz, xlo, xhi, ylo, yhi, zlo, zhi,
xy, xz, yz, xlat, ylat, zlat,
pxx, pyy, pzz, pxy, pxz, pyz,
fmax, fnorm,
cella, cellb, cellc, cellalpha, cellbeta, cellgamma,
c_ID, c_ID\[I\], c_ID\[I\]\[J\],
f_ID, f_ID\[I\], f_ID\[I\]\[J\],
v_name
step = timestep
elapsed = timesteps since start of this run
elaplong = timesteps since start of initial run in a series of runs
dt = timestep size
cpu = elapsed CPU time in seconds
tpcpu = time per CPU second
spcpu = timesteps per CPU second
atoms = # of atoms
temp = temperature
press = pressure
pe = total potential energy
ke = kinetic energy
etotal = total energy (pe + ke)
enthalpy = enthalpy (etotal + press*vol)
evdwl = VanderWaal pairwise energy
ecoul = Coulombic pairwise energy
epair = pairwise energy (evdwl + ecoul + elong + etail)
ebond = bond energy
eangle = angle energy
edihed = dihedral energy
eimp = improper energy
emol = molecular energy (ebond + eangle + edihed + eimp)
elong = long-range kspace energy
etail = VanderWaal energy long-range tail correction
vol = volume
lx,ly,lz = box lengths in x,y,z
xlo,xhi,ylo,yhi,zlo,zhi = box boundaries
xy,xz,yz = box tilt for triclinic (non-orthogonal) simulation boxes
xlat,ylat,zlat = lattice spacings as calculated by "lattice"_lattice.html command
pxx,pyy,pzz,pxy,pxz,pyz = 6 components of pressure tensor
fmax = max component of force on any atom in any dimension
fnorm = length of force vector for all atoms
cella,cellb,cellc = periodic cell lattice constants a,b,c
cellalpha, cellbeta, cellgamma = periodic cell angles alpha,beta,gamma
c_ID = global scalar value calculated by a compute with ID
c_ID\[I\] = Ith component of global vector calculated by a compute with ID
c_ID\[I\]\[J\] = I,J component of global array calculated by a compute with ID
f_ID = global scalar value calculated by a fix with ID
f_ID\[I\] = Ith component of global vector calculated by a fix with ID
f_ID\[I\]\[J\] = I,J component of global array calculated by a fix with ID
v_name = scalar value calculated by an equal-style variable with name :pre
:ule
[Examples:]
thermo_style multi
thermo_style custom step temp pe etotal press vol
thermo_style custom step temp etotal c_myTemp v_abc :pre
[Description:]
Set the style and content for printing thermodynamic data to the
screen and log file.
Style {one} prints a one-line summary of thermodynamic info that is
the equivalent of "thermo_style custom step temp epair emol etotal
press". The line contains only numeric values.
Style {multi} prints a multiple-line listing of thermodynamic info
that is the equivalent of "thermo_style custom etotal ke temp pe ebond
eangle edihed eimp evdwl ecoul elong press". The listing contains
numeric values and a string ID for each quantity.
Style {custom} is the most general setting and allows you to specify
which of the keywords listed above you want printed on each
thermodynamic timestep. Note that the keywords c_ID, f_ID, v_name are
references to "computes"_compute.html, "fixes"_fix.html, and
equal-style "variables"_variable.html" that have been defined
elsewhere in the input script or can even be new styles which users
have added to LAMMPS (see the "Section_modify"_Section_modify.html
section of the documentation). Thus the {custom} style provides a
flexible means of outputting essentially any desired quantity as a
simulation proceeds.
All styles except {custom} have {vol} appended to their list of
outputs if the simulation box volume changes during the simulation.
The values printed by the various keywords are instantaneous values,
calculated on the current timestep. Time-averaged quantities, which
include values from previous timesteps, can be output by using the
f_ID keyword and accessing a fix that does time-averaging such as the
"fix ave/time"_fix_ave_time.html command.
Options invoked by the "thermo_modify"_thermo_modify.html command can
be used to set the one- or multi-line format of the print-out, the
normalization of thermodynamic output (total values versus per-atom
values for extensive quantities (ones which scale with the number of
atoms in the system), and the numeric precision of each printed value.
IMPORTANT NOTE: When you use a "thermo_style" command, all
thermodynamic settings are restored to their default values, including
those previously set by a "thermo_modify"_thermo_modify.html command.
Thus if your input script specifies a thermo_style command, you should
use the thermo_modify command after it.
:line
Several of the thermodynamic quantities require a temperature to be
computed: "temp", "press", "ke", "etotal", "enthalpy", "pxx", etc. By
default this is done by using a {temperature} compute which is created
when LAMMPS starts up, as if this command had been issued:
compute thermo_temp all temp :pre
See the "compute temp"_compute_temp.html command for details. Note
that the ID of this compute is {thermo_temp} and the group is {all}.
You can change the attributes of this temperature (e.g. its
degrees-of-freedom) via the "compute_modify"_compute_modify.html
command. Alternatively, you can directly assign a new compute (that
calculates temperature) which you have defined, to be used for
calculating any thermodynamic quantity that requires a temperature.
This is done via the "thermo_modify"_thermo_modify.html command.
Several of the thermodynamic quantities require a pressure to be
computed: "press", "enthalpy", "pxx", etc. By default this is done by
using a {pressure} compute which is created when LAMMPS starts up, as
if this command had been issued:
compute thermo_press all pressure thermo_temp :pre
See the "compute pressure"_compute_pressure.html command for details.
Note that the ID of this compute is {thermo_press} and the group is
{all}. You can change the attributes of this pressure via the
"compute_modify"_compute_modify.html command. Alternatively, you can
directly assign a new compute (that calculates pressure) which you
have defined, to be used for calculating any thermodynamic quantity
that requires a pressure. This is done via the
"thermo_modify"_thermo_modify.html command.
Several of the thermodynamic quantities require a potential energy to
be computed: "pe", "etotal", "ebond", etc. This is done by using a
{pe} compute which is created when LAMMPS starts up, as if this
command had been issued:
compute thermo_pe all pe :pre
See the "compute pe"_compute_pe.html command for details. Note that
the ID of this compute is {thermo_pe} and the group is {all}. You can
change the attributes of this potential energy via the
"compute_modify"_compute_modify.html command.
:line
The kinetic energy of the system {ke} is inferred from the temperature
of the system with 1/2 Kb T of energy for each degree of freedom.
Thus, using different "compute commands"_compute.html for calculating
temperature, via the "thermo_modify temp"_thermo_modify.html command,
may yield different kinetic energies, since different computes that
calculate temperature can subtract out different non-thermal
components of velocity and/or include different degrees of freedom
(translational, rotational, etc).
The potential energy of the system {pe} will include contributions
from fixes if the "fix_modify thermo"_fix_modify.html option is set
for a fix that calculates such a contribution. For example, the "fix
wall/lj93"_fix_wall.html fix calculates the energy of atoms
interacting with the wall. See the doc pages for "individual fixes"
to see which ones contribute.
A long-range tail correction {etail} for the VanderWaal pairwise
energy will be non-zero only if the "pair_modify
tail"_pair_modify.html option is turned on. The {etail} contribution
is included in {evdwl}, {pe}, and {etotal}, and the corresponding tail
correction to the pressure is included in {press} and {pxx}, {pyy},
etc.
:line
The {step}, {elapsed}, and {elaplong} keywords refer to timestep
count. {Step} is the current timestep, or iteration count when a
"minimization"_minimize.html is being performed. {Elapsed} is the
number of timesteps elapsed since the beginning of this run.
{Elaplong} is the number of timesteps elapsed since the beginning of
an initial run in a series of runs. See the {start} and {stop}
keywords for the "run"_run.html for info on how to invoke a series of
runs that keep track of an initial starting time. If these keywords
are not used, then {elapsed} and {elaplong} are the same value.
The {cpu} keyword is elapsed CPU seconds since the beginning of this
run. The {tpcpu} and {spcpu} keywords are measures of how fast your
simulation is currently running. The {tpcpu} keyword is simulation
time per CPU second, where simulation time is in time
"units"_units.html. E.g. for metal units, the {tpcpu} value would be
picoseconds per CPU second. The {spcpu} keyword is the number of
timesteps per CPU second. Both quantities are on-the-fly metrics,
measured relative to the last time they were invoked. Thus if you are
printing out thermodyamic output every 100 timesteps, the two keywords
will continually output the time and timestep rate for the last 100
steps. The {tpcpu} keyword does not attempt to track any changes in
timestep size, e.g. due to using the "fix dt/reset"_fix_dt_reset.html
command.
The {fmax} and {fnorm} keywords are useful for monitoring the progress
of an "energy minimization"_minimize.html. The {fmax} keyword
calculates the maximum force in any dimension on any atom in the
system, or the infinity-norm of the force vector for the system. The
{fnorm} keyword calculates the 2-norm or length of the force vector.
-The keywords {cella}, {cellb}, {cellc}, {cellalpha}, {cellbeta}, {cellgamma},
-correspond to the usual crystallographic quantities that define
-the periodic unit cell of a crystal.
-See "this section"_Section_howto.html#4_12 of the doc pages for a
-geometric description of triclinic periodic cells, including
-a precise defintion of these quantities in terms of the internal
-LAMMPS cell dimensions {lx}, {ly}, {lz}, {yz}, {xz}, {xy},
+The keywords {cella}, {cellb}, {cellc}, {cellalpha}, {cellbeta},
+{cellgamma}, correspond to the usual crystallographic quantities that
+define the periodic unit cell of a crystal. See "this
+section"_Section_howto.html#howto_12 of the doc pages for a geometric
+description of triclinic periodic cells, including a precise defintion
+of these quantities in terms of the internal LAMMPS cell dimensions
+{lx}, {ly}, {lz}, {yz}, {xz}, {xy},
:line
The {c_ID} and {c_ID\[I\]} and {c_ID\[I\]\[J\]} keywords allow global
values calculated by a compute to be output. As discussed on the
"compute"_compute.html doc page, computes can calculate global,
per-atom, or local values. Only global values can be referenced by
this command. However, per-atom compute values can be referenced in a
"variable"_variable.html and the variable referenced by thermo_style
custom, as discussed below.
The ID in the keyword should be replaced by the actual ID of a compute
that has been defined elsewhere in the input script. See the
"compute"_compute.html command for details. If the compute calculates
a global scalar, vector, or array, then the keyword formats with 0, 1,
or 2 brackets will reference a scalar value from the compute.
Note that some computes calculate "intensive" global quantities like
temperature; others calculate "extensive" global quantities like
kinetic energy that are summed over all atoms in the compute group.
Intensive quantities are printed directly without normalization by
thermo_style custom. Extensive quantities may be normalized by the
total number of atoms in the simulation (NOT the number of atoms in
the compute group) when output, depending on the "thermo_modify
norm"_thermo_modify.html option being used.
The {f_ID} and {f_ID\[I\]} and {f_ID\[I\]\[J\]} keywords allow global
values calculated by a fix to be output. As discussed on the
"fix"_fix.html doc page, fixes can calculate global, per-atom, or
local values. Only global values can be referenced by this command.
However, per-atom fix values can be referenced in a
"variable"_variable.html and the variable referenced by thermo_style
custom, as discussed below.
The ID in the keyword should be replaced by the actual ID of a fix
that has been defined elsewhere in the input script. See the
"fix"_fix.html command for details. If the fix calculates a global
scalar, vector, or array, then the keyword formats with 0, 1, or 2
brackets will reference a scalar value from the fix.
Note that some fixes calculate "intensive" global quantities like
timestep size; others calculate "extensive" global quantities like
energy that are summed over all atoms in the fix group. Intensive
quantities are printed directly without normalization by thermo_style
custom. Extensive quantities may be normalized by the total number of
atoms in the simulation (NOT the number of atoms in the fix group)
when output, depending on the "thermo_modify norm"_thermo_modify.html
option being used.
The {v_name} keyword allow the current value of a variable to be
output. The name in the keyword should be replaced by the variable
name that has been defined elsewhere in the input script. Only
equal-style variables can be referenced. See the
"variable"_variable.html command for details. Variables of style
{equal} can reference per-atom properties or thermodynamic keywords,
or they can invoke other computes, fixes, or variables when evaluated,
so this is a very general means of creating thermodynamic output.
See "this section"_Section_modify.html for information on how to add
new compute and fix styles to LAMMPS to calculate quantities that can
then be referenced with these keywords to generate thermodynamic
output.
:line
[Restrictions:]
This command must come after the simulation box is defined by a
"read_data"_read_data.html, "read_restart"_read_restart.html, or
"create_box"_create_box.html command.
[Related commands:]
"thermo"_thermo.html, "thermo_modify"_thermo_modify.html,
"fix_modify"_fix_modify.html, "compute temp"_compute_temp.html,
"compute pressure"_compute_pressure.html
[Default:]
thermo_style one :pre
diff --git a/doc/variable.html b/doc/variable.html
index fd1e7f765..31dae2e60 100644
--- a/doc/variable.html
+++ b/doc/variable.html
@@ -1,866 +1,866 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>variable command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>variable name style args ...
</PRE>
<UL><LI>name = name of variable to define
<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>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>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
numbers = 0.0, 100, -5.4, 2.8e-4, etc
constants = PI
thermo keywords = vol, ke, press, etc from <A HREF = "thermo_style.html">thermo_style</A>
math operators = (), -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
math functions = sqrt(x), exp(x), ln(x), log(x),
sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(y,x),
random(x,y,z), normal(x,y,z), ceil(x), floor(x), round(x)
ramp(x,y), stagger(x,y), logfreq(x,y,z), vdisplace(x,y), swiggle(x,y,z), cwiggle(x,y,z)
group functions = count(group), mass(group), charge(group),
xcm(group,dim), vcm(group,dim), fcm(group,dim),
bound(group,xmin), gyration(group), ke(group),
angmom(group,dim), torque(group,dim),
inertia(group,dimdim), omega(group,dim)
region functions = count(group,region), mass(group,region), charge(group,region),
xcm(group,dim,region), vcm(group,dim,region), fcm(group,dim,region),
bound(group,xmin,region), gyration(group,region), ke(group,reigon),
angmom(group,dim,region), torque(group,dim,region),
inertia(group,dimdim,region), omega(group,dim,region)
special functions = sum(x), min(x), max(x), ave(x), trap(x), gmask(x), rmask(x), grmask(x,y)
atom value = mass[i], type[i], x[i], y[i], z[i], vx[i], vy[i], vz[i], fx[i], fy[i], fz[i]
atom vector = mass, type, x, y, z, vx, vy, vz, fx, fy, fz
compute references = c_ID, c_ID[i], c_ID[i][j]
fix references = f_ID, f_ID[i], f_ID[i][j]
variable references = v_name, v_name[i]
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<PRE>variable x index run1 run2 run3 run4 run5 run6 run7 run8
variable LoopVar loop $n
variable beta equal temp/3.0
variable b1 equal x[234]+0.5*vol
variable b1 equal "x[234] + 0.5*vol"
variable b equal xcm(mol1,x)/2.0
variable b equal c_myTemp
variable b atom x*y/vol
variable foo string myfile
variable temp world 300.0 310.0 320.0 ${Tfinal}
variable x universe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
variable x uloop 15 pad
variable x delete
</PRE>
<P><B>Description:</B>
</P>
<P>This command assigns one or more strings to a variable name for
evaluation later in the input script or during a simulation.
</P>
<P>Variables can be used in several ways in LAMMPS. A variable can be
referenced elsewhere in an input script to become part of a new input
command. For variable styles that store multiple strings, the
<A HREF = "next.html">next</A> command can be used to increment which string is
assigned to the variable. Variables of style <I>equal</I> store a formula
which when evaluated produces a single numeric value which can be
output either directly (see the <A HREF = "print.html">print</A>, <A HREF = "fix_print.html">fix
print</A>, and <A HREF = "run.html">run every</A> commands) or as part
of thermodynamic output (see the <A HREF = "thermo_style.html">thermo_style</A>
command), or used as input to an averaging fix (see the <A HREF = "fix_ave_time.html">fix
ave/time</A> command). Variables of style <I>atom</I> store
a formula which when evaluated produces one numeric value per atom
which can be output to a dump file (see the <A HREF = "dump.html">dump custom</A>
command) or used as input to an averaging fix (see the <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A> and <A HREF = "fix_ave_atom.html">fix ave/atom</A>
commands).
</P>
<P>In the discussion that follows, the "name" of the variable is the
arbitrary string that is the 1st argument in the variable command.
This name can only contain alphanumeric characters and underscores.
The "string" is one or more of the subsequent arguments. The "string"
can be simple text as in the 1st example above, it can contain other
variables as in the 2nd example, or it can be a formula as in the 3rd
example. The "value" is the numeric quantity resulting from
evaluation of the string. Note that the same string can generate
different values when it is evaluated at different times during a
simulation.
</P>
<P>IMPORTANT NOTE: When the input script line that defines a variable of
style <I>equal</I> or <I>atom</I> that contain a formula is encountered, the
formula is NOT immediately evaluated and the result stored. See the
discussion below about "Immediate Evaluation of Variables" if you want
to do this.
</P>
<P>IMPORTANT NOTE: When a variable command is encountered in the input
script and the variable name has already been specified, the command
is ignored. This means variables can NOT be re-defined in an input
script (with 2 exceptions, read further). This is to allow an input
script to be processed multiple times without resetting the variables;
see the <A HREF = "jump.html">jump</A> or <A HREF = "include.html">include</A> commands. It also
-means that using the <A HREF = "Section_start.html#2_6">command-line switch</A> -var
-will override a corresponding index variable setting in the input
+means that using the <A HREF = "Section_start.html#start_6">command-line switch</A>
+-var will override a corresponding index variable setting in the input
script.
</P>
<P>There are two exceptions to this rule. First, variables of style
<I>string</I> and <I>equal</I> and <I>atom</I> ARE redefined each time the command is
encountered. This allows these style of variables to be redefined
multiple times in an input script. In a loop, this means the formula
associated with an <I>equal</I> or <I>atom</I> style variable can change if it
contains a substitution for another variable, e.g. $x.
</P>
<P>Second, as described below, if a variable is iterated on to the end of
its list of strings via the <A HREF = "next.html">next</A> command, it is removed
from the list of active variables, and is thus available to be
re-defined in a subsequent variable command. The <I>delete</I> style does
the same thing.
</P>
<HR>
-<P><A HREF = "Section_commands.html#3_2">This section</A> of the manual explains how
+<P><A HREF = "Section_commands.html#cmd_2">This section</A> of the manual explains how
occurrences of a variable name in an input script line are replaced by
the variable's string. The variable name can be referenced as $x if
the name "x" is a single character, or as ${LoopVar} if the name
"LoopVar" is one or more characters.
</P>
<P>As described below, for variable styles <I>index</I>, <I>loop</I>, <I>universe</I>,
and <I>uloop</I>, which string is assigned to a variable can be incremented
via the <A HREF = "next.html">next</A> command. When there are no more strings to
assign, the variable is exhausted and a flag is set that causes the
next <A HREF = "jump.html">jump</A> command encountered in the input script to be
skipped. This enables the construction of simple loops in the input
script that are iterated over and then exited from.
</P>
<P>As explained above, an exhausted variable can be re-used in an input
script. The <I>delete</I> style also removes the variable, the same as if
it were exhausted, allowing it to be redefined later in the input
script or when the input script is looped over. This can be useful
when breaking out of a loop via the <A HREF = "if.html">if</A> and <A HREF = "jump.html">jump</A>
commands before the variable would become exhausted. For example,
</P>
<PRE>label loop
variable a loop 5
print "A = $a"
if "$a > 2" then "jump in.script break"
next a
jump in.script loop
label break
variable a delete
</PRE>
<HR>
<P>For the <I>index</I> style, one or more strings are specified. Initially,
the 1st string is assigned to the variable. Each time a
<A HREF = "next.html">next</A> command is used with the variable name, the next
string is assigned. All processors assign the same string to the
variable.
</P>
<P><I>Index</I> style variables with a single string value can also be set by
-using the command-line switch -var; see <A HREF = "Section_start.html#2_6">this
+using the command-line switch -var; see <A HREF = "Section_start.html#start_6">this
section</A> for details.
</P>
<P>The <I>loop</I> style is identical to the <I>index</I> style except that the
strings are the integers from 1 to N inclusive, if only one argument N
is specified. This allows generation of a long list of runs
(e.g. 1000) without having to list N strings in the input script.
Initially, the string "1" is assigned to the variable. Each time a
<A HREF = "next.html">next</A> command is used with the variable name, the next
string ("2", "3", etc) is assigned. All processors assign the same
string to the variable. The <I>loop</I> style can also be specified with
two arguments N1 and N2. In this case the loop runs from N1 to N2
inclusive, and the string N1 is initially assigned to the variable.
</P>
<P>For the <I>world</I> style, one or more strings are specified. There must
-be one string for each processor partition or "world". See <A HREF = "Section_start.html#2_6">this
+be one string for each processor partition or "world". See <A HREF = "Section_start.html#start_6">this
section</A> of the manual for information on
running LAMMPS with multiple partitions via the "-partition"
command-line switch. This variable command assigns one string to each
world. All processors in the world are assigned the same string. The
next command cannot be used with <I>equal</I> style variables, since there
is only one value per world. This style of variable is useful when
you wish to run different simulations on different partitions, or when
performing a parallel tempering simulation (see the
<A HREF = "temper.html">temper</A> command), to assign different temperatures to
different partitions.
</P>
<P>For the <I>universe</I> style, one or more strings are specified. There
must be at least as many strings as there are processor partitions or
-"worlds". See <A HREF = "Section_start.html#2_6">this page</A> for information on
-running LAMMPS with multiple partitions via the "-partition"
+"worlds". See <A HREF = "Section_start.html#start_6">this page</A> for information
+on running LAMMPS with multiple partitions via the "-partition"
command-line switch. This variable command initially assigns one
string to each world. When a <A HREF = "next.html">next</A> command is encountered
using this variable, the first processor partition to encounter it, is
assigned the next available string. This continues until all the
variable strings are consumed. Thus, this command can be used to run
50 simulations on 8 processor partitions. The simulations will be run
one after the other on whatever partition becomes available, until
they are all finished. <I>Universe</I> style variables are incremented
using the files "tmp.lammps.variable" and "tmp.lammps.variable.lock"
which you will see in your directory during such a LAMMPS run.
</P>
<P>The <I>uloop</I> style is identical to the <I>universe</I> style except that the
strings are the integers from 1 to N. This allows generation of long
list of runs (e.g. 1000) without having to list N strings in the input
script.
</P>
<HR>
<P>For the <I>equal</I> and <I>atom</I> styles, a single string is specified which
represents a formula that will be evaluated afresh each time the
variable is used. If you want spaces in the string, enclose it in
double quotes so the parser will treat it as a single argument. For
<I>equal</I> style variables the formula computes a scalar quantity, which
becomes the value of the variable whenever it is evaluated. For
<I>atom</I> style variables the formula computes one quantity for each
atom whenever it is evaluated.
</P>
<P>Note that <I>equal</I> and <I>atom</I> variables can produce different values at
different stages of the input script or at different times during a
run. For example, if an <I>equal</I> variable is used in a <A HREF = "fix_print.html">fix
print</A> command, different values could be printed each
timestep it was invoked. If you want a variable to be evaluated
immediately, so that the result is stored by the variable instead of
the string, see the section below on "Immediate Evaluation of
Variables".
</P>
<P>The next command cannot be used with <I>equal</I> or <I>atom</I> style
variables, since there is only one string.
</P>
<P>The formula for an <I>equal</I> or <I>atom</I> variable can contain a variety
of quantities. The syntax for each kind of quantity is simple, but
multiple quantities can be nested and combined in various ways to
build up formulas of arbitrary complexity. For example, this is a
valid (though strange) variable formula:
</P>
<PRE>variable x equal "pe + c_MyTemp / vol^(1/3)"
</PRE>
<P>Specifically, an formula can contain numbers, thermo keywords, math
operators, math functions, group functions, region functions, atom
values, atom vectors, compute references, fix references, and
references to other variables.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >Number</TD><TD > 0.2, 100, 1.0e20, -15.4, etc</TD></TR>
<TR><TD >Constant</TD><TD > PI</TD></TR>
<TR><TD >Thermo keywords</TD><TD > vol, pe, ebond, etc</TD></TR>
<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</TD></TR>
<TR><TD >Math functions</TD><TD > sqrt(x), exp(x), ln(x), log(x), sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(y,x), random(x,y,z), normal(x,y,z), ceil(x), floor(x), round(x), ramp(x,y), stagger(x,y), logfreq(x,y,z), vdisplace(x,y), swiggle(x,y,z), cwiggle(x,y,z)</TD></TR>
<TR><TD >Group functions</TD><TD > count(ID), mass(ID), charge(ID), xcm(ID,dim), vcm(ID,dim), fcm(ID,dim), bound(ID,dir), gyration(ID), ke(ID), angmom(ID,dim), torque(ID,dim), inertia(ID,dimdim), omega(ID,dim)</TD></TR>
<TR><TD >Region functions</TD><TD > count(ID,IDR), mass(ID,IDR), charge(ID,IDR), xcm(ID,dim,IDR), vcm(ID,dim,IDR), fcm(ID,dim,IDR), bound(ID,dir,IDR), gyration(ID,IDR), ke(ID,IDR), angmom(ID,dim,IDR), torque(ID,dim,IDR), inertia(ID,dimdim,IDR), omega(ID,dim,IDR)</TD></TR>
<TR><TD >Special functions</TD><TD > sum(x), min(x), max(x), ave(x), trap(x), gmask(x), rmask(x), grmask(x,y)</TD></TR>
<TR><TD >Atom values</TD><TD > mass[i], type[i], x[i], y[i], z[i], vx[i], vy[i], vz[i], fx[i], fy[i], fz[i]</TD></TR>
<TR><TD >Atom vectors</TD><TD > mass, type, x, y, z, vx, vy, vz, fx, fy, fz</TD></TR>
<TR><TD >Compute references</TD><TD > c_ID, c_ID[i], c_ID[i][j]</TD></TR>
<TR><TD >Fix references</TD><TD > f_ID, f_ID[i], f_ID[i][j]</TD></TR>
<TR><TD >Other variables</TD><TD > v_name, v_name[i]
</TD></TR></TABLE></DIV>
<HR>
<P>Most of the formula elements produce a scalar value. A few produce a
per-atom vector of values. These are the atom vectors, compute
references that represent a per-atom vector, fix references that
represent a per-atom vector, and variables that are atom-style
variables. Math functions that operate on scalar values produce a
scalar value; math function that operate on per-atom vectors do so
element-by-element and produce a per-atom vector.
</P>
<P>A formula for equal-style variables cannot use any formula element
that produces a per-atom vector. A formula for an atom-style variable
can use formula elements that produce either a scalar value or a
per-atom vector. Atom-style variables are evaluated by other commands
that define a <A HREF = "group.html">group</A> on which they operate, e.g. a
<A HREF = "dump.html">dump</A> or <A HREF = "compute.html">compute</A> or <A HREF = "fix.html">fix</A> command.
When they invoke the atom-style variable, only atoms in the group are
inlcuded in the formula evaluation. The variable evaluates to 0.0 for
atoms not in the group.
</P>
<P>The thermo keywords allowed in a formula are those defined by the
<A HREF = "thermo_style.html">thermo_style custom</A> command. Thermo keywords that
require a <A HREF = "compute.html">compute</A> to calculate their values such as
"temp" or "press", use computes stored and invoked by the
<A HREF = "thermo_style.html">thermo_style</A> command. This means that you can
only use those keywords in a variable if the style you are using with
the thermo_style command (and the thermo keywords associated with that
style) also define and use the needed compute. Note that some thermo
keywords use a compute indirectly to calculate their value (e.g. the
enthalpy keyword uses temp, pe, and pressure). If a variable is
evaluated directly in an input script (not during a run), then the
values accessed by the thermo keyword must be current. See the
discussion below about "Variable Accuracy".
</P>
<HR>
<H4>Math Operators
</H4>
<P>Math operators are written in the usual way, where the "x" and "y" in
the examples can themselves be arbitrarily complex formulas, as in the
examples above. In this syntax, "x" and "y" can be scalar values or
per-atom vectors. For example, "ke/natoms" is the division of two
scalars, where "vy+vz" is the element-by-element sum of two per-atom
vectors of y and z velocities.
</P>
<P>Operators are evaluated left to right and have the usual C-style
precedence: unary minus and unary logical NOT operator "!" have the
highest precedence, exponentiation "^" is next; multiplication and
division are next; addition and subtraction are next; the 4 relational
operators "<", "<=", ">", and ">=" are next; the two remaining
relational operators "==" and "!=" are next; then the logical AND
operator "&&"; and finally the logical OR operator "||" has the lowest
precedence. Parenthesis can be used to group one or more portions of
a formula and/or enforce a different order of evaluation than what
would occur with the default precedence.
</P>
<P>The 6 relational operators return either a 1.0 or 0.0 depending on
whether the relationship between x and y is TRUE or FALSE. For
example the expression x<10.0 in an atom-style variable formula will
return 1.0 for all atoms whose x-coordinate is less than 10.0, and 0.0
for the others. The logical AND operator will return 1.0 if both its
arguments are non-zero, else it returns 0.0. The logical OR operator
will return 1.0 if either of its arguments is non-zero, else it
returns 0.0. The logical NOT operator returns 1.0 if its argument is
0.0, else it returns 0.0.
</P>
<P>These relational and logical operators can be used as a masking or
selection operation in a formula. For example, the number of atoms
whose properties satifsy one or more criteria could be calculated by
taking the returned per-atom vector of ones and zeroes and passing it
to the <A HREF = "compute_reduce.html">compute reduce</A> command.
</P>
<HR>
<H4>Math Functions
</H4>
<P>Math functions are specified as keywords followed by one or more
parenthesized arguments "x", "y", "z", each of which can themselves be
arbitrarily complex formulas. In this syntax, the arguments can
represent scalar values or per-atom vectors. In the latter case, the
math operation is performed on each element of the vector. For
example, "sqrt(natoms)" is the sqrt() of a scalar, where "sqrt(y*z)"
yields a per-atom vector with each element being the sqrt() of the
product of one atom's y and z coordinates.
</P>
<P>Most of the math functions perform obvious operations. The ln() is
the natural log; log() is the base 10 log.
</P>
<P>The random(x,y,z) function takes 3 arguments: x = lo, y = hi, and z =
seed. It generates a uniform random number between lo and hi. The
normal(x,y,z) function also takes 3 arguments: x = mu, y = sigma, and
z = seed. It generates a Gaussian variate centered on mu with
variance sigma^2. In both cases the seed is used the first time the
internal random number generator is invoked, to initialize it. For
equal-style variables, every processor uses the same seed so that they
each generate the same sequence of random numbers. For atom-style
variables, a unique seed is created for each processor, based on the
specified seed. This effectively generates a different random number
for each atom being looped over in the atom-style variable.
</P>
<P>IMPORTANT NOTE: Internally, there is just one random number generator
for all equal-style variables and one for all atom-style variables.
If you define multiple variables (of each style) which use the
random() or normal() math functions, then the internal random number
generators will only be initialized once, which means only one of the
specified seeds will determine the sequence of generated random
numbers.
</P>
<P>The ceil(), floor(), and round() functions are those in the C math
library. Ceil() is the smallest integer not less than its argument.
Floor() if the largest integer not greater than its argument. Round()
is the nearest integer to its argument.
</P>
<P>The ramp(x,y) function uses the current timestep to generate a value
linearly intepolated between the specified x,y values over the course
of a run, according to this formula:
</P>
<PRE>value = x + (y-x) * (timestep-startstep) / (stopstep-startstep)
</PRE>
<P>The run begins on startstep and ends on stopstep. Startstep and
stopstep can span multiple runs, using the <I>start</I> and <I>stop</I> keywords
of the <A HREF = "run.html">run</A> command. See the <A HREF = "run.html">run</A> command for
details of how to do this.
</P>
<P>The stagger(x,y) function uses the current timestep to generate a new
timestep. X,y > 0 and x > y is required. The generated timesteps
increase in a staggered fashion, as the sequence
x,x+y,2x,2x+y,3x,3x+y,etc. For any current timestep, the next
timestep in the sequence is returned. Thus if stagger(1000,100) is
used in a variable by the <A HREF = "dump_modify.html">dump_modify every</A>
command, it will generate the sequence of output timesteps:
</P>
<PRE>100,1000,1100,2000,2100,3000,etc
</PRE>
<P>The logfreq(x,y,z) function uses the current timestep to generate a
new timestep. X,y,z > 0 and y < z is required. The generated
timesteps increase in a logarithmic fashion, as the sequence
x,2x,3x,...y*x,z*x,2*z*x,3*z*x,...y*z*x,z*z*x,2*z*x*x,etc. For any
current timestep, the next timestep in the sequence is returned. Thus
if logfreq(100,4,10) is used in a variable by the <A HREF = "dump_modify.html">dump_modify
every</A> command, it will generate the sequence of
output timesteps:
</P>
<PRE>100,200,300,400,1000,2000,3000,4000,10000,20000,etc
</PRE>
<P>The vdisplace(x,y) function takes 2 arguments: x = coord0 and y =
velocity, and uses the elapsed time to change the coordinate value by
a linear displacement due to the applied velocity over the course of a
run, according to this formula:
</P>
<PRE>value = coord0 + velocity*(timestep-startstep)*dt
</PRE>
<P>where dt = the timestep size.
</P>
<P>The run begins on startstep. Startstep can span multiple runs, using
the <I>start</I> keyword of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this. Note that the
<A HREF = "thermo_style.html">thermo_style</A> keyword elaplong =
timestep-startstep.
</P>
<P>The swiggle(x,y,z) and cwiggle(x,y,z) functions each take 3 arguments:
x = coord0, y = amplitude, z = period. They use the elapsed time to
oscillate the coordinate value by a sin() or cos() function over the
course of a run, according to one of these formulas, where
omega = 2 PI / period:
</P>
<PRE>value = coord0 + Amplitude * sin(omega*(timestep-startstep)*dt)
value = coord0 + Amplitude * (1 - cos(omega*(timestep-startstep)*dt))
</PRE>
<P>where dt = the timestep size.
</P>
<P>The run begins on startstep. Startstep can span multiple runs, using
the <I>start</I> keyword of the <A HREF = "run.html">run</A> command. See the
<A HREF = "run.html">run</A> command for details of how to do this. Note that the
<A HREF = "thermo_style.html">thermo_style</A> keyword elaplong =
timestep-startstep.
</P>
<HR>
<H4>Group and Region Functions
</H4>
<P>Group functions are specified as keywords followed by one or two
parenthesized arguments. The first argument is the group-ID. The
<I>dim</I> argument, if it exists, is <I>x</I> or <I>y</I> or <I>z</I>. The <I>dir</I>
argument, if it exists, is <I>xmin</I>, <I>xmax</I>, <I>ymin</I>, <I>ymax</I>, <I>zmin</I>, or
<I>zmax</I>. The <I>dimdim</I> argument, if it exists, is <I>xx</I> or <I>yy</I> or <I>zz</I>
or <I>xy</I> or <I>yz</I> or <I>xz</I>.
</P>
<P>The group function count() is the number of atoms in the group. The
group functions mass() and charge() are the total mass and charge of
the group. Xcm() and vcm() return components of the position and
velocity of the center of mass of the group. Fcm() returns a
component of the total force on the group of atoms. Bound() returns
the min/max of a particular coordinate for all atoms in the group.
Gyration() computes the radius-of-gyration of the group of atoms. See
the <A HREF = "compute_gyration.html">compute gyration</A> command for a definition
of the formula. Angmom() returns components of the angular momentum
of the group of atoms around its center of mass. Torque() returns
components of the torque on the group of atoms around its center of
mass, based on current forces on the atoms. Inertia() returns one of
6 components of the inertia tensor of the group of atoms around its
center of mass. Omega() returns components of the angular velocity of
the group of atoms around its center of mass.
</P>
<P>Region functions are specified exactly the same way as group functions
except they take an extra argument which is the region ID. The
function is computed for all atoms that are in both the group and the
region. If the group is "all", then the only criteria for atom
inclusion is that it be in the region.
</P>
<HR>
<H4>Special Functions
</H4>
<P>Special functions take specific kinds of arguments, meaning their
arguments cannot be formulas themselves.
</P>
<P>The sum(x), min(x), max(x), ave(x), and trap(x) functions each take 1
argument which is of the form "c_ID" or "c_ID[N]" or "f_ID" or
"f_ID[N]". The first two are computes and the second two are fixes;
the ID in the reference should be replaced by the ID of a compute or
fix defined elsewhere in the input script. The compute or fix must
produce either a global vector or array. If it produces a global
vector, then the notation without "[N]" should be used. If it
produces a global array, then the notation with "[N]" should be
used, when N is an integer, to specify which column of the global
array is being referenced.
</P>
<P>These functions operate on the global vector of inputs and reduce it
to a single scalar value. This is analagous to the operation of the
<A HREF = "compute_reduce.html">compute reduce</A> command, which invokes the same
functions on per-atom and local vectors.
</P>
<P>The sum() function calculates the sum of all the vector elements. The
min() and max() functions find the minimum and maximum element
respectively. The ave() function is the same as sum() except that it
divides the result by the length of the vector. The trap() function
is the same as sum() except the first and last elements are multiplied
by a weighting factor of 1/2 when performing the sum. This
effectively implements an integratiion via the trapezoidal rule on the
global vector of data. I.e. consider a set of points, equally spaced
by 1 in their x coordinate: (1,V1), (2,V2), ..., (N,VN), where the Vi
are the values in the global vector of length N. The integral from 1
to N of these points is trap(). When appropriately normalized by the
timestep size, this function is useful for calculating integrals of
time-series data, like that generated by the <A HREF = "fix_ave_correlate.html">fix
ave/correlate</A> command.
</P>
<P>The gmask(x) function takes 1 argument which is a group ID. It
can only be used in atom-style variables. It returns a 1 for
atoms that are in the group, and a 0 for atoms that are not.
</P>
<P>The rmask(x) function takes 1 argument which is a region ID. It can
only be used in atom-style variables. It returns a 1 for atoms that
are in the geometric region, and a 0 for atoms that are not.
</P>
<P>The grmask(x,y) function takes 2 arguments. The first is a group ID,
and the second is a region ID. It can only be used in atom-style
variables. It returns a 1 for atoms that are in both the group and
region, and a 0 for atoms that are not in both.
</P>
<HR>
<H4>Atom Values and Vectors
</H4>
<P>Atom values take a single integer argument I from 1 to N, where I is
the an atom-ID, e.g. x[243], which means use the x coordinate of the
atom with ID = 243.
</P>
<P>Atom vectors generate one value per atom, so that a reference like
"vx" means the x-component of each atom's velocity will be used when
evaluating the variable. Note that other atom attributes can be used
as inputs to a variable by using the <A HREF = "compute_property_atom.html">compute
property/atom</A> command and then specifying
a quantity from that compute.
</P>
<HR>
<H4>Compute References
</H4>
<P>Compute references access quantities calculated by a
<A HREF = "compute.html">compute</A>. The ID in the reference should be replaced by
the ID of a compute defined elsewhere in the input script. As
discussed in the doc page for the <A HREF = "compute.html">compute</A> command,
computes can produce global, per-atom, or local values. Only global
and per-atom values can be used in a variable. Computes can also
produce a scalar, vector, or array. An equal-style variable can only
use scalar values, which means a global scalar, or an element of a
global or per-atom vector or array. Atom-style variables can use the
same scalar values. They can also use per-atom vector values. A
vector value can be a per-atom vector itself, or a column of an
per-atom array. See the doc pages for individual computes to see what
kind of values they produce.
</P>
<P>Examples of different kinds of compute references are as follows.
There is no ambiguity as to what a reference means, since computes
only produce global or per-atom quantities, never both.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >c_ID</TD><TD > global scalar, or per-atom vector</TD></TR>
<TR><TD >c_ID[I]</TD><TD > Ith element of global vector, or atom I's value in per-atom vector, or Ith column from per-atom array</TD></TR>
<TR><TD >c_ID[I][J]</TD><TD > I,J element of global array, or atom I's Jth value in per-atom array
</TD></TR></TABLE></DIV>
<P>If a variable containing a compute is evaluated
directly in an input script (not during a run), then the values
accessed by the compute must be current. See the discussion below
about "Variable Accuracy".
</P>
<HR>
<H4>Fix References
</H4>
<P>Fix references access quantities calculated by a <A HREF = "compute.html">fix</A>.
The ID in the reference should be replaced by the ID of a fix defined
elsewhere in the input script. As discussed in the doc page for the
<A HREF = "fix.html">fix</A> command, fixes can produce global, per-atom, or local
values. Only global and per-atom values can be used in a variable.
Fixes can also produce a scalar, vector, or array. An equal-style
variable can only use scalar values, which means a global scalar, or
an element of a global or per-atom vector or array. Atom-style
variables can use the same scalar values. They can also use per-atom
vector values. A vector value can be a per-atom vector itself, or a
column of an per-atom array. See the doc pages for individual fixes
to see what kind of values they produce.
</P>
<P>The different kinds of fix references are exactly the same as the
compute references listed in the above table, where "c_" is replaced
by "f_". Again, there is no ambiguity as to what a reference means,
since fixes only produce global or per-atom quantities, never both.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >f_ID</TD><TD > global scalar, or per-atom vector</TD></TR>
<TR><TD >f_ID[I]</TD><TD > Ith element of global vector, or atom I's value in per-atom vector, or Ith column from per-atom array</TD></TR>
<TR><TD >f_ID[I][J]</TD><TD > I,J element of global array, or atom I's Jth value in per-atom array
</TD></TR></TABLE></DIV>
<P>If a variable containing a fix is evaluated directly in an input
script (not during a run), then the values accessed by the fix should
be current. See the discussion below about "Variable Accuracy".
</P>
<P>Note that some fixes only generate quantities on certain timesteps.
If a variable attempts to access the fix on non-allowed timesteps, an
error is generated. For example, the <A HREF = "fix_ave_time.html">fix ave/time</A>
command may only generate averaged quantities every 100 steps. See
the doc pages for individual fix commands for details.
</P>
<HR>
<H4>Variable References
</H4>
<P>Variable references access quantities calulated by other variables,
which will cause those variables to be evaluated. The name in the
reference should be replaced by the name of a variable defined
elsewhere in the input script. As discussed on this doc page,
atom-style variables generate a per-atom vector of values; all other
variable styles generate a global scalar value. An equal-style
variable can reference a global scalar value produced by another
variable, but not a per-atom vector produced by an atom-style
variable. Atom-style variables can reference either global scalar or
per-atom vector values produced by kind of variable.
</P>
<P>Examples of different kinds of variable references are as follows.
There is no ambiguity as to what a reference means, since variables
produce only a global scalar or a per-atom vectors, never both.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >v_name</TD><TD > scalar, or per-atom vector</TD></TR>
<TR><TD >v_name[I]</TD><TD > atom I's value in per-atom vector
</TD></TR></TABLE></DIV>
<P>IMPORTANT NOTE: If you define variables in circular manner like this:
</P>
<PRE>variable a equal v_b
variable b equal v_a
print $a
</PRE>
<P>then LAMMPS may run for a while when the print statement is invoked!
</P>
<HR>
<P><B>Immediate Evaluation of Variables:</B>
</P>
<P>There is a difference between referencing a variable with a leading $
sign (e.g. $x or ${abc}) versus with a leading "v_" (e.g. v_x or
v_abc). The former can be used in any command, including a variable
command, to force the immediate evaluation of the referenced variable
and the substitution of its value into the command. The latter is a
required kind of argument to some commands (e.g. the <A HREF = "fix_ave_spatial.html">fix
ave/spatial</A> or <A HREF = "dump.html">dump custom</A> or
<A HREF = "thermo_style.html">thermo_style</A> commands) if you wish it to evaluate
a variable periodically during a run. It can also be used in a
variable formula if you wish to reference a second variable. The
second variable will be evaluated whenever the first variable is
evaluated.
</P>
<P>As an example, suppose you use this command in your input script to
define the variable "v" as
</P>
<PRE>variable v equal vol
</PRE>
<P>before a run where the simulation box size changes. You might think
this will assign the initial volume to the variable "v". That is not
the case. Rather it assigns a formula which evaluates the volume
(using the thermo_style keyword "vol") to the variable "v". If you
use the variable "v" in some other command like <A HREF = "fix_ave_time.html">fix
ave/time</A> then the current volume of the box will be
evaluated continuously during the run.
</P>
<P>If you want to store the initial volume of the system, you can do it
this way:
</P>
<PRE>variable v equal vol
variable v0 equal $v
</PRE>
<P>The second command will force "v" to be evaluated (yielding the
initial volume) and assign that value to the variable "v0". Thus the
command
</P>
<PRE>thermo_style custom step v_v v_v0
</PRE>
<P>would print out both the current and initial volume periodically
during the run.
</P>
<P>Note that it is a mistake to enclose a variable formula in double
quotes if it contains variables preceeded by $ signs. For example,
</P>
<PRE>variable vratio equal "${vfinal}/${v0}"
</PRE>
-<P>This is because the quotes prevent variable substitution (see <A HREF = "Section_commands.html#3_2">this
-section</A> on parsing input script commands),
-and thus an error will occur when the formula for "vratio" is
-evaluated later.
+<P>This is because the quotes prevent variable substitution (see <A HREF = "Section_commands.html#cmd_2">this
+section</A> on parsing input script
+commands), and thus an error will occur when the formula for "vratio"
+is evaluated later.
</P>
<HR>
<P><B>Variable Accuracy:</B>
</P>
<P>Obviously, LAMMPS attempts to evaluate variables containing formulas
(<I>equal</I> and <I>atom</I> style variables) accurately whenever the
evaluation is performed. Depending on what is included in the
formula, this may require invoking a <A HREF = "compute.html">compute</A>, either
directly or indirectly via a thermo keyword, or accessing a value
previously calculated by a compute, or accessing a value calculated
and stored by a <A HREF = "fix.html">fix</A>. If the compute is one that calculates
the pressure or energy of the system, then these quantities need to be
tallied during the evaluation of the interatomic potentials (pair,
bond, etc) on timesteps that the variable will need the values.
</P>
<P>LAMMPS keeps track of all of this during a <A HREF = "run.html">run</A> or <A HREF = "minimize.html">energy
minimization</A>. An error will be generated if you
attempt to evaluate a variable on timesteps when it cannot produce
accurate values. For example, if a <A HREF = "thermo_style.html">thermo_style
custom</A> command prints a variable which accesses
values stored by a <A HREF = "fix_ave_time.html">fix ave/time</A> command and the
timesteps on which thermo output is generated are not multiples of the
averaging frequency used in the fix command, then an error will occur.
</P>
<P>An input script can also request variables be evaluated before or
after or in between runs, e.g. by including them in a
<A HREF = "print.html">print</A> command. In this case, if a compute is needed to
evaluate a variable (either directly or indirectly), LAMMPS will not
invoke the compute, but it will use a value previously calculated by
the compute, and can do this only if it is current. Fixes will always
provide a quantity needed by a variable, but the quantity may or may
not be current. This leads to one of three kinds of behavior:
</P>
<P>(1) The variable may be evaluated accurately. If it contains
references to a compute or fix, and these values were calculated on
the last timestep of a preceeding run, then they will be accessed and
used by the variable and the result will be accurate.
</P>
<P>(2) LAMMPS may not be able to evaluate the variable and generate an
error. For example, if the variable requires a quantity from a
<A HREF = "compute.html">compute</A> that is not current, LAMMPS will generate an
error. This means, for example, that such a variable cannot be
evaluated before the first run has occurred. Likewise, in between
runs, such a variable cannot be accessed unless it was evaluated on
the last timestep of the preceding run, e.g. by thermodynamic output.
</P>
<P>One way to get around this problem is to perform a 0-timestep run
before using the variable. For example, these commands
</P>
<PRE>variable t equal temp
print "Initial temperature = $t"
run 1000
</PRE>
<P>will generate an error if the run is the first run specified in the
input script, because generating a value for the "t" variable requires
a compute for calculating the temperature to be invoked.
</P>
<P>However, this sequence of commands would be fine:
</P>
<PRE>run 0
variable t equal temp
print "Initial temperature = $t"
run 1000
</PRE>
<P>The 0-timestep run initializes and invokes various computes, including
the one for temperature, so that the value it stores is current and
can be accessed by the variable "t" after the run has completed. Note
that a 0-timestep run does not alter the state of the system, so it
does not change the input state for the 1000-timestep run that
follows. Also note that the 0-timestep run must actually use and
invoke the compute in question (e.g. via <A HREF = "thermo_style.html">thermo</A> or
<A HREF = "dump.html">dump</A> output) in order for it to enable the compute to be
used in a variable after the run. Thus if you are trying to print a
variable that uses a compute you have defined, you could insure it was
invoked on the last timestep of the preceding run by including it in
thermodynamic output.
</P>
<P>Unlike computes, <A HREF = "fix.html">fixes</A> will never generate an error if
their values are accessed by a variable in between runs. They always
return some value to the variable. However, the value may not be what
you expect if the fix has not yet calculated the quantity of interest
or it is not current. For example, the <A HREF = "fix_indent.html">fix indent</A>
command stores the force on the indenter. But this is not computed
until a run is performed. Thus if a variable attempts to print this
value before the first run, zeroes will be output. Again, performing
a 0-timestep run before printing the variable has the desired effect.
</P>
<P>(3) The variable may be evaluated incorrectly. And LAMMPS may have
no way to detect this has occurred. Consider the following sequence
of commands:
</P>
<PRE>pair_coeff 1 1 1.0 1.0
run 1000
pair_coeff 1 1 1.5 1.0
variable e equal pe
print "Final potential energy = $e"
</PRE>
<P>The first run is performed using one setting for the pairwise
potential defined by the <A HREF = "pair_style.html">pair_style</A> and
<A HREF = "pair_coeff.html">pair_coeff</A> commands. The potential energy is
evaluated on the final timestep and stored by the <A HREF = "compute_pe.html">compute
pe</A> compute (this is done by the
<A HREF = "thermo_style.html">thermo_style</A> command). Then a pair coefficient is
changed, altering the potential energy of the system. When the
potential energy is printed via the "e" variable, LAMMPS will use the
potential energy value stored by the <A HREF = "compute_pe.html">compute pe</A>
compute, thinking it is current. There are many other commands which
could alter the state of the system between runs, causing a variable
to evaluate incorrectly.
</P>
<P>The solution to this issue is the same as for case (2) above, namely
perform a 0-timestep run before the variable is evaluated to insure
the system is up-to-date. For example, this sequence of commands
would print a potential energy that reflected the changed pairwise
coefficient:
</P>
<PRE>pair_coeff 1 1 1.0 1.0
run 1000
pair_coeff 1 1 1.5 1.0
run 0
variable e equal pe
print "Final potential energy = $e"
</PRE>
<HR>
<P><B>Restrictions:</B>
</P>
<P>Indexing any formula element by global atom ID, such as an atom value,
requires the atom style to use a global mapping in order to look up
the vector indices. By default, only atom styles with molecular
information create global maps. The <A HREF = "atom_modify.html">atom_modify
map</A> command can override the default.
</P>
<P>All <I>universe</I>- and <I>uloop</I>-style variables defined in an input script
must have the same number of values.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "next.html">next</A>, <A HREF = "jump.html">jump</A>, <A HREF = "include.html">include</A>,
<A HREF = "temper.html">temper</A>, <A HREF = "fix_print.html">fix print</A>, <A HREF = "print.html">print</A>
</P>
<P><B>Default:</B> none
</P>
</HTML>
diff --git a/doc/variable.txt b/doc/variable.txt
index cbd6d57a9..987e806fc 100644
--- a/doc/variable.txt
+++ b/doc/variable.txt
@@ -1,858 +1,858 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
variable command :h3
[Syntax:]
variable name style args ... :pre
name = name of variable to define :ulb,l
style = {delete} or {index} or {loop} or {world} or {universe} or {uloop} or {string} or {equal} or {atom} :l
{delete} = no args
{index} args = one or more strings
{loop} args = N
N = integer size of loop, loop from 1 to N inclusive
{loop} 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
{loop} args = N1 N2
N1,N2 = loop from N1 to N2 inclusive
{loop} args = N1 N2 pad
N1,N2 = loop from N1 to N2 inclusive
pad = all values will be same length, e.g. 050, 051, ..., 100
{world} args = one string for each partition of processors
{universe} args = one or more strings
{uloop} args = N
N = integer size of loop
{uloop} args = N pad
N = integer size of loop
pad = all values will be same length, e.g. 001, 002, ..., 100
{string} arg = one string
{equal} or {atom} args = one formula containing numbers, thermo keywords, math operations, group functions, atom values and vectors, compute/fix/variable references
numbers = 0.0, 100, -5.4, 2.8e-4, etc
constants = PI
thermo keywords = vol, ke, press, etc from "thermo_style"_thermo_style.html
math operators = (), -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
math functions = sqrt(x), exp(x), ln(x), log(x),
sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(y,x),
random(x,y,z), normal(x,y,z), ceil(x), floor(x), round(x)
ramp(x,y), stagger(x,y), logfreq(x,y,z), vdisplace(x,y), swiggle(x,y,z), cwiggle(x,y,z)
group functions = count(group), mass(group), charge(group),
xcm(group,dim), vcm(group,dim), fcm(group,dim),
bound(group,xmin), gyration(group), ke(group),
angmom(group,dim), torque(group,dim),
inertia(group,dimdim), omega(group,dim)
region functions = count(group,region), mass(group,region), charge(group,region),
xcm(group,dim,region), vcm(group,dim,region), fcm(group,dim,region),
bound(group,xmin,region), gyration(group,region), ke(group,reigon),
angmom(group,dim,region), torque(group,dim,region),
inertia(group,dimdim,region), omega(group,dim,region)
special functions = sum(x), min(x), max(x), ave(x), trap(x), gmask(x), rmask(x), grmask(x,y)
atom value = mass\[i\], type\[i\], x\[i\], y\[i\], z\[i\], vx\[i\], vy\[i\], vz\[i\], fx\[i\], fy\[i\], fz\[i\]
atom vector = mass, type, x, y, z, vx, vy, vz, fx, fy, fz
compute references = c_ID, c_ID\[i\], c_ID\[i\]\[j\]
fix references = f_ID, f_ID\[i\], f_ID\[i\]\[j\]
variable references = v_name, v_name\[i\] :pre
:ule
[Examples:]
variable x index run1 run2 run3 run4 run5 run6 run7 run8
variable LoopVar loop $n
variable beta equal temp/3.0
variable b1 equal x\[234\]+0.5*vol
variable b1 equal "x\[234\] + 0.5*vol"
variable b equal xcm(mol1,x)/2.0
variable b equal c_myTemp
variable b atom x*y/vol
variable foo string myfile
variable temp world 300.0 310.0 320.0 $\{Tfinal\}
variable x universe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
variable x uloop 15 pad
variable x delete :pre
[Description:]
This command assigns one or more strings to a variable name for
evaluation later in the input script or during a simulation.
Variables can be used in several ways in LAMMPS. A variable can be
referenced elsewhere in an input script to become part of a new input
command. For variable styles that store multiple strings, the
"next"_next.html command can be used to increment which string is
assigned to the variable. Variables of style {equal} store a formula
which when evaluated produces a single numeric value which can be
output either directly (see the "print"_print.html, "fix
print"_fix_print.html, and "run every"_run.html commands) or as part
of thermodynamic output (see the "thermo_style"_thermo_style.html
command), or used as input to an averaging fix (see the "fix
ave/time"_fix_ave_time.html command). Variables of style {atom} store
a formula which when evaluated produces one numeric value per atom
which can be output to a dump file (see the "dump custom"_dump.html
command) or used as input to an averaging fix (see the "fix
ave/spatial"_fix_ave_spatial.html and "fix ave/atom"_fix_ave_atom.html
commands).
In the discussion that follows, the "name" of the variable is the
arbitrary string that is the 1st argument in the variable command.
This name can only contain alphanumeric characters and underscores.
The "string" is one or more of the subsequent arguments. The "string"
can be simple text as in the 1st example above, it can contain other
variables as in the 2nd example, or it can be a formula as in the 3rd
example. The "value" is the numeric quantity resulting from
evaluation of the string. Note that the same string can generate
different values when it is evaluated at different times during a
simulation.
IMPORTANT NOTE: When the input script line that defines a variable of
style {equal} or {atom} that contain a formula is encountered, the
formula is NOT immediately evaluated and the result stored. See the
discussion below about "Immediate Evaluation of Variables" if you want
to do this.
IMPORTANT NOTE: When a variable command is encountered in the input
script and the variable name has already been specified, the command
is ignored. This means variables can NOT be re-defined in an input
script (with 2 exceptions, read further). This is to allow an input
script to be processed multiple times without resetting the variables;
see the "jump"_jump.html or "include"_include.html commands. It also
-means that using the "command-line switch"_Section_start.html#2_6 -var
-will override a corresponding index variable setting in the input
+means that using the "command-line switch"_Section_start.html#start_6
+-var will override a corresponding index variable setting in the input
script.
There are two exceptions to this rule. First, variables of style
{string} and {equal} and {atom} ARE redefined each time the command is
encountered. This allows these style of variables to be redefined
multiple times in an input script. In a loop, this means the formula
associated with an {equal} or {atom} style variable can change if it
contains a substitution for another variable, e.g. $x.
Second, as described below, if a variable is iterated on to the end of
its list of strings via the "next"_next.html command, it is removed
from the list of active variables, and is thus available to be
re-defined in a subsequent variable command. The {delete} style does
the same thing.
:line
-"This section"_Section_commands.html#3_2 of the manual explains how
+"This section"_Section_commands.html#cmd_2 of the manual explains how
occurrences of a variable name in an input script line are replaced by
the variable's string. The variable name can be referenced as $x if
the name "x" is a single character, or as $\{LoopVar\} if the name
"LoopVar" is one or more characters.
As described below, for variable styles {index}, {loop}, {universe},
and {uloop}, which string is assigned to a variable can be incremented
via the "next"_next.html command. When there are no more strings to
assign, the variable is exhausted and a flag is set that causes the
next "jump"_jump.html command encountered in the input script to be
skipped. This enables the construction of simple loops in the input
script that are iterated over and then exited from.
As explained above, an exhausted variable can be re-used in an input
script. The {delete} style also removes the variable, the same as if
it were exhausted, allowing it to be redefined later in the input
script or when the input script is looped over. This can be useful
when breaking out of a loop via the "if"_if.html and "jump"_jump.html
commands before the variable would become exhausted. For example,
label loop
variable a loop 5
print "A = $a"
if "$a > 2" then "jump in.script break"
next a
jump in.script loop
label break
variable a delete :pre
:line
For the {index} style, one or more strings are specified. Initially,
the 1st string is assigned to the variable. Each time a
"next"_next.html command is used with the variable name, the next
string is assigned. All processors assign the same string to the
variable.
{Index} style variables with a single string value can also be set by
using the command-line switch -var; see "this
-section"_Section_start.html#2_6 for details.
+section"_Section_start.html#start_6 for details.
The {loop} style is identical to the {index} style except that the
strings are the integers from 1 to N inclusive, if only one argument N
is specified. This allows generation of a long list of runs
(e.g. 1000) without having to list N strings in the input script.
Initially, the string "1" is assigned to the variable. Each time a
"next"_next.html command is used with the variable name, the next
string ("2", "3", etc) is assigned. All processors assign the same
string to the variable. The {loop} style can also be specified with
two arguments N1 and N2. In this case the loop runs from N1 to N2
inclusive, and the string N1 is initially assigned to the variable.
For the {world} style, one or more strings are specified. There must
be one string for each processor partition or "world". See "this
-section"_Section_start.html#2_6 of the manual for information on
+section"_Section_start.html#start_6 of the manual for information on
running LAMMPS with multiple partitions via the "-partition"
command-line switch. This variable command assigns one string to each
world. All processors in the world are assigned the same string. The
next command cannot be used with {equal} style variables, since there
is only one value per world. This style of variable is useful when
you wish to run different simulations on different partitions, or when
performing a parallel tempering simulation (see the
"temper"_temper.html command), to assign different temperatures to
different partitions.
For the {universe} style, one or more strings are specified. There
must be at least as many strings as there are processor partitions or
-"worlds". See "this page"_Section_start.html#2_6 for information on
-running LAMMPS with multiple partitions via the "-partition"
+"worlds". See "this page"_Section_start.html#start_6 for information
+on running LAMMPS with multiple partitions via the "-partition"
command-line switch. This variable command initially assigns one
string to each world. When a "next"_next.html command is encountered
using this variable, the first processor partition to encounter it, is
assigned the next available string. This continues until all the
variable strings are consumed. Thus, this command can be used to run
50 simulations on 8 processor partitions. The simulations will be run
one after the other on whatever partition becomes available, until
they are all finished. {Universe} style variables are incremented
using the files "tmp.lammps.variable" and "tmp.lammps.variable.lock"
which you will see in your directory during such a LAMMPS run.
The {uloop} style is identical to the {universe} style except that the
strings are the integers from 1 to N. This allows generation of long
list of runs (e.g. 1000) without having to list N strings in the input
script.
:line
For the {equal} and {atom} styles, a single string is specified which
represents a formula that will be evaluated afresh each time the
variable is used. If you want spaces in the string, enclose it in
double quotes so the parser will treat it as a single argument. For
{equal} style variables the formula computes a scalar quantity, which
becomes the value of the variable whenever it is evaluated. For
{atom} style variables the formula computes one quantity for each
atom whenever it is evaluated.
Note that {equal} and {atom} variables can produce different values at
different stages of the input script or at different times during a
run. For example, if an {equal} variable is used in a "fix
print"_fix_print.html command, different values could be printed each
timestep it was invoked. If you want a variable to be evaluated
immediately, so that the result is stored by the variable instead of
the string, see the section below on "Immediate Evaluation of
Variables".
The next command cannot be used with {equal} or {atom} style
variables, since there is only one string.
The formula for an {equal} or {atom} variable can contain a variety
of quantities. The syntax for each kind of quantity is simple, but
multiple quantities can be nested and combined in various ways to
build up formulas of arbitrary complexity. For example, this is a
valid (though strange) variable formula:
variable x equal "pe + c_MyTemp / vol^(1/3)" :pre
Specifically, an formula can contain numbers, thermo keywords, math
operators, math functions, group functions, region functions, atom
values, atom vectors, compute references, fix references, and
references to other variables.
Number: 0.2, 100, 1.0e20, -15.4, etc
Constant: PI
Thermo keywords: vol, pe, ebond, etc
Math operators: (), -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
Math functions: sqrt(x), exp(x), ln(x), log(x), sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(y,x), random(x,y,z), normal(x,y,z), ceil(x), floor(x), round(x), ramp(x,y), stagger(x,y), logfreq(x,y,z), vdisplace(x,y), swiggle(x,y,z), cwiggle(x,y,z)
Group functions: count(ID), mass(ID), charge(ID), xcm(ID,dim), \
vcm(ID,dim), fcm(ID,dim), bound(ID,dir), \
gyration(ID), ke(ID), angmom(ID,dim), torque(ID,dim), \
inertia(ID,dimdim), omega(ID,dim)
Region functions: count(ID,IDR), mass(ID,IDR), charge(ID,IDR), \
xcm(ID,dim,IDR), vcm(ID,dim,IDR), fcm(ID,dim,IDR), \
bound(ID,dir,IDR), gyration(ID,IDR), ke(ID,IDR), \
angmom(ID,dim,IDR), torque(ID,dim,IDR), \
inertia(ID,dimdim,IDR), omega(ID,dim,IDR)
Special functions: sum(x), min(x), max(x), ave(x), trap(x), gmask(x), rmask(x), grmask(x,y)
Atom values: mass\[i\], type\[i\], x\[i\], y\[i\], z\[i\], \
vx\[i\], vy\[i\], vz\[i\], fx\[i\], fy\[i\], fz\[i\]
Atom vectors: mass, type, x, y, z, vx, vy, vz, fx, fy, fz
Compute references: c_ID, c_ID\[i\], c_ID\[i\]\[j\]
Fix references: f_ID, f_ID\[i\], f_ID\[i\]\[j\]
Other variables: v_name, v_name\[i\] :tb(s=:)
:line
Most of the formula elements produce a scalar value. A few produce a
per-atom vector of values. These are the atom vectors, compute
references that represent a per-atom vector, fix references that
represent a per-atom vector, and variables that are atom-style
variables. Math functions that operate on scalar values produce a
scalar value; math function that operate on per-atom vectors do so
element-by-element and produce a per-atom vector.
A formula for equal-style variables cannot use any formula element
that produces a per-atom vector. A formula for an atom-style variable
can use formula elements that produce either a scalar value or a
per-atom vector. Atom-style variables are evaluated by other commands
that define a "group"_group.html on which they operate, e.g. a
"dump"_dump.html or "compute"_compute.html or "fix"_fix.html command.
When they invoke the atom-style variable, only atoms in the group are
inlcuded in the formula evaluation. The variable evaluates to 0.0 for
atoms not in the group.
The thermo keywords allowed in a formula are those defined by the
"thermo_style custom"_thermo_style.html command. Thermo keywords that
require a "compute"_compute.html to calculate their values such as
"temp" or "press", use computes stored and invoked by the
"thermo_style"_thermo_style.html command. This means that you can
only use those keywords in a variable if the style you are using with
the thermo_style command (and the thermo keywords associated with that
style) also define and use the needed compute. Note that some thermo
keywords use a compute indirectly to calculate their value (e.g. the
enthalpy keyword uses temp, pe, and pressure). If a variable is
evaluated directly in an input script (not during a run), then the
values accessed by the thermo keyword must be current. See the
discussion below about "Variable Accuracy".
:line
Math Operators :h4
Math operators are written in the usual way, where the "x" and "y" in
the examples can themselves be arbitrarily complex formulas, as in the
examples above. In this syntax, "x" and "y" can be scalar values or
per-atom vectors. For example, "ke/natoms" is the division of two
scalars, where "vy+vz" is the element-by-element sum of two per-atom
vectors of y and z velocities.
Operators are evaluated left to right and have the usual C-style
precedence: unary minus and unary logical NOT operator "!" have the
highest precedence, exponentiation "^" is next; multiplication and
division are next; addition and subtraction are next; the 4 relational
operators "<", "<=", ">", and ">=" are next; the two remaining
relational operators "==" and "!=" are next; then the logical AND
operator "&&"; and finally the logical OR operator "||" has the lowest
precedence. Parenthesis can be used to group one or more portions of
a formula and/or enforce a different order of evaluation than what
would occur with the default precedence.
The 6 relational operators return either a 1.0 or 0.0 depending on
whether the relationship between x and y is TRUE or FALSE. For
example the expression x<10.0 in an atom-style variable formula will
return 1.0 for all atoms whose x-coordinate is less than 10.0, and 0.0
for the others. The logical AND operator will return 1.0 if both its
arguments are non-zero, else it returns 0.0. The logical OR operator
will return 1.0 if either of its arguments is non-zero, else it
returns 0.0. The logical NOT operator returns 1.0 if its argument is
0.0, else it returns 0.0.
These relational and logical operators can be used as a masking or
selection operation in a formula. For example, the number of atoms
whose properties satifsy one or more criteria could be calculated by
taking the returned per-atom vector of ones and zeroes and passing it
to the "compute reduce"_compute_reduce.html command.
:line
Math Functions :h4
Math functions are specified as keywords followed by one or more
parenthesized arguments "x", "y", "z", each of which can themselves be
arbitrarily complex formulas. In this syntax, the arguments can
represent scalar values or per-atom vectors. In the latter case, the
math operation is performed on each element of the vector. For
example, "sqrt(natoms)" is the sqrt() of a scalar, where "sqrt(y*z)"
yields a per-atom vector with each element being the sqrt() of the
product of one atom's y and z coordinates.
Most of the math functions perform obvious operations. The ln() is
the natural log; log() is the base 10 log.
The random(x,y,z) function takes 3 arguments: x = lo, y = hi, and z =
seed. It generates a uniform random number between lo and hi. The
normal(x,y,z) function also takes 3 arguments: x = mu, y = sigma, and
z = seed. It generates a Gaussian variate centered on mu with
variance sigma^2. In both cases the seed is used the first time the
internal random number generator is invoked, to initialize it. For
equal-style variables, every processor uses the same seed so that they
each generate the same sequence of random numbers. For atom-style
variables, a unique seed is created for each processor, based on the
specified seed. This effectively generates a different random number
for each atom being looped over in the atom-style variable.
IMPORTANT NOTE: Internally, there is just one random number generator
for all equal-style variables and one for all atom-style variables.
If you define multiple variables (of each style) which use the
random() or normal() math functions, then the internal random number
generators will only be initialized once, which means only one of the
specified seeds will determine the sequence of generated random
numbers.
The ceil(), floor(), and round() functions are those in the C math
library. Ceil() is the smallest integer not less than its argument.
Floor() if the largest integer not greater than its argument. Round()
is the nearest integer to its argument.
The ramp(x,y) function uses the current timestep to generate a value
linearly intepolated between the specified x,y values over the course
of a run, according to this formula:
value = x + (y-x) * (timestep-startstep) / (stopstep-startstep) :pre
The run begins on startstep and ends on stopstep. Startstep and
stopstep can span multiple runs, using the {start} and {stop} keywords
of the "run"_run.html command. See the "run"_run.html command for
details of how to do this.
The stagger(x,y) function uses the current timestep to generate a new
timestep. X,y > 0 and x > y is required. The generated timesteps
increase in a staggered fashion, as the sequence
x,x+y,2x,2x+y,3x,3x+y,etc. For any current timestep, the next
timestep in the sequence is returned. Thus if stagger(1000,100) is
used in a variable by the "dump_modify every"_dump_modify.html
command, it will generate the sequence of output timesteps:
100,1000,1100,2000,2100,3000,etc :pre
The logfreq(x,y,z) function uses the current timestep to generate a
new timestep. X,y,z > 0 and y < z is required. The generated
timesteps increase in a logarithmic fashion, as the sequence
x,2x,3x,...y*x,z*x,2*z*x,3*z*x,...y*z*x,z*z*x,2*z*x*x,etc. For any
current timestep, the next timestep in the sequence is returned. Thus
if logfreq(100,4,10) is used in a variable by the "dump_modify
every"_dump_modify.html command, it will generate the sequence of
output timesteps:
100,200,300,400,1000,2000,3000,4000,10000,20000,etc :pre
The vdisplace(x,y) function takes 2 arguments: x = coord0 and y =
velocity, and uses the elapsed time to change the coordinate value by
a linear displacement due to the applied velocity over the course of a
run, according to this formula:
value = coord0 + velocity*(timestep-startstep)*dt :pre
where dt = the timestep size.
The run begins on startstep. Startstep can span multiple runs, using
the {start} keyword of the "run"_run.html command. See the
"run"_run.html command for details of how to do this. Note that the
"thermo_style"_thermo_style.html keyword elaplong =
timestep-startstep.
The swiggle(x,y,z) and cwiggle(x,y,z) functions each take 3 arguments:
x = coord0, y = amplitude, z = period. They use the elapsed time to
oscillate the coordinate value by a sin() or cos() function over the
course of a run, according to one of these formulas, where
omega = 2 PI / period:
value = coord0 + Amplitude * sin(omega*(timestep-startstep)*dt)
value = coord0 + Amplitude * (1 - cos(omega*(timestep-startstep)*dt)) :pre
where dt = the timestep size.
The run begins on startstep. Startstep can span multiple runs, using
the {start} keyword of the "run"_run.html command. See the
"run"_run.html command for details of how to do this. Note that the
"thermo_style"_thermo_style.html keyword elaplong =
timestep-startstep.
:line
Group and Region Functions :h4
Group functions are specified as keywords followed by one or two
parenthesized arguments. The first argument is the group-ID. The
{dim} argument, if it exists, is {x} or {y} or {z}. The {dir}
argument, if it exists, is {xmin}, {xmax}, {ymin}, {ymax}, {zmin}, or
{zmax}. The {dimdim} argument, if it exists, is {xx} or {yy} or {zz}
or {xy} or {yz} or {xz}.
The group function count() is the number of atoms in the group. The
group functions mass() and charge() are the total mass and charge of
the group. Xcm() and vcm() return components of the position and
velocity of the center of mass of the group. Fcm() returns a
component of the total force on the group of atoms. Bound() returns
the min/max of a particular coordinate for all atoms in the group.
Gyration() computes the radius-of-gyration of the group of atoms. See
the "compute gyration"_compute_gyration.html command for a definition
of the formula. Angmom() returns components of the angular momentum
of the group of atoms around its center of mass. Torque() returns
components of the torque on the group of atoms around its center of
mass, based on current forces on the atoms. Inertia() returns one of
6 components of the inertia tensor of the group of atoms around its
center of mass. Omega() returns components of the angular velocity of
the group of atoms around its center of mass.
Region functions are specified exactly the same way as group functions
except they take an extra argument which is the region ID. The
function is computed for all atoms that are in both the group and the
region. If the group is "all", then the only criteria for atom
inclusion is that it be in the region.
:line
Special Functions :h4
Special functions take specific kinds of arguments, meaning their
arguments cannot be formulas themselves.
The sum(x), min(x), max(x), ave(x), and trap(x) functions each take 1
argument which is of the form "c_ID" or "c_ID\[N\]" or "f_ID" or
"f_ID\[N\]". The first two are computes and the second two are fixes;
the ID in the reference should be replaced by the ID of a compute or
fix defined elsewhere in the input script. The compute or fix must
produce either a global vector or array. If it produces a global
vector, then the notation without "\[N\]" should be used. If it
produces a global array, then the notation with "\[N\]" should be
used, when N is an integer, to specify which column of the global
array is being referenced.
These functions operate on the global vector of inputs and reduce it
to a single scalar value. This is analagous to the operation of the
"compute reduce"_compute_reduce.html command, which invokes the same
functions on per-atom and local vectors.
The sum() function calculates the sum of all the vector elements. The
min() and max() functions find the minimum and maximum element
respectively. The ave() function is the same as sum() except that it
divides the result by the length of the vector. The trap() function
is the same as sum() except the first and last elements are multiplied
by a weighting factor of 1/2 when performing the sum. This
effectively implements an integratiion via the trapezoidal rule on the
global vector of data. I.e. consider a set of points, equally spaced
by 1 in their x coordinate: (1,V1), (2,V2), ..., (N,VN), where the Vi
are the values in the global vector of length N. The integral from 1
to N of these points is trap(). When appropriately normalized by the
timestep size, this function is useful for calculating integrals of
time-series data, like that generated by the "fix
ave/correlate"_fix_ave_correlate.html command.
The gmask(x) function takes 1 argument which is a group ID. It
can only be used in atom-style variables. It returns a 1 for
atoms that are in the group, and a 0 for atoms that are not.
The rmask(x) function takes 1 argument which is a region ID. It can
only be used in atom-style variables. It returns a 1 for atoms that
are in the geometric region, and a 0 for atoms that are not.
The grmask(x,y) function takes 2 arguments. The first is a group ID,
and the second is a region ID. It can only be used in atom-style
variables. It returns a 1 for atoms that are in both the group and
region, and a 0 for atoms that are not in both.
:line
Atom Values and Vectors :h4
Atom values take a single integer argument I from 1 to N, where I is
the an atom-ID, e.g. x\[243\], which means use the x coordinate of the
atom with ID = 243.
Atom vectors generate one value per atom, so that a reference like
"vx" means the x-component of each atom's velocity will be used when
evaluating the variable. Note that other atom attributes can be used
as inputs to a variable by using the "compute
property/atom"_compute_property_atom.html command and then specifying
a quantity from that compute.
:line
Compute References :h4
Compute references access quantities calculated by a
"compute"_compute.html. The ID in the reference should be replaced by
the ID of a compute defined elsewhere in the input script. As
discussed in the doc page for the "compute"_compute.html command,
computes can produce global, per-atom, or local values. Only global
and per-atom values can be used in a variable. Computes can also
produce a scalar, vector, or array. An equal-style variable can only
use scalar values, which means a global scalar, or an element of a
global or per-atom vector or array. Atom-style variables can use the
same scalar values. They can also use per-atom vector values. A
vector value can be a per-atom vector itself, or a column of an
per-atom array. See the doc pages for individual computes to see what
kind of values they produce.
Examples of different kinds of compute references are as follows.
There is no ambiguity as to what a reference means, since computes
only produce global or per-atom quantities, never both.
c_ID: global scalar, or per-atom vector
c_ID\[I\]: Ith element of global vector, or atom I's value in per-atom vector, or Ith column from per-atom array
c_ID\[I\]\[J\]: I,J element of global array, or atom I's Jth value in per-atom array :tb(s=:)
If a variable containing a compute is evaluated
directly in an input script (not during a run), then the values
accessed by the compute must be current. See the discussion below
about "Variable Accuracy".
:line
Fix References :h4
Fix references access quantities calculated by a "fix"_compute.html.
The ID in the reference should be replaced by the ID of a fix defined
elsewhere in the input script. As discussed in the doc page for the
"fix"_fix.html command, fixes can produce global, per-atom, or local
values. Only global and per-atom values can be used in a variable.
Fixes can also produce a scalar, vector, or array. An equal-style
variable can only use scalar values, which means a global scalar, or
an element of a global or per-atom vector or array. Atom-style
variables can use the same scalar values. They can also use per-atom
vector values. A vector value can be a per-atom vector itself, or a
column of an per-atom array. See the doc pages for individual fixes
to see what kind of values they produce.
The different kinds of fix references are exactly the same as the
compute references listed in the above table, where "c_" is replaced
by "f_". Again, there is no ambiguity as to what a reference means,
since fixes only produce global or per-atom quantities, never both.
f_ID: global scalar, or per-atom vector
f_ID\[I\]: Ith element of global vector, or atom I's value in per-atom vector, or Ith column from per-atom array
f_ID\[I\]\[J\]: I,J element of global array, or atom I's Jth value in per-atom array :tb(s=:)
If a variable containing a fix is evaluated directly in an input
script (not during a run), then the values accessed by the fix should
be current. See the discussion below about "Variable Accuracy".
Note that some fixes only generate quantities on certain timesteps.
If a variable attempts to access the fix on non-allowed timesteps, an
error is generated. For example, the "fix ave/time"_fix_ave_time.html
command may only generate averaged quantities every 100 steps. See
the doc pages for individual fix commands for details.
:line
Variable References :h4
Variable references access quantities calulated by other variables,
which will cause those variables to be evaluated. The name in the
reference should be replaced by the name of a variable defined
elsewhere in the input script. As discussed on this doc page,
atom-style variables generate a per-atom vector of values; all other
variable styles generate a global scalar value. An equal-style
variable can reference a global scalar value produced by another
variable, but not a per-atom vector produced by an atom-style
variable. Atom-style variables can reference either global scalar or
per-atom vector values produced by kind of variable.
Examples of different kinds of variable references are as follows.
There is no ambiguity as to what a reference means, since variables
produce only a global scalar or a per-atom vectors, never both.
v_name: scalar, or per-atom vector
v_name\[I\]: atom I's value in per-atom vector :tb(s=:)
IMPORTANT NOTE: If you define variables in circular manner like this:
variable a equal v_b
variable b equal v_a
print $a :pre
then LAMMPS may run for a while when the print statement is invoked!
:line
[Immediate Evaluation of Variables:]
There is a difference between referencing a variable with a leading $
sign (e.g. $x or $\{abc\}) versus with a leading "v_" (e.g. v_x or
v_abc). The former can be used in any command, including a variable
command, to force the immediate evaluation of the referenced variable
and the substitution of its value into the command. The latter is a
required kind of argument to some commands (e.g. the "fix
ave/spatial"_fix_ave_spatial.html or "dump custom"_dump.html or
"thermo_style"_thermo_style.html commands) if you wish it to evaluate
a variable periodically during a run. It can also be used in a
variable formula if you wish to reference a second variable. The
second variable will be evaluated whenever the first variable is
evaluated.
As an example, suppose you use this command in your input script to
define the variable "v" as
variable v equal vol :pre
before a run where the simulation box size changes. You might think
this will assign the initial volume to the variable "v". That is not
the case. Rather it assigns a formula which evaluates the volume
(using the thermo_style keyword "vol") to the variable "v". If you
use the variable "v" in some other command like "fix
ave/time"_fix_ave_time.html then the current volume of the box will be
evaluated continuously during the run.
If you want to store the initial volume of the system, you can do it
this way:
variable v equal vol
variable v0 equal $v :pre
The second command will force "v" to be evaluated (yielding the
initial volume) and assign that value to the variable "v0". Thus the
command
thermo_style custom step v_v v_v0 :pre
would print out both the current and initial volume periodically
during the run.
Note that it is a mistake to enclose a variable formula in double
quotes if it contains variables preceeded by $ signs. For example,
variable vratio equal "$\{vfinal\}/$\{v0\}" :pre
This is because the quotes prevent variable substitution (see "this
-section"_Section_commands.html#3_2 on parsing input script commands),
-and thus an error will occur when the formula for "vratio" is
-evaluated later.
+section"_Section_commands.html#cmd_2 on parsing input script
+commands), and thus an error will occur when the formula for "vratio"
+is evaluated later.
:line
[Variable Accuracy:]
Obviously, LAMMPS attempts to evaluate variables containing formulas
({equal} and {atom} style variables) accurately whenever the
evaluation is performed. Depending on what is included in the
formula, this may require invoking a "compute"_compute.html, either
directly or indirectly via a thermo keyword, or accessing a value
previously calculated by a compute, or accessing a value calculated
and stored by a "fix"_fix.html. If the compute is one that calculates
the pressure or energy of the system, then these quantities need to be
tallied during the evaluation of the interatomic potentials (pair,
bond, etc) on timesteps that the variable will need the values.
LAMMPS keeps track of all of this during a "run"_run.html or "energy
minimization"_minimize.html. An error will be generated if you
attempt to evaluate a variable on timesteps when it cannot produce
accurate values. For example, if a "thermo_style
custom"_thermo_style.html command prints a variable which accesses
values stored by a "fix ave/time"_fix_ave_time.html command and the
timesteps on which thermo output is generated are not multiples of the
averaging frequency used in the fix command, then an error will occur.
An input script can also request variables be evaluated before or
after or in between runs, e.g. by including them in a
"print"_print.html command. In this case, if a compute is needed to
evaluate a variable (either directly or indirectly), LAMMPS will not
invoke the compute, but it will use a value previously calculated by
the compute, and can do this only if it is current. Fixes will always
provide a quantity needed by a variable, but the quantity may or may
not be current. This leads to one of three kinds of behavior:
(1) The variable may be evaluated accurately. If it contains
references to a compute or fix, and these values were calculated on
the last timestep of a preceeding run, then they will be accessed and
used by the variable and the result will be accurate.
(2) LAMMPS may not be able to evaluate the variable and generate an
error. For example, if the variable requires a quantity from a
"compute"_compute.html that is not current, LAMMPS will generate an
error. This means, for example, that such a variable cannot be
evaluated before the first run has occurred. Likewise, in between
runs, such a variable cannot be accessed unless it was evaluated on
the last timestep of the preceding run, e.g. by thermodynamic output.
One way to get around this problem is to perform a 0-timestep run
before using the variable. For example, these commands
variable t equal temp
print "Initial temperature = $t"
run 1000 :pre
will generate an error if the run is the first run specified in the
input script, because generating a value for the "t" variable requires
a compute for calculating the temperature to be invoked.
However, this sequence of commands would be fine:
run 0
variable t equal temp
print "Initial temperature = $t"
run 1000 :pre
The 0-timestep run initializes and invokes various computes, including
the one for temperature, so that the value it stores is current and
can be accessed by the variable "t" after the run has completed. Note
that a 0-timestep run does not alter the state of the system, so it
does not change the input state for the 1000-timestep run that
follows. Also note that the 0-timestep run must actually use and
invoke the compute in question (e.g. via "thermo"_thermo_style.html or
"dump"_dump.html output) in order for it to enable the compute to be
used in a variable after the run. Thus if you are trying to print a
variable that uses a compute you have defined, you could insure it was
invoked on the last timestep of the preceding run by including it in
thermodynamic output.
Unlike computes, "fixes"_fix.html will never generate an error if
their values are accessed by a variable in between runs. They always
return some value to the variable. However, the value may not be what
you expect if the fix has not yet calculated the quantity of interest
or it is not current. For example, the "fix indent"_fix_indent.html
command stores the force on the indenter. But this is not computed
until a run is performed. Thus if a variable attempts to print this
value before the first run, zeroes will be output. Again, performing
a 0-timestep run before printing the variable has the desired effect.
(3) The variable may be evaluated incorrectly. And LAMMPS may have
no way to detect this has occurred. Consider the following sequence
of commands:
pair_coeff 1 1 1.0 1.0
run 1000
pair_coeff 1 1 1.5 1.0
variable e equal pe
print "Final potential energy = $e" :pre
The first run is performed using one setting for the pairwise
potential defined by the "pair_style"_pair_style.html and
"pair_coeff"_pair_coeff.html commands. The potential energy is
evaluated on the final timestep and stored by the "compute
pe"_compute_pe.html compute (this is done by the
"thermo_style"_thermo_style.html command). Then a pair coefficient is
changed, altering the potential energy of the system. When the
potential energy is printed via the "e" variable, LAMMPS will use the
potential energy value stored by the "compute pe"_compute_pe.html
compute, thinking it is current. There are many other commands which
could alter the state of the system between runs, causing a variable
to evaluate incorrectly.
The solution to this issue is the same as for case (2) above, namely
perform a 0-timestep run before the variable is evaluated to insure
the system is up-to-date. For example, this sequence of commands
would print a potential energy that reflected the changed pairwise
coefficient:
pair_coeff 1 1 1.0 1.0
run 1000
pair_coeff 1 1 1.5 1.0
run 0
variable e equal pe
print "Final potential energy = $e" :pre
:line
[Restrictions:]
Indexing any formula element by global atom ID, such as an atom value,
requires the atom style to use a global mapping in order to look up
the vector indices. By default, only atom styles with molecular
information create global maps. The "atom_modify
map"_atom_modify.html command can override the default.
All {universe}- and {uloop}-style variables defined in an input script
must have the same number of values.
[Related commands:]
"next"_next.html, "jump"_jump.html, "include"_include.html,
"temper"_temper.html, "fix print"_fix_print.html, "print"_print.html
[Default:] none
diff --git a/src/DSMC/Install.sh b/src/DSMC/Install.sh
deleted file mode 100644
index 60e34982c..000000000
--- a/src/DSMC/Install.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-# Install/unInstall package files in LAMMPS
-
-if (test $1 = 1) then
-
- cp pair_dsmc.cpp ..
-
- cp pair_dsmc.h ..
-
-elif (test $1 = 0) then
-
- rm -f ../pair_dsmc.cpp
-
- rm -f ../pair_dsmc.h
-
-fi
diff --git a/src/MC/Install.sh b/src/MC/Install.sh
new file mode 100644
index 000000000..845b5b1c2
--- /dev/null
+++ b/src/MC/Install.sh
@@ -0,0 +1,31 @@
+# Install/unInstall package files in LAMMPS
+
+if (test $1 = 1) then
+
+ cp fix_bond_break.cpp ..
+ cp fix_bond_create.cpp ..
+ cp fix_bond_swap.cpp ..
+ cp fix_gcmc.cpp ..
+ cp pair_dsmc.cpp ..
+
+ cp fix_bond_break.h ..
+ cp fix_bond_create.h ..
+ cp fix_bond_swap.h ..
+ cp fix_gcmc.h ..
+ cp pair_dsmc.h ..
+
+elif (test $1 = 0) then
+
+ rm -f ../fix_bond_break.cpp
+ rm -f ../fix_bond_create.cpp
+ rm -f ../fix_bond_swap.cpp
+ rm -f ../fix_gcmc.cpp
+ rm -f ../pair_dsmc.cpp
+
+ rm -f ../fix_bond_break.h
+ rm -f ../fix_bond_create.h
+ rm -f ../fix_bond_swap.h
+ rm -f ../fix_gcmc.h
+ rm -f ../pair_dsmc.h
+
+fi
diff --git a/src/MOLECULE/fix_bond_break.cpp b/src/MC/fix_bond_break.cpp
similarity index 100%
rename from src/MOLECULE/fix_bond_break.cpp
rename to src/MC/fix_bond_break.cpp
diff --git a/src/MOLECULE/fix_bond_break.h b/src/MC/fix_bond_break.h
similarity index 100%
copy from src/MOLECULE/fix_bond_break.h
copy to src/MC/fix_bond_break.h
diff --git a/src/MOLECULE/fix_bond_create.cpp b/src/MC/fix_bond_create.cpp
similarity index 100%
rename from src/MOLECULE/fix_bond_create.cpp
rename to src/MC/fix_bond_create.cpp
diff --git a/src/MOLECULE/fix_bond_create.h b/src/MC/fix_bond_create.h
similarity index 100%
rename from src/MOLECULE/fix_bond_create.h
rename to src/MC/fix_bond_create.h
diff --git a/src/MOLECULE/fix_bond_swap.cpp b/src/MC/fix_bond_swap.cpp
similarity index 100%
rename from src/MOLECULE/fix_bond_swap.cpp
rename to src/MC/fix_bond_swap.cpp
diff --git a/src/MOLECULE/fix_bond_swap.h b/src/MC/fix_bond_swap.h
similarity index 100%
rename from src/MOLECULE/fix_bond_swap.h
rename to src/MC/fix_bond_swap.h
diff --git a/src/MC/fix_gcmc.cpp b/src/MC/fix_gcmc.cpp
new file mode 100644
index 000000000..9f3dfc5e8
--- /dev/null
+++ b/src/MC/fix_gcmc.cpp
@@ -0,0 +1,562 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ http://lammps.sandia.gov, Sandia National Laboratories
+ Steve Plimpton, sjplimp@sandia.gov
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+ Contributing author: Paul Crozier (SNL)
+------------------------------------------------------------------------- */
+
+#include "math.h"
+#include "stdlib.h"
+#include "string.h"
+#include "fix_gcmc.h"
+#include "atom.h"
+#include "atom_vec.h"
+#include "update.h"
+#include "modify.h"
+#include "fix.h"
+#include "comm.h"
+#include "group.h"
+#include "domain.h"
+#include "random_park.h"
+#include "force.h"
+#include "pair.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+
+/* ---------------------------------------------------------------------- */
+
+FixGCMC::FixGCMC(LAMMPS *lmp, int narg, char **arg) :
+ Fix(lmp, narg, arg)
+{
+ if (narg < 11) error->all("Illegal fix GCMC command");
+
+ vector_flag = 1;
+ size_vector = 6;
+ global_freq = 1;
+ extvector = 0;
+ restart_global = 1;
+ time_depend = 1;
+
+ // required args
+
+ nevery = atoi(arg[3]);
+ nexchanges = atoi(arg[4]);
+ nmcmoves = atoi(arg[5]);
+ ntype = atoi(arg[6]);
+ seed = atoi(arg[7]);
+ reservoir_temperature = atof(arg[8]);
+ chemical_potential = atof(arg[9]);
+ displace = atof(arg[10]);
+
+ if (ntype <= 0 || ntype > atom->ntypes)
+ error->all("Invalid atom type in fix GCMC command");
+ if (nexchanges < 0) error->all("Illegal fix GCMC command");
+ if (nmcmoves < 0) error->all("Illegal fix GCMC command");
+ if (seed <= 0) error->all("Illegal fix GCMC command");
+ if (reservoir_temperature < 0.0) error->all("Illegal fix GCMC command");
+ if (displace < 0.0) error->all("Illegal fix GCMC command");
+
+ // compute beta, lambda, sigma, and the zz factor
+
+ beta = 1.0/(force->boltz*reservoir_temperature);
+ double PI = 4.0*atan(1.0);
+ double gas_mass = atom->mass[ntype];
+ double lambda = sqrt(force->hplanck*force->hplanck/
+ (2.0*PI*gas_mass*force->mvv2e*
+ force->boltz*reservoir_temperature));
+ sigma = sqrt(force->boltz*reservoir_temperature/gas_mass/force->mvv2e);
+ zz = exp(beta*chemical_potential)/(pow(lambda,3));
+
+ // set defaults
+
+ molflag = 0;
+
+ // read options from end of input line
+
+ options(narg-11,&arg[11]);
+
+ // random number generator, same for all procs
+
+ random_equal = new RanPark(lmp,seed);
+
+ // random number generator, not the same for all procs
+
+ random_unequal = new RanPark(lmp,seed);
+
+ // compute the number of MC cycles that occur nevery timesteps
+
+ ncycles = nexchanges + nmcmoves;
+
+ // set up reneighboring
+
+ force_reneighbor = 1;
+ next_reneighbor = update->ntimestep + 1;
+
+ // zero out counters
+
+ nmove_attempts = 0.0;
+ nmove_successes = 0.0;
+ ndel_attempts = 0.0;
+ ndel_successes = 0.0;
+ ninsert_attempts = 0.0;
+ ninsert_successes = 0.0;
+
+ nmax = 0;
+ local_gas_list = NULL;
+}
+
+/* ---------------------------------------------------------------------- */
+
+FixGCMC::~FixGCMC()
+{
+ delete random_equal;
+ delete random_unequal;
+ memory->sfree(local_gas_list);
+}
+
+/* ---------------------------------------------------------------------- */
+
+int FixGCMC::setmask()
+{
+ int mask = 0;
+ mask |= PRE_EXCHANGE;
+ return mask;
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixGCMC::init()
+{
+ // check that no deletable atoms are in atom->firstgroup
+ // deleting such an atom would not leave firstgroup atoms first
+
+ int *type = atom->type;
+
+ if (atom->firstgroup >= 0) {
+ int *mask = atom->mask;
+ int nlocal = atom->nlocal;
+ int firstgroupbit = group->bitmask[atom->firstgroup];
+
+ int flag = 0;
+ for (int i = 0; i < nlocal; i++)
+ if ((type[i] == ntype) && (mask[i] && firstgroupbit)) flag = 1;
+
+ int flagall;
+ MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world);
+
+ if (flagall)
+ error->all("Cannot do GCMC on atoms in atom_modify first group");
+ }
+
+ // if molflag not set, warn if any deletable atom has a mol ID
+
+ if (molflag == 0 && atom->molecule_flag) {
+ int *molecule = atom->molecule;
+ int *mask = atom->mask;
+ int nlocal = atom->nlocal;
+ int flag = 0;
+ for (int i = 0; i < nlocal; i++)
+ if (type[i] == ntype)
+ if (molecule[i]) flag = 1;
+ int flagall;
+ MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world);
+ if (flagall && comm->me == 0)
+ error->warning("Fix GCMC may delete atom with non-zero molecule ID");
+ }
+
+ if (molflag && atom->molecule_flag == 0)
+ error->all("Fix GCMC molecule command requires atom attribute molecule");
+
+ if (molflag != 0) error->all("Fix GCMC molecule feature does not yet work");
+
+ if (force->pair->single_enable == 0)
+ error->all("Fix GCMC incompatible with given pair_style");
+}
+
+/* ----------------------------------------------------------------------
+ attempt particle insertions and deletions
+ done before exchange, borders, reneighbor
+ so that ghost atoms and neighbor lists will be correct
+------------------------------------------------------------------------- */
+
+void FixGCMC::pre_exchange()
+{
+ // just return if should not be called on this timestep
+
+ if (next_reneighbor != update->ntimestep) return;
+
+ if (domain->triclinic == 0) {
+ xlo = domain->boxlo[0];
+ xhi = domain->boxhi[0];
+ ylo = domain->boxlo[1];
+ yhi = domain->boxhi[1];
+ zlo = domain->boxlo[2];
+ zhi = domain->boxhi[2];
+ sublo = domain->sublo;
+ subhi = domain->subhi;
+ } else {
+ xlo = domain->boxlo_bound[0];
+ xhi = domain->boxhi_bound[0];
+ ylo = domain->boxlo_bound[1];
+ yhi = domain->boxhi_bound[1];
+ zlo = domain->boxlo_bound[2];
+ zhi = domain->boxhi_bound[2];
+ sublo = domain->sublo_lamda;
+ subhi = domain->subhi_lamda;
+ }
+
+ volume = domain->xprd * domain->yprd * domain->zprd;
+
+ // grow local_gas_list array if necessary
+
+ if (atom->nlocal > nmax) {
+ memory->sfree(local_gas_list);
+ nmax = atom->nmax;
+ local_gas_list = (int *) memory->smalloc(nmax*sizeof(int),
+ "GCMC:local_gas_list");
+ }
+
+ int *type = atom->type;
+ ngas_local = 0;
+ for (int i = 0; i < atom->nlocal; i++)
+ if (type[i] == ntype)
+ local_gas_list[ngas_local++] = i;
+
+ MPI_Allreduce(&ngas_local,&ngas,1,MPI_INT,MPI_SUM,world);
+ MPI_Scan(&ngas_local,&ngas_before,1,MPI_INT,MPI_SUM,world);
+ ngas_before -= ngas_local;
+
+ // perform ncycles MC cycles
+
+ for (int i = 0; i < ncycles; i++) {
+ int random_int_fraction =
+ static_cast<int>(random_equal->uniform()*ncycles) + 1;
+ if (random_int_fraction <= nmcmoves) {
+ attempt_move();
+ } else {
+ if (random_equal->uniform() < 0.5) attempt_deletion();
+ else attempt_insertion();
+ }
+ }
+
+ next_reneighbor = update->ntimestep + nevery;
+}
+
+/* ----------------------------------------------------------------------
+ choose particle randomly across all procs and attempt displacement
+------------------------------------------------------------------------- */
+
+void FixGCMC::attempt_move()
+{
+ int i,iwhichglobal,iwhichlocal;
+ double rx,ry,rz;
+ double coord[3];
+ double **x = atom->x;
+
+ nmove_attempts += 1.0;
+
+ int success = 0;
+ iwhichglobal = static_cast<int> (ngas*random_equal->uniform());
+ if ((iwhichglobal >= ngas_before) &&
+ (iwhichglobal < ngas_before + ngas_local)) {
+ iwhichlocal = iwhichglobal - ngas_before;
+ i = local_gas_list[iwhichlocal];
+ double energy_before = energy(i,x[i]);
+ double rsq = 1.1;
+ while (rsq > 1.0) {
+ rx = 2*random_unequal->uniform() - 1.0;
+ ry = 2*random_unequal->uniform() - 1.0;
+ if (domain->dimension == 3) rz = 2*random_unequal->uniform() - 1.0;
+ else rz = 0.0;
+ rsq = rx*rx + ry*ry + rz*rz;
+ }
+ coord[0] = x[i][0] + displace*rx;
+ coord[1] = x[i][1] + displace*ry;
+ coord[2] = x[i][2] + displace*rz;
+ double energy_after = energy(i,coord);
+ if (random_unequal->uniform() < exp(-beta*(energy_after - energy_before))) {
+ x[i][0] = coord[0];
+ x[i][1] = coord[1];
+ x[i][2] = coord[2];
+ success = 1;
+ }
+ }
+
+ int success_all = 0;
+ MPI_Allreduce(&success,&success_all,1,MPI_INT,MPI_MAX,world);
+
+ if (success_all) {
+ nmove_successes += 1.0;
+ comm->borders();
+ }
+
+}
+
+/* ----------------------------------------------------------------------
+ attempt particle deletion
+------------------------------------------------------------------------- */
+
+void FixGCMC::attempt_deletion()
+{
+ ndel_attempts += 1.0;
+
+ if (ngas == 0) return;
+
+ int i,iwhichglobal,iwhichlocal;
+ AtomVec *avec = atom->avec;
+
+ // choose particle randomly across all procs and delete it
+ // keep ngas, ngas_local, ngas_before, and local_gas_list current
+ // after each deletion
+
+ int success = 0;
+ iwhichglobal = static_cast<int> (ngas*random_equal->uniform());
+ if ((iwhichglobal >= ngas_before) &&
+ (iwhichglobal < ngas_before + ngas_local)) {
+ iwhichlocal = iwhichglobal - ngas_before;
+ i = local_gas_list[iwhichlocal];
+ double deletion_energy = energy(i,atom->x[i]);
+ if (random_unequal->uniform() <
+ ngas*exp(beta*deletion_energy)/(zz*volume)) {
+ avec->copy(atom->nlocal-1,i,1);
+ atom->nlocal--;
+ local_gas_list[iwhichlocal] = local_gas_list[ngas_local-1];
+ ngas_local--;
+ success = 1;
+ }
+ }
+
+ int success_all = 0;
+ MPI_Allreduce(&success,&success_all,1,MPI_INT,MPI_MAX,world);
+
+ if (success_all) {
+ ngas--;
+ ndel_successes += 1.0;
+ atom->natoms--;
+ if (iwhichglobal < ngas_before) ngas_before--;
+ comm->borders();
+ if (atom->tag_enable) {
+ atom->tag_extend();
+ if (atom->map_style) {
+ atom->map_init();
+ atom->map_set();
+ }
+ }
+ }
+}
+
+/* ----------------------------------------------------------------------
+ attempt particle insertion
+------------------------------------------------------------------------- */
+
+void FixGCMC::attempt_insertion()
+{
+ int flag,success;
+ double coord[3],lamda[3];
+ double *newcoord;
+
+ ninsert_attempts += 1.0;
+
+ // choose random position for new atom within box
+
+ coord[0] = xlo + random_equal->uniform() * (xhi-xlo);
+ coord[1] = ylo + random_equal->uniform() * (yhi-ylo);
+ coord[2] = zlo + random_equal->uniform() * (zhi-zlo);
+
+ // check if new atom is in my sub-box or above it if I'm highest proc
+ // if so, add to my list via create_atom()
+ // initialize info about the atoms
+ // set group mask to "all" plus fix group
+
+ if (domain->triclinic) {
+ domain->x2lamda(coord,lamda);
+ newcoord = lamda;
+ } else newcoord = coord;
+
+ flag = 0;
+ if (newcoord[0] >= sublo[0] && newcoord[0] < subhi[0] &&
+ newcoord[1] >= sublo[1] && newcoord[1] < subhi[1] &&
+ newcoord[2] >= sublo[2] && newcoord[2] < subhi[2]) flag = 1;
+
+ success = 0;
+ if (flag) {
+ int nall = atom->nlocal + atom->nghost;
+ double insertion_energy = energy(nall,coord);
+ if (random_unequal->uniform() <
+ zz*volume*exp(-beta*insertion_energy)/(ngas+1)) {
+ atom->avec->create_atom(ntype,coord);
+ int m = atom->nlocal - 1;
+ atom->type[m] = ntype;
+ atom->mask[m] = 1 | groupbit;
+ atom->v[m][0] = random_unequal->gaussian()*sigma;
+ atom->v[m][1] = random_unequal->gaussian()*sigma;
+ atom->v[m][2] = random_unequal->gaussian()*sigma;
+
+ int nfix = modify->nfix;
+ Fix **fix = modify->fix;
+ for (int j = 0; j < nfix; j++)
+ if (fix[j]->create_attribute) fix[j]->set_arrays(m);
+
+ if (atom->nlocal > nmax) {
+ nmax = atom->nmax;
+ local_gas_list = (int *)
+ memory->srealloc(local_gas_list,nmax*sizeof(int),
+ "GCMC:local_gas_list");
+ }
+
+ local_gas_list[ngas_local] = atom->nlocal;
+ ngas_local++;
+ success = 1;
+ }
+ }
+
+ int success_all = 0;
+ MPI_Allreduce(&success,&success_all,1,MPI_INT,MPI_MAX,world);
+
+ if (success_all) {
+ ngas++;
+ ninsert_successes += 1.0;
+ MPI_Scan(&ngas_local,&ngas_before,1,MPI_INT,MPI_SUM,world);
+ ngas_before -= ngas_local;
+ comm->borders();
+ if (atom->tag_enable) {
+ atom->natoms++;
+ atom->tag_extend();
+ if (atom->map_style) {
+ atom->map_init();
+ atom->map_set();
+ }
+ }
+ }
+}
+
+/* ----------------------------------------------------------------------
+ compute particle's interaction energy with the rest of the system
+------------------------------------------------------------------------- */
+
+double FixGCMC::energy(int i, double *coord)
+{
+ double delx,dely,delz,rsq;
+
+ double **x = atom->x;
+ int *type = atom->type;
+ int nall = atom->nlocal + atom->nghost;
+ pair = force->pair;
+ cutsq = force->pair->cutsq;
+
+ double fpair = 0.0;
+ double factor_coul = 1.0;
+ double factor_lj = 1.0;
+
+ double total_energy = 0.0;
+ for (int j = 0; j < nall; j++) {
+
+ if (i == j) continue;
+
+ delx = coord[0] - x[j][0];
+ dely = coord[1] - x[j][1];
+ delz = coord[2] - x[j][2];
+ rsq = delx*delx + dely*dely + delz*delz;
+ int jtype = type[j];
+
+ if (rsq < cutsq[ntype][jtype])
+ total_energy +=
+ pair->single(i,j,ntype,jtype,rsq,factor_coul,factor_lj,fpair);
+ }
+
+ return total_energy;
+}
+
+/* ----------------------------------------------------------------------
+ parse optional parameters at end of input line
+------------------------------------------------------------------------- */
+
+void FixGCMC::options(int narg, char **arg)
+{
+ if (narg < 0) error->all("Illegal fix GCMC command");
+
+ int iarg = 0;
+ while (iarg < narg) {
+ if (strcmp(arg[iarg],"molecule") == 0) {
+ if (iarg+2 > narg) error->all("Illegal fix GCMC command");
+ if (strcmp(arg[iarg+1],"no") == 0) molflag = 0;
+ else if (strcmp(arg[iarg+1],"yes") == 0) molflag = 1;
+ else error->all("Illegal fix evaporate command");
+ iarg += 2;
+ } else error->all("Illegal fix GCMC command");
+ }
+}
+
+/* ----------------------------------------------------------------------
+ return acceptance ratios
+------------------------------------------------------------------------- */
+
+double FixGCMC::compute_vector(int n)
+{
+ if (n == 0) return nmove_attempts;
+ if (n == 1) return nmove_successes;
+ if (n == 2) return ndel_attempts;
+ if (n == 3) return ndel_successes;
+ if (n == 4) return ninsert_attempts;
+ if (n == 5) return ninsert_successes;
+ return 0.0;
+}
+
+/* ----------------------------------------------------------------------
+ memory usage of local atom-based arrays
+------------------------------------------------------------------------- */
+
+double FixGCMC::memory_usage()
+{
+ double bytes = nmax * sizeof(int);
+ return bytes;
+}
+
+/* ----------------------------------------------------------------------
+ pack entire state of Fix into one write
+------------------------------------------------------------------------- */
+
+void FixGCMC::write_restart(FILE *fp)
+{
+ int n = 0;
+ double list[4];
+ list[n++] = random_equal->state();
+ list[n++] = random_unequal->state();
+ list[n++] = next_reneighbor;
+
+ if (comm->me == 0) {
+ int size = n * sizeof(double);
+ fwrite(&size,sizeof(int),1,fp);
+ fwrite(list,sizeof(double),n,fp);
+ }
+}
+
+/* ----------------------------------------------------------------------
+ use state info from restart file to restart the Fix
+------------------------------------------------------------------------- */
+
+void FixGCMC::restart(char *buf)
+{
+ int n = 0;
+ double *list = (double *) buf;
+
+ seed = static_cast<int> (list[n++]);
+ random_equal->reset(seed);
+
+ seed = static_cast<int> (list[n++]);
+ random_unequal->reset(seed);
+
+ next_reneighbor = static_cast<int> (list[n++]);
+}
diff --git a/src/MC/fix_gcmc.h b/src/MC/fix_gcmc.h
new file mode 100644
index 000000000..77b9f300e
--- /dev/null
+++ b/src/MC/fix_gcmc.h
@@ -0,0 +1,78 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ http://lammps.sandia.gov, Sandia National Laboratories
+ Steve Plimpton, sjplimp@sandia.gov
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef FIX_CLASS
+
+FixStyle(gcmc,FixGCMC)
+
+#else
+
+#ifndef LMP_FIX_GCMC_H
+#define LMP_FIX_GCMC_H
+
+#include "stdio.h"
+#include "fix.h"
+
+namespace LAMMPS_NS {
+
+class FixGCMC : public Fix {
+ public:
+ FixGCMC(class LAMMPS *, int, char **);
+ ~FixGCMC();
+ int setmask();
+ void init();
+ void pre_exchange();
+ void attempt_move();
+ void attempt_deletion();
+ void attempt_insertion();
+ double energy(int, double *);
+ double compute_vector(int);
+ double memory_usage();
+ void write_restart(FILE *);
+ void restart(char *);
+
+ private:
+ int ntype,nevery,seed;
+ int ncycles,nexchanges,nmcmoves;
+ int ngas; // # of gas molecules (or atoms) on all procs
+ int ngas_local; // # of gas molecules (or atoms) on this proc
+ int ngas_before; // # of gas molecules (or atoms) on procs < this proc
+ int molflag; // 0 = atomic, 1 = molecular system
+ double nmove_attempts;
+ double nmove_successes;
+ double ndel_attempts;
+ double ndel_successes;
+ double ninsert_attempts;
+ double ninsert_successes;
+
+ int nmax;
+ double reservoir_temperature;
+ double chemical_potential;
+ double displace;
+ double beta,zz,sigma,volume;
+ double xlo,xhi,ylo,yhi,zlo,zhi;
+ double *sublo,*subhi;
+ int *local_gas_list;
+ double **cutsq;
+ class Pair *pair;
+
+ class RanPark *random_equal;
+ class RanPark *random_unequal;
+
+ void options(int, char **);
+};
+
+}
+
+#endif
+#endif
diff --git a/src/DSMC/pair_dsmc.cpp b/src/MC/pair_dsmc.cpp
similarity index 100%
rename from src/DSMC/pair_dsmc.cpp
rename to src/MC/pair_dsmc.cpp
diff --git a/src/DSMC/pair_dsmc.h b/src/MC/pair_dsmc.h
similarity index 100%
rename from src/DSMC/pair_dsmc.h
rename to src/MC/pair_dsmc.h
diff --git a/src/MOLECULE/Install.sh b/src/MOLECULE/Install.sh
index e04276c46..58deb4552 100644
--- a/src/MOLECULE/Install.sh
+++ b/src/MOLECULE/Install.sh
@@ -1,155 +1,143 @@
# Install/unInstall package files in LAMMPS
if (test $1 = 1) then
cp angle_charmm.cpp ..
cp angle_cosine.cpp ..
cp angle_cosine_delta.cpp ..
cp angle_cosine_periodic.cpp ..
cp angle_cosine_squared.cpp ..
cp angle_harmonic.cpp ..
cp angle_hybrid.cpp ..
cp angle_table.cpp ..
cp atom_vec_angle.cpp ..
cp atom_vec_bond.cpp ..
cp atom_vec_full.cpp ..
cp atom_vec_molecular.cpp ..
cp bond_fene.cpp ..
cp bond_fene_expand.cpp ..
cp bond_harmonic.cpp ..
cp bond_morse.cpp ..
cp bond_nonlinear.cpp ..
cp bond_quartic.cpp ..
cp bond_table.cpp ..
cp dihedral_charmm.cpp ..
cp dihedral_harmonic.cpp ..
cp dihedral_helix.cpp ..
cp dihedral_hybrid.cpp ..
cp dihedral_multi_harmonic.cpp ..
cp dihedral_opls.cpp ..
- cp fix_bond_break.cpp ..
- cp fix_bond_create.cpp ..
- cp fix_bond_swap.cpp ..
cp improper_cvff.cpp ..
cp improper_harmonic.cpp ..
cp improper_hybrid.cpp ..
cp improper_umbrella.cpp ..
cp pair_hbond_dreiding_lj.cpp ..
cp pair_hbond_dreiding_morse.cpp ..
cp pair_lj_charmm_coul_charmm.cpp ..
cp pair_lj_charmm_coul_charmm_implicit.cpp ..
cp angle_charmm.h ..
cp angle_cosine.h ..
cp angle_cosine_delta.h ..
cp angle_cosine_periodic.h ..
cp angle_cosine_squared.h ..
cp angle_harmonic.h ..
cp angle_hybrid.h ..
cp angle_table.h ..
cp atom_vec_angle.h ..
cp atom_vec_bond.h ..
cp atom_vec_full.h ..
cp atom_vec_molecular.h ..
cp bond_fene.h ..
cp bond_fene_expand.h ..
cp bond_harmonic.h ..
cp bond_morse.h ..
cp bond_nonlinear.h ..
cp bond_quartic.h ..
cp bond_table.h ..
cp dihedral_charmm.h ..
cp dihedral_harmonic.h ..
cp dihedral_helix.h ..
cp dihedral_hybrid.h ..
cp dihedral_multi_harmonic.h ..
cp dihedral_opls.h ..
- cp fix_bond_break.h ..
- cp fix_bond_create.h ..
- cp fix_bond_swap.h ..
cp improper_cvff.h ..
cp improper_harmonic.h ..
cp improper_hybrid.h ..
cp improper_umbrella.h ..
cp pair_hbond_dreiding_lj.h ..
cp pair_hbond_dreiding_morse.h ..
cp pair_lj_charmm_coul_charmm.h ..
cp pair_lj_charmm_coul_charmm_implicit.h ..
elif (test $1 = 0) then
rm -f ../angle_charmm.cpp
rm -f ../angle_cosine.cpp
rm -f ../angle_cosine_delta.cpp
rm -f ../angle_cosine_periodic.cpp
rm -f ../angle_cosine_squared.cpp
rm -f ../angle_harmonic.cpp
rm -f ../angle_hybrid.cpp
rm -f ../angle_table.cpp
rm -f ../atom_vec_angle.cpp
rm -f ../atom_vec_bond.cpp
rm -f ../atom_vec_full.cpp
rm -f ../atom_vec_molecular.cpp
rm -f ../bond_fene.cpp
rm -f ../bond_fene_expand.cpp
rm -f ../bond_harmonic.cpp
rm -f ../bond_morse.cpp
rm -f ../bond_nonlinear.cpp
rm -f ../bond_quartic.cpp
rm -f ../bond_table.cpp
rm -f ../dihedral_charmm.cpp
rm -f ../dihedral_harmonic.cpp
rm -f ../dihedral_helix.cpp
rm -f ../dihedral_hybrid.cpp
rm -f ../dihedral_multi_harmonic.cpp
rm -f ../dihedral_opls.cpp
- rm -f ../fix_bond_break.cpp
- rm -f ../fix_bond_create.cpp
- rm -f ../fix_bond_swap.cpp
rm -f ../improper_cvff.cpp
rm -f ../improper_harmonic.cpp
rm -f ../improper_hybrid.cpp
rm -f ../improper_umbrella.cpp
rm -f ../pair_hbond_dreiding_lj.cpp
rm -f ../pair_hbond_dreiding_morse.cpp
rm -f ../pair_lj_charmm_coul_charmm.cpp
rm -f ../pair_lj_charmm_coul_charmm_implicit.cpp
rm -f ../angle_charmm.h
rm -f ../angle_cosine.h
rm -f ../angle_cosine_delta.h
rm -f ../angle_cosine_periodic.h
rm -f ../angle_cosine_squared.h
rm -f ../angle_harmonic.h
rm -f ../angle_hybrid.h
rm -f ../angle_table.h
rm -f ../atom_vec_angle.h
rm -f ../atom_vec_bond.h
rm -f ../atom_vec_full.h
rm -f ../atom_vec_molecular.h
rm -f ../bond_fene.h
rm -f ../bond_fene_expand.h
rm -f ../bond_harmonic.h
rm -f ../bond_morse.h
rm -f ../bond_nonlinear.h
rm -f ../bond_quartic.h
rm -f ../bond_table.h
rm -f ../dihedral_charmm.h
rm -f ../dihedral_harmonic.h
rm -f ../dihedral_helix.h
rm -f ../dihedral_hybrid.h
rm -f ../dihedral_multi_harmonic.h
rm -f ../dihedral_opls.h
- rm -f ../fix_bond_break.h
- rm -f ../fix_bond_create.h
- rm -f ../fix_bond_swap.h
rm -f ../improper_cvff.h
rm -f ../improper_harmonic.h
rm -f ../improper_hybrid.h
rm -f ../improper_umbrella.h
rm -f ../pair_hbond_dreiding_lj.h
rm -f ../pair_hbond_dreiding_morse.h
rm -f ../pair_lj_charmm_coul_charmm.h
rm -f ../pair_lj_charmm_coul_charmm_implicit.h
fi
diff --git a/src/Makefile b/src/Makefile
index 759ae69dc..acb35bb08 100755
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,201 +1,201 @@
# LAMMPS multiple-machine Makefile
SHELL = /bin/bash
#.IGNORE:
# Definitions
ROOT = lmp
EXE = $(ROOT)_$@
SRC = $(wildcard *.cpp)
INC = $(wildcard *.h)
OBJ = $(SRC:.cpp=.o)
# Package variables
-PACKAGE = asphere class2 colloid dipole dsmc gpu granular \
- kspace manybody meam molecule opt peri poems reax replica \
+PACKAGE = asphere class2 colloid dipole gpu granular \
+ kspace manybody mc meam molecule opt peri poems reax replica \
shock srd xtc
PACKUSER = user-misc user-atc user-awpmd user-cg-cmm \
user-cuda user-eff user-ewaldn user-omp user-reaxc
PACKALL = $(PACKAGE) $(PACKUSER)
PACKAGEUC = $(shell echo $(PACKAGE) | tr a-z A-Z)
PACKUSERUC = $(shell echo $(PACKUSER) | tr a-z A-Z)
YESDIR = $(shell echo $(@:yes-%=%) | tr a-z A-Z)
NODIR = $(shell echo $(@:no-%=%) | tr a-z A-Z)
# List of all targets
help:
@echo ''
@echo 'make clean-all delete all object files'
@echo 'make clean-machine delete object files for one machine'
@echo 'make tar lmp_src.tar.gz of src dir and packages'
@echo 'make makelib update Makefile.lib for library build'
@echo 'make makelist update Makefile.list used by old makes'
@echo ''
@echo 'make package list available packages'
@echo 'make package-status status of all packages'
@echo 'make yes-package install a single package in src dir'
@echo 'make no-package remove a single package from src dir'
@echo 'make yes-all install all packages in src dir'
@echo 'make no-all remove all packages from src dir'
@echo 'make yes-standard install all standard packages'
@echo 'make no-standard remove all standard packages'
@echo 'make yes-user install all user packages'
@echo 'make no-user remove all user packages'
@echo ''
@echo 'make package-update replace src files with package files'
@echo 'make package-overwrite replace package files with src files'
@echo 'make package-diff diff src files against package files'
@echo ''
@echo 'make machine build LAMMPS where machine is one of:'
@echo ''
@files="`ls MAKE/Makefile.*`"; \
for file in $$files; do head -1 $$file; done
@echo ''
# Build the code
.DEFAULT:
@test -f MAKE/Makefile.$@
@if [ ! -d Obj_$@ ]; then mkdir Obj_$@; fi
@$(SHELL) Make.sh style
@cp -p *.cpp *.h Obj_$@
@cp MAKE/Makefile.$@ Obj_$@/Makefile
@if [ ! -e Makefile.package ]; then make package-regenerate; fi
@if [ ! -e Makefile.package.settings ]; then make package-regenerate; fi
@cp Makefile.package Makefile.package.settings Obj_$@
@cd Obj_$@; \
$(MAKE) $(MFLAGS) "OBJ = $(OBJ)" "INC = $(INC)" "EXE = ../$(EXE)" ../$(EXE)
@if [ -d Obj_$@ ]; then cd Obj_$@; rm -f $(SRC) $(INC) Makefile*; fi
# Remove machine-specific object files
clean:
@echo 'make clean-all delete all object files'
@echo 'make clean-machine delete object files for one machine'
clean-all:
rm -rf Obj_*
clean-%:
rm -rf Obj_$(@:clean-%=%)
# Create a tarball of src dir and packages
tar:
@cd STUBS; make clean
@cd ..; tar cvzf src/$(ROOT)_src.tar.gz \
src/Make* src/Package.sh src/MAKE src/*.cpp src/*.h src/STUBS \
$(patsubst %,src/%,$(PACKAGEUC)) $(patsubst %,src/%,$(PACKUSERUC)) \
--exclude=*/.svn
@cd STUBS; make
@echo "Created $(ROOT)_src.tar.gz"
# Make MPI STUBS lib
stubs:
@cd STUBS; make clean; make
# Update Makefile.lib and Makefile.list
makelib:
@$(SHELL) Make.sh style
@$(SHELL) Make.sh Makefile.lib
makelist:
@$(SHELL) Make.sh style
@$(SHELL) Make.sh Makefile.list
# Package management
package:
@echo 'Standard packages:' $(PACKAGE)
@echo ''
@echo 'User-contributed packages:' $(PACKUSER)
@echo ''
@echo 'make package list available packages'
@echo 'make package-status status of all packages'
@echo 'make yes-package install a single package in src dir'
@echo 'make no-package remove a single package from src dir'
@echo 'make yes-all install all packages in src dir'
@echo 'make no-all remove all packages from src dir'
@echo 'make yes-standard install all standard packages'
@echo 'make no-standard remove all standard packages'
@echo 'make yes-user install all user packages'
@echo 'make no-user remove all user packages'
@echo ''
@echo 'make package-update replace src files with package files'
@echo 'make package-overwrite replace package files with src files'
@echo 'make package-diff diff src files against package file'
yes-all:
@for p in $(PACKALL); do $(MAKE) yes-$$p; done
no-all:
@for p in $(PACKALL); do $(MAKE) no-$$p; done
yes-standard:
@for p in $(PACKAGE); do $(MAKE) yes-$$p; done
no-standard:
@for p in $(PACKAGE); do $(MAKE) no-$$p; done
yes-user:
@for p in $(PACKUSER); do $(MAKE) yes-$$p; done
no-user:
@for p in $(PACKUSER); do $(MAKE) no-$$p; done
yes-%:
@if [ ! -e $(YESDIR) ]; then \
echo "Package $(@:yes-%=%) does not exist"; \
else \
echo "Installing package $(@:yes-%=%)"; \
cd $(YESDIR); $(SHELL) Install.sh 1; cd ..; $(SHELL) Depend.sh 1; \
fi;
no-%:
@if [ ! -e $(NODIR) ]; then \
echo "Package $(@:no-%=%) does not exist"; \
else \
echo "Uninstalling package $(@:no-%=%)"; \
cd $(NODIR); $(SHELL) Install.sh 0; cd ..; $(SHELL) Depend.sh 0; \
fi;
# status = list src files that differ from package files
# update = replace src files with newer package files
# overwrite = overwrite package files with newer src files
# regenerate = regenerate Makefile.package from Makefile.package.empty
# diff = show differences between src and package files
package-status:
@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p status; done
@echo ''
@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p status; done
package-update:
@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p update; done
@echo ''
@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p update; done
package-overwrite:
@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p overwrite; done
@echo ''
@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p overwrite; done
package-regenerate:
@cp Makefile.package.empty Makefile.package
@cp Makefile.package.settings.empty Makefile.package.settings
@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p regenerate; done
@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p regenerate; done
package-diff:
@for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p diff; done
@echo ''
@for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p diff; done
diff --git a/src/USER-OMP/thr_omp.cpp b/src/USER-OMP/thr_omp.cpp
index 99d884a2f..d05fae5b3 100644
--- a/src/USER-OMP/thr_omp.cpp
+++ b/src/USER-OMP/thr_omp.cpp
@@ -1,393 +1,392 @@
/* -------------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
OpenMP based threading support for LAMMPS
Contributing author: Axel Kohlmeyer (Temple U)
------------------------------------------------------------------------- */
#include "thr_omp.h"
#include "memory.h"
#include "atom.h"
#include "comm.h"
#include "force.h"
#include "pair.h"
#include "dihedral.h"
#if defined(_OPENMP)
#include <omp.h>
#endif
using namespace LAMMPS_NS;
/* ---------------------------------------------------------------------- */
ThrOMP::ThrOMP(LAMMPS *ptr, int style) : thr_style(style), lmp(ptr)
{
// initialize fixed size per thread storage
eng_vdwl_thr = eng_coul_thr = eng_bond_thr = NULL;
virial_thr = NULL;
lmp->memory->create(eng_vdwl_thr,lmp->comm->nthreads,"thr_omp:eng_vdwl_thr");
lmp->memory->create(eng_coul_thr,lmp->comm->nthreads,"thr_omp:eng_coul_thr");
lmp->memory->create(eng_bond_thr,lmp->comm->nthreads,"thr_omp:eng_bond_thr");
lmp->memory->create(virial_thr,lmp->comm->nthreads,6,"thr_omp:virial_thr");
// variable size per thread, per atom storage
// the actually allocation happens via memory->grow() in ev_steup_thr()
maxeatom_thr = maxvatom_thr = 0;
eatom_thr = NULL;
vatom_thr = NULL;
}
/* ---------------------------------------------------------------------- */
ThrOMP::~ThrOMP()
{
lmp->memory->destroy(eng_vdwl_thr);
lmp->memory->destroy(eng_coul_thr);
lmp->memory->destroy(eng_bond_thr);
lmp->memory->destroy(virial_thr);
lmp->memory->destroy(eatom_thr);
lmp->memory->destroy(vatom_thr);
}
/* ---------------------------------------------------------------------- */
void ThrOMP::ev_zero_acc_thr(int ntotal, int eflag_global, int vflag_global,
int eflag_atom, int vflag_atom, int nthreads)
{
int t,i;
for (t = 0; t < nthreads; ++t) {
if (eflag_global)
eng_vdwl_thr[t] = eng_coul_thr[t] = eng_bond_thr[t] = 0.0;
if (vflag_global)
for (i = 0; i < 6; ++i)
virial_thr[t][i] = 0.0;
if (eflag_atom)
for (i = 0; i < ntotal; ++i)
eatom_thr[t][i] = 0.0;
if (vflag_atom)
for (i = 0; i < ntotal; ++i) {
vatom_thr[t][i][0] = 0.0;
vatom_thr[t][i][1] = 0.0;
vatom_thr[t][i][2] = 0.0;
vatom_thr[t][i][3] = 0.0;
vatom_thr[t][i][4] = 0.0;
vatom_thr[t][i][5] = 0.0;
}
}
}
/* ---------------------------------------------------------------------- */
void ThrOMP::ev_setup_thr(Dihedral *dihed)
{
int nthreads = lmp->comm->nthreads;
// reallocate per-atom arrays if necessary
if (dihed->eflag_atom && lmp->atom->nmax > maxeatom_thr) {
maxeatom_thr = lmp->atom->nmax;
lmp->memory->grow(eatom_thr,nthreads,maxeatom_thr,"thr_omp:eatom_thr");
}
if (dihed->vflag_atom && lmp->atom->nmax > maxvatom_thr) {
maxvatom_thr = lmp->atom->nmax;
lmp->memory->grow(vatom_thr,nthreads,maxeatom_thr,6,"thr_omp:vatom_thr");
}
int ntotal = (lmp->force->newton_bond) ?
(lmp->atom->nlocal + lmp->atom->nghost) : lmp->atom->nlocal;
// zero per thread accumulators
ev_zero_acc_thr(ntotal, dihed->eflag_global, dihed->vflag_global,
dihed->eflag_atom, dihed->vflag_atom, nthreads);
}
/* ---------------------------------------------------------------------- */
void ThrOMP::ev_setup_thr(Pair *pair)
{
int nthreads = lmp->comm->nthreads;
// reallocate per-atom arrays if necessary
if (pair->eflag_atom && lmp->atom->nmax > maxeatom_thr) {
maxeatom_thr = lmp->atom->nmax;
lmp->memory->grow(eatom_thr,nthreads,maxeatom_thr,"thr_omp:eatom_thr");
}
if (pair->vflag_atom && lmp->atom->nmax > maxvatom_thr) {
maxvatom_thr = lmp->atom->nmax;
lmp->memory->grow(vatom_thr,nthreads,maxeatom_thr,6,"thr_omp:vatom_thr");
}
int ntotal = (lmp->force->newton) ?
(lmp->atom->nlocal + lmp->atom->nghost) : lmp->atom->nlocal;
// zero per thread accumulators
ev_zero_acc_thr(ntotal, pair->eflag_global, pair->vflag_global,
pair->eflag_atom, pair->vflag_atom, nthreads);
}
/* ----------------------------------------------------------------------
reduce the per thread accumulated E/V data into the canonical accumulators.
------------------------------------------------------------------------- */
void ThrOMP::ev_reduce_thr(Dihedral *dihed)
{
int nthreads = lmp->comm->nthreads;
int ntotal = (lmp->force->newton_bond) ?
(lmp->atom->nlocal + lmp->atom->nghost) : lmp->atom->nlocal;
for (int n = 0; n < nthreads; ++n) {
dihed->energy += eng_bond_thr[n];
if (dihed->vflag_either) {
dihed->virial[0] += virial_thr[n][0];
dihed->virial[1] += virial_thr[n][1];
dihed->virial[2] += virial_thr[n][2];
dihed->virial[3] += virial_thr[n][3];
dihed->virial[4] += virial_thr[n][4];
dihed->virial[5] += virial_thr[n][5];
if (dihed->vflag_atom) {
for (int i = 0; i < ntotal; ++i) {
dihed->vatom[i][0] += vatom_thr[n][i][0];
dihed->vatom[i][1] += vatom_thr[n][i][1];
dihed->vatom[i][2] += vatom_thr[n][i][2];
dihed->vatom[i][3] += vatom_thr[n][i][3];
dihed->vatom[i][4] += vatom_thr[n][i][4];
dihed->vatom[i][5] += vatom_thr[n][i][5];
}
}
}
if (dihed->eflag_atom) {
for (int i = 0; i < ntotal; ++i) {
dihed->eatom[i] += eatom_thr[n][i];
}
}
}
}
/* ----------------------------------------------------------------------
tally eng_vdwl and virial into per thread global and per-atom accumulators
need i < nlocal test since called by bond_quartic and dihedral_charmm
------------------------------------------------------------------------- */
void ThrOMP::ev_tally_thr(Pair *pair, int i, int j, int nlocal,
int newton_pair, double evdwl, double ecoul,
double fpair, double delx, double dely,
double delz, int tid)
{
double evdwlhalf,ecoulhalf,epairhalf,v[6];
if (pair->eflag_either) {
if (pair->eflag_global) {
if (newton_pair) {
eng_vdwl_thr[tid] += evdwl;
eng_coul_thr[tid] += ecoul;
} else {
evdwlhalf = 0.5*evdwl;
ecoulhalf = 0.5*ecoul;
if (i < nlocal) {
eng_vdwl_thr[tid] += evdwlhalf;
eng_coul_thr[tid] += ecoulhalf;
}
if (j < nlocal) {
eng_vdwl_thr[tid] += evdwlhalf;
eng_coul_thr[tid] += ecoulhalf;
}
}
}
if (pair->eflag_atom) {
epairhalf = 0.5 * (evdwl + ecoul);
if (newton_pair || i < nlocal) eatom_thr[tid][i] += epairhalf;
if (newton_pair || j < nlocal) eatom_thr[tid][j] += epairhalf;
}
}
if (pair->vflag_either) {
v[0] = delx*delx*fpair;
v[1] = dely*dely*fpair;
v[2] = delz*delz*fpair;
v[3] = delx*dely*fpair;
v[4] = delx*delz*fpair;
v[5] = dely*delz*fpair;
if (pair->vflag_global) {
if (newton_pair) {
virial_thr[tid][0] += v[0];
virial_thr[tid][1] += v[1];
virial_thr[tid][2] += v[2];
virial_thr[tid][3] += v[3];
virial_thr[tid][4] += v[4];
virial_thr[tid][5] += v[5];
} else {
if (i < nlocal) {
virial_thr[tid][0] += 0.5*v[0];
virial_thr[tid][1] += 0.5*v[1];
virial_thr[tid][2] += 0.5*v[2];
virial_thr[tid][3] += 0.5*v[3];
virial_thr[tid][4] += 0.5*v[4];
virial_thr[tid][5] += 0.5*v[5];
}
if (j < nlocal) {
virial_thr[tid][0] += 0.5*v[0];
virial_thr[tid][1] += 0.5*v[1];
virial_thr[tid][2] += 0.5*v[2];
virial_thr[tid][3] += 0.5*v[3];
virial_thr[tid][4] += 0.5*v[4];
virial_thr[tid][5] += 0.5*v[5];
}
}
}
if (pair->vflag_atom) {
if (newton_pair || i < nlocal) {
vatom_thr[tid][i][0] += 0.5*v[0];
vatom_thr[tid][i][1] += 0.5*v[1];
vatom_thr[tid][i][2] += 0.5*v[2];
vatom_thr[tid][i][3] += 0.5*v[3];
vatom_thr[tid][i][4] += 0.5*v[4];
vatom_thr[tid][i][5] += 0.5*v[5];
}
if (newton_pair || j < nlocal) {
vatom_thr[tid][j][0] += 0.5*v[0];
vatom_thr[tid][j][1] += 0.5*v[1];
vatom_thr[tid][j][2] += 0.5*v[2];
vatom_thr[tid][j][3] += 0.5*v[3];
vatom_thr[tid][j][4] += 0.5*v[4];
vatom_thr[tid][j][5] += 0.5*v[5];
}
}
}
}
/* ----------------------------------------------------------------------
reduce the per thread accumulated E/V data into the canonical accumulators.
------------------------------------------------------------------------- */
void ThrOMP::ev_reduce_thr(Pair *pair)
{
const int nthreads = lmp->comm->nthreads;
const int ntotal = (lmp->force->newton) ?
(lmp->atom->nlocal + lmp->atom->nghost) : lmp->atom->nlocal;
for (int n = 0; n < nthreads; ++n) {
pair->eng_vdwl += eng_vdwl_thr[n];
pair->eng_coul += eng_coul_thr[n];
if (pair->vflag_either) {
pair->virial[0] += virial_thr[n][0];
pair->virial[1] += virial_thr[n][1];
pair->virial[2] += virial_thr[n][2];
pair->virial[3] += virial_thr[n][3];
pair->virial[4] += virial_thr[n][4];
pair->virial[5] += virial_thr[n][5];
if (pair->vflag_atom) {
for (int i = 0; i < ntotal; ++i) {
pair->vatom[i][0] += vatom_thr[n][i][0];
pair->vatom[i][1] += vatom_thr[n][i][1];
pair->vatom[i][2] += vatom_thr[n][i][2];
pair->vatom[i][3] += vatom_thr[n][i][3];
pair->vatom[i][4] += vatom_thr[n][i][4];
pair->vatom[i][5] += vatom_thr[n][i][5];
}
}
}
if (pair->eflag_atom) {
for (int i = 0; i < ntotal; ++i) {
pair->eatom[i] += eatom_thr[n][i];
}
}
}
}
/* ---------------------------------------------------------------------- */
// set loop range thread id, and force array offset for threaded runs.
double **ThrOMP::loop_setup_thr(double **f, int &ifrom, int &ito, int &tid,
int inum, int nall, int nthreads)
{
#if defined(_OPENMP)
if (nthreads > 1) {
tid = omp_get_thread_num();
// each thread works on a fixed chunk of atoms.
const int idelta = 1 + inum/nthreads;
ifrom = tid*idelta;
ito = ifrom + idelta;
if (ito > inum)
ito = inum;
return f + nall*tid;
} else {
#endif
tid = 0;
ifrom = 0;
ito = inum;
return f;
#if defined(_OPENMP)
}
#endif
}
/* ---------------------------------------------------------------------- */
// reduce per thread forces into the first part of the force
// array that is used for the non-threaded parts and reset
// the temporary storage to 0.0. this routine depends on the
// forces arrays stored in this order x1,y1,z1,x2,y2,z2,...
// we need to post a barrier to wait until all threads are done
// with computing forces.
void ThrOMP::force_reduce_thr(double *fall, int nall,
int nthreads, int tid)
{
#if defined(_OPENMP)
// NOOP in non-threaded execution.
if (nthreads == 1) return;
#pragma omp barrier
{
double *f;
const int idelta = 1 + nall/nthreads;
const int ifrom = 3*tid*idelta;
const int ito = 3*(((ifrom + idelta) > nall) ? nall : (ifrom + idelta));
for (int n = 1; n < nthreads; ++n) {
const int toffs = 3*n*nall;
f = fall + toffs;
for (int m = ifrom; m < ito; ++m) {
fall[m] += f[m];
f[m] = 0.0;
}
}
}
#else
// NOOP in non-threaded execution.
return;
#endif
}
/* ---------------------------------------------------------------------- */
double ThrOMP::memory_usage_thr()
{
const int nthreads=lmp->comm->nthreads;
double bytes = nthreads * (3 + 7) * sizeof(double);
bytes += nthreads * maxeatom_thr * sizeof(double);
bytes += nthreads * maxvatom_thr * 6 * sizeof(double);
return bytes;
}
-
diff --git a/src/USER-REAXC/README b/src/USER-REAXC/README
index d7f66d1a7..9d1c8b1ac 100644
--- a/src/USER-REAXC/README
+++ b/src/USER-REAXC/README
@@ -1,61 +1,68 @@
The files in this directory are a user-contributed package for LAMMPS.
The person who created this package is Hasan Metin Aktulga, haktulga
at cs.purdue.edu, while at Purdue University. Contact him directly,
or Aidan Thompson (Sandia) at athomps at sandia.gov, if you have
questions.
+For technical details about this implemention of ReaxFF, see
+this paper:
+
+Parallel and Scalable Reactive Molecular Dynamics: Numerical Methods
+and Algorithmic Techniques, H. M. Aktulga, J. C. Fogarty,
+S. A. Pandit, A. Y. Grama, Parallel Computing, to appear (2011).
+
--------------------------------------
Note that the files with names starting with "reaxc" in this package
are from PuReMD, the Purdue ReaxFF Molecular Dynamics Program. Its
copyright info and authorship info are listed below.
PACKAGE DESCRIPTION:
Contains a implementation for LAMMPS of the ReaxFF force field.
ReaxFF uses distance-dependent bond-order functions to represent the
contributions of chemical bonding to the potential energy. It was
originally developed by Adri van Duin and the Goddard group at
CalTech.
The USER-REAXC version of ReaxFF (pair_style reax/c), implemented in
C, should give identical or very similar results to pair_style reax,
which is a ReaxFF implementation on top of a Fortran library, a
version of which was originally authored by Adri van Duin.
The reax/c version should be somewhat faster and more scalable,
particularly with respect to the charge equilibration calculation. It
should also be easier to build and use since there are no complicating
issues due to linking to a Fortran library.
OTHERS FILES INCLUDED:
User examples for pair_style reax/c are in examples/reax.
Thanks to Steve Plimpton and Aidan Thompson for their input on the
LAMMPS architecture and for their help in understanding and
customizing some of the required LAMMPS interfaces.
--------------------------------------
The reaxc files in this directory have the following header:
PuReMD - Purdue ReaxFF Molecular Dynamics Program
Copyright (2010) Purdue University
Hasan Metin Aktulga, haktulga@cs.purdue.edu
Joseph Fogarty, jcfogart@mail.usf.edu
Sagar Pandit, pandit@usf.edu
Ananth Y Grama, ayg@cs.purdue.edu
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details:
<http://www.gnu.org/licenses/>.
diff --git a/src/dihedral.h b/src/dihedral.h
index 0c5bf1e28..c41cedad0 100644
--- a/src/dihedral.h
+++ b/src/dihedral.h
@@ -1,58 +1,59 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifndef LMP_DIHEDRAL_H
#define LMP_DIHEDRAL_H
#include "stdio.h"
#include "pointers.h"
namespace LAMMPS_NS {
class Dihedral : protected Pointers {
friend class ThrOMP;
+
public:
int allocated;
int *setflag;
double energy; // accumulated energy
double virial[6]; // accumlated virial
double *eatom,**vatom; // accumulated per-atom energy/virial
Dihedral(class LAMMPS *);
virtual ~Dihedral();
virtual void init();
virtual void init_style() {}
virtual void compute(int, int) = 0;
virtual void settings(int, char **) {}
virtual void coeff(int, char **) = 0;
virtual void write_restart(FILE *) = 0;
virtual void read_restart(FILE *) = 0;
virtual double memory_usage();
protected:
double PI;
int evflag;
int eflag_either,eflag_global,eflag_atom;
int vflag_either,vflag_global,vflag_atom;
int maxeatom,maxvatom;
void ev_setup(int, int);
void ev_tally(int, int, int, int, int, int, double,
double *, double *, double *, double, double, double,
double, double, double, double, double, double);
};
}
#endif
diff --git a/src/finish.cpp b/src/finish.cpp
index d765dd2db..52fc2f312 100644
--- a/src/finish.cpp
+++ b/src/finish.cpp
@@ -1,672 +1,673 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include "mpi.h"
#include "math.h"
#include "string.h"
#include "stdio.h"
#include "finish.h"
#include "timer.h"
#include "atom.h"
#include "comm.h"
#include "force.h"
#include "kspace.h"
#include "update.h"
#include "min.h"
#include "neighbor.h"
#include "neigh_list.h"
#include "neigh_request.h"
#include "output.h"
#include "memory.h"
using namespace LAMMPS_NS;
#define MIN(A,B) ((A) < (B)) ? (A) : (B)
#define MAX(A,B) ((A) > (B)) ? (A) : (B)
/* ---------------------------------------------------------------------- */
Finish::Finish(LAMMPS *lmp) : Pointers(lmp) {}
/* ---------------------------------------------------------------------- */
void Finish::end(int flag)
{
int i,m,nneigh,nneighfull;
int histo[10];
int loopflag,minflag,prdflag,tadflag,timeflag,fftflag,histoflag,neighflag;
double time,tmp,ave,max,min;
double time_loop,time_other;
int me,nprocs;
MPI_Comm_rank(world,&me);
MPI_Comm_size(world,&nprocs);
// choose flavors of statistical output
// flag determines caller
// flag = 0 = just loop summary
// flag = 1 = dynamics or minimization
// flag = 2 = PRD
// flag = 3 = TAD
loopflag = 1;
minflag = prdflag = tadflag = timeflag = fftflag = histoflag = neighflag = 0;
if (flag == 1) {
if (update->whichflag == 2) minflag = 1;
timeflag = histoflag = neighflag = 1;
if (strstr(force->kspace_style,"pppm")) fftflag = 1;
}
if (flag == 2) prdflag = histoflag = neighflag = 1;
if (flag == 3) tadflag = histoflag = neighflag = 1;
// loop stats
if (loopflag) {
time_other = timer->array[TIME_LOOP] -
(timer->array[TIME_PAIR] + timer->array[TIME_BOND] +
timer->array[TIME_KSPACE] + timer->array[TIME_NEIGHBOR] +
timer->array[TIME_COMM] + timer->array[TIME_OUTPUT]);
time_loop = timer->array[TIME_LOOP];
MPI_Allreduce(&time_loop,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time_loop = tmp/nprocs;
// overall loop time
+
#if defined(_OPENMP)
if (me == 0) {
int ntasks = nprocs * comm->nthreads;
if (screen) fprintf(screen,
"Loop time of %g on %d procs (%d MPI x %d OpenMP) "
"for %d steps with " BIGINT_FORMAT " atoms\n",
time_loop,ntasks,nprocs,comm->nthreads,
update->nsteps,atom->natoms);
if (logfile) fprintf(logfile,
"Loop time of %g on %d procs (%d MPI x %d OpenMP) "
"for %d steps with " BIGINT_FORMAT " atoms\n",
time_loop,ntasks,nprocs,comm->nthreads,
update->nsteps,atom->natoms);
}
#else
if (me == 0) {
if (screen) fprintf(screen,
"Loop time of %g on %d procs for %d steps with "
BIGINT_FORMAT " atoms\n",
time_loop,nprocs,update->nsteps,atom->natoms);
if (logfile) fprintf(logfile,
"Loop time of %g on %d procs for %d steps with "
BIGINT_FORMAT " atoms\n",
time_loop,nprocs,update->nsteps,atom->natoms);
}
#endif
if (time_loop == 0.0) time_loop = 1.0;
}
// minimization stats
if (minflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
if (me == 0) {
if (screen) {
fprintf(screen,"Minimization stats:\n");
fprintf(screen," Stopping criterion = %s\n",
update->minimize->stopstr);
fprintf(screen," Energy initial, next-to-last, final = \n"
" %18.12g %18.12g %18.12g\n",
update->minimize->einitial,update->minimize->eprevious,
update->minimize->efinal);
fprintf(screen," Force two-norm initial, final = %g %g\n",
update->minimize->fnorm2_init,update->minimize->fnorm2_final);
fprintf(screen," Force max component initial, final = %g %g\n",
update->minimize->fnorminf_init,
update->minimize->fnorminf_final);
fprintf(screen," Final line search alpha, max atom move = %g %g\n",
update->minimize->alpha_final,
update->minimize->alpha_final*
update->minimize->fnorminf_final);
fprintf(screen," Iterations, force evaluations = %d %d\n",
update->minimize->niter,update->minimize->neval);
}
if (logfile) {
fprintf(logfile,"Minimization stats:\n");
fprintf(logfile," Stopping criterion = %s\n",
update->minimize->stopstr);
fprintf(logfile," Energy initial, next-to-last, final = \n"
" %18.12g %18.12g %18.12g\n",
update->minimize->einitial,update->minimize->eprevious,
update->minimize->efinal);
fprintf(logfile," Force two-norm initial, final = %g %g\n",
update->minimize->fnorm2_init,update->minimize->fnorm2_final);
fprintf(logfile," Force max component initial, final = %g %g\n",
update->minimize->fnorminf_init,
update->minimize->fnorminf_final);
fprintf(logfile," Final line search alpha, max atom move = %g %g\n",
update->minimize->alpha_final,
update->minimize->alpha_final*
update->minimize->fnorminf_final);
fprintf(logfile," Iterations, force evaluations = %d %d\n",
update->minimize->niter,update->minimize->neval);
}
}
}
// PRD stats using PAIR,BOND,KSPACE for dephase,dynamics,quench
if (prdflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
if (screen) fprintf(screen,"PRD stats:\n");
if (logfile) fprintf(logfile,"PRD stats:\n");
time = timer->array[TIME_PAIR];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Dephase time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Dephase time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->array[TIME_BOND];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Dynamics time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Dynamics time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->array[TIME_KSPACE];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Quench time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Quench time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = time_other;
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Other time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Other time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
}
// TAD stats using PAIR,BOND,KSPACE for neb,dynamics,quench
if (tadflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
if (screen) fprintf(screen,"TAD stats:\n");
if (logfile) fprintf(logfile,"TAD stats:\n");
time = timer->array[TIME_PAIR];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," NEB time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," NEB time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->array[TIME_BOND];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Dynamics time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Dynamics time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->array[TIME_KSPACE];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Quench time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Quench time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->array[TIME_COMM];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Comm time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Comm time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->array[TIME_OUTPUT];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Output time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Output time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = time_other;
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Other time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Other time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
}
// timing breakdowns
if (timeflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
time = timer->array[TIME_PAIR];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen,"Pair time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile,"Pair time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
if (atom->molecular) {
time = timer->array[TIME_BOND];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen,"Bond time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile,"Bond time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
}
if (force->kspace) {
time = timer->array[TIME_KSPACE];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen,"Kspce time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile,"Kspce time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
}
time = timer->array[TIME_NEIGHBOR];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen,"Neigh time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile,"Neigh time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->array[TIME_COMM];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen,"Comm time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile,"Comm time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->array[TIME_OUTPUT];
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen,"Outpt time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile,"Outpt time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = time_other;
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen,"Other time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile,"Other time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
}
// FFT timing statistics
// time3d,time1d = total time during run for 3d and 1d FFTs
if (fftflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
int nsteps = update->nsteps;
int nsample = 5;
double time3d,time1d;
force->kspace->timing(nsample,time3d,time1d);
time3d = nsteps * time3d / nsample;
MPI_Allreduce(&time3d,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time3d = tmp/nprocs;
time1d = nsteps * time1d / nsample;
MPI_Allreduce(&time1d,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time1d = tmp/nprocs;
double time_kspace = timer->array[TIME_KSPACE];
MPI_Allreduce(&time_kspace,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time_kspace = tmp/nprocs;
double ntotal = 1.0 * force->kspace->nx_pppm *
force->kspace->ny_pppm * force->kspace->nz_pppm;
double nflops = 5.0 * ntotal * log(ntotal);
double fraction,flop3,flop1;
if (nsteps) {
fraction = time3d/time_kspace*100.0;
flop3 = nflops/1.0e9/(time3d/4.0/nsteps);
flop1 = nflops/1.0e9/(time1d/4.0/nsteps);
} else fraction = flop3 = flop1 = 0.0;
if (me == 0) {
if (screen) {
fprintf(screen,"FFT time (%% of Kspce) = %g (%g)\n",time3d,fraction);
fprintf(screen,"FFT Gflps 3d (1d only) = %g %g\n",flop3,flop1);
}
if (logfile) {
fprintf(logfile,"FFT time (%% of Kspce) = %g (%g)\n",time3d,fraction);
fprintf(logfile,"FFT Gflps 3d (1d only) = %g %g\n",flop3,flop1);
}
}
}
if (histoflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
tmp = atom->nlocal;
stats(1,&tmp,&ave,&max,&min,10,histo);
if (me == 0) {
if (screen) {
fprintf(screen,"Nlocal: %g ave %g max %g min\n",ave,max,min);
fprintf(screen,"Histogram:");
for (i = 0; i < 10; i++) fprintf(screen," %d",histo[i]);
fprintf(screen,"\n");
}
if (logfile) {
fprintf(logfile,"Nlocal: %g ave %g max %g min\n",ave,max,min);
fprintf(logfile,"Histogram:");
for (i = 0; i < 10; i++) fprintf(logfile," %d",histo[i]);
fprintf(logfile,"\n");
}
}
tmp = atom->nghost;
stats(1,&tmp,&ave,&max,&min,10,histo);
if (me == 0) {
if (screen) {
fprintf(screen,"Nghost: %g ave %g max %g min\n",ave,max,min);
fprintf(screen,"Histogram:");
for (i = 0; i < 10; i++) fprintf(screen," %d",histo[i]);
fprintf(screen,"\n");
}
if (logfile) {
fprintf(logfile,"Nghost: %g ave %g max %g min\n",ave,max,min);
fprintf(logfile,"Histogram:");
for (i = 0; i < 10; i++) fprintf(logfile," %d",histo[i]);
fprintf(logfile,"\n");
}
}
// find a non-skip neighbor list containing half the pairwise interactions
// count neighbors in that list for stats purposes
for (m = 0; m < neighbor->old_nrequest; m++)
if ((neighbor->old_requests[m]->half ||
neighbor->old_requests[m]->gran ||
neighbor->old_requests[m]->respaouter ||
neighbor->old_requests[m]->half_from_full) &&
neighbor->old_requests[m]->skip == 0 &&
neighbor->lists[m]->numneigh) break;
nneigh = 0;
if (m < neighbor->old_nrequest) {
int inum = neighbor->lists[m]->inum;
int *ilist = neighbor->lists[m]->ilist;
int *numneigh = neighbor->lists[m]->numneigh;
for (i = 0; i < inum; i++)
nneigh += numneigh[ilist[i]];
}
tmp = nneigh;
stats(1,&tmp,&ave,&max,&min,10,histo);
if (me == 0) {
if (screen) {
fprintf(screen,"Neighs: %g ave %g max %g min\n",ave,max,min);
fprintf(screen,"Histogram:");
for (i = 0; i < 10; i++) fprintf(screen," %d",histo[i]);
fprintf(screen,"\n");
}
if (logfile) {
fprintf(logfile,"Neighs: %g ave %g max %g min\n",ave,max,min);
fprintf(logfile,"Histogram:");
for (i = 0; i < 10; i++) fprintf(logfile," %d",histo[i]);
fprintf(logfile,"\n");
}
}
// find a non-skip neighbor list containing full pairwise interactions
// count neighbors in that list for stats purposes
for (m = 0; m < neighbor->old_nrequest; m++)
if (neighbor->old_requests[m]->full &&
neighbor->old_requests[m]->skip == 0) break;
nneighfull = 0;
if (m < neighbor->old_nrequest) {
if (neighbor->lists[m]->numneigh > 0) {
int inum = neighbor->lists[m]->inum;
int *ilist = neighbor->lists[m]->ilist;
int *numneigh = neighbor->lists[m]->numneigh;
for (i = 0; i < inum; i++)
nneighfull += numneigh[ilist[i]];
}
tmp = nneighfull;
stats(1,&tmp,&ave,&max,&min,10,histo);
if (me == 0) {
if (screen) {
fprintf(screen,"FullNghs: %g ave %g max %g min\n",ave,max,min);
fprintf(screen,"Histogram:");
for (i = 0; i < 10; i++) fprintf(screen," %d",histo[i]);
fprintf(screen,"\n");
}
if (logfile) {
fprintf(logfile,"FullNghs: %g ave %g max %g min\n",ave,max,min);
fprintf(logfile,"Histogram:");
for (i = 0; i < 10; i++) fprintf(logfile," %d",histo[i]);
fprintf(logfile,"\n");
}
}
}
}
if (neighflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
tmp = MAX(nneigh,nneighfull);
double nall;
MPI_Allreduce(&tmp,&nall,1,MPI_DOUBLE,MPI_SUM,world);
int nspec;
double nspec_all;
if (atom->molecular) {
nspec = 0;
for (i = 0; i < atom->nlocal; i++) nspec += atom->nspecial[i][2];
tmp = nspec;
MPI_Allreduce(&tmp,&nspec_all,1,MPI_DOUBLE,MPI_SUM,world);
}
if (me == 0) {
if (screen) {
if (nall < 2.0e9)
fprintf(screen,
"Total # of neighbors = %d\n",static_cast<int> (nall));
else fprintf(screen,"Total # of neighbors = %g\n",nall);
if (atom->natoms > 0)
fprintf(screen,"Ave neighs/atom = %g\n",nall/atom->natoms);
if (atom->molecular && atom->natoms > 0)
fprintf(screen,"Ave special neighs/atom = %g\n",
nspec_all/atom->natoms);
fprintf(screen,"Neighbor list builds = %d\n",neighbor->ncalls);
fprintf(screen,"Dangerous builds = %d\n",neighbor->ndanger);
}
if (logfile) {
if (nall < 2.0e9)
fprintf(logfile,
"Total # of neighbors = %d\n",static_cast<int> (nall));
else fprintf(logfile,"Total # of neighbors = %g\n",nall);
if (atom->natoms > 0)
fprintf(logfile,"Ave neighs/atom = %g\n",nall/atom->natoms);
if (atom->molecular && atom->natoms > 0)
fprintf(logfile,"Ave special neighs/atom = %g\n",
nspec_all/atom->natoms);
fprintf(logfile,"Neighbor list builds = %d\n",neighbor->ncalls);
fprintf(logfile,"Dangerous builds = %d\n",neighbor->ndanger);
}
}
}
if (logfile) fflush(logfile);
}
/* ---------------------------------------------------------------------- */
void Finish::stats(int n, double *data,
double *pave, double *pmax, double *pmin,
int nhisto, int *histo)
{
int i,m;
int *histotmp;
double min = 1.0e20;
double max = -1.0e20;
double ave = 0.0;
for (i = 0; i < n; i++) {
ave += data[i];
if (data[i] < min) min = data[i];
if (data[i] > max) max = data[i];
}
int ntotal;
MPI_Allreduce(&n,&ntotal,1,MPI_INT,MPI_SUM,world);
double tmp;
MPI_Allreduce(&ave,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
ave = tmp/ntotal;
MPI_Allreduce(&min,&tmp,1,MPI_DOUBLE,MPI_MIN,world);
min = tmp;
MPI_Allreduce(&max,&tmp,1,MPI_DOUBLE,MPI_MAX,world);
max = tmp;
for (i = 0; i < nhisto; i++) histo[i] = 0;
double del = max - min;
for (i = 0; i < n; i++) {
if (del == 0.0) m = 0;
else m = static_cast<int> ((data[i]-min)/del * nhisto);
if (m > nhisto-1) m = nhisto-1;
histo[m]++;
}
memory->create(histotmp,nhisto,"finish:histotmp");
MPI_Allreduce(histo,histotmp,nhisto,MPI_INT,MPI_SUM,world);
for (i = 0; i < nhisto; i++) histo[i] = histotmp[i];
memory->destroy(histotmp);
*pave = ave;
*pmax = max;
*pmin = min;
}
diff --git a/src/fix_restrain.cpp b/src/fix_restrain.cpp
new file mode 100644
index 000000000..b9e16c7a4
--- /dev/null
+++ b/src/fix_restrain.cpp
@@ -0,0 +1,401 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ http://lammps.sandia.gov, Sandia National Laboratories
+ Steve Plimpton, sjplimp@sandia.gov
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+ Contributing author: Craig Tenney (University of Notre Dame)
+------------------------------------------------------------------------- */
+
+#include "math.h"
+#include "string.h"
+#include "stdlib.h"
+#include "fix_restrain.h"
+#include "atom.h"
+#include "force.h"
+#include "update.h"
+#include "domain.h"
+#include "comm.h"
+#include "respa.h"
+#include "input.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+
+enum{DIHEDRAL};
+
+#define TOLERANCE 0.05
+
+/* ---------------------------------------------------------------------- */
+
+FixRestrain::FixRestrain(LAMMPS *lmp, int narg, char **arg) :
+ Fix(lmp, narg, arg)
+{
+ int iarg = 6;
+ if (narg < iarg) error->all("Illegal fix restrain command");
+
+ scalar_flag = 1;
+ global_freq = 1;
+ extscalar = 1;
+ time_depend = 1;
+
+ // parse standard arguments
+
+ int n_atoms;
+ k_start = force->numeric(arg[3]);
+ k_stop = force->numeric(arg[4]);
+ if (strcmp(arg[5], "dihedral") == 0) {
+ rstyle = DIHEDRAL;
+ n_atoms = 4;
+ } else error->all("Illegal fix restrain command");
+
+ n_bonds = (narg - iarg) / (n_atoms + 1);
+ if (narg != iarg + n_bonds * (n_atoms + 1))
+ error->all("Illegal fix restrain command");
+
+ // allocate arrays
+
+ memory->create(atom_id,n_bonds,n_atoms,"restrain:atom_id");
+ memory->create(target,n_bonds,"restrain:taret");
+
+ // grab atom_ids and restraint target values
+
+ int ibond = 0;
+ while (iarg < narg) {
+ for (int i = 0; i < n_atoms; i++) {
+ atom_id[ibond][i] = force->inumeric(arg[iarg]);
+ iarg++;
+ }
+ target[ibond] = force->numeric(arg[iarg]);
+ iarg++;
+ ibond++;
+ }
+
+ // special treatment for dihedral restraints
+
+ if (rstyle == DIHEDRAL) {
+ double PI = 4.0*atan(1.0);
+ cos_shift = (double *)
+ memory->smalloc(n_bonds * sizeof(double), "restrain:cos_shift");
+ sin_shift = (double *)
+ memory->smalloc(n_bonds * sizeof(double), "restrain:sin_shift");
+ for (ibond = 0; ibond < n_bonds; ibond++) {
+ double my_arg = PI * (180.0 + target[ibond]) / 180.0;
+ cos_shift[ibond] = cos(my_arg);
+ sin_shift[ibond] = sin(my_arg);
+ }
+ }
+
+ // require atom map to lookup atom IDs
+
+ if (atom->map_style == 0)
+ error->all("Fix restrain requires an atom map, see atom_modify");
+}
+
+/* ---------------------------------------------------------------------- */
+
+FixRestrain::~FixRestrain()
+{
+ memory->destroy(atom_id);
+ memory->destroy(target);
+
+ if (rstyle == DIHEDRAL) {
+ memory->sfree(cos_shift);
+ memory->sfree(sin_shift);
+ }
+}
+
+/* ---------------------------------------------------------------------- */
+
+int FixRestrain::setmask()
+{
+ int mask = 0;
+ mask |= POST_FORCE;
+ mask |= THERMO_ENERGY;
+ mask |= POST_FORCE_RESPA;
+ mask |= MIN_POST_FORCE;
+ return mask;
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixRestrain::init()
+{
+ if (strcmp(update->integrate_style,"respa") == 0)
+ nlevels_respa = ((Respa *) update->integrate)->nlevels;
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixRestrain::setup(int vflag)
+{
+ if (strcmp(update->integrate_style,"verlet") == 0)
+ post_force(vflag);
+ else {
+ ((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1);
+ post_force_respa(vflag,nlevels_respa-1,0);
+ ((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1);
+ }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixRestrain::min_setup(int vflag)
+{
+ post_force(vflag);
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixRestrain::post_force(int vflag)
+{
+ energy = 0.0;
+ if (rstyle == DIHEDRAL) restrain_dihedral();
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixRestrain::post_force_respa(int vflag, int ilevel, int iloop)
+{
+ if (ilevel == nlevels_respa-1) post_force(vflag);
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixRestrain::min_post_force(int vflag)
+{
+ post_force(vflag);
+}
+
+/* ----------------------------------------------------------------------
+ apply dihedral restraints
+ adopted from dihedral_charmm
+---------------------------------------------------------------------- */
+
+void FixRestrain::restrain_dihedral()
+{
+ int i1,i2,i3,i4,i,m,n;
+ double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm;
+ double f1[3],f2[3],f3[3],f4[3];
+ double ax,ay,az,bx,by,bz,rasq,rbsq,rgsq,rg,rginv,ra2inv,rb2inv,rabinv;
+ double df,df1,ddf1,fg,hg,fga,hgb,gaa,gbb;
+ double dtfx,dtfy,dtfz,dtgx,dtgy,dtgz,dthx,dthy,dthz;
+ double c,s,p,sx2,sy2,sz2;
+
+ double **x = atom->x;
+ double **f = atom->f;
+ int nlocal = atom->nlocal;
+ int newton_bond = force->newton_bond;
+
+ double delta = update->ntimestep - update->beginstep;
+ delta /= update->endstep - update->beginstep;
+
+ double k_step = k_start + delta * (k_stop - k_start);
+
+ for (n = 0; n < n_bonds; n++) {
+ i1 = atom->map(atom_id[n][0]);
+ i2 = atom->map(atom_id[n][1]);
+ i3 = atom->map(atom_id[n][2]);
+ i4 = atom->map(atom_id[n][3]);
+
+ // insure exactly one processor computes restraint
+
+ if (newton_bond) {
+ if (i2 == -1 || i2 >= nlocal) continue;
+ if (i1 == -1 || i3 == -1 || i4 == -1) {
+ char str[128];
+ sprintf(str,
+ "Restrain atoms %d %d %d %d missing on proc %d at step "
+ BIGINT_FORMAT,
+ atom_id[n][0],atom_id[n][1],atom_id[n][2],atom_id[n][3],
+ comm->me,update->ntimestep);
+ error->one(str);
+ }
+ } else {
+ if ((i1 == -1 || i1 >= nlocal) && (i2 == -1 || i2 >= nlocal) &&
+ (i3 == -1 || i3 >= nlocal) && (i4 == -1 || i3 >= nlocal)) continue;
+ if (i1 == -1 || i2 == -1 || i3 == -1 || i4 == -1) {
+ char str[128];
+ sprintf(str,
+ "Restrain atoms %d %d %d %d missing on proc %d at step "
+ BIGINT_FORMAT,
+ atom_id[n][0],atom_id[n][1],atom_id[n][2],atom_id[n][3],
+ comm->me,update->ntimestep);
+ error->one(str);
+ }
+ }
+
+ // 1st bond
+
+ vb1x = x[i1][0] - x[i2][0];
+ vb1y = x[i1][1] - x[i2][1];
+ vb1z = x[i1][2] - x[i2][2];
+ domain->minimum_image(vb1x,vb1y,vb1z);
+
+ // 2nd bond
+
+ vb2x = x[i3][0] - x[i2][0];
+ vb2y = x[i3][1] - x[i2][1];
+ vb2z = x[i3][2] - x[i2][2];
+ domain->minimum_image(vb2x,vb2y,vb2z);
+
+ vb2xm = -vb2x;
+ vb2ym = -vb2y;
+ vb2zm = -vb2z;
+ domain->minimum_image(vb2xm,vb2ym,vb2zm);
+
+ // 3rd bond
+
+ vb3x = x[i4][0] - x[i3][0];
+ vb3y = x[i4][1] - x[i3][1];
+ vb3z = x[i4][2] - x[i3][2];
+ domain->minimum_image(vb3x,vb3y,vb3z);
+
+ ax = vb1y*vb2zm - vb1z*vb2ym;
+ ay = vb1z*vb2xm - vb1x*vb2zm;
+ az = vb1x*vb2ym - vb1y*vb2xm;
+ bx = vb3y*vb2zm - vb3z*vb2ym;
+ by = vb3z*vb2xm - vb3x*vb2zm;
+ bz = vb3x*vb2ym - vb3y*vb2xm;
+
+ rasq = ax*ax + ay*ay + az*az;
+ rbsq = bx*bx + by*by + bz*bz;
+ rgsq = vb2xm*vb2xm + vb2ym*vb2ym + vb2zm*vb2zm;
+ rg = sqrt(rgsq);
+
+ rginv = ra2inv = rb2inv = 0.0;
+ if (rg > 0) rginv = 1.0/rg;
+ if (rasq > 0) ra2inv = 1.0/rasq;
+ if (rbsq > 0) rb2inv = 1.0/rbsq;
+ rabinv = sqrt(ra2inv*rb2inv);
+
+ c = (ax*bx + ay*by + az*bz)*rabinv;
+ s = rg*rabinv*(ax*vb3x + ay*vb3y + az*vb3z);
+
+ // error check
+
+ if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) {
+ int me;
+ MPI_Comm_rank(world,&me);
+ if (screen) {
+ char str[128];
+ sprintf(str,"Restrain problem: %d " BIGINT_FORMAT " %d %d %d %d",
+ me,update->ntimestep,
+ atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]);
+ error->warning(str);
+ fprintf(screen," 1st atom: %d %g %g %g\n",
+ me,x[i1][0],x[i1][1],x[i1][2]);
+ fprintf(screen," 2nd atom: %d %g %g %g\n",
+ me,x[i2][0],x[i2][1],x[i2][2]);
+ fprintf(screen," 3rd atom: %d %g %g %g\n",
+ me,x[i3][0],x[i3][1],x[i3][2]);
+ fprintf(screen," 4th atom: %d %g %g %g\n",
+ me,x[i4][0],x[i4][1],x[i4][2]);
+ }
+ }
+
+ if (c > 1.0) c = 1.0;
+ if (c < -1.0) c = -1.0;
+
+ m = 1; //multiplicity
+ p = 1.0;
+ df1 = 0.0;
+
+ for (i = 0; i < m; i++) {
+ ddf1 = p*c - df1*s;
+ df1 = p*s + df1*c;
+ p = ddf1;
+ }
+
+ p = p*cos_shift[n] + df1*sin_shift[n];
+ df1 = df1*cos_shift[n] - ddf1*sin_shift[n];
+ df1 *= -m;
+ p += 1.0;
+
+ energy = k_step * p;
+
+ fg = vb1x*vb2xm + vb1y*vb2ym + vb1z*vb2zm;
+ hg = vb3x*vb2xm + vb3y*vb2ym + vb3z*vb2zm;
+ fga = fg*ra2inv*rginv;
+ hgb = hg*rb2inv*rginv;
+ gaa = -ra2inv*rg;
+ gbb = rb2inv*rg;
+
+ dtfx = gaa*ax;
+ dtfy = gaa*ay;
+ dtfz = gaa*az;
+ dtgx = fga*ax - hgb*bx;
+ dtgy = fga*ay - hgb*by;
+ dtgz = fga*az - hgb*bz;
+ dthx = gbb*bx;
+ dthy = gbb*by;
+ dthz = gbb*bz;
+
+ df = -k_step * df1;
+
+ sx2 = df*dtgx;
+ sy2 = df*dtgy;
+ sz2 = df*dtgz;
+
+ f1[0] = df*dtfx;
+ f1[1] = df*dtfy;
+ f1[2] = df*dtfz;
+
+ f2[0] = sx2 - f1[0];
+ f2[1] = sy2 - f1[1];
+ f2[2] = sz2 - f1[2];
+
+ f4[0] = df*dthx;
+ f4[1] = df*dthy;
+ f4[2] = df*dthz;
+
+ f3[0] = -sx2 - f4[0];
+ f3[1] = -sy2 - f4[1];
+ f3[2] = -sz2 - f4[2];
+
+ // apply force to each of 4 atoms
+
+ if (newton_bond || i1 < nlocal) {
+ f[i1][0] += f1[0];
+ f[i1][1] += f1[1];
+ f[i1][2] += f1[2];
+ }
+
+ if (newton_bond || i2 < nlocal) {
+ f[i2][0] += f2[0];
+ f[i2][1] += f2[1];
+ f[i2][2] += f2[2];
+ }
+
+ if (newton_bond || i3 < nlocal) {
+ f[i3][0] += f3[0];
+ f[i3][1] += f3[1];
+ f[i3][2] += f3[2];
+ }
+
+ if (newton_bond || i4 < nlocal) {
+ f[i4][0] += f4[0];
+ f[i4][1] += f4[1];
+ f[i4][2] += f4[2];
+ }
+ }
+}
+
+/* ----------------------------------------------------------------------
+ potential energy of added force
+------------------------------------------------------------------------- */
+
+double FixRestrain::compute_scalar()
+{
+ MPI_Allreduce(&energy,&energy_all,1,MPI_DOUBLE,MPI_SUM,world);
+ return energy_all;
+}
diff --git a/src/MOLECULE/fix_bond_break.h b/src/fix_restrain.h
old mode 100755
new mode 100644
similarity index 54%
rename from src/MOLECULE/fix_bond_break.h
rename to src/fix_restrain.h
index 597a7e93f..c54045909
--- a/src/MOLECULE/fix_bond_break.h
+++ b/src/fix_restrain.h
@@ -1,60 +1,53 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifdef FIX_CLASS
-FixStyle(bond/break,FixBondBreak)
+FixStyle(restrain,FixRestrain)
#else
-#ifndef LMP_FIX_BOND_BREAK_H
-#define LMP_FIX_BOND_BREAK_H
+#ifndef LMP_FIX_RESTRAIN_H
+#define LMP_FIX_RESTRAIN_H
#include "fix.h"
namespace LAMMPS_NS {
-class FixBondBreak : public Fix {
+class FixRestrain : public Fix {
public:
- FixBondBreak(class LAMMPS *, int, char **);
- ~FixBondBreak();
+ FixRestrain(class LAMMPS *, int, char **);
+ ~FixRestrain();
int setmask();
void init();
- void post_integrate();
- void post_integrate_respa(int,int);
-
- int pack_comm(int, int *, double *, int, int *);
- void unpack_comm(int, int, double *);
- int pack_reverse_comm(int, int, double *);
- void unpack_reverse_comm(int, int *, double *);
- double compute_vector(int);
- double memory_usage();
+ void setup(int);
+ void min_setup(int);
+ void post_force(int);
+ void post_force_respa(int, int, int);
+ void min_post_force(int);
+ double compute_scalar();
private:
- int me;
- int btype,seed;
- double cutsq,fraction;
-
- int breakcount,breakcounttotal;
- int nmax;
- int *partner;
- double *distsq,*probability;
-
- class RanMars *random;
int nlevels_respa;
+ int n_bonds, rstyle;
+ double k_start, k_stop, energy, energy_all;
+ int **atom_id;
+ double *target, *cos_shift, *sin_shift;
+
+ void restrain_dihedral();
};
}
#endif
#endif
diff --git a/src/force.h b/src/force.h
index df214c974..fc1bd0a81 100644
--- a/src/force.h
+++ b/src/force.h
@@ -1,99 +1,100 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifndef LMP_FORCE_H
#define LMP_FORCE_H
#include "pointers.h"
namespace LAMMPS_NS {
class Force : protected Pointers {
public:
double boltz; // Boltzmann constant (eng/degree-K)
+ double hplanck; // Planck's constant (energy-time)
double mvv2e; // conversion of mv^2 to energy
double ftm2v; // conversion of ft/m to velocity
double mv2d; // conversion of mass/volume to density
double nktv2p; // conversion of NkT/V to pressure
double qqr2e; // conversion of q^2/r to energy
double qe2f; // conversion of qE to force
double vxmu2f; // conversion of vx dynamic-visc to force
double xxt2kmu; // conversion of xx/t to kinematic-visc
double dielectric; // dielectric constant
double qqrd2e; // q^2/r to energy w/ dielectric constant
double e_mass; // electron mass
double hhmrr2e; // conversion of (hbar)^2/(mr^2) to energy
double mvh2r; // conversion of mv/hbar to distance
// hbar = h/(2*pi)
int newton,newton_pair,newton_bond; // Newton's 3rd law settings
class Pair *pair;
char *pair_style;
class Bond *bond;
char *bond_style;
class Angle *angle;
char *angle_style;
class Dihedral *dihedral;
char *dihedral_style;
class Improper *improper;
char *improper_style;
class KSpace *kspace;
char *kspace_style;
// index [0] is not used in these arrays
double special_lj[4]; // 1-2, 1-3, 1-4 prefactors for LJ
double special_coul[4]; // 1-2, 1-3, 1-4 prefactors for Coulombics
int special_angle; // 0 if defined angles are ignored
// 1 if only weight 1,3 atoms if in an angle
int special_dihedral; // 0 if defined dihedrals are ignored
// 1 if only weight 1,4 atoms if in a dihedral
int special_extra; // extra space for added bonds
Force(class LAMMPS *);
~Force();
void init();
void create_pair(const char *, char *suffix = NULL);
class Pair *new_pair(const char *, char *, int &);
class Pair *pair_match(const char *, int);
void create_bond(const char *);
class Bond *new_bond(const char *);
class Bond *bond_match(const char *);
void create_angle(const char *);
class Angle *new_angle(const char *);
void create_dihedral(const char *);
class Dihedral *new_dihedral(const char *);
void create_improper(const char *);
class Improper *new_improper(const char *);
void create_kspace(int, char **);
void set_special(int, char **);
void bounds(char *, int, int &, int &);
double numeric(char *);
int inumeric(char *);
bigint memory_usage();
};
}
#endif
diff --git a/src/min.cpp b/src/min.cpp
index ebde5ca1a..7ae69fbb6 100644
--- a/src/min.cpp
+++ b/src/min.cpp
@@ -1,761 +1,761 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing author: Aidan Thompson (SNL)
improved CG and backtrack ls, added quadratic ls
Sources: Numerical Recipes frprmn routine
"Conjugate Gradient Method Without the Agonizing Pain" by
JR Shewchuk, http://www-2.cs.cmu.edu/~jrs/jrspapers.html#cg
------------------------------------------------------------------------- */
#include "lmptype.h"
#include "math.h"
#include "stdlib.h"
#include "string.h"
#include "min.h"
#include "atom.h"
#include "domain.h"
#include "comm.h"
#include "update.h"
#include "modify.h"
#include "fix_minimize.h"
#include "compute.h"
#include "neighbor.h"
#include "force.h"
#include "pair.h"
#include "bond.h"
#include "angle.h"
#include "dihedral.h"
#include "improper.h"
#include "kspace.h"
#include "output.h"
#include "thermo.h"
#include "timer.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
#define MIN(A,B) ((A) < (B)) ? (A) : (B)
#define MAX(A,B) ((A) > (B)) ? (A) : (B)
/* ---------------------------------------------------------------------- */
Min::Min(LAMMPS *lmp) : Pointers(lmp)
{
dmax = 0.1;
searchflag = 0;
linestyle = 0;
elist_global = elist_atom = NULL;
vlist_global = vlist_atom = NULL;
nextra_global = 0;
fextra = NULL;
nextra_atom = 0;
xextra_atom = fextra_atom = NULL;
extra_peratom = extra_nlen = NULL;
extra_max = NULL;
requestor = NULL;
}
/* ---------------------------------------------------------------------- */
Min::~Min()
{
delete [] elist_global;
delete [] elist_atom;
delete [] vlist_global;
delete [] vlist_atom;
delete [] fextra;
memory->sfree(xextra_atom);
memory->sfree(fextra_atom);
memory->destroy(extra_peratom);
memory->destroy(extra_nlen);
memory->destroy(extra_max);
memory->sfree(requestor);
}
/* ---------------------------------------------------------------------- */
void Min::init()
{
// create fix needed for storing atom-based quantities
// will delete it at end of run
char **fixarg = new char*[3];
fixarg[0] = (char *) "MINIMIZE";
fixarg[1] = (char *) "all";
fixarg[2] = (char *) "MINIMIZE";
modify->add_fix(3,fixarg);
delete [] fixarg;
fix_minimize = (FixMinimize *) modify->fix[modify->nfix-1];
// clear out extra global and per-atom dof
// will receive requests for new per-atom dof during pair init()
// can then add vectors to fix_minimize in setup()
nextra_global = 0;
delete [] fextra;
fextra = NULL;
nextra_atom = 0;
memory->sfree(xextra_atom);
memory->sfree(fextra_atom);
memory->destroy(extra_peratom);
memory->destroy(extra_nlen);
memory->destroy(extra_max);
memory->sfree(requestor);
xextra_atom = fextra_atom = NULL;
extra_peratom = extra_nlen = NULL;
extra_max = NULL;
requestor = NULL;
// virial_style:
// 1 if computed explicitly by pair->compute via sum over pair interactions
// 2 if computed implicitly by pair->virial_compute via sum over ghost atoms
if (force->newton_pair) virial_style = 2;
else virial_style = 1;
// setup lists of computes for global and per-atom PE and pressure
ev_setup();
// set flags for what arrays to clear in force_clear()
// need to clear torques,erforce if arrays exists
torqueflag = 0;
if (atom->torque_flag) torqueflag = 1;
erforceflag = 0;
if (atom->erforce_flag) erforceflag = 1;
// orthogonal vs triclinic simulation box
triclinic = domain->triclinic;
// reset reneighboring criteria if necessary
neigh_every = neighbor->every;
neigh_delay = neighbor->delay;
neigh_dist_check = neighbor->dist_check;
if (neigh_every != 1 || neigh_delay != 0 || neigh_dist_check != 1) {
if (comm->me == 0)
error->warning("Resetting reneighboring criteria during minimization");
}
neighbor->every = 1;
neighbor->delay = 0;
neighbor->dist_check = 1;
niter = neval = 0;
// style-specific initialization
init_style();
}
/* ----------------------------------------------------------------------
setup before run
------------------------------------------------------------------------- */
void Min::setup()
{
if (comm->me == 0 && screen) fprintf(screen,"Setting up minimization ...\n");
// setup extra global dof due to fixes
// cannot be done in init() b/c update init() is before modify init()
nextra_global = modify->min_dof();
if (nextra_global) fextra = new double[nextra_global];
// compute for potential energy
int id = modify->find_compute("thermo_pe");
if (id < 0) error->all("Minimization could not find thermo_pe compute");
pe_compute = modify->compute[id];
// style-specific setup does two tasks
// setup extra global dof vectors
// setup extra per-atom dof vectors due to requests from Pair classes
// cannot be done in init() b/c update init() is before modify/pair init()
setup_style();
// ndoftotal = total dof for entire minimization problem
// dof for atoms, extra per-atom, extra global
bigint ndofme = 3*atom->nlocal;
for (int m = 0; m < nextra_atom; m++)
ndofme += extra_peratom[m]*atom->nlocal;
MPI_Allreduce(&ndofme,&ndoftotal,1,MPI_LMP_BIGINT,MPI_SUM,world);
ndoftotal += nextra_global;
// setup domain, communication and neighboring
// acquire ghosts
// build neighbor lists
atom->setup();
if (triclinic) domain->x2lamda(atom->nlocal);
domain->pbc();
domain->reset_box();
comm->setup();
if (neighbor->style) neighbor->setup_bins();
comm->exchange();
if (atom->sortfreq > 0) atom->sort();
comm->borders();
if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
neighbor->build();
neighbor->ncalls = 0;
// remove these restriction eventually
if (nextra_global && searchflag == 0)
error->all("Cannot use a damped dynamics min style with fix box/relax");
if (nextra_atom && searchflag == 0)
error->all("Cannot use a damped dynamics min style with per-atom DOF");
// atoms may have migrated in comm->exchange()
reset_vectors();
// compute all forces
ev_set(update->ntimestep);
force_clear();
modify->setup_pre_force(vflag);
if (force->pair) force->pair->compute(eflag,vflag);
if (atom->molecular) {
if (force->bond) force->bond->compute(eflag,vflag);
if (force->angle) force->angle->compute(eflag,vflag);
if (force->dihedral) force->dihedral->compute(eflag,vflag);
if (force->improper) force->improper->compute(eflag,vflag);
}
if (force->kspace) {
force->kspace->setup();
force->kspace->compute(eflag,vflag);
}
if (force->newton) comm->reverse_comm();
// update per-atom minimization variables stored by pair styles
if (nextra_atom)
for (int m = 0; m < nextra_atom; m++)
requestor[m]->min_xf_get(m);
modify->setup(vflag);
output->setup(1);
// stats for Finish to print
ecurrent = pe_compute->compute_scalar();
if (nextra_global) ecurrent += modify->min_energy(fextra);
if (output->thermo->normflag) ecurrent /= atom->natoms;
einitial = ecurrent;
fnorm2_init = sqrt(fnorm_sqr());
fnorminf_init = fnorm_inf();
}
/* ----------------------------------------------------------------------
setup without output or one-time post-init setup
flag = 0 = just force calculation
flag = 1 = reneighbor and force calculation
------------------------------------------------------------------------- */
void Min::setup_minimal(int flag)
{
// setup domain, communication and neighboring
// acquire ghosts
// build neighbor lists
if (flag) {
if (triclinic) domain->x2lamda(atom->nlocal);
domain->pbc();
domain->reset_box();
comm->setup();
if (neighbor->style) neighbor->setup_bins();
comm->exchange();
comm->borders();
if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
neighbor->build();
neighbor->ncalls = 0;
}
// atoms may have migrated in comm->exchange()
reset_vectors();
// compute all forces
ev_set(update->ntimestep);
force_clear();
modify->setup_pre_force(vflag);
if (force->pair) force->pair->compute(eflag,vflag);
if (atom->molecular) {
if (force->bond) force->bond->compute(eflag,vflag);
if (force->angle) force->angle->compute(eflag,vflag);
if (force->dihedral) force->dihedral->compute(eflag,vflag);
if (force->improper) force->improper->compute(eflag,vflag);
}
if (force->kspace) {
force->kspace->setup();
force->kspace->compute(eflag,vflag);
}
if (force->newton) comm->reverse_comm();
// update per-atom minimization variables stored by pair styles
if (nextra_atom)
for (int m = 0; m < nextra_atom; m++)
requestor[m]->min_xf_get(m);
modify->setup(vflag);
// stats for Finish to print
ecurrent = pe_compute->compute_scalar();
if (nextra_global) ecurrent += modify->min_energy(fextra);
if (output->thermo->normflag) ecurrent /= atom->natoms;
einitial = ecurrent;
fnorm2_init = sqrt(fnorm_sqr());
fnorminf_init = fnorm_inf();
}
/* ----------------------------------------------------------------------
perform minimization, calling iterate() for N steps
------------------------------------------------------------------------- */
void Min::run(int n)
{
// minimizer iterations
stop_condition = iterate(n);
stopstr = stopstrings(stop_condition);
// if early exit from iterate loop:
// set update->nsteps to niter for Finish stats to print
// set output->next values to this timestep
// call energy_force() to insure vflag is set when forces computed
// output->write does final output for thermo, dump, restart files
// add ntimestep to all computes that store invocation times
// since are hardwiring call to thermo/dumps and computes may not be ready
if (stop_condition) {
update->nsteps = niter;
if (update->restrict_output == 0) {
for (int idump = 0; idump < output->ndump; idump++)
output->next_dump[idump] = update->ntimestep;
output->next_dump_any = update->ntimestep;
if (output->restart_every) output->next_restart = update->ntimestep;
}
output->next_thermo = update->ntimestep;
modify->addstep_compute_all(update->ntimestep);
ecurrent = energy_force(0);
output->write(update->ntimestep);
}
}
/* ---------------------------------------------------------------------- */
void Min::cleanup()
{
// stats for Finish to print
efinal = ecurrent;
fnorm2_final = sqrt(fnorm_sqr());
fnorminf_final = fnorm_inf();
// reset reneighboring criteria
neighbor->every = neigh_every;
neighbor->delay = neigh_delay;
neighbor->dist_check = neigh_dist_check;
// delete fix at end of run, so its atom arrays won't persist
modify->delete_fix("MINIMIZE");
}
/* ----------------------------------------------------------------------
evaluate potential energy and forces
may migrate atoms due to reneighboring
return new energy, which should include nextra_global dof
return negative gradient stored in atom->f
return negative gradient for nextra_global dof in fextra
------------------------------------------------------------------------- */
double Min::energy_force(int resetflag)
{
// check for reneighboring
// always communicate since minimizer moved atoms
int nflag = neighbor->decide();
if (nflag == 0) {
timer->stamp();
comm->forward_comm();
timer->stamp(TIME_COMM);
} else {
if (modify->n_min_pre_exchange) modify->min_pre_exchange();
if (triclinic) domain->x2lamda(atom->nlocal);
domain->pbc();
if (domain->box_change) {
domain->reset_box();
comm->setup();
if (neighbor->style) neighbor->setup_bins();
}
timer->stamp();
comm->exchange();
if (atom->sortfreq > 0 &&
update->ntimestep >= atom->nextsort) atom->sort();
comm->borders();
if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
timer->stamp(TIME_COMM);
neighbor->build();
timer->stamp(TIME_NEIGHBOR);
}
ev_set(update->ntimestep);
force_clear();
if (modify->n_min_pre_force) modify->min_pre_force(vflag);
timer->stamp();
if (force->pair) {
force->pair->compute(eflag,vflag);
timer->stamp(TIME_PAIR);
}
if (atom->molecular) {
if (force->bond) force->bond->compute(eflag,vflag);
if (force->angle) force->angle->compute(eflag,vflag);
if (force->dihedral) force->dihedral->compute(eflag,vflag);
if (force->improper) force->improper->compute(eflag,vflag);
timer->stamp(TIME_BOND);
}
if (force->kspace) {
force->kspace->compute(eflag,vflag);
timer->stamp(TIME_KSPACE);
}
if (force->newton) {
comm->reverse_comm();
timer->stamp(TIME_COMM);
}
// update per-atom minimization variables stored by pair styles
if (nextra_atom)
for (int m = 0; m < nextra_atom; m++)
requestor[m]->min_xf_get(m);
// fixes that affect minimization
if (modify->n_min_post_force) modify->min_post_force(vflag);
// compute potential energy of system
// normalize if thermo PE does
double energy = pe_compute->compute_scalar();
if (nextra_global) energy += modify->min_energy(fextra);
if (output->thermo->normflag) energy /= atom->natoms;
// if reneighbored, atoms migrated
// if resetflag = 1, update x0 of atoms crossing PBC
// reset vectors used by lo-level minimizer
if (nflag) {
if (resetflag) fix_minimize->reset_coords();
reset_vectors();
}
return energy;
}
/* ----------------------------------------------------------------------
clear force on own & ghost atoms
setup and clear other arrays as needed
------------------------------------------------------------------------- */
void Min::force_clear()
{
int i;
// clear global force array
// nall includes ghosts only if either newton flag is set
int nall;
if (force->newton) nall = atom->nlocal + atom->nghost;
else nall = atom->nlocal;
+ int ntot = nall * comm->nthreads;
double **f = atom->f;
- for (i = 0; i < nall*comm->nthreads; i++) {
+ for (i = 0; i < ntot; i++) {
f[i][0] = 0.0;
f[i][1] = 0.0;
f[i][2] = 0.0;
}
if (torqueflag) {
double **torque = atom->torque;
for (i = 0; i < nall; i++) {
torque[i][0] = 0.0;
torque[i][1] = 0.0;
torque[i][2] = 0.0;
}
}
if (erforceflag) {
double *erforce = atom->erforce;
- for (i = 0; i < nall; i++)
- erforce[i] = 0.0;
+ for (i = 0; i < nall; i++) erforce[i] = 0.0;
}
}
/* ----------------------------------------------------------------------
pair style makes request to add a per-atom variables to minimization
requestor stores callback to pair class to invoke during min
to get current variable and forces on it and to update the variable
return flag that pair can use if it registers multiple variables
------------------------------------------------------------------------- */
int Min::request(Pair *pair, int peratom, double maxvalue)
{
int n = nextra_atom + 1;
xextra_atom = (double **) memory->srealloc(xextra_atom,n*sizeof(double *),
"min:xextra_atom");
fextra_atom = (double **) memory->srealloc(fextra_atom,n*sizeof(double *),
"min:fextra_atom");
memory->grow(extra_peratom,n,"min:extra_peratom");
memory->grow(extra_nlen,n,"min:extra_nlen");
memory->grow(extra_max,n,"min:extra_max");
requestor = (Pair **) memory->srealloc(requestor,n*sizeof(Pair *),
"min:requestor");
requestor[nextra_atom] = pair;
extra_peratom[nextra_atom] = peratom;
extra_max[nextra_atom] = maxvalue;
nextra_atom++;
return nextra_atom-1;
}
/* ---------------------------------------------------------------------- */
void Min::modify_params(int narg, char **arg)
{
if (narg == 0) error->all("Illegal min_modify command");
int iarg = 0;
while (iarg < narg) {
if (strcmp(arg[iarg],"dmax") == 0) {
if (iarg+2 > narg) error->all("Illegal min_modify command");
dmax = atof(arg[iarg+1]);
iarg += 2;
} else if (strcmp(arg[iarg],"line") == 0) {
if (iarg+2 > narg) error->all("Illegal min_modify command");
if (strcmp(arg[iarg+1],"backtrack") == 0) linestyle = 0;
else if (strcmp(arg[iarg+1],"quadratic") == 0) linestyle = 1;
else error->all("Illegal min_modify command");
iarg += 2;
} else error->all("Illegal min_modify command");
}
}
/* ----------------------------------------------------------------------
setup lists of computes for global and per-atom PE and pressure
------------------------------------------------------------------------- */
void Min::ev_setup()
{
delete [] elist_global;
delete [] elist_atom;
delete [] vlist_global;
delete [] vlist_atom;
elist_global = elist_atom = NULL;
vlist_global = vlist_atom = NULL;
nelist_global = nelist_atom = 0;
nvlist_global = nvlist_atom = 0;
for (int i = 0; i < modify->ncompute; i++) {
if (modify->compute[i]->peflag) nelist_global++;
if (modify->compute[i]->peatomflag) nelist_atom++;
if (modify->compute[i]->pressflag) nvlist_global++;
if (modify->compute[i]->pressatomflag) nvlist_atom++;
}
if (nelist_global) elist_global = new Compute*[nelist_global];
if (nelist_atom) elist_atom = new Compute*[nelist_atom];
if (nvlist_global) vlist_global = new Compute*[nvlist_global];
if (nvlist_atom) vlist_atom = new Compute*[nvlist_atom];
nelist_global = nelist_atom = 0;
nvlist_global = nvlist_atom = 0;
for (int i = 0; i < modify->ncompute; i++) {
if (modify->compute[i]->peflag)
elist_global[nelist_global++] = modify->compute[i];
if (modify->compute[i]->peatomflag)
elist_atom[nelist_atom++] = modify->compute[i];
if (modify->compute[i]->pressflag)
vlist_global[nvlist_global++] = modify->compute[i];
if (modify->compute[i]->pressatomflag)
vlist_atom[nvlist_atom++] = modify->compute[i];
}
}
/* ----------------------------------------------------------------------
set eflag,vflag for current iteration
invoke matchstep() on all timestep-dependent computes to clear their arrays
eflag/vflag based on computes that need info on this ntimestep
always set eflag_global = 1, since need energy every iteration
eflag = 0 = no energy computation
eflag = 1 = global energy only
eflag = 2 = per-atom energy only
eflag = 3 = both global and per-atom energy
vflag = 0 = no virial computation (pressure)
vflag = 1 = global virial with pair portion via sum of pairwise interactions
vflag = 2 = global virial with pair portion via F dot r including ghosts
vflag = 4 = per-atom virial only
vflag = 5 or 6 = both global and per-atom virial
------------------------------------------------------------------------- */
void Min::ev_set(bigint ntimestep)
{
int i,flag;
int eflag_global = 1;
for (i = 0; i < nelist_global; i++)
elist_global[i]->matchstep(ntimestep);
flag = 0;
int eflag_atom = 0;
for (i = 0; i < nelist_atom; i++)
if (elist_atom[i]->matchstep(ntimestep)) flag = 1;
if (flag) eflag_atom = 2;
if (eflag_global) update->eflag_global = update->ntimestep;
if (eflag_atom) update->eflag_atom = update->ntimestep;
eflag = eflag_global + eflag_atom;
flag = 0;
int vflag_global = 0;
for (i = 0; i < nvlist_global; i++)
if (vlist_global[i]->matchstep(ntimestep)) flag = 1;
if (flag) vflag_global = virial_style;
flag = 0;
int vflag_atom = 0;
for (i = 0; i < nvlist_atom; i++)
if (vlist_atom[i]->matchstep(ntimestep)) flag = 1;
if (flag) vflag_atom = 4;
if (vflag_global) update->vflag_global = update->ntimestep;
if (vflag_atom) update->vflag_atom = update->ntimestep;
vflag = vflag_global + vflag_atom;
}
/* ----------------------------------------------------------------------
compute and return ||force||_2^2
------------------------------------------------------------------------- */
double Min::fnorm_sqr()
{
int i,n;
double *fatom;
double local_norm2_sqr = 0.0;
for (i = 0; i < nvec; i++) local_norm2_sqr += fvec[i]*fvec[i];
if (nextra_atom) {
for (int m = 0; m < nextra_atom; m++) {
fatom = fextra_atom[m];
n = extra_nlen[m];
for (i = 0; i < n; i++)
local_norm2_sqr += fatom[i]*fatom[i];
}
}
double norm2_sqr = 0.0;
MPI_Allreduce(&local_norm2_sqr,&norm2_sqr,1,MPI_DOUBLE,MPI_SUM,world);
if (nextra_global)
for (i = 0; i < nextra_global; i++)
norm2_sqr += fextra[i]*fextra[i];
return norm2_sqr;
}
/* ----------------------------------------------------------------------
compute and return ||force||_inf
------------------------------------------------------------------------- */
double Min::fnorm_inf()
{
int i,n;
double *fatom;
double local_norm_inf = 0.0;
for (i = 0; i < nvec; i++)
local_norm_inf = MAX(fabs(fvec[i]),local_norm_inf);
if (nextra_atom) {
for (int m = 0; m < nextra_atom; m++) {
fatom = fextra_atom[m];
n = extra_nlen[m];
for (i = 0; i < n; i++)
local_norm_inf = MAX(fabs(fatom[i]),local_norm_inf);
}
}
double norm_inf = 0.0;
MPI_Allreduce(&local_norm_inf,&norm_inf,1,MPI_DOUBLE,MPI_MAX,world);
if (nextra_global)
for (i = 0; i < nextra_global; i++)
norm_inf = MAX(fabs(fextra[i]),norm_inf);
return norm_inf;
}
/* ----------------------------------------------------------------------
possible stop conditions
------------------------------------------------------------------------- */
char *Min::stopstrings(int n)
{
char *strings[] = {"max iterations",
"max force evaluations",
"energy tolerance",
"force tolerance",
"search direction is not downhill",
"linesearch alpha is zero",
"forces are zero",
"quadratic factors are zero",
"trust region too small",
"HFTN minimizer error"};
return strings[n];
}
diff --git a/src/pair_lj_gromacs.cpp b/src/pair_lj_gromacs.cpp
index 3b52bc36d..462c1f2f2 100644
--- a/src/pair_lj_gromacs.cpp
+++ b/src/pair_lj_gromacs.cpp
@@ -1,420 +1,420 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing author: Mark Stevens (SNL)
------------------------------------------------------------------------- */
#include "math.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "pair_lj_gromacs.h"
#include "atom.h"
#include "comm.h"
#include "force.h"
#include "neighbor.h"
#include "neigh_list.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#define MAX(a,b) ((a) > (b) ? (a) : (b))
/* ---------------------------------------------------------------------- */
PairLJGromacs::PairLJGromacs(LAMMPS *lmp) : Pair(lmp) {}
/* ---------------------------------------------------------------------- */
PairLJGromacs::~PairLJGromacs()
{
if (allocated) {
memory->destroy(setflag);
memory->destroy(cutsq);
memory->destroy(cut);
memory->destroy(cut_inner);
memory->destroy(cut_inner_sq);
memory->destroy(epsilon);
memory->destroy(sigma);
memory->destroy(lj1);
memory->destroy(lj2);
memory->destroy(lj3);
memory->destroy(lj4);
memory->destroy(ljsw1);
memory->destroy(ljsw2);
memory->destroy(ljsw3);
memory->destroy(ljsw4);
memory->destroy(ljsw5);
}
}
/* ---------------------------------------------------------------------- */
void PairLJGromacs::compute(int eflag, int vflag)
{
int i,j,ii,jj,inum,jnum,itype,jtype;
double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair;
double rsq,r2inv,r6inv,forcelj,factor_lj;
double r,t,fswitch,eswitch;
int *ilist,*jlist,*numneigh,**firstneigh;
evdwl = 0.0;
if (eflag || vflag) ev_setup(eflag,vflag);
else evflag = vflag_fdotr = 0;
double **x = atom->x;
double **f = atom->f;
int *type = atom->type;
int nlocal = atom->nlocal;
double *special_lj = force->special_lj;
int newton_pair = force->newton_pair;
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
// loop over neighbors of my atoms
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
itype = type[i];
jlist = firstneigh[i];
jnum = numneigh[i];
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
factor_lj = special_lj[sbmask(j)];
j &= NEIGHMASK;
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
jtype = type[j];
if (rsq < cutsq[itype][jtype]) {
r2inv = 1.0/rsq;
r6inv = r2inv*r2inv*r2inv;
forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]);
if (rsq > cut_inner_sq[itype][jtype]) {
r = sqrt(rsq);
t = r - cut_inner[itype][jtype];
fswitch = r*t*t*(ljsw1[itype][jtype] + ljsw2[itype][jtype]*t);
forcelj += fswitch;
}
fpair = factor_lj*forcelj*r2inv;
f[i][0] += delx*fpair;
f[i][1] += dely*fpair;
f[i][2] += delz*fpair;
if (newton_pair || j < nlocal) {
f[j][0] -= delx*fpair;
f[j][1] -= dely*fpair;
f[j][2] -= delz*fpair;
}
if (eflag) {
evdwl = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]);
+ evdwl += ljsw5[itype][jtype];
if (rsq > cut_inner_sq[itype][jtype]) {
- eswitch = t*t*t*(ljsw3[itype][jtype] + ljsw4[itype][jtype]*t) +
- ljsw5[itype][jtype];
+ eswitch = t*t*t*(ljsw3[itype][jtype] + ljsw4[itype][jtype]*t);
evdwl += eswitch;
}
evdwl *= factor_lj;
}
if (evflag) ev_tally(i,j,nlocal,newton_pair,
evdwl,0.0,fpair,delx,dely,delz);
}
}
}
if (vflag_fdotr) virial_fdotr_compute();
}
/* ----------------------------------------------------------------------
allocate all arrays
------------------------------------------------------------------------- */
void PairLJGromacs::allocate()
{
allocated = 1;
int n = atom->ntypes;
memory->create(setflag,n+1,n+1,"pair:setflag");
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j++)
setflag[i][j] = 0;
memory->create(cutsq,n+1,n+1,"pair:cutsq");
memory->create(cut,n+1,n+1,"pair:cut");
memory->create(cut_inner,n+1,n+1,"pair:cut_inner");
memory->create(cut_inner_sq,n+1,n+1,"pair:cut_inner_sq");
memory->create(epsilon,n+1,n+1,"pair:epsilon");
memory->create(sigma,n+1,n+1,"pair:sigma");
memory->create(lj1,n+1,n+1,"pair:lj1");
memory->create(lj2,n+1,n+1,"pair:lj2");
memory->create(lj3,n+1,n+1,"pair:lj3");
memory->create(lj4,n+1,n+1,"pair:lj4");
memory->create(ljsw1,n+1,n+1,"pair:ljsw1");
memory->create(ljsw2,n+1,n+1,"pair:ljsw2");
memory->create(ljsw3,n+1,n+1,"pair:ljsw3");
memory->create(ljsw4,n+1,n+1,"pair:ljsw4");
memory->create(ljsw5,n+1,n+1,"pair:ljsw5");
}
/* ----------------------------------------------------------------------
global settings
------------------------------------------------------------------------- */
void PairLJGromacs::settings(int narg, char **arg)
{
if (narg != 2) error->all("Illegal pair_style command");
cut_inner_global = force->numeric(arg[0]);
cut_global = force->numeric(arg[1]);
if (cut_inner_global <= 0.0 || cut_inner_global > cut_global)
error->all("Illegal pair_style command");
// reset cutoffs that have been explicitly set
if (allocated) {
int i,j;
for (i = 1; i <= atom->ntypes; i++)
for (j = i+1; j <= atom->ntypes; j++)
if (setflag[i][j]) {
cut_inner[i][j] = cut_inner_global;
cut[i][j] = cut_global;
}
}
}
/* ----------------------------------------------------------------------
set coeffs for one or more type pairs
------------------------------------------------------------------------- */
void PairLJGromacs::coeff(int narg, char **arg)
{
if (narg != 4 && narg != 6)
error->all("Incorrect args for pair coefficients");
if (!allocated) allocate();
int ilo,ihi,jlo,jhi;
force->bounds(arg[0],atom->ntypes,ilo,ihi);
force->bounds(arg[1],atom->ntypes,jlo,jhi);
double epsilon_one = force->numeric(arg[2]);
double sigma_one = force->numeric(arg[3]);
double cut_inner_one = cut_inner_global;
double cut_one = cut_global;
if (narg == 6) {
cut_inner_one = force->numeric(arg[4]);
cut_one = force->numeric(arg[5]);
}
if (cut_inner_one <= 0.0 || cut_inner_one > cut_one)
error->all("Incorrect args for pair coefficients");
int count = 0;
for (int i = ilo; i <= ihi; i++) {
for (int j = MAX(jlo,i); j <= jhi; j++) {
epsilon[i][j] = epsilon_one;
sigma[i][j] = sigma_one;
cut_inner[i][j] = cut_inner_one;
cut[i][j] = cut_one;
setflag[i][j] = 1;
count++;
}
}
if (count == 0) error->all("Incorrect args for pair coefficients");
}
/* ----------------------------------------------------------------------
init for one type pair i,j and corresponding j,i
------------------------------------------------------------------------- */
double PairLJGromacs::init_one(int i, int j)
{
if (setflag[i][j] == 0) {
epsilon[i][j] = mix_energy(epsilon[i][i],epsilon[j][j],
sigma[i][i],sigma[j][j]);
sigma[i][j] = mix_distance(sigma[i][i],sigma[j][j]);
cut_inner[i][j] = mix_distance(cut_inner[i][i],cut_inner[j][j]);
cut[i][j] = mix_distance(cut[i][i],cut[j][j]);
}
cut_inner_sq[i][j] = cut_inner[i][j]*cut_inner[i][j];
lj1[i][j] = 48.0 * epsilon[i][j] * pow(sigma[i][j],12.0);
lj2[i][j] = 24.0 * epsilon[i][j] * pow(sigma[i][j],6.0);
lj3[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],12.0);
lj4[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],6.0);
double r6inv = 1.0/pow(cut[i][j],6.0);
double r8inv = 1.0/pow(cut[i][j],8.0);
double t = cut[i][j] - cut_inner[i][j];
double t2inv = 1.0/(t*t);
double t3inv = t2inv/t;
double t3 = 1.0/t3inv;
double a6 = (7.0*cut_inner[i][j] - 10.0*cut[i][j])*r8inv*t2inv;
double b6 = (9.0*cut[i][j] - 7.0*cut_inner[i][j])*r8inv*t3inv;
double a12 = (13.0*cut_inner[i][j] - 16.0*cut[i][j])*r6inv*r8inv*t2inv;
double b12 = (15.0*cut[i][j] - 13.0*cut_inner[i][j])*r6inv*r8inv*t3inv;
double c6 = r6inv - t3*(6.0*a6/3.0 + 6.0*b6*t/4.0);
double c12 = r6inv*r6inv - t3*(12.0*a12/3.0 + 12.0*b12*t/4.0);
ljsw1[i][j] = lj1[i][j]*a12 - lj2[i][j]*a6;
ljsw2[i][j] = lj1[i][j]*b12 - lj2[i][j]*b6;
ljsw3[i][j] = -lj3[i][j]*12.0*a12/3.0 + lj4[i][j]*6.0*a6/3.0;
ljsw4[i][j] = -lj3[i][j]*12.0*b12/4.0 + lj4[i][j]*6.0*b6/4.0;
ljsw5[i][j] = -lj3[i][j]*c12 + lj4[i][j]*c6;
cut_inner[j][i] = cut_inner[i][j];
cut_inner_sq[j][i] = cut_inner_sq[i][j];
lj1[j][i] = lj1[i][j];
lj2[j][i] = lj2[i][j];
lj3[j][i] = lj3[i][j];
lj4[j][i] = lj4[i][j];
ljsw1[j][i] = ljsw1[i][j];
ljsw2[j][i] = ljsw2[i][j];
ljsw3[j][i] = ljsw3[i][j];
ljsw4[j][i] = ljsw4[i][j];
ljsw5[j][i] = ljsw5[i][j];
return cut[i][j];
}
/* ----------------------------------------------------------------------
proc 0 writes to restart file
------------------------------------------------------------------------- */
void PairLJGromacs::write_restart(FILE *fp)
{
write_restart_settings(fp);
int i,j;
for (i = 1; i <= atom->ntypes; i++)
for (j = i; j <= atom->ntypes; j++) {
fwrite(&setflag[i][j],sizeof(int),1,fp);
if (setflag[i][j]) {
fwrite(&epsilon[i][j],sizeof(double),1,fp);
fwrite(&sigma[i][j],sizeof(double),1,fp);
fwrite(&cut_inner[i][j],sizeof(double),1,fp);
fwrite(&cut[i][j],sizeof(double),1,fp);
}
}
}
/* ----------------------------------------------------------------------
proc 0 reads from restart file, bcasts
------------------------------------------------------------------------- */
void PairLJGromacs::read_restart(FILE *fp)
{
read_restart_settings(fp);
allocate();
int i,j;
int me = comm->me;
for (i = 1; i <= atom->ntypes; i++)
for (j = i; j <= atom->ntypes; j++) {
if (me == 0) fread(&setflag[i][j],sizeof(int),1,fp);
MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world);
if (setflag[i][j]) {
if (me == 0) {
fread(&epsilon[i][j],sizeof(double),1,fp);
fread(&sigma[i][j],sizeof(double),1,fp);
fread(&cut_inner[i][j],sizeof(double),1,fp);
fread(&cut[i][j],sizeof(double),1,fp);
}
MPI_Bcast(&epsilon[i][j],1,MPI_DOUBLE,0,world);
MPI_Bcast(&sigma[i][j],1,MPI_DOUBLE,0,world);
MPI_Bcast(&cut_inner[i][j],1,MPI_DOUBLE,0,world);
MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world);
}
}
}
/* ----------------------------------------------------------------------
proc 0 writes to restart file
------------------------------------------------------------------------- */
void PairLJGromacs::write_restart_settings(FILE *fp)
{
fwrite(&cut_inner_global,sizeof(double),1,fp);
fwrite(&cut_global,sizeof(double),1,fp);
fwrite(&offset_flag,sizeof(int),1,fp);
fwrite(&mix_flag,sizeof(int),1,fp);
}
/* ----------------------------------------------------------------------
proc 0 reads from restart file, bcasts
------------------------------------------------------------------------- */
void PairLJGromacs::read_restart_settings(FILE *fp)
{
int me = comm->me;
if (me == 0) {
fread(&cut_inner_global,sizeof(double),1,fp);
fread(&cut_global,sizeof(double),1,fp);
fread(&offset_flag,sizeof(int),1,fp);
fread(&mix_flag,sizeof(int),1,fp);
}
MPI_Bcast(&cut_inner_global,1,MPI_DOUBLE,0,world);
MPI_Bcast(&cut_global,1,MPI_DOUBLE,0,world);
MPI_Bcast(&offset_flag,1,MPI_INT,0,world);
MPI_Bcast(&mix_flag,1,MPI_INT,0,world);
}
/* ---------------------------------------------------------------------- */
double PairLJGromacs::single(int i, int j, int itype, int jtype,
double rsq,
double factor_coul, double factor_lj,
double &fforce)
{
double r2inv,r6inv,forcelj,philj;
double r,t,fswitch,phiswitch;
r2inv = 1.0/rsq;
r6inv = r2inv*r2inv*r2inv;
forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]);
if (rsq > cut_inner_sq[itype][jtype]) {
r = sqrt(rsq);
t = r - cut_inner[itype][jtype];
fswitch = r*t*t*(ljsw1[itype][jtype] + ljsw2[itype][jtype]*t);
forcelj += fswitch;
}
fforce = factor_lj*forcelj*r2inv;
philj = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]);
+ philj += ljsw5[itype][jtype];
if (rsq > cut_inner_sq[itype][jtype]) {
- phiswitch = t*t*t*(ljsw3[itype][jtype] + ljsw4[itype][jtype]*t) +
- ljsw5[itype][jtype];
+ phiswitch = t*t*t*(ljsw3[itype][jtype] + ljsw4[itype][jtype]*t);
philj += phiswitch;
}
return factor_lj*philj;
}
diff --git a/src/pair_lj_gromacs_coul_gromacs.cpp b/src/pair_lj_gromacs_coul_gromacs.cpp
index 356a4b768..e60cf8229 100644
--- a/src/pair_lj_gromacs_coul_gromacs.cpp
+++ b/src/pair_lj_gromacs_coul_gromacs.cpp
@@ -1,487 +1,487 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing author: Mark Stevens (SNL)
------------------------------------------------------------------------- */
#include "math.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "pair_lj_gromacs_coul_gromacs.h"
#include "atom.h"
#include "comm.h"
#include "force.h"
#include "neighbor.h"
#include "neigh_list.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#define MAX(a,b) ((a) > (b) ? (a) : (b))
/* ---------------------------------------------------------------------- */
PairLJGromacsCoulGromacs::PairLJGromacsCoulGromacs(LAMMPS *lmp) : Pair(lmp) {}
/* ---------------------------------------------------------------------- */
PairLJGromacsCoulGromacs::~PairLJGromacsCoulGromacs()
{
if (allocated) {
memory->destroy(setflag);
memory->destroy(cutsq);
memory->destroy(epsilon);
memory->destroy(sigma);
memory->destroy(lj1);
memory->destroy(lj2);
memory->destroy(lj3);
memory->destroy(lj4);
memory->destroy(ljsw1);
memory->destroy(ljsw2);
memory->destroy(ljsw3);
memory->destroy(ljsw4);
memory->destroy(ljsw5);
}
}
/* ---------------------------------------------------------------------- */
void PairLJGromacsCoulGromacs::compute(int eflag, int vflag)
{
int i,j,ii,jj,inum,jnum,itype,jtype;
double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,fpair;
double rsq,r2inv,r6inv,forcecoul,forcelj,factor_coul,factor_lj;
double r,tlj,tc,fswitch,fswitchcoul,eswitch,ecoulswitch;
int *ilist,*jlist,*numneigh,**firstneigh;
evdwl = ecoul = 0.0;
if (eflag || vflag) ev_setup(eflag,vflag);
else evflag = vflag_fdotr = 0;
double **x = atom->x;
double **f = atom->f;
double *q = atom->q;
int *type = atom->type;
int nlocal = atom->nlocal;
double *special_coul = force->special_coul;
double *special_lj = force->special_lj;
int newton_pair = force->newton_pair;
double qqrd2e = force->qqrd2e;
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
// loop over neighbors of my atoms
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
qtmp = q[i];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
itype = type[i];
jlist = firstneigh[i];
jnum = numneigh[i];
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
factor_lj = special_lj[sbmask(j)];
factor_coul = special_coul[sbmask(j)];
j &= NEIGHMASK;
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
if (rsq < cut_bothsq) {
r2inv = 1.0/rsq;
// skip if qi or qj = 0.0 since this potential may be used as
// coarse-grain model with many uncharged atoms
if (rsq < cut_coulsq && qtmp != 0.0 && q[j] != 0.0) {
forcecoul = qqrd2e * qtmp*q[j]*sqrt(r2inv);
if (rsq > cut_coul_innersq) {
r = sqrt(rsq);
tc = r - cut_coul_inner;
fswitchcoul = qqrd2e * qtmp*q[j]*r*tc*tc*(coulsw1 + coulsw2*tc);
forcecoul += fswitchcoul;
}
} else forcecoul = 0.0;
if (rsq < cut_ljsq) {
r6inv = r2inv*r2inv*r2inv;
jtype = type[j];
forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]);
if (rsq > cut_lj_innersq) {
r = sqrt(rsq);
tlj = r - cut_lj_inner;
fswitch = r*tlj*tlj*(ljsw1[itype][jtype] +
ljsw2[itype][jtype]*tlj);
forcelj += fswitch;
}
} else forcelj = 0.0;
fpair = (factor_coul*forcecoul + factor_lj*forcelj) * r2inv;
f[i][0] += delx*fpair;
f[i][1] += dely*fpair;
f[i][2] += delz*fpair;
if (newton_pair || j < nlocal) {
f[j][0] -= delx*fpair;
f[j][1] -= dely*fpair;
f[j][2] -= delz*fpair;
}
if (eflag) {
if (rsq < cut_coulsq) {
ecoul = qqrd2e * qtmp*q[j] * (sqrt(r2inv) - coulsw5);
if (rsq > cut_coul_innersq) {
ecoulswitch = tc*tc*tc * (coulsw3 + coulsw4*tc);
ecoul += qqrd2e*qtmp*q[j]*ecoulswitch;
}
ecoul *= factor_coul;
} else ecoul = 0.0;
if (rsq < cut_ljsq) {
evdwl = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]);
+ evdwl += ljsw5[itype][jtype];
if (rsq > cut_lj_innersq) {
eswitch = tlj*tlj*tlj *
- (ljsw3[itype][jtype] + ljsw4[itype][jtype]*tlj) +
- ljsw5[itype][jtype];
+ (ljsw3[itype][jtype] + ljsw4[itype][jtype]*tlj);
evdwl += eswitch;
}
evdwl *= factor_lj;
} else evdwl = 0.0;
}
if (evflag) ev_tally(i,j,nlocal,newton_pair,
evdwl,ecoul,fpair,delx,dely,delz);
}
}
}
if (vflag_fdotr) virial_fdotr_compute();
}
/* ----------------------------------------------------------------------
allocate all arrays
------------------------------------------------------------------------- */
void PairLJGromacsCoulGromacs::allocate()
{
allocated = 1;
int n = atom->ntypes;
memory->create(setflag,n+1,n+1,"pair:setflag");
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j++)
setflag[i][j] = 0;
memory->create(cutsq,n+1,n+1,"pair:cutsq");
memory->create(epsilon,n+1,n+1,"pair:epsilon");
memory->create(sigma,n+1,n+1,"pair:sigma");
memory->create(lj1,n+1,n+1,"pair:lj1");
memory->create(lj2,n+1,n+1,"pair:lj2");
memory->create(lj3,n+1,n+1,"pair:lj3");
memory->create(lj4,n+1,n+1,"pair:lj4");
memory->create(ljsw1,n+1,n+1,"pair:ljsw1");
memory->create(ljsw2,n+1,n+1,"pair:ljsw2");
memory->create(ljsw3,n+1,n+1,"pair:ljsw3");
memory->create(ljsw4,n+1,n+1,"pair:ljsw4");
memory->create(ljsw5,n+1,n+1,"pair:ljsw5");
}
/* ----------------------------------------------------------------------
global settings
------------------------------------------------------------------------- */
void PairLJGromacsCoulGromacs::settings(int narg, char **arg)
{
if (narg != 2 && narg != 4)
error->all("Illegal pair_style command");
cut_lj_inner = force->numeric(arg[0]);
cut_lj = force->numeric(arg[1]);
if (narg == 2) {
cut_coul_inner = cut_lj_inner;
cut_coul = cut_lj;
} else {
cut_coul_inner = force->numeric(arg[2]);
cut_coul = force->numeric(arg[3]);
}
if (cut_lj_inner <= 0.0 || cut_coul_inner < 0.0)
error->all("Illegal pair_style command");
if (cut_lj_inner > cut_lj || cut_coul_inner > cut_coul)
error->all("Illegal pair_style command");
}
/* ----------------------------------------------------------------------
set coeffs for one or more type pairs
------------------------------------------------------------------------- */
void PairLJGromacsCoulGromacs::coeff(int narg, char **arg)
{
if (narg != 4) error->all("Incorrect args for pair coefficients");
if (!allocated) allocate();
int ilo,ihi,jlo,jhi;
force->bounds(arg[0],atom->ntypes,ilo,ihi);
force->bounds(arg[1],atom->ntypes,jlo,jhi);
double epsilon_one = force->numeric(arg[2]);
double sigma_one = force->numeric(arg[3]);
int count = 0;
for (int i = ilo; i <= ihi; i++) {
for (int j = MAX(jlo,i); j <= jhi; j++) {
epsilon[i][j] = epsilon_one;
sigma[i][j] = sigma_one;
setflag[i][j] = 1;
count++;
}
}
if (count == 0) error->all("Incorrect args for pair coefficients");
}
/* ----------------------------------------------------------------------
init specific to this pair style
------------------------------------------------------------------------- */
void PairLJGromacsCoulGromacs::init_style()
{
if (!atom->q_flag)
error->all("Pair style lj/gromacs/coul/gromacs requires atom attribute q");
neighbor->request(this);
cut_lj_innersq = cut_lj_inner * cut_lj_inner;
cut_ljsq = cut_lj * cut_lj;
cut_coul_innersq = cut_coul_inner * cut_coul_inner;
cut_coulsq = cut_coul * cut_coul;
cut_bothsq = MAX(cut_ljsq,cut_coulsq);
}
/* ----------------------------------------------------------------------
init for one type pair i,j and corresponding j,i
------------------------------------------------------------------------- */
double PairLJGromacsCoulGromacs::init_one(int i, int j)
{
if (setflag[i][j] == 0) {
epsilon[i][j] = mix_energy(epsilon[i][i],epsilon[j][j],
sigma[i][i],sigma[j][j]);
sigma[i][j] = mix_distance(sigma[i][i],sigma[j][j]);
}
double cut = MAX(cut_lj,cut_coul);
lj1[i][j] = 48.0 * epsilon[i][j] * pow(sigma[i][j],12.0);
lj2[i][j] = 24.0 * epsilon[i][j] * pow(sigma[i][j],6.0);
lj3[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],12.0);
lj4[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],6.0);
double r6inv = 1.0/pow(cut_lj,6.0);
double r8inv = 1.0/pow(cut_lj,8.0);
double t = cut_lj - cut_lj_inner;
double t2inv = 1.0/(t*t);
double t3inv = t2inv/t;
double t3 = 1.0/t3inv;
double a6 = (7.0*cut_lj_inner - 10.0*cut_lj)*r8inv*t2inv;
double b6 = (9.0*cut_lj - 7.0*cut_lj_inner)*r8inv*t3inv;
double a12 = (13.0*cut_lj_inner - 16.0*cut_lj)*r6inv*r8inv*t2inv;
double b12 = (15.0*cut_lj - 13.0*cut_lj_inner)*r6inv*r8inv*t3inv;
double c6 = r6inv - t3*(6.0*a6/3.0 + 6.0*b6*t/4.0);
double c12 = r6inv*r6inv - t3*(12.0*a12/3.0 + 12.0*b12*t/4.0);
ljsw1[i][j] = lj1[i][j]*a12 - lj2[i][j]*a6;
ljsw2[i][j] = lj1[i][j]*b12 - lj2[i][j]*b6;
ljsw3[i][j] = -lj3[i][j]*12.0*a12/3.0 + lj4[i][j]*6.0*a6/3.0;
ljsw4[i][j] = -lj3[i][j]*12.0*b12/4.0 + lj4[i][j]*6.0*b6/4.0;
ljsw5[i][j] = -lj3[i][j]*c12 + lj4[i][j]*c6;
double r3inv = 1.0/pow(cut_coul,3.0);
t = cut_coul - cut_coul_inner;
t2inv = 1.0/(t*t);
t3inv = t2inv/t;
double a1 = (2.0*cut_coul_inner - 5.0*cut_coul) * r3inv*t2inv;
double b1 = (4.0*cut_coul - 2.0*cut_coul_inner) * r3inv*t3inv;
coulsw1 = a1;
coulsw2 = b1;
coulsw3 = -a1/3.0;
coulsw4 = -b1/4.0;
coulsw5 = 1.0/cut_coul - t*t*t*(a1/3.0 + b1*t/4.0);
lj1[j][i] = lj1[i][j];
lj2[j][i] = lj2[i][j];
lj3[j][i] = lj3[i][j];
lj4[j][i] = lj4[i][j];
ljsw1[j][i] = ljsw1[i][j];
ljsw2[j][i] = ljsw2[i][j];
ljsw3[j][i] = ljsw3[i][j];
ljsw4[j][i] = ljsw4[i][j];
ljsw5[j][i] = ljsw5[i][j];
return cut;
}
/* ----------------------------------------------------------------------
proc 0 writes to restart file
------------------------------------------------------------------------- */
void PairLJGromacsCoulGromacs::write_restart(FILE *fp)
{
write_restart_settings(fp);
int i,j;
for (i = 1; i <= atom->ntypes; i++)
for (j = i; j <= atom->ntypes; j++) {
fwrite(&setflag[i][j],sizeof(int),1,fp);
if (setflag[i][j]) {
fwrite(&epsilon[i][j],sizeof(double),1,fp);
fwrite(&sigma[i][j],sizeof(double),1,fp);
}
}
}
/* ----------------------------------------------------------------------
proc 0 reads from restart file, bcasts
------------------------------------------------------------------------- */
void PairLJGromacsCoulGromacs::read_restart(FILE *fp)
{
read_restart_settings(fp);
allocate();
int i,j;
int me = comm->me;
for (i = 1; i <= atom->ntypes; i++)
for (j = i; j <= atom->ntypes; j++) {
if (me == 0) fread(&setflag[i][j],sizeof(int),1,fp);
MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world);
if (setflag[i][j]) {
if (me == 0) {
fread(&epsilon[i][j],sizeof(double),1,fp);
fread(&sigma[i][j],sizeof(double),1,fp);
}
MPI_Bcast(&epsilon[i][j],1,MPI_DOUBLE,0,world);
MPI_Bcast(&sigma[i][j],1,MPI_DOUBLE,0,world);
}
}
}
/* ----------------------------------------------------------------------
proc 0 writes to restart file
------------------------------------------------------------------------- */
void PairLJGromacsCoulGromacs::write_restart_settings(FILE *fp)
{
fwrite(&cut_lj_inner,sizeof(double),1,fp);
fwrite(&cut_lj,sizeof(double),1,fp);
fwrite(&cut_coul_inner,sizeof(double),1,fp);
fwrite(&cut_coul,sizeof(double),1,fp);
fwrite(&offset_flag,sizeof(int),1,fp);
fwrite(&mix_flag,sizeof(int),1,fp);
}
/* ----------------------------------------------------------------------
proc 0 reads from restart file, bcasts
------------------------------------------------------------------------- */
void PairLJGromacsCoulGromacs::read_restart_settings(FILE *fp)
{
if (comm->me == 0) {
fread(&cut_lj_inner,sizeof(double),1,fp);
fread(&cut_lj,sizeof(double),1,fp);
fread(&cut_coul_inner,sizeof(double),1,fp);
fread(&cut_coul,sizeof(double),1,fp);
fread(&offset_flag,sizeof(int),1,fp);
fread(&mix_flag,sizeof(int),1,fp);
}
MPI_Bcast(&cut_lj_inner,1,MPI_DOUBLE,0,world);
MPI_Bcast(&cut_lj,1,MPI_DOUBLE,0,world);
MPI_Bcast(&cut_coul_inner,1,MPI_DOUBLE,0,world);
MPI_Bcast(&cut_coul,1,MPI_DOUBLE,0,world);
MPI_Bcast(&offset_flag,1,MPI_INT,0,world);
MPI_Bcast(&mix_flag,1,MPI_INT,0,world);
}
/* ---------------------------------------------------------------------- */
double PairLJGromacsCoulGromacs::single(int i, int j, int itype, int jtype,
double rsq,
double factor_coul, double factor_lj,
double &fforce)
{
double r2inv,r6inv,forcecoul,forcelj,phicoul,philj;
double r,tlj,tc,fswitch,phiswitch,fswitchcoul,phiswitchcoul;
r2inv = 1.0/rsq;
if (rsq < cut_coulsq) {
forcecoul = force->qqrd2e * atom->q[i]*atom->q[j]*sqrt(r2inv);
if (rsq > cut_coul_innersq) {
r = sqrt(rsq);
tc = r - cut_coul_inner;
fswitchcoul = force->qqrd2e *
atom->q[i]*atom->q[j] * r*tc*tc * (coulsw1 + coulsw2*tc);
forcecoul += fswitchcoul;
}
} else forcecoul = 0.0;
if (rsq < cut_ljsq) {
r6inv = r2inv*r2inv*r2inv;
forcelj = r6inv * (lj1[itype][jtype]*r6inv - lj2[itype][jtype]);
if (rsq > cut_lj_innersq) {
r = sqrt(rsq);
tlj = r - cut_lj_inner;
fswitch = r*tlj*tlj*(ljsw1[itype][jtype] + ljsw2[itype][jtype]*tlj);
forcelj += fswitch;
}
} else forcelj = 0.0;
fforce = (factor_coul*forcecoul + factor_lj*forcelj) * r2inv;
double eng = 0.0;
if (rsq < cut_coulsq) {
phicoul = force->qqrd2e * atom->q[i]*atom->q[j] * (sqrt(r2inv)-coulsw5);
if (rsq > cut_coul_innersq) {
phiswitchcoul = force->qqrd2e * atom->q[i]*atom->q[j] *
tc*tc*tc * (coulsw3 + coulsw4*tc);
phicoul += phiswitchcoul;
}
eng += factor_coul*phicoul;
}
if (rsq < cut_ljsq) {
philj = r6inv * (lj3[itype][jtype]*r6inv - lj4[itype][jtype]);
+ philj += ljsw5[itype][jtype];
if (rsq > cut_lj_innersq) {
phiswitch = tlj*tlj*tlj *
- (ljsw3[itype][jtype] + ljsw4[itype][jtype]*tlj) +
- ljsw5[itype][jtype];
+ (ljsw3[itype][jtype] + ljsw4[itype][jtype]*tlj);
philj += phiswitch;
}
eng += factor_lj*philj;
}
return eng;
}
diff --git a/src/respa.cpp b/src/respa.cpp
index d9cdfa6bf..9786b2875 100644
--- a/src/respa.cpp
+++ b/src/respa.cpp
@@ -1,681 +1,681 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Mark Stevens (SNL), Paul Crozier (SNL)
------------------------------------------------------------------------- */
#include "stdlib.h"
#include "string.h"
#include "respa.h"
#include "neighbor.h"
#include "atom.h"
#include "domain.h"
#include "comm.h"
#include "atom.h"
#include "force.h"
#include "pair.h"
#include "bond.h"
#include "angle.h"
#include "dihedral.h"
#include "improper.h"
#include "kspace.h"
#include "output.h"
#include "update.h"
#include "modify.h"
#include "compute.h"
#include "fix_respa.h"
#include "timer.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
/* ---------------------------------------------------------------------- */
Respa::Respa(LAMMPS *lmp, int narg, char **arg) : Integrate(lmp, narg, arg)
{
if (narg < 1) error->all("Illegal run_style respa command");
nlevels = atoi(arg[0]);
if (nlevels < 1) error->all("Respa levels must be >= 1");
if (narg < nlevels) error->all("Illegal run_style respa command");
loop = new int[nlevels];
for (int iarg = 1; iarg < nlevels; iarg++) {
loop[iarg-1] = atoi(arg[iarg]);
if (loop[iarg-1] <= 0) error->all("Illegal run_style respa command");
}
loop[nlevels-1] = 1;
// set level at which each force is computed
// argument settings override defaults
level_bond = level_angle = level_dihedral = level_improper = -1;
level_pair = level_kspace = -1;
level_inner = level_middle = level_outer = -1;
int iarg = nlevels;
while (iarg < narg) {
if (strcmp(arg[iarg],"bond") == 0) {
if (iarg+2 > narg) error->all("Illegal run_style respa command");
level_bond = atoi(arg[iarg+1]) - 1;
iarg += 2;
} else if (strcmp(arg[iarg],"angle") == 0) {
if (iarg+2 > narg) error->all("Illegal run_style respa command");
level_angle = atoi(arg[iarg+1]) - 1;
iarg += 2;
} else if (strcmp(arg[iarg],"dihedral") == 0) {
if (iarg+2 > narg) error->all("Illegal run_style respa command");
level_dihedral = atoi(arg[iarg+1]) - 1;
iarg += 2;
} else if (strcmp(arg[iarg],"improper") == 0) {
if (iarg+2 > narg) error->all("Illegal run_style respa command");
level_improper = atoi(arg[iarg+1]) - 1;
iarg += 2;
} else if (strcmp(arg[iarg],"pair") == 0) {
if (iarg+2 > narg) error->all("Illegal run_style respa command");
level_pair = atoi(arg[iarg+1]) - 1;
iarg += 2;
} else if (strcmp(arg[iarg],"inner") == 0) {
if (iarg+4 > narg) error->all("Illegal run_style respa command");
level_inner = atoi(arg[iarg+1]) - 1;
cutoff[0] = atof(arg[iarg+2]);
cutoff[1] = atof(arg[iarg+3]);
iarg += 4;
} else if (strcmp(arg[iarg],"middle") == 0) {
if (iarg+4 > narg) error->all("Illegal run_style respa command");
level_middle = atoi(arg[iarg+1]) - 1;
cutoff[2] = atof(arg[iarg+2]);
cutoff[3] = atof(arg[iarg+3]);
iarg += 4;
} else if (strcmp(arg[iarg],"outer") == 0) {
if (iarg+2 > narg) error->all("Illegal run_style respa command");
level_outer = atoi(arg[iarg+1]) - 1;
iarg += 2;
} else if (strcmp(arg[iarg],"kspace") == 0) {
if (iarg+2 > narg) error->all("Illegal run_style respa command");
level_kspace = atoi(arg[iarg+1]) - 1;
iarg += 2;
} else error->all("Illegal run_style respa command");
}
// cannot specify both pair and inner/middle/outer
if (level_pair >= 0 &&
(level_inner >= 0 || level_middle >= 0 || level_outer >= 0))
error->all("Cannot set both respa pair and inner/middle/outer");
// if either inner and outer is specified, then both must be
if ((level_inner >= 0 && level_outer == -1) ||
(level_outer >= 0 && level_inner == -1))
error->all("Must set both respa inner and outer");
// middle cannot be set without inner/outer
if (level_middle >= 0 && level_inner == -1)
error->all("Cannot set respa middle without inner/outer");
// set defaults if user did not specify level
// bond to innermost level
// angle same as bond, dihedral same as angle, improper same as dihedral
// pair to outermost level if no inner/middle/outer
// inner/middle/outer have no defaults
// kspace same as pair or outer
if (level_bond == -1) level_bond = 0;
if (level_angle == -1) level_angle = level_bond;
if (level_dihedral == -1) level_dihedral = level_angle;
if (level_improper == -1) level_improper = level_dihedral;
if (level_pair == -1 && level_inner == -1) level_pair = nlevels-1;
if (level_kspace == -1 && level_pair >= 0) level_kspace = level_pair;
if (level_kspace == -1 && level_pair == -1) level_kspace = level_outer;
// print respa levels
if (comm->me == 0) {
if (screen) {
fprintf(screen,"Respa levels:\n");
for (int i = 0; i < nlevels; i++) {
fprintf(screen," %d =",i);
if (level_bond == i) fprintf(screen," bond");
if (level_angle == i) fprintf(screen," angle");
if (level_dihedral == i) fprintf(screen," dihedral");
if (level_improper == i) fprintf(screen," improper");
if (level_pair == i) fprintf(screen," pair");
if (level_inner == i) fprintf(screen," pair-inner");
if (level_middle == i) fprintf(screen," pair-middle");
if (level_outer == i) fprintf(screen," pair-outer");
if (level_kspace == i) fprintf(screen," kspace");
fprintf(screen,"\n");
}
}
if (logfile) {
fprintf(logfile,"Respa levels:\n");
for (int i = 0; i < nlevels; i++) {
fprintf(logfile," %d =",i);
if (level_bond == i) fprintf(logfile," bond");
if (level_angle == i) fprintf(logfile," angle");
if (level_dihedral == i) fprintf(logfile," dihedral");
if (level_improper == i) fprintf(logfile," improper");
if (level_pair == i) fprintf(logfile," pair");
if (level_inner == i) fprintf(logfile," pair-inner");
if (level_middle == i) fprintf(logfile," pair-middle");
if (level_outer == i) fprintf(logfile," pair-outer");
if (level_kspace == i) fprintf(logfile," kspace");
fprintf(logfile,"\n");
}
}
}
// check that levels are in correct order
if (level_angle < level_bond || level_dihedral < level_angle ||
level_improper < level_dihedral)
error->all("Invalid order of forces within respa levels");
if (level_pair >= 0) {
if (level_pair < level_improper || level_kspace < level_pair)
error->all("Invalid order of forces within respa levels");
}
if (level_pair == -1 && level_middle == -1) {
if (level_inner < level_improper || level_outer < level_inner ||
level_kspace != level_outer)
error->all("Invalid order of forces within respa levels");
}
if (level_pair == -1 && level_middle >= 0) {
if (level_inner < level_improper || level_middle < level_inner ||
level_outer < level_inner || level_kspace != level_outer)
error->all("Invalid order of forces within respa levels");
}
// warn if any levels are devoid of forces
int flag = 0;
for (int i = 0; i < nlevels; i++)
if (level_bond != i && level_angle != i && level_dihedral != i &&
level_improper != i && level_pair != i && level_inner != i &&
level_middle != i && level_outer != i && level_kspace != i) flag = 1;
if (flag && comm->me == 0)
error->warning("One or more respa levels compute no forces");
// check cutoff consistency if inner/middle/outer are enabled
if (level_inner >= 0 && cutoff[1] < cutoff[0])
error->all("Respa inner cutoffs are invalid");
if (level_middle >= 0 && (cutoff[3] < cutoff[2] || cutoff[2] < cutoff[1]))
error->all("Respa middle cutoffs are invalid");
// set outer pair of cutoffs to inner pair if middle is not enabled
if (level_inner >= 0 && level_middle < 0) {
cutoff[2] = cutoff[0];
cutoff[3] = cutoff[1];
}
// allocate other needed arrays
newton = new int[nlevels];
step = new double[nlevels];
}
/* ---------------------------------------------------------------------- */
Respa::~Respa()
{
delete [] loop;
delete [] newton;
delete [] step;
}
/* ----------------------------------------------------------------------
initialization before run
------------------------------------------------------------------------- */
void Respa::init()
{
// warn if no fixes
if (modify->nfix == 0 && comm->me == 0)
error->warning("No fixes defined, atoms won't move");
// create fix needed for storing atom-based respa level forces
// will delete it at end of run
char **fixarg = new char*[4];
fixarg[0] = (char *) "RESPA";
fixarg[1] = (char *) "all";
fixarg[2] = (char *) "RESPA";
fixarg[3] = new char[8];
sprintf(fixarg[3],"%d",nlevels);
modify->add_fix(4,fixarg);
delete [] fixarg[3];
delete [] fixarg;
fix_respa = (FixRespa *) modify->fix[modify->nfix-1];
// insure respa inner/middle/outer is using Pair class that supports it
if (level_inner >= 0)
if (force->pair && force->pair->respa_enable == 0)
error->all("Pair style does not support rRESPA inner/middle/outer");
// virial_style = 1 (explicit) since never computed implicitly like Verlet
virial_style = 1;
// setup lists of computes for global and per-atom PE and pressure
ev_setup();
// set flags for what arrays to clear in force_clear()
// need to clear torques,erforce if arrays exists
torqueflag = 0;
if (atom->torque_flag) torqueflag = 1;
erforceflag = 0;
if (atom->erforce_flag) erforceflag = 1;
// step[] = timestep for each level
step[nlevels-1] = update->dt;
for (int ilevel = nlevels-2; ilevel >= 0; ilevel--)
step[ilevel] = step[ilevel+1]/loop[ilevel];
// set newton flag for each level
for (int ilevel = 0; ilevel < nlevels; ilevel++) {
newton[ilevel] = 0;
if (force->newton_bond) {
if (level_bond == ilevel || level_angle == ilevel ||
level_dihedral == ilevel || level_improper == ilevel)
newton[ilevel] = 1;
}
if (force->newton_pair) {
if (level_pair == ilevel || level_inner == ilevel ||
level_middle == ilevel || level_outer == ilevel)
newton[ilevel] = 1;
}
}
// orthogonal vs triclinic simulation box
triclinic = domain->triclinic;
}
/* ----------------------------------------------------------------------
setup before run
------------------------------------------------------------------------- */
void Respa::setup()
{
if (comm->me == 0 && screen) fprintf(screen,"Setting up run ...\n");
update->setupflag = 1;
// setup domain, communication and neighboring
// acquire ghosts
// build neighbor lists
atom->setup();
modify->setup_pre_exchange();
if (triclinic) domain->x2lamda(atom->nlocal);
domain->pbc();
domain->reset_box();
comm->setup();
if (neighbor->style) neighbor->setup_bins();
comm->exchange();
if (atom->sortfreq > 0) atom->sort();
comm->borders();
if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
neighbor->build();
neighbor->ncalls = 0;
// compute all forces
ev_set(update->ntimestep);
for (int ilevel = 0; ilevel < nlevels; ilevel++) {
force_clear(newton[ilevel]);
modify->setup_pre_force_respa(vflag,ilevel);
if (level_bond == ilevel && force->bond)
force->bond->compute(eflag,vflag);
if (level_angle == ilevel && force->angle)
force->angle->compute(eflag,vflag);
if (level_dihedral == ilevel && force->dihedral)
force->dihedral->compute(eflag,vflag);
if (level_improper == ilevel && force->improper)
force->improper->compute(eflag,vflag);
if (level_pair == ilevel && force->pair)
force->pair->compute(eflag,vflag);
if (level_inner == ilevel && force->pair)
force->pair->compute_inner();
if (level_middle == ilevel && force->pair)
force->pair->compute_middle();
if (level_outer == ilevel && force->pair)
force->pair->compute_outer(eflag,vflag);
if (level_kspace == ilevel && force->kspace) {
force->kspace->setup();
force->kspace->compute(eflag,vflag);
}
if (newton[ilevel]) comm->reverse_comm();
copy_f_flevel(ilevel);
}
modify->setup(vflag);
sum_flevel_f();
output->setup(1);
update->setupflag = 0;
}
/* ----------------------------------------------------------------------
setup without output
flag = 0 = just force calculation
flag = 1 = reneighbor and force calculation
------------------------------------------------------------------------- */
void Respa::setup_minimal(int flag)
{
update->setupflag = 1;
// setup domain, communication and neighboring
// acquire ghosts
// build neighbor lists
if (flag) {
if (triclinic) domain->x2lamda(atom->nlocal);
domain->pbc();
domain->reset_box();
comm->setup();
if (neighbor->style) neighbor->setup_bins();
comm->exchange();
comm->borders();
if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
neighbor->build();
neighbor->ncalls = 0;
}
// compute all forces
ev_set(update->ntimestep);
for (int ilevel = 0; ilevel < nlevels; ilevel++) {
force_clear(newton[ilevel]);
modify->setup_pre_force_respa(vflag,ilevel);
if (level_bond == ilevel && force->bond)
force->bond->compute(eflag,vflag);
if (level_angle == ilevel && force->angle)
force->angle->compute(eflag,vflag);
if (level_dihedral == ilevel && force->dihedral)
force->dihedral->compute(eflag,vflag);
if (level_improper == ilevel && force->improper)
force->improper->compute(eflag,vflag);
if (level_pair == ilevel && force->pair)
force->pair->compute(eflag,vflag);
if (level_inner == ilevel && force->pair)
force->pair->compute_inner();
if (level_middle == ilevel && force->pair)
force->pair->compute_middle();
if (level_outer == ilevel && force->pair)
force->pair->compute_outer(eflag,vflag);
if (level_kspace == ilevel && force->kspace) {
force->kspace->setup();
force->kspace->compute(eflag,vflag);
}
if (newton[ilevel]) comm->reverse_comm();
copy_f_flevel(ilevel);
}
modify->setup(vflag);
sum_flevel_f();
update->setupflag = 0;
}
/* ----------------------------------------------------------------------
run for N steps
------------------------------------------------------------------------- */
void Respa::run(int n)
{
bigint ntimestep;
for (int i = 0; i < n; i++) {
ntimestep = ++update->ntimestep;
ev_set(ntimestep);
recurse(nlevels-1);
if (modify->n_end_of_step) modify->end_of_step();
if (ntimestep == output->next) {
timer->stamp();
sum_flevel_f();
output->write(update->ntimestep);
timer->stamp(TIME_OUTPUT);
}
}
}
/* ----------------------------------------------------------------------
delete rRESPA fix at end of run, so its atom arrays won't persist
------------------------------------------------------------------------- */
void Respa::cleanup()
{
modify->post_run();
modify->delete_fix("RESPA");
}
/* ---------------------------------------------------------------------- */
void Respa::reset_dt()
{
step[nlevels-1] = update->dt;
for (int ilevel = nlevels-2; ilevel >= 0; ilevel--)
step[ilevel] = step[ilevel+1]/loop[ilevel];
}
/* ---------------------------------------------------------------------- */
void Respa::recurse(int ilevel)
{
copy_flevel_f(ilevel);
for (int iloop = 0; iloop < loop[ilevel]; iloop++) {
modify->initial_integrate_respa(vflag,ilevel,iloop);
if (modify->n_post_integrate_respa)
modify->post_integrate_respa(ilevel,iloop);
if (ilevel) recurse(ilevel-1);
// at outermost level, check on rebuilding neighbor list
// at innermost level, communicate
// at middle levels, do nothing
if (ilevel == nlevels-1) {
int nflag = neighbor->decide();
if (nflag) {
if (modify->n_pre_exchange) modify->pre_exchange();
if (triclinic) domain->x2lamda(atom->nlocal);
domain->pbc();
if (domain->box_change) {
domain->reset_box();
comm->setup();
if (neighbor->style) neighbor->setup_bins();
}
timer->stamp();
comm->exchange();
if (atom->sortfreq > 0 &&
update->ntimestep >= atom->nextsort) atom->sort();
comm->borders();
if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
timer->stamp(TIME_COMM);
if (modify->n_pre_neighbor) modify->pre_neighbor();
neighbor->build();
timer->stamp(TIME_NEIGHBOR);
}
} else if (ilevel == 0) {
timer->stamp();
comm->forward_comm();
timer->stamp(TIME_COMM);
}
force_clear(newton[ilevel]);
if (modify->n_pre_force_respa)
modify->pre_force_respa(vflag,ilevel,iloop);
timer->stamp();
if (level_bond == ilevel && force->bond) {
force->bond->compute(eflag,vflag);
timer->stamp(TIME_BOND);
}
if (level_angle == ilevel && force->angle) {
force->angle->compute(eflag,vflag);
timer->stamp(TIME_BOND);
}
if (level_dihedral == ilevel && force->dihedral) {
force->dihedral->compute(eflag,vflag);
timer->stamp(TIME_BOND);
}
if (level_improper == ilevel && force->improper) {
force->improper->compute(eflag,vflag);
timer->stamp(TIME_BOND);
}
if (level_pair == ilevel && force->pair) {
force->pair->compute(eflag,vflag);
timer->stamp(TIME_PAIR);
}
if (level_inner == ilevel && force->pair) {
force->pair->compute_inner();
timer->stamp(TIME_PAIR);
}
if (level_middle == ilevel && force->pair) {
force->pair->compute_middle();
timer->stamp(TIME_PAIR);
}
if (level_outer == ilevel && force->pair) {
force->pair->compute_outer(eflag,vflag);
timer->stamp(TIME_PAIR);
}
if (level_kspace == ilevel && force->kspace) {
force->kspace->compute(eflag,vflag);
timer->stamp(TIME_KSPACE);
}
if (newton[ilevel]) {
comm->reverse_comm();
timer->stamp(TIME_COMM);
}
if (modify->n_post_force_respa)
modify->post_force_respa(vflag,ilevel,iloop);
modify->final_integrate_respa(ilevel,iloop);
}
copy_f_flevel(ilevel);
}
/* ----------------------------------------------------------------------
clear force on own & ghost atoms
------------------------------------------------------------------------- */
void Respa::force_clear(int newtonflag)
{
int i;
// clear global force array
// nall includes ghosts only if newton flag is set
int nall;
if (newtonflag) nall = atom->nlocal + atom->nghost;
else nall = atom->nlocal;
+ int ntot = nall * comm->nthreads;
double **f = atom->f;
- for (i = 0; i < nall*comm->nthreads; i++) {
+ for (i = 0; i < ntot; i++) {
f[i][0] = 0.0;
f[i][1] = 0.0;
f[i][2] = 0.0;
}
if (torqueflag) {
double **torque = atom->torque;
for (i = 0; i < nall; i++) {
torque[i][0] = 0.0;
torque[i][1] = 0.0;
torque[i][2] = 0.0;
}
}
if (erforceflag) {
double *erforce = atom->erforce;
- for (i = 0; i < nall; i++)
- erforce[i] = 0.0;
+ for (i = 0; i < nall; i++) erforce[i] = 0.0;
}
}
/* ----------------------------------------------------------------------
copy force components from atom->f to FixRespa->f_level
------------------------------------------------------------------------- */
void Respa::copy_f_flevel(int ilevel)
{
double ***f_level = fix_respa->f_level;
double **f = atom->f;
int n = atom->nlocal;
for (int i = 0; i < n; i++) {
f_level[i][ilevel][0] = f[i][0];
f_level[i][ilevel][1] = f[i][1];
f_level[i][ilevel][2] = f[i][2];
}
}
/* ----------------------------------------------------------------------
copy force components from FixRespa->f_level to atom->f
------------------------------------------------------------------------- */
void Respa::copy_flevel_f(int ilevel)
{
double ***f_level = fix_respa->f_level;
double **f = atom->f;
int n = atom->nlocal;
for (int i = 0; i < n; i++) {
f[i][0] = f_level[i][ilevel][0];
f[i][1] = f_level[i][ilevel][1];
f[i][2] = f_level[i][ilevel][2];
}
}
/* ----------------------------------------------------------------------
sum all force components from FixRespa->f_level to create full atom->f
------------------------------------------------------------------------- */
void Respa::sum_flevel_f()
{
copy_flevel_f(0);
double ***f_level = fix_respa->f_level;
double **f = atom->f;
int n = atom->nlocal;
for (int ilevel = 1; ilevel < nlevels; ilevel++) {
for (int i = 0; i < n; i++) {
f[i][0] += f_level[i][ilevel][0];
f[i][1] += f_level[i][ilevel][1];
f[i][2] += f_level[i][ilevel][2];
}
}
}
diff --git a/src/update.cpp b/src/update.cpp
index 3320ce9d8..947bba8c1 100644
--- a/src/update.cpp
+++ b/src/update.cpp
@@ -1,378 +1,384 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include "lmptype.h"
#include "string.h"
#include "stdlib.h"
#include "update.h"
#include "style_integrate.h"
#include "style_minimize.h"
#include "neighbor.h"
#include "force.h"
#include "modify.h"
#include "fix.h"
#include "domain.h"
#include "region.h"
#include "compute.h"
#include "output.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
/* ---------------------------------------------------------------------- */
Update::Update(LAMMPS *lmp) : Pointers(lmp)
{
char *str;
ntimestep = 0;
first_update = 0;
whichflag = 0;
firststep = laststep = 0;
beginstep = endstep = 0;
setupflag = 0;
multireplica = 0;
restrict_output = 0;
eflag_global = vflag_global = -1;
unit_style = NULL;
set_units("lj");
integrate_style = NULL;
integrate = NULL;
minimize_style = NULL;
minimize = NULL;
if (lmp->cuda) {
str = (char *) "verlet/cuda";
create_integrate(1,&str,NULL);
} else {
str = (char *) "verlet";
create_integrate(1,&str,NULL);
}
str = (char *) "cg";
create_minimize(1,&str);
}
/* ---------------------------------------------------------------------- */
Update::~Update()
{
delete [] unit_style;
delete [] integrate_style;
delete integrate;
delete [] minimize_style;
delete minimize;
}
/* ---------------------------------------------------------------------- */
void Update::init()
{
// if USER-CUDA mode is enabled:
// integrate/minimize style must be CUDA variant
if (whichflag == 1 && lmp->cuda)
if (strstr(integrate_style,"cuda") == NULL)
error->all("USER-CUDA mode requires CUDA variant of run style");
if (whichflag == 2 && lmp->cuda)
if (strstr(minimize_style,"cuda") == NULL)
error->all("USER-CUDA mode requires CUDA variant of min style");
// init the appropriate integrate and/or minimize class
// if neither (e.g. from write_restart) then just return
if (whichflag == 0) return;
if (whichflag == 1) integrate->init();
else if (whichflag == 2) minimize->init();
// only set first_update if a run or minimize is being performed
first_update = 1;
}
/* ---------------------------------------------------------------------- */
void Update::set_units(const char *style)
{
// physical constants from:
// http://physics.nist.gov/cuu/Constants/Table/allascii.txt
// using thermochemical calorie = 4.184 J
if (strcmp(style,"lj") == 0) {
force->boltz = 1.0;
+ force->hplanck = 0.18292026; // using LJ parameters for argon
force->mvv2e = 1.0;
force->ftm2v = 1.0;
force->mv2d = 1.0;
force->nktv2p = 1.0;
force->qqr2e = 1.0;
force->qe2f = 1.0;
force->vxmu2f = 1.0;
force->xxt2kmu = 1.0;
force->e_mass = 0.0; // not yet set
force->hhmrr2e = 0.0;
force->mvh2r = 0.0;
dt = 0.005;
neighbor->skin = 0.3;
} else if (strcmp(style,"real") == 0) {
force->boltz = 0.0019872067;
+ force->hplanck = 95.306976368;
force->mvv2e = 48.88821291 * 48.88821291;
force->ftm2v = 1.0 / 48.88821291 / 48.88821291;
force->mv2d = 1.0 / 0.602214179;
force->nktv2p = 68568.415;
force->qqr2e = 332.06371;
force->qe2f = 23.060549;
force->vxmu2f = 1.4393264316e4;
force->xxt2kmu = 0.1;
force->e_mass = 1.0/1836.1527556560675;
force->hhmrr2e = 0.0957018663603261;
force->mvh2r = 1.5339009481951;
dt = 1.0;
neighbor->skin = 2.0;
} else if (strcmp(style,"metal") == 0) {
force->boltz = 8.617343e-5;
+ force->hplanck = 4.135667403e-3;
force->mvv2e = 1.0364269e-4;
force->ftm2v = 1.0 / 1.0364269e-4;
force->mv2d = 1.0 / 0.602214179;
force->nktv2p = 1.6021765e6;
force->qqr2e = 14.399645;
force->qe2f = 1.0;
force->vxmu2f = 0.6241509647;
force->xxt2kmu = 1.0e-4;
force->e_mass = 0.0; // not yet set
force->hhmrr2e = 0.0;
force->mvh2r = 0.0;
dt = 0.001;
neighbor->skin = 2.0;
} else if (strcmp(style,"si") == 0) {
force->boltz = 1.3806504e-23;
+ force->hplanck = 6.62606896e-34;
force->mvv2e = 1.0;
force->ftm2v = 1.0;
force->mv2d = 1.0;
force->nktv2p = 1.0;
force->qqr2e = 8.9876e9;
force->qe2f = 1.0;
force->vxmu2f = 1.0;
force->xxt2kmu = 1.0;
force->e_mass = 0.0; // not yet set
force->hhmrr2e = 0.0;
force->mvh2r = 0.0;
dt = 1.0e-8;
neighbor->skin = 0.001;
} else if (strcmp(style,"cgs") == 0) {
force->boltz = 1.3806504e-16;
+ force->hplanck = 6.62606896e-27;
force->mvv2e = 1.0;
force->ftm2v = 1.0;
force->mv2d = 1.0;
force->nktv2p = 1.0;
force->qqr2e = 1.0;
force->qe2f = 1.0;
force->vxmu2f = 1.0;
force->xxt2kmu = 1.0;
force->e_mass = 0.0; // not yet set
force->hhmrr2e = 0.0;
force->mvh2r = 0.0;
dt = 1.0e-8;
neighbor->skin = 0.1;
} else if (strcmp(style,"electron") == 0) {
force->boltz = 3.16681534e-6;
+ force->hplanck = 0.1519829846;
force->mvv2e = 1.06657236;
force->ftm2v = 0.937582899;
force->mv2d = 1.0;
force->nktv2p = 2.94210108e13;
force->qqr2e = 1.0;
force->qe2f = 1.94469051e-10;
force->vxmu2f = 3.39893149e1;
force->xxt2kmu = 3.13796367e-2;
force->e_mass = 0.0; // not yet set
force->hhmrr2e = 0.0;
force->mvh2r = 0.0;
dt = 0.001;
neighbor->skin = 2.0;
} else error->all("Illegal units command");
delete [] unit_style;
int n = strlen(style) + 1;
unit_style = new char[n];
strcpy(unit_style,style);
}
/* ---------------------------------------------------------------------- */
void Update::create_integrate(int narg, char **arg, char *suffix)
{
if (narg < 1) error->all("Illegal run_style command");
delete [] integrate_style;
delete integrate;
int sflag;
new_integrate(arg[0],narg-1,&arg[1],suffix,sflag);
if (sflag) {
char estyle[256];
sprintf(estyle,"%s/%s",arg[0],suffix);
int n = strlen(estyle) + 1;
integrate_style = new char[n];
strcpy(integrate_style,estyle);
} else {
int n = strlen(arg[0]) + 1;
integrate_style = new char[n];
strcpy(integrate_style,arg[0]);
}
}
/* ----------------------------------------------------------------------
create the Integrate style, first with suffix appended
------------------------------------------------------------------------- */
void Update::new_integrate(char *style, int narg, char **arg,
char *suffix, int &sflag)
{
int success = 0;
if (suffix && lmp->suffix_enable) {
sflag = 1;
char estyle[256];
sprintf(estyle,"%s/%s",style,suffix);
success = 1;
if (0) return;
#define INTEGRATE_CLASS
#define IntegrateStyle(key,Class) \
else if (strcmp(estyle,#key) == 0) integrate = new Class(lmp,narg,arg);
#include "style_integrate.h"
#undef IntegrateStyle
#undef INTEGRATE_CLASS
else success = 0;
}
if (!success) {
sflag = 0;
if (0) return;
#define INTEGRATE_CLASS
#define IntegrateStyle(key,Class) \
else if (strcmp(style,#key) == 0) integrate = new Class(lmp,narg,arg);
#include "style_integrate.h"
#undef IntegrateStyle
#undef INTEGRATE_CLASS
else error->all("Illegal integrate style");
}
}
/* ---------------------------------------------------------------------- */
void Update::create_minimize(int narg, char **arg)
{
if (narg != 1) error->all("Illegal min_style command");
delete [] minimize_style;
delete minimize;
if (0) return; // dummy line to enable else-if macro expansion
#define MINIMIZE_CLASS
#define MinimizeStyle(key,Class) \
else if (strcmp(arg[0],#key) == 0) minimize = new Class(lmp);
#include "style_minimize.h"
#undef MINIMIZE_CLASS
else error->all("Illegal min_style command");
int n = strlen(arg[0]) + 1;
minimize_style = new char[n];
strcpy(minimize_style,arg[0]);
}
/* ----------------------------------------------------------------------
reset timestep from input script
do not allow dump files or a restart to be defined
do not allow any timestep-dependent fixes to be defined
do not allow any dynamic regions to be defined
reset eflag/vflag global so nothing will think eng/virial are current
reset invoked flags of computes,
so nothing will think they are current between runs
clear timestep list of computes that store future invocation times
------------------------------------------------------------------------- */
void Update::reset_timestep(int narg, char **arg)
{
if (narg != 1) error->all("Illegal reset_timestep command");
for (int i = 0; i < output->ndump; i++)
if (output->last_dump[i] >= 0)
error->all("Cannot reset timestep with dump file already written to");
if (output->restart && output->last_restart >= 0)
error->all("Cannot reset timestep with restart file already written");
for (int i = 0; i < modify->nfix; i++)
if (modify->fix[i]->time_depend)
error->all("Cannot reset timestep with a time-dependent fix defined");
for (int i = 0; i < domain->nregion; i++)
if (domain->regions[i]->dynamic_check())
error->all("Cannot reset timestep with a dynamic region defined");
eflag_global = vflag_global = -1;
for (int i = 0; i < modify->ncompute; i++) {
modify->compute[i]->invoked_scalar = -1;
modify->compute[i]->invoked_vector = -1;
modify->compute[i]->invoked_array = -1;
modify->compute[i]->invoked_peratom = -1;
modify->compute[i]->invoked_local = -1;
}
for (int i = 0; i < modify->ncompute; i++)
if (modify->compute[i]->timeflag) modify->compute[i]->clearstep();
ntimestep = ATOBIGINT(arg[0]);
if (ntimestep < 0) error->all("Timestep must be >= 0");
if (ntimestep > MAXBIGINT) error->all("Too big a timestep");
}
/* ----------------------------------------------------------------------
memory usage of update and integrate/minimize
------------------------------------------------------------------------- */
bigint Update::memory_usage()
{
bigint bytes = 0;
if (whichflag == 1) bytes += integrate->memory_usage();
else if (whichflag == 2) bytes += minimize->memory_usage();
return bytes;
}
diff --git a/src/verlet.cpp b/src/verlet.cpp
index 93949a787..ab2b6aabd 100644
--- a/src/verlet.cpp
+++ b/src/verlet.cpp
@@ -1,391 +1,389 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include "string.h"
#include "verlet.h"
#include "neighbor.h"
#include "domain.h"
#include "comm.h"
#include "atom.h"
#include "force.h"
#include "pair.h"
#include "bond.h"
#include "angle.h"
#include "dihedral.h"
#include "improper.h"
#include "kspace.h"
#include "output.h"
#include "update.h"
#include "modify.h"
#include "compute.h"
#include "fix.h"
#include "timer.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
/* ---------------------------------------------------------------------- */
Verlet::Verlet(LAMMPS *lmp, int narg, char **arg) :
Integrate(lmp, narg, arg) {}
/* ----------------------------------------------------------------------
initialization before run
------------------------------------------------------------------------- */
void Verlet::init()
{
// warn if no fixes
if (modify->nfix == 0 && comm->me == 0)
error->warning("No fixes defined, atoms won't move");
// virial_style:
// 1 if computed explicitly by pair->compute via sum over pair interactions
// 2 if computed implicitly by pair->virial_fdotr_compute via sum over ghosts
if (force->newton_pair) virial_style = 2;
else virial_style = 1;
// setup lists of computes for global and per-atom PE and pressure
ev_setup();
// set flags for what arrays to clear in force_clear()
// need to clear torques,erforce if arrays exists
torqueflag = 0;
if (atom->torque_flag) torqueflag = 1;
erforceflag = 0;
if (atom->erforce_flag) erforceflag = 1;
// orthogonal vs triclinic simulation box
triclinic = domain->triclinic;
}
/* ----------------------------------------------------------------------
setup before run
------------------------------------------------------------------------- */
void Verlet::setup()
{
if (comm->me == 0 && screen) fprintf(screen,"Setting up run ...\n");
update->setupflag = 1;
// setup domain, communication and neighboring
// acquire ghosts
// build neighbor lists
atom->setup();
modify->setup_pre_exchange();
if (triclinic) domain->x2lamda(atom->nlocal);
domain->pbc();
domain->reset_box();
comm->setup();
if (neighbor->style) neighbor->setup_bins();
comm->exchange();
if (atom->sortfreq > 0) atom->sort();
comm->borders();
if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
neighbor->build();
neighbor->ncalls = 0;
// compute all forces
ev_set(update->ntimestep);
force_clear();
modify->setup_pre_force(vflag);
if (force->pair) force->pair->compute(eflag,vflag);
if (atom->molecular) {
if (force->bond) force->bond->compute(eflag,vflag);
if (force->angle) force->angle->compute(eflag,vflag);
if (force->dihedral) force->dihedral->compute(eflag,vflag);
if (force->improper) force->improper->compute(eflag,vflag);
}
if (force->kspace) {
force->kspace->setup();
force->kspace->compute(eflag,vflag);
}
if (force->newton) comm->reverse_comm();
modify->setup(vflag);
output->setup(1);
update->setupflag = 0;
}
/* ----------------------------------------------------------------------
setup without output
flag = 0 = just force calculation
flag = 1 = reneighbor and force calculation
------------------------------------------------------------------------- */
void Verlet::setup_minimal(int flag)
{
update->setupflag = 1;
// setup domain, communication and neighboring
// acquire ghosts
// build neighbor lists
if (flag) {
if (triclinic) domain->x2lamda(atom->nlocal);
domain->pbc();
domain->reset_box();
comm->setup();
if (neighbor->style) neighbor->setup_bins();
comm->exchange();
comm->borders();
if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
neighbor->build();
neighbor->ncalls = 0;
}
// compute all forces
ev_set(update->ntimestep);
force_clear();
modify->setup_pre_force(vflag);
if (force->pair) force->pair->compute(eflag,vflag);
if (atom->molecular) {
if (force->bond) force->bond->compute(eflag,vflag);
if (force->angle) force->angle->compute(eflag,vflag);
if (force->dihedral) force->dihedral->compute(eflag,vflag);
if (force->improper) force->improper->compute(eflag,vflag);
}
if (force->kspace) {
force->kspace->setup();
force->kspace->compute(eflag,vflag);
}
if (force->newton) comm->reverse_comm();
modify->setup(vflag);
update->setupflag = 0;
}
/* ----------------------------------------------------------------------
run for N steps
------------------------------------------------------------------------- */
void Verlet::run(int n)
{
bigint ntimestep;
int nflag,sortflag;
int n_post_integrate = modify->n_post_integrate;
int n_pre_exchange = modify->n_pre_exchange;
int n_pre_neighbor = modify->n_pre_neighbor;
int n_pre_force = modify->n_pre_force;
int n_post_force = modify->n_post_force;
int n_end_of_step = modify->n_end_of_step;
if (atom->sortfreq > 0) sortflag = 1;
else sortflag = 0;
for (int i = 0; i < n; i++) {
ntimestep = ++update->ntimestep;
ev_set(ntimestep);
// initial time integration
modify->initial_integrate(vflag);
if (n_post_integrate) modify->post_integrate();
// regular communication vs neighbor list rebuild
nflag = neighbor->decide();
if (nflag == 0) {
timer->stamp();
comm->forward_comm();
timer->stamp(TIME_COMM);
} else {
if (n_pre_exchange) modify->pre_exchange();
if (triclinic) domain->x2lamda(atom->nlocal);
domain->pbc();
if (domain->box_change) {
domain->reset_box();
comm->setup();
if (neighbor->style) neighbor->setup_bins();
}
timer->stamp();
comm->exchange();
if (sortflag && ntimestep >= atom->nextsort) atom->sort();
comm->borders();
if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
timer->stamp(TIME_COMM);
if (n_pre_neighbor) modify->pre_neighbor();
neighbor->build();
timer->stamp(TIME_NEIGHBOR);
}
// force computations
force_clear();
if (n_pre_force) modify->pre_force(vflag);
timer->stamp();
if (force->pair) {
force->pair->compute(eflag,vflag);
timer->stamp(TIME_PAIR);
}
if (atom->molecular) {
if (force->bond) force->bond->compute(eflag,vflag);
if (force->angle) force->angle->compute(eflag,vflag);
if (force->dihedral) force->dihedral->compute(eflag,vflag);
if (force->improper) force->improper->compute(eflag,vflag);
timer->stamp(TIME_BOND);
}
if (force->kspace) {
force->kspace->compute(eflag,vflag);
timer->stamp(TIME_KSPACE);
}
// reverse communication of forces
if (force->newton) {
comm->reverse_comm();
timer->stamp(TIME_COMM);
}
// force modifications, final time integration, diagnostics
if (n_post_force) modify->post_force(vflag);
modify->final_integrate();
if (n_end_of_step) modify->end_of_step();
// all output
if (ntimestep == output->next) {
timer->stamp();
output->write(ntimestep);
timer->stamp(TIME_OUTPUT);
}
}
}
/* ---------------------------------------------------------------------- */
void Verlet::cleanup()
{
modify->post_run();
}
/* ----------------------------------------------------------------------
clear force on own & ghost atoms
setup and clear other arrays as needed
------------------------------------------------------------------------- */
void Verlet::force_clear()
{
int i;
// clear force on all particles
// if either newton flag is set, also include ghosts
if (neighbor->includegroup == 0) {
int nall;
if (force->newton) nall = atom->nlocal + atom->nghost;
else nall = atom->nlocal;
+ int ntot = nall * comm->nthreads;
double **f = atom->f;
- for (i = 0; i < nall*comm->nthreads; i++) {
+ for (i = 0; i < ntot; i++) {
f[i][0] = 0.0;
f[i][1] = 0.0;
f[i][2] = 0.0;
}
if (torqueflag) {
double **torque = atom->torque;
for (i = 0; i < nall*comm->nthreads; i++) {
torque[i][0] = 0.0;
torque[i][1] = 0.0;
torque[i][2] = 0.0;
}
}
if (erforceflag) {
double *erforce = atom->erforce;
- for (i = 0; i < nall; i++)
- erforce[i] = 0.0;
+ for (i = 0; i < nall; i++) erforce[i] = 0.0;
}
// neighbor includegroup flag is set
// clear force only on initial nfirst particles
// if either newton flag is set, also include ghosts
} else {
int nall = atom->nfirst;
double **f = atom->f;
for (i = 0; i < nall; i++) {
f[i][0] = 0.0;
f[i][1] = 0.0;
f[i][2] = 0.0;
}
if (torqueflag) {
double **torque = atom->torque;
for (i = 0; i < nall; i++) {
torque[i][0] = 0.0;
torque[i][1] = 0.0;
torque[i][2] = 0.0;
}
}
if (erforceflag) {
double *erforce = atom->erforce;
- for (i = 0; i < nall; i++)
- erforce[i] = 0.0;
+ for (i = 0; i < nall; i++) erforce[i] = 0.0;
}
if (force->newton) {
nall = atom->nlocal + atom->nghost;
for (i = atom->nlocal; i < nall; i++) {
f[i][0] = 0.0;
f[i][1] = 0.0;
f[i][2] = 0.0;
}
if (torqueflag) {
double **torque = atom->torque;
for (i = atom->nlocal; i < nall; i++) {
torque[i][0] = 0.0;
torque[i][1] = 0.0;
torque[i][2] = 0.0;
}
}
if (erforceflag) {
double *erforce = atom->erforce;
- for (i = atom->nlocal; i < nall; i++)
- erforce[i] = 0.0;
+ for (i = atom->nlocal; i < nall; i++) erforce[i] = 0.0;
}
}
}
}
diff --git a/src/version.h b/src/version.h
index c76581f30..e8ed62630 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define LAMMPS_VERSION "23 Aug 2011"
+#define LAMMPS_VERSION "25 Aug 2011"

Event Timeline