diff --git a/doc/Manual.html b/doc/Manual.html index 472c1651d..527d6255e 100644 --- a/doc/Manual.html +++ b/doc/Manual.html @@ -1,493 +1,472 @@ -<HTML> -<!-- HTML_ONLY --> -<HEAD> -<TITLE>LAMMPS-ICMS Users Manual</TITLE> -<META NAME="docnumber" CONTENT="5 Oct 2015 version"> -<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> -<!-- END_HTML_ONLY --> - -<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-ICMS Documentation -</H3></CENTER> -<CENTER><H4>5 Oct 2015 version -</H4></CENTER> -<H4>Version info: -</H4> -<P>The LAMMPS "version" is the date when it was released, such as 1 May +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>LAMMPS Documentation — LAMMPS 15 May 2015 version documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + + + + <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> + + + + <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> + <link rel="next" title="1. Introduction" href="Section_intro.html"/> + + + <script src="_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav" role="document"> + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-nav-search"> + + + + <a href="#" class="icon icon-home"> LAMMPS + + + + </a> + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> +</ul> + + + + </div> + + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="#">LAMMPS</a> + </nav> + + + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="breadcrumbs navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="#">Docs</a> »</li> + + <li>LAMMPS Documentation</li> + <li class="wy-breadcrumbs-aside"> + + + <a href="http://lammps.sandia.gov">Website</a> + <a href="Section_commands.html#comm">Commands</a> + + </li> + </ul> + <hr/> + + <div class="rst-footer-buttons" style="margin-bottom: 1em" role="navigation" aria-label="footer navigation"> + + <a href="Section_intro.html" class="btn btn-neutral float-right" title="1. Introduction" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> + + + </div> + +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <H1></H1><div class="section" id="lammps-documentation"> +<h1>LAMMPS Documentation<a class="headerlink" href="#lammps-documentation" title="Permalink to this headline">¶</a></h1> +<div class="section" id="aug-2015-version"> +<h2>10 Aug 2015 version<a class="headerlink" href="#aug-2015-version" title="Permalink to this headline">¶</a></h2> +</div> +<div class="section" id="version-info"> +<h2>Version info:<a class="headerlink" href="#version-info" title="Permalink to this headline">¶</a></h2> +<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 +feature, we release it immediately, and post a notice on <a class="reference external" 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, and at the top of the first page of the manual (this page). </P> <P>LAMMPS-ICMS is an experimental variant of LAMMPS with additional features made available for testing before they will be submitted for inclusion into the official LAMMPS tree. The source code is based on the official LAMMPS svn repository mirror at the Institute for Computational Molecular Science at Temple University and generally kept up-to-date as much as possible. Sometimes, e.g. when additional development work is needed to adapt the upstream changes into LAMMPS-ICMS it can take longer until synchronization; and occasionally, e.g. in case of the rewrite of the multi-threading support, the development will be halted except for important bugfixes until all features of LAMMPS-ICMS fully compatible with the upstream version or replaced by alternate implementations. </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 every patch. <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 +LAMMPS.</li> +</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 +under the terms of the GNU Public License (GPL).</p> +<p>The primary developers of LAMMPS are <a class="reference external" 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 +sjplimp,athomps,pscrozi at sandia.gov. The <a class="reference external" href="http://lammps.sandia.gov">LAMMPS WWW Site</a> at +<a class="reference external" href="http://lammps.sandia.gov">http://lammps.sandia.gov</a> has more information about the code and its +uses.</p> +<hr class="docutils" /> +<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://freecode.com/projects/htmldoc">htmldoc</A> -</P> -<P><!-- RST -</P> -<P>.. toctree:: - :maxdepth: 2 - :numbered: // comment -</P> -<P> Section_intro - Section_start - Section_commands - Section_packages - Section_accelerate - Section_howto - Section_example - Section_perf - Section_tools - Section_modify - Section_python - Section_errors - Section_history -</P> -<P>Indices and tables -================== -</P> -<P>* :ref:`genindex` // comment -* :ref:`search` // comment -</P> -<P>END_RST --> -</P> -<OL><LI><!-- HTML_ONLY --> -<A HREF = "Section_intro.html">Introduction</A> - -<UL> 1.1 <A HREF = "Section_intro.html#intro_1">What is LAMMPS</A> -<BR> - 1.2 <A HREF = "Section_intro.html#intro_2">LAMMPS features</A> -<BR> - 1.3 <A HREF = "Section_intro.html#intro_3">LAMMPS non-features</A> -<BR> - 1.4 <A HREF = "Section_intro.html#intro_4">Open source distribution</A> -<BR> - 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#start_1">What's in the LAMMPS distribution</A> -<BR> - 2.2 <A HREF = "Section_start.html#start_2">Making LAMMPS</A> -<BR> - 2.3 <A HREF = "Section_start.html#start_3">Making LAMMPS with optional packages</A> -<BR> - 2.4 <A HREF = "Section_start.html#start_4">Building LAMMPS via the Make.py script</A> -<BR> - 2.5 <A HREF = "Section_start.html#start_5">Building LAMMPS as a library</A> -<BR> - 2.6 <A HREF = "Section_start.html#start_6">Running LAMMPS</A> -<BR> - 2.7 <A HREF = "Section_start.html#start_7">Command-line options</A> -<BR> - 2.8 <A HREF = "Section_start.html#start_8">Screen output</A> -<BR> - 2.9 <A HREF = "Section_start.html#start_9">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#cmd_1">LAMMPS input script</A> -<BR> - 3.2 <A HREF = "Section_commands.html#cmd_2">Parsing rules</A> -<BR> - 3.3 <A HREF = "Section_commands.html#cmd_3">Input script structure</A> -<BR> - 3.4 <A HREF = "Section_commands.html#cmd_4">Commands listed by category</A> -<BR> - 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">Accelerating LAMMPS performance</A> - -<UL> 5.1 <A HREF = "Section_accelerate.html#acc_1">Measuring performance</A> -<BR> - 5.2 <A HREF = "Section_accelerate.html#acc_2">Algorithms and code options to boost performace</A> -<BR> - 5.3 <A HREF = "Section_accelerate.html#acc_3">Accelerator packages with optimized styles</A> -<BR> -<UL> 5.3.1 <A HREF = "accelerate_cuda.html">USER-CUDA package</A> -<BR> - 5.3.2 <A HREF = "accelerate_gpu.html">GPU package</A> -<BR> - 5.3.3 <A HREF = "accelerate_intel.html">USER-INTEL package</A> -<BR> - 5.3.4 <A HREF = "accelerate_kokkos.html">KOKKOS package</A> -<BR> - 5.3.5 <A HREF = "accelerate_omp.html">USER-OMP package</A> -<BR> - 5.3.6 <A HREF = "accelerate_opt.html">OPT package</A> -<BR></UL> - 5.4 <A HREF = "Section_accelerate.html#acc_4">Comparison of various accelerator packages</A> -<BR></UL> -<LI><A HREF = "Section_howto.html">How-to discussions</A> - -<UL> 6.1 <A HREF = "Section_howto.html#howto_1">Restarting a simulation</A> -<BR> - 6.2 <A HREF = "Section_howto.html#howto_2">2d simulations</A> -<BR> - 6.3 <A HREF = "Section_howto.html#howto_3">CHARMM and AMBER force fields</A> -<BR> - 6.4 <A HREF = "Section_howto.html#howto_4">Running multiple simulations from one input script</A> -<BR> - 6.5 <A HREF = "Section_howto.html#howto_5">Multi-replica simulations</A> -<BR> - 6.6 <A HREF = "Section_howto.html#howto_6">Granular models</A> -<BR> - 6.7 <A HREF = "Section_howto.html#howto_7">TIP3P water model</A> -<BR> - 6.8 <A HREF = "Section_howto.html#howto_8">TIP4P water model</A> -<BR> - 6.9 <A HREF = "Section_howto.html#howto_9">SPC water model</A> -<BR> - 6.10 <A HREF = "Section_howto.html#howto_10">Coupling LAMMPS to other codes</A> -<BR> - 6.11 <A HREF = "Section_howto.html#howto_11">Visualizing LAMMPS snapshots</A> -<BR> - 6.12 <A HREF = "Section_howto.html#howto_12">Triclinic (non-orthogonal) simulation boxes</A> -<BR> - 6.13 <A HREF = "Section_howto.html#howto_13">NEMD simulations</A> -<BR> - 6.14 <A HREF = "Section_howto.html#howto_14">Finite-size spherical and aspherical particles</A> -<BR> - 6.15 <A HREF = "Section_howto.html#howto_15">Output from LAMMPS (thermo, dumps, computes, fixes, variables)</A> -<BR> - 6.16 <A HREF = "Section_howto.html#howto_16">Thermostatting, barostatting, and compute temperature</A> -<BR> - 6.17 <A HREF = "Section_howto.html#howto_17">Walls</A> -<BR> - 6.18 <A HREF = "Section_howto.html#howto_18">Elastic constants</A> -<BR> - 6.19 <A HREF = "Section_howto.html#howto_19">Library interface to LAMMPS</A> -<BR> - 6.20 <A HREF = "Section_howto.html#howto_20">Calculating thermal conductivity</A> -<BR> - 6.21 <A HREF = "Section_howto.html#howto_21">Calculating viscosity</A> -<BR> - 6.22 <A HREF = "Section_howto.html#howto_22">Calculating a diffusion coefficient</A> -<BR> - 6.23 <A HREF = "Section_howto.html#howto_23">Using chunks to calculate system properties</A> -<BR> - 6.24 <A HREF = "Section_howto.html#howto_24">Setting parameters for pppm/disp</A> -<BR> - 6.25 <A HREF = "Section_howto.html#howto_25">Polarizable models</A> -<BR> - 6.26 <A HREF = "Section_howto.html#howto_26">Adiabatic core/shell model</A> -<BR> - 6.27 <A HREF = "Section_howto.html#howto_27">Drude induced dipoles</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> - -<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> - 10.5 <A HREF = "Section_modify.html#mod_5">Dump custom output options</A> -<BR> - 10.6 <A HREF = "Section_modify.html#mod_6">Fix styles</A> -<BR> - 10.7 <A HREF = "Section_modify.html#mod_7">Input script commands</A> -<BR> - 10.8 <A HREF = "Section_modify.html#mod_8">Kspace computations</A> -<BR> - 10.9 <A HREF = "Section_modify.html#mod_9">Minimization styles</A> -<BR> - 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">Body styles</A> -<BR> - 10.13 <A HREF = "Section_modify.html#mod_13">Thermodynamic output options</A> -<BR> - 10.14 <A HREF = "Section_modify.html#mod_14">Variable options</A> -<BR> - 10.15 <A HREF = "Section_modify.html#mod_15">Submitting new features for inclusion in LAMMPS</A> -<BR></UL> -<LI><A HREF = "Section_python.html">Python interface</A> - -<UL> 11.1 <A HREF = "Section_python.html#py_1">Overview of running LAMMPS from Python</A> -<BR> - 11.2 <A HREF = "Section_python.html#py_2">Overview of using Python from a LAMMPS script</A> -<BR> - 11.3 <A HREF = "Section_python.html#py_3">Building LAMMPS as a shared library</A> -<BR> - 11.4 <A HREF = "Section_python.html#py_4">Installing the Python wrapper into Python</A> -<BR> - 11.5 <A HREF = "Section_python.html#py_5">Extending Python with MPI to run in parallel</A> -<BR> - 11.6 <A HREF = "Section_python.html#py_6">Testing the Python-LAMMPS interface</A> -<BR> - 11.7 <A HREF = "py_7">Using LAMMPS from Python</A> -<BR> - 11.8 <A HREF = "py_8">Example Python scripts that use LAMMPS</A> -<BR></UL> -<LI><A HREF = "Section_errors.html">Errors</A> - -<UL> 12.1 <A HREF = "Section_errors.html#err_1">Common problems</A> -<BR> - 12.2 <A HREF = "Section_errors.html#err_2">Reporting bugs</A> -<BR> - 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> 13.1 <A HREF = "Section_history.html#hist_1">Coming attractions</A> -<BR> - 13.2 <A HREF = "Section_history.html#hist_2">Past versions</A> -<BR></UL> - -</OL> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<!-- END_HTML_ONLY --> - -</BODY> - -</HTML> +we can improve the LAMMPS documentation.</p> +<p>Once you are familiar with LAMMPS, you may want to bookmark <a class="reference internal" href="Section_commands.html#comm"><span>this page</span></a> at Section_commands.html#comm since +it gives quick access to documentation for all LAMMPS commands.</p> +<p><a class="reference external" href="Manual.pdf">PDF file</a> of the entire manual, generated by +<a class="reference external" href="http://freecode.com/projects/htmldoc">htmldoc</a></p> +<div class="toctree-wrapper compound"> +<ul> +<li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a><ul> +<li class="toctree-l2"><a class="reference internal" href="Section_intro.html#what-is-lammps">1.1. What is LAMMPS</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_intro.html#lammps-features">1.2. LAMMPS features</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_intro.html#lammps-non-features">1.3. LAMMPS non-features</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_intro.html#open-source-distribution">1.4. Open source distribution</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_intro.html#acknowledgments-and-citations">1.5. Acknowledgments and citations</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a><ul> +<li class="toctree-l2"><a class="reference internal" href="Section_start.html#what-s-in-the-lammps-distribution">2.1. What’s in the LAMMPS distribution</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_start.html#making-lammps">2.2. Making LAMMPS</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_start.html#making-lammps-with-optional-packages">2.3. Making LAMMPS with optional packages</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_start.html#building-lammps-via-the-make-py-tool">2.4. Building LAMMPS via the Make.py tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_start.html#building-lammps-as-a-library">2.5. Building LAMMPS as a library</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_start.html#running-lammps">2.6. Running LAMMPS</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_start.html#command-line-options">2.7. Command-line options</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_start.html#lammps-screen-output">2.8. LAMMPS screen output</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_start.html#tips-for-users-of-previous-lammps-versions">2.9. Tips for users of previous LAMMPS versions</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a><ul> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#lammps-input-script">3.1. LAMMPS input script</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#parsing-rules">3.2. Parsing rules</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#input-script-structure">3.3. Input script structure</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#commands-listed-by-category">3.4. Commands listed by category</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#individual-commands">3.5. Individual commands</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#fix-styles">3.6. Fix styles</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#compute-styles">3.7. Compute styles</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#pair-style-potentials">3.8. Pair_style potentials</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#bond-style-potentials">3.9. Bond_style potentials</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#angle-style-potentials">3.10. Angle_style potentials</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#dihedral-style-potentials">3.11. Dihedral_style potentials</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#improper-style-potentials">3.12. Improper_style potentials</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_commands.html#kspace-solvers">3.13. Kspace solvers</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a><ul> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#standard-packages">4.1. Standard packages</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-compress-package">4.2. Build instructions for COMPRESS package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-gpu-package">4.3. Build instructions for GPU package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-kim-package">4.4. Build instructions for KIM package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-kokkos-package">4.5. Build instructions for KOKKOS package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-kspace-package">4.6. Build instructions for KSPACE package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-meam-package">4.7. Build instructions for MEAM package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-poems-package">4.8. Build instructions for POEMS package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-python-package">4.9. Build instructions for PYTHON package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-reax-package">4.10. Build instructions for REAX package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-voronoi-package">4.11. Build instructions for VORONOI package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#build-instructions-for-xtc-package">4.12. Build instructions for XTC package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-packages">4.13. User packages</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-atc-package">4.14. USER-ATC package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-awpmd-package">4.15. USER-AWPMD package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-cg-cmm-package">4.16. USER-CG-CMM package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-colvars-package">4.17. USER-COLVARS package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-cuda-package">4.18. USER-CUDA package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-diffraction-package">4.19. USER-DIFFRACTION package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-drude-package">4.20. USER-DRUDE package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-eff-package">4.21. USER-EFF package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-fep-package">4.22. USER-FEP package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-h5md-package">4.23. USER-H5MD package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-intel-package">4.24. USER-INTEL package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-lb-package">4.25. USER-LB package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-misc-package">4.26. USER-MISC package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-molfile-package">4.27. USER-MOLFILE package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-omp-package">4.28. USER-OMP package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-phonon-package">4.29. USER-PHONON package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-qmmm-package">4.30. USER-QMMM package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-qtb-package">4.31. USER-QTB package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-reaxc-package">4.32. USER-REAXC package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-smd-package">4.33. USER-SMD package</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_packages.html#user-sph-package">4.34. USER-SPH package</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a><ul> +<li class="toctree-l2"><a class="reference internal" href="Section_accelerate.html#measuring-performance">5.1. Measuring performance</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_accelerate.html#general-strategies">5.2. General strategies</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_accelerate.html#packages-with-optimized-styles">5.3. Packages with optimized styles</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_accelerate.html#comparison-of-various-accelerator-packages">5.4. Comparison of various accelerator packages</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a><ul> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#restarting-a-simulation">6.1. Restarting a simulation</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#d-simulations">6.2. 2d simulations</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#charmm-amber-and-dreiding-force-fields">6.3. CHARMM, AMBER, and DREIDING force fields</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#running-multiple-simulations-from-one-input-script">6.4. Running multiple simulations from one input script</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#multi-replica-simulations">6.5. Multi-replica simulations</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#granular-models">6.6. Granular models</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#tip3p-water-model">6.7. TIP3P water model</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#tip4p-water-model">6.8. TIP4P water model</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#spc-water-model">6.9. SPC water model</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#coupling-lammps-to-other-codes">6.10. Coupling LAMMPS to other codes</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#visualizing-lammps-snapshots">6.11. Visualizing LAMMPS snapshots</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#triclinic-non-orthogonal-simulation-boxes">6.12. Triclinic (non-orthogonal) simulation boxes</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#nemd-simulations">6.13. NEMD simulations</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#finite-size-spherical-and-aspherical-particles">6.14. Finite-size spherical and aspherical particles</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#output-from-lammps-thermo-dumps-computes-fixes-variables">6.15. Output from LAMMPS (thermo, dumps, computes, fixes, variables)</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#thermostatting-barostatting-and-computing-temperature">6.16. Thermostatting, barostatting, and computing temperature</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#walls">6.17. Walls</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#elastic-constants">6.18. Elastic constants</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#library-interface-to-lammps">6.19. Library interface to LAMMPS</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#calculating-thermal-conductivity">6.20. Calculating thermal conductivity</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#calculating-viscosity">6.21. Calculating viscosity</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#calculating-a-diffusion-coefficient">6.22. Calculating a diffusion coefficient</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#using-chunks-to-calculate-system-properties">6.23. Using chunks to calculate system properties</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#setting-parameters-for-the-kspace-style-pppm-disp-command">6.24. Setting parameters for the <code class="docutils literal"><span class="pre">kspace_style</span> <span class="pre">pppm/disp</span></code> command</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#polarizable-models">6.25. Polarizable models</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#adiabatic-core-shell-model">6.26. Adiabatic core/shell model</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_howto.html#drude-induced-dipoles">6.27. Drude induced dipoles</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a><ul> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#amber2lmp-tool">9.1. amber2lmp tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#binary2txt-tool">9.2. binary2txt tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#ch2lmp-tool">9.3. ch2lmp tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#chain-tool">9.4. chain tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#colvars-tools">9.5. colvars tools</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#createatoms-tool">9.6. createatoms tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#data2xmovie-tool">9.7. data2xmovie tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#eam-database-tool">9.8. eam database tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#eam-generate-tool">9.9. eam generate tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#eff-tool">9.10. eff tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#emacs-tool">9.11. emacs tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#fep-tool">9.12. fep tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#i-pi-tool">9.13. i-pi tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#ipp-tool">9.14. ipp tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#kate-tool">9.15. kate tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#lmp2arc-tool">9.16. lmp2arc tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#lmp2cfg-tool">9.17. lmp2cfg tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#lmp2vmd-tool">9.18. lmp2vmd tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#matlab-tool">9.19. matlab tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#micelle2d-tool">9.20. micelle2d tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#moltemplate-tool">9.21. moltemplate tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#msi2lmp-tool">9.22. msi2lmp tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#phonon-tool">9.23. phonon tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#polymer-bonding-tool">9.24. polymer bonding tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#pymol-asphere-tool">9.25. pymol_asphere tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#python-tool">9.26. python tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#reax-tool">9.27. reax tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#restart2data-tool">9.28. restart2data tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#vim-tool">9.29. vim tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#xmgrace-tool">9.30. xmgrace tool</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_tools.html#xmovie-tool">9.31. xmovie tool</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a><ul> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#atom-styles">10.1. Atom styles</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#bond-angle-dihedral-improper-potentials">10.2. Bond, angle, dihedral, improper potentials</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#compute-styles">10.3. Compute styles</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#dump-styles">10.4. Dump styles</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#dump-custom-output-options">10.5. Dump custom output options</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#fix-styles">10.6. Fix styles</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#input-script-commands">10.7. Input script commands</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#kspace-computations">10.8. Kspace computations</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#minimization-styles">10.9. Minimization styles</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#pairwise-potentials">10.10. Pairwise potentials</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#region-styles">10.11. Region styles</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#body-styles">10.12. Body styles</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#thermodynamic-output-options">10.13. Thermodynamic output options</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#variable-options">10.14. Variable options</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_modify.html#submitting-new-features-for-inclusion-in-lammps">10.15. Submitting new features for inclusion in LAMMPS</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a><ul> +<li class="toctree-l2"><a class="reference internal" href="Section_python.html#overview-of-running-lammps-from-python">11.1. Overview of running LAMMPS from Python</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_python.html#overview-of-using-python-from-a-lammps-script">11.2. Overview of using Python from a LAMMPS script</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_python.html#building-lammps-as-a-shared-library">11.3. Building LAMMPS as a shared library</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_python.html#installing-the-python-wrapper-into-python">11.4. Installing the Python wrapper into Python</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_python.html#extending-python-with-mpi-to-run-in-parallel">11.5. Extending Python with MPI to run in parallel</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_python.html#testing-the-python-lammps-interface">11.6. Testing the Python-LAMMPS interface</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_python.html#using-lammps-from-python">11.7. Using LAMMPS from Python</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_python.html#example-python-scripts-that-use-lammps">11.8. Example Python scripts that use LAMMPS</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a><ul> +<li class="toctree-l2"><a class="reference internal" href="Section_errors.html#common-problems">12.1. Common problems</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_errors.html#reporting-bugs">12.2. Reporting bugs</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_errors.html#error-warning-messages">12.3. Error & warning messages</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_errors.html#error">12.4. Errors:</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_errors.html#warnings">12.5. Warnings:</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a><ul> +<li class="toctree-l2"><a class="reference internal" href="Section_history.html#coming-attractions">13.1. Coming attractions</a></li> +<li class="toctree-l2"><a class="reference internal" href="Section_history.html#past-versions">13.2. Past versions</a></li> +</ul> +</li> +</ul> +</div> +</div> +</div> +<div class="section" id="indices-and-tables"> +<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1> +<ul class="simple"> +<li><a class="reference internal" href="genindex.html"><span>Index</span></a></li> +<li><a class="reference internal" href="search.html"><span>Search Page</span></a></li> +</ul> +</BODY></div> + + + </div> + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="Section_intro.html" class="btn btn-neutral float-right" title="1. Introduction" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> + + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright . + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'./', + VERSION:'15 May 2015 version', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> + + + + + + <script type="text/javascript" src="_static/js/theme.js"></script> + + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.StickyNav.enable(); + }); + </script> + + +</body> +</html> \ No newline at end of file diff --git a/doc/Manual.html.html b/doc/Manual.html.html index 25313b599..f76689504 100644 --- a/doc/Manual.html.html +++ b/doc/Manual.html.html @@ -1,318 +1,318 @@ <HTML> <HTML> <!-- HTML_ONLY --> <HEAD> <TITLE>LAMMPS Users Manual</TITLE> -<META NAME="docnumber" CONTENT="25 Sep 2015 version"> +<META NAME="docnumber" CONTENT="22 Oct 2015 version"> <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> <!-- END_HTML_ONLY --> <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> <P><CENTER><H3>LAMMPS Documentation </H3></CENTER> -<CENTER><H4>25 Sep 2015 version +<CENTER><H4>22 Oct 2015 version </H4></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, and at the top of the first page of the manual (this page). </P> <UL><LI>If you browse the HTML doc pages on the LAMMPS WWW site, they always describe the most current version of LAMMPS. </P> <P><LI>If you browse the HTML doc pages included in your tarball, they describe the version you have. </P> <P><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 every patch. </P> <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://freecode.com/projects/htmldoc">htmldoc</A> </P> <P><!-- RST </P> <P>.. toctree:: :maxdepth: 2 :numbered: // comment </P> <P> Section_intro Section_start Section_commands Section_packages Section_accelerate Section_howto Section_example Section_perf Section_tools Section_modify Section_python Section_errors Section_history </P> <P>Indices and tables ================== </P> <P>* :ref:`genindex` // comment * :ref:`search` // comment </P> <P>END_RST --> </P> <OL><LI><!-- HTML_ONLY --> <A HREF = "Section_intro.html">Introduction</A> <UL> 1.1 <A HREF = "Section_intro.html#intro_1">What is LAMMPS</A> <BR> 1.2 <A HREF = "Section_intro.html#intro_2">LAMMPS features</A> <BR> 1.3 <A HREF = "Section_intro.html#intro_3">LAMMPS non-features</A> <BR> 1.4 <A HREF = "Section_intro.html#intro_4">Open source distribution</A> <BR> 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#start_1">What's in the LAMMPS distribution</A> <BR> 2.2 <A HREF = "Section_start.html#start_2">Making LAMMPS</A> <BR> 2.3 <A HREF = "Section_start.html#start_3">Making LAMMPS with optional packages</A> <BR> 2.4 <A HREF = "Section_start.html#start_4">Building LAMMPS via the Make.py script</A> <BR> 2.5 <A HREF = "Section_start.html#start_5">Building LAMMPS as a library</A> <BR> 2.6 <A HREF = "Section_start.html#start_6">Running LAMMPS</A> <BR> 2.7 <A HREF = "Section_start.html#start_7">Command-line options</A> <BR> 2.8 <A HREF = "Section_start.html#start_8">Screen output</A> <BR> 2.9 <A HREF = "Section_start.html#start_9">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#cmd_1">LAMMPS input script</A> <BR> 3.2 <A HREF = "Section_commands.html#cmd_2">Parsing rules</A> <BR> 3.3 <A HREF = "Section_commands.html#cmd_3">Input script structure</A> <BR> 3.4 <A HREF = "Section_commands.html#cmd_4">Commands listed by category</A> <BR> 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">Accelerating LAMMPS performance</A> <UL> 5.1 <A HREF = "Section_accelerate.html#acc_1">Measuring performance</A> <BR> 5.2 <A HREF = "Section_accelerate.html#acc_2">Algorithms and code options to boost performace</A> <BR> 5.3 <A HREF = "Section_accelerate.html#acc_3">Accelerator packages with optimized styles</A> <BR> <UL> 5.3.1 <A HREF = "accelerate_cuda.html">USER-CUDA package</A> <BR> 5.3.2 <A HREF = "accelerate_gpu.html">GPU package</A> <BR> 5.3.3 <A HREF = "accelerate_intel.html">USER-INTEL package</A> <BR> 5.3.4 <A HREF = "accelerate_kokkos.html">KOKKOS package</A> <BR> 5.3.5 <A HREF = "accelerate_omp.html">USER-OMP package</A> <BR> 5.3.6 <A HREF = "accelerate_opt.html">OPT package</A> <BR></UL> 5.4 <A HREF = "Section_accelerate.html#acc_4">Comparison of various accelerator packages</A> <BR></UL> <LI><A HREF = "Section_howto.html">How-to discussions</A> <UL> 6.1 <A HREF = "Section_howto.html#howto_1">Restarting a simulation</A> <BR> 6.2 <A HREF = "Section_howto.html#howto_2">2d simulations</A> <BR> 6.3 <A HREF = "Section_howto.html#howto_3">CHARMM and AMBER force fields</A> <BR> 6.4 <A HREF = "Section_howto.html#howto_4">Running multiple simulations from one input script</A> <BR> 6.5 <A HREF = "Section_howto.html#howto_5">Multi-replica simulations</A> <BR> 6.6 <A HREF = "Section_howto.html#howto_6">Granular models</A> <BR> 6.7 <A HREF = "Section_howto.html#howto_7">TIP3P water model</A> <BR> 6.8 <A HREF = "Section_howto.html#howto_8">TIP4P water model</A> <BR> 6.9 <A HREF = "Section_howto.html#howto_9">SPC water model</A> <BR> 6.10 <A HREF = "Section_howto.html#howto_10">Coupling LAMMPS to other codes</A> <BR> 6.11 <A HREF = "Section_howto.html#howto_11">Visualizing LAMMPS snapshots</A> <BR> 6.12 <A HREF = "Section_howto.html#howto_12">Triclinic (non-orthogonal) simulation boxes</A> <BR> 6.13 <A HREF = "Section_howto.html#howto_13">NEMD simulations</A> <BR> 6.14 <A HREF = "Section_howto.html#howto_14">Finite-size spherical and aspherical particles</A> <BR> 6.15 <A HREF = "Section_howto.html#howto_15">Output from LAMMPS (thermo, dumps, computes, fixes, variables)</A> <BR> 6.16 <A HREF = "Section_howto.html#howto_16">Thermostatting, barostatting, and compute temperature</A> <BR> 6.17 <A HREF = "Section_howto.html#howto_17">Walls</A> <BR> 6.18 <A HREF = "Section_howto.html#howto_18">Elastic constants</A> <BR> 6.19 <A HREF = "Section_howto.html#howto_19">Library interface to LAMMPS</A> <BR> 6.20 <A HREF = "Section_howto.html#howto_20">Calculating thermal conductivity</A> <BR> 6.21 <A HREF = "Section_howto.html#howto_21">Calculating viscosity</A> <BR> 6.22 <A HREF = "Section_howto.html#howto_22">Calculating a diffusion coefficient</A> <BR> 6.23 <A HREF = "Section_howto.html#howto_23">Using chunks to calculate system properties</A> <BR> 6.24 <A HREF = "Section_howto.html#howto_24">Setting parameters for pppm/disp</A> <BR> 6.25 <A HREF = "Section_howto.html#howto_25">Polarizable models</A> <BR> 6.26 <A HREF = "Section_howto.html#howto_26">Adiabatic core/shell model</A> <BR> 6.27 <A HREF = "Section_howto.html#howto_27">Drude induced dipoles</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> <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> 10.5 <A HREF = "Section_modify.html#mod_5">Dump custom output options</A> <BR> 10.6 <A HREF = "Section_modify.html#mod_6">Fix styles</A> <BR> 10.7 <A HREF = "Section_modify.html#mod_7">Input script commands</A> <BR> 10.8 <A HREF = "Section_modify.html#mod_8">Kspace computations</A> <BR> 10.9 <A HREF = "Section_modify.html#mod_9">Minimization styles</A> <BR> 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">Body styles</A> <BR> 10.13 <A HREF = "Section_modify.html#mod_13">Thermodynamic output options</A> <BR> 10.14 <A HREF = "Section_modify.html#mod_14">Variable options</A> <BR> 10.15 <A HREF = "Section_modify.html#mod_15">Submitting new features for inclusion in LAMMPS</A> <BR></UL> <LI><A HREF = "Section_python.html">Python interface</A> <UL> 11.1 <A HREF = "Section_python.html#py_1">Overview of running LAMMPS from Python</A> <BR> 11.2 <A HREF = "Section_python.html#py_2">Overview of using Python from a LAMMPS script</A> <BR> 11.3 <A HREF = "Section_python.html#py_3">Building LAMMPS as a shared library</A> <BR> 11.4 <A HREF = "Section_python.html#py_4">Installing the Python wrapper into Python</A> <BR> 11.5 <A HREF = "Section_python.html#py_5">Extending Python with MPI to run in parallel</A> <BR> 11.6 <A HREF = "Section_python.html#py_6">Testing the Python-LAMMPS interface</A> <BR> 11.7 <A HREF = "py_7">Using LAMMPS from Python</A> <BR> 11.8 <A HREF = "py_8">Example Python scripts that use LAMMPS</A> <BR></UL> <LI><A HREF = "Section_errors.html">Errors</A> <UL> 12.1 <A HREF = "Section_errors.html#err_1">Common problems</A> <BR> 12.2 <A HREF = "Section_errors.html#err_2">Reporting bugs</A> <BR> 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> 13.1 <A HREF = "Section_history.html#hist_1">Coming attractions</A> <BR> 13.2 <A HREF = "Section_history.html#hist_2">Past versions</A> <BR></UL> </OL> <!-- END_HTML_ONLY --> </BODY> </HTML> </HTML> diff --git a/doc/Manual.txt b/doc/Manual.txt index 792972943..429e86719 100644 --- a/doc/Manual.txt +++ b/doc/Manual.txt @@ -1,319 +1,319 @@ <!-- HTML_ONLY --> <HEAD> <TITLE>LAMMPS-ICMS Users Manual</TITLE> -<META NAME="docnumber" CONTENT="5 Oct 2015 version"> +<META NAME="docnumber" CONTENT="22 Oct 2015 version"> <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> <!-- END_HTML_ONLY --> "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-ICMS Documentation :c,h3 5 Oct 2015 version :c,h4 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, and at the top of the first page of the manual (this page). LAMMPS-ICMS is an experimental variant of LAMMPS with additional features made available for testing before they will be submitted for inclusion into the official LAMMPS tree. The source code is based on the official LAMMPS svn repository mirror at the Institute for Computational Molecular Science at Temple University and generally kept up-to-date as much as possible. Sometimes, e.g. when additional development work is needed to adapt the upstream changes into LAMMPS-ICMS it can take longer until synchronization; and occasionally, e.g. in case of the rewrite of the multi-threading support, the development will be halted except for important bugfixes until all features of LAMMPS-ICMS fully compatible with the upstream version or replaced by alternate implementations. If you browse the HTML doc pages on the LAMMPS WWW site, they always describe the most current version of upstream LAMMPS, but may be missing some new features in LAMMPS-ICMS. :ulb,l If you browse the HTML doc pages included in your tarball, they describe the version you have, however, not all new features in LAMMPS-ICMS are documented immediately. :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 every patch. :l 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://freecode.com/projects/htmldoc <!-- RST .. toctree:: :maxdepth: 2 - :numbered: // comment + :numbered: Section_intro Section_start Section_commands Section_packages Section_accelerate Section_howto Section_example Section_perf Section_tools Section_modify Section_python Section_errors Section_history Indices and tables ================== -* :ref:`genindex` // comment -* :ref:`search` // comment +* :ref:`genindex` +* :ref:`search` END_RST --> <!-- HTML_ONLY --> "Introduction"_Section_intro.html :olb,l 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"_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 via the Make.py script"_start_4 :b 2.5 "Building LAMMPS as a library"_start_5 :b 2.6 "Running LAMMPS"_start_6 :b 2.7 "Command-line options"_start_7 :b 2.8 "Screen output"_start_8 :b 2.9 "Tips for users of previous versions"_start_9 :ule,b "Commands"_Section_commands.html :l 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 "Accelerating LAMMPS performance"_Section_accelerate.html :l 5.1 "Measuring performance"_acc_1 :ulb,b 5.2 "Algorithms and code options to boost performace"_acc_2 :b 5.3 "Accelerator packages with optimized styles"_acc_3 :b 5.3.1 "USER-CUDA package"_accelerate_cuda.html :ulb,b 5.3.2 "GPU package"_accelerate_gpu.html :b 5.3.3 "USER-INTEL package"_accelerate_intel.html :b 5.3.4 "KOKKOS package"_accelerate_kokkos.html :b 5.3.5 "USER-OMP package"_accelerate_omp.html :b 5.3.6 "OPT package"_accelerate_opt.html :ule,b 5.4 "Comparison of various accelerator packages"_acc_4 :ule,b "How-to discussions"_Section_howto.html :l 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 "Finite-size 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 :b 6.22 "Calculating a diffusion coefficient"_howto_22 :b 6.23 "Using chunks to calculate system properties"_howto_23 :b 6.24 "Setting parameters for pppm/disp"_howto_24 :b 6.25 "Polarizable models"_howto_25 :b 6.26 "Adiabatic core/shell model"_howto_26 :b 6.27 "Drude induced dipoles"_howto_27 :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 "Body styles"_mod_12 :b 10.13 "Thermodynamic output options"_mod_13 :b 10.14 "Variable options"_mod_14 :b 10.15 "Submitting new features for inclusion in LAMMPS"_mod_15 :ule,b "Python interface"_Section_python.html :l 11.1 "Overview of running LAMMPS from Python"_py_1 :ulb,b 11.2 "Overview of using Python from a LAMMPS script"_py_2 :b 11.3 "Building LAMMPS as a shared library"_py_3 :b 11.4 "Installing the Python wrapper into Python"_py_4 :b 11.5 "Extending Python with MPI to run in parallel"_py_5 :b 11.6 "Testing the Python-LAMMPS interface"_py_6 :b 11.7 "Using LAMMPS from Python"_py_7 :b 11.8 "Example Python scripts that use LAMMPS"_py_8 :ule,b "Errors"_Section_errors.html :l 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 13.1 "Coming attractions"_hist_1 :ulb,b 13.2 "Past versions"_hist_2 :ule,b :ole :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(start_9,Section_start.html#start_9) :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(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(howto_22,Section_howto.html#howto_22) :link(howto_23,Section_howto.html#howto_23) :link(howto_24,Section_howto.html#howto_24) :link(howto_25,Section_howto.html#howto_25) :link(howto_26,Section_howto.html#howto_26) :link(howto_27,Section_howto.html#howto_27) :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(mod_15,Section_modify.html#mod_15) :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(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) <!-- END_HTML_ONLY --> </BODY> diff --git a/doc/Section_accelerate.html b/doc/Section_accelerate.html index 0737f4bea..ca0cc2588 100644 --- a/doc/Section_accelerate.html +++ b/doc/Section_accelerate.html @@ -1,617 +1,642 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>5. Accelerating LAMMPS performance — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <link rel="next" title="6. How-to discussions" href="Section_howto.html"/> <link rel="prev" title="4. Packages" href="Section_packages.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="">5. Accelerating LAMMPS performance</a><ul> <li class="toctree-l2"><a class="reference internal" href="#measuring-performance">5.1. Measuring performance</a></li> <li class="toctree-l2"><a class="reference internal" href="#general-strategies">5.2. General strategies</a></li> <li class="toctree-l2"><a class="reference internal" href="#packages-with-optimized-styles">5.3. Packages with optimized styles</a></li> <li class="toctree-l2"><a class="reference internal" href="#comparison-of-various-accelerator-packages">5.4. Comparison of various accelerator packages</a><ul> <li class="toctree-l3"><a class="reference internal" href="#examples">5.4.1. Examples</a></li> </ul> </li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>5. Accelerating LAMMPS performance</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> <div class="rst-footer-buttons" style="margin-bottom: 1em" role="navigation" aria-label="footer navigation"> <a href="Section_howto.html" class="btn btn-neutral float-right" title="6. How-to discussions" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="Section_packages.html" class="btn btn-neutral" title="4. Packages" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="accelerating-lammps-performance"> <h1>5. Accelerating LAMMPS performance<a class="headerlink" href="#accelerating-lammps-performance" title="Permalink to this headline">¶</a></h1> <p>This section describes various methods for improving LAMMPS performance for different classes of problems running on different kinds of machines.</p> <p>There are two thrusts to the discussion that follows. The first is using code options that implement alternate algorithms that can speed-up a simulation. The second is to use one of the several accelerator packages provided with LAMMPS that contain code optimized for certain kinds of hardware, including multi-core CPUs, GPUs, and Intel Xeon Phi coprocessors.</p> <ul class="simple"> <li>5.1 <a class="reference internal" href="#acc-1"><span>Measuring performance</span></a></li> <li>5.2 <a class="reference internal" href="#acc-2"><span>Algorithms and code options to boost performace</span></a></li> <li>5.3 <a class="reference internal" href="#acc-3"><span>Accelerator packages with optimized styles</span></a></li> <li>5.3.1 <a class="reference internal" href="accelerate_cuda.html"><em>USER-CUDA package</em></a></li> <li>5.3.2 <a class="reference internal" href="accelerate_gpu.html"><em>GPU package</em></a></li> <li>5.3.3 <a class="reference internal" href="accelerate_intel.html"><em>USER-INTEL package</em></a></li> <li>5.3.4 <a class="reference internal" href="accelerate_kokkos.html"><em>KOKKOS package</em></a></li> <li>5.3.5 <a class="reference internal" href="accelerate_omp.html"><em>USER-OMP package</em></a></li> <li>5.3.6 <a class="reference internal" href="accelerate_opt.html"><em>OPT package</em></a></li> <li>5.4 <a class="reference internal" href="#acc-4"><span>Comparison of various accelerator packages</span></a></li> </ul> <p>The <a class="reference external" href="http://lammps.sandia.gov/bench.html">Benchmark page</a> of the LAMMPS web site gives performance results for the various accelerator packages discussed in Section 5.2, for several of the standard LAMMPS benchmark problems, as a function of problem size and number of compute nodes, on different hardware platforms.</p> <div class="section" id="measuring-performance"> <span id="acc-1"></span><h2>5.1. Measuring performance<a class="headerlink" href="#measuring-performance" title="Permalink to this headline">¶</a></h2> <p>Before trying to make your simulation run faster, you should understand how it currently performs and where the bottlenecks are.</p> <p>The best way to do this is run the your system (actual number of atoms) for a modest number of timesteps (say 100 steps) on several different processor counts, including a single processor if possible. Do this for an equilibrium version of your system, so that the 100-step timings are representative of a much longer run. There is typically no need to run for 1000s of timesteps to get accurate timings; you can simply extrapolate from short runs.</p> <p>For the set of runs, look at the timing data printed to the screen and log file at the end of each LAMMPS run. <a class="reference internal" href="Section_start.html#start-8"><span>This section</span></a> of the manual has an overview.</p> <p>Running on one (or a few processors) should give a good estimate of the serial performance and what portions of the timestep are taking the most time. Running the same problem on a few different processor counts should give an estimate of parallel scalability. I.e. if the simulation runs 16x faster on 16 processors, its 100% parallel efficient; if it runs 8x faster on 16 processors, it’s 50% efficient.</p> <p>The most important data to look at in the timing info is the timing breakdown and relative percentages. For example, trying different options for speeding up the long-range solvers will have little impact if they only consume 10% of the run time. If the pairwise time is dominating, you may want to look at GPU or OMP versions of the pair style, as discussed below. Comparing how the percentages change as you increase the processor count gives you a sense of how different operations within the timestep are scaling. Note that if you are running with a Kspace solver, there is additional output on the breakdown of the Kspace time. For PPPM, this includes the fraction spent on FFTs, which can be communication intensive.</p> <p>Another important detail in the timing info are the histograms of atoms counts and neighbor counts. If these vary widely across processors, you have a load-imbalance issue. This often results in inaccurate relative timing data, because processors have to wait when communication occurs for other processors to catch up. Thus the reported times for “Communication” or “Other” may be higher than they really are, due to load-imbalance. If this is an issue, you can uncomment the MPI_Barrier() lines in src/timer.cpp, and recompile LAMMPS, to obtain synchronized timings.</p> <hr class="docutils" /> </div> <div class="section" id="general-strategies"> <span id="acc-2"></span><h2>5.2. General strategies<a class="headerlink" href="#general-strategies" title="Permalink to this headline">¶</a></h2> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">this section 5.2 is still a work in progress</p> </div> <p>Here is a list of general ideas for improving simulation performance. Most of them are only applicable to certain models and certain bottlenecks in the current performance, so let the timing data you generate be your guide. It is hard, if not impossible, to predict how much difference these options will make, since it is a function of problem size, number of processors used, and your machine. There is no substitute for identifying performance bottlenecks, and trying out various options.</p> <ul class="simple"> <li>rRESPA</li> <li>2-FFT PPPM</li> <li>Staggered PPPM</li> <li>single vs double PPPM</li> <li>partial charge PPPM</li> <li>verlet/split run style</li> <li>processor command for proc layout and numa layout</li> <li>load-balancing: balance and fix balance</li> </ul> <p>2-FFT PPPM, also called <em>analytic differentiation</em> or <em>ad</em> PPPM, uses 2 FFTs instead of the 4 FFTs used by the default <em>ik differentiation</em> PPPM. However, 2-FFT PPPM also requires a slightly larger mesh size to achieve the same accuracy as 4-FFT PPPM. For problems where the FFT cost is the performance bottleneck (typically large problems running on many processors), 2-FFT PPPM may be faster than 4-FFT PPPM.</p> <p>Staggered PPPM performs calculations using two different meshes, one shifted slightly with respect to the other. This can reduce force aliasing errors and increase the accuracy of the method, but also doubles the amount of work required. For high relative accuracy, using staggered PPPM allows one to half the mesh size in each dimension as compared to regular PPPM, which can give around a 4x speedup in the kspace time. However, for low relative accuracy, using staggered PPPM gives little benefit and can be up to 2x slower in the kspace time. For example, the rhodopsin benchmark was run on a single processor, and results for kspace time vs. relative accuracy for the different methods are shown in the figure below. For this system, staggered PPPM (using ik differentiation) becomes useful when using a relative accuracy of slightly greater than 1e-5 and above.</p> <img alt="_images/rhodo_staggered.jpg" class="align-center" src="_images/rhodo_staggered.jpg" /> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">Using staggered PPPM may not give the same increase in accuracy of energy and pressure as it does in forces, so some caution must be used if energy and/or pressure are quantities of interest, such as when using a barostat.</p> </div> <hr class="docutils" /> </div> <div class="section" id="packages-with-optimized-styles"> <span id="acc-3"></span><h2>5.3. Packages with optimized styles<a class="headerlink" href="#packages-with-optimized-styles" title="Permalink to this headline">¶</a></h2> <p>Accelerated versions of various <a class="reference internal" href="pair_style.html"><em>pair_style</em></a>, <a class="reference internal" href="fix.html"><em>fixes</em></a>, <a class="reference internal" href="compute.html"><em>computes</em></a>, and other commands have been added to LAMMPS, which will typically run faster than the standard non-accelerated versions. Some require appropriate hardware to be present on your system, e.g. GPUs or Intel Xeon Phi coprocessors.</p> <p>All of these commands are in packages provided with LAMMPS. An -overview of packages is give in <a class="reference internal" href="Section_packages.html"><em>Section packages</em></a>. These are the accelerator packages +overview of packages is give in <a class="reference internal" href="Section_packages.html"><em>Section packages</em></a>.</p> +<p>These are the accelerator packages currently in LAMMPS, either as standard or user packages:</p> <table border="1" class="docutils"> <colgroup> <col width="44%" /> <col width="56%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="accelerate_cuda.html"><em>USER-CUDA</em></a></td> <td>for NVIDIA GPUs</td> </tr> <tr class="row-even"><td><a class="reference internal" href="accelerate_gpu.html"><em>GPU</em></a></td> <td>for NVIDIA GPUs as well as OpenCL support</td> </tr> <tr class="row-odd"><td><a class="reference internal" href="accelerate_intel.html"><em>USER-INTEL</em></a></td> <td>for Intel CPUs and Intel Xeon Phi</td> </tr> <tr class="row-even"><td><a class="reference internal" href="accelerate_kokkos.html"><em>KOKKOS</em></a></td> <td>for GPUs, Intel Xeon Phi, and OpenMP threading</td> </tr> <tr class="row-odd"><td><a class="reference internal" href="accelerate_omp.html"><em>USER-OMP</em></a></td> <td>for OpenMP threading</td> </tr> <tr class="row-even"><td><a class="reference internal" href="accelerate_opt.html"><em>OPT</em></a></td> <td>generic CPU optimizations</td> </tr> </tbody> </table> +<p>Inverting this list, LAMMPS currently has acceleration support for +three kinds of hardware, via the listed packages:</p> +<table border="1" class="docutils"> +<colgroup> +<col width="10%" /> +<col width="90%" /> +</colgroup> +<tbody valign="top"> +<tr class="row-odd"><td>Many-core CPUs</td> +<td><a class="reference internal" href="accelerate_intel.html"><em>USER-INTEL</em></a>, <a class="reference internal" href="accelerate_kokkos.html"><em>KOKKOS</em></a>, <a class="reference internal" href="accelerate_omp.html"><em>USER-OMP</em></a>, <a class="reference internal" href="accelerate_opt.html"><em>OPT</em></a> packages</td> +</tr> +<tr class="row-even"><td>NVIDIA GPUs</td> +<td><a class="reference internal" href="accelerate_cuda.html"><em>USER-CUDA</em></a>, <a class="reference internal" href="accelerate_gpu.html"><em>GPU</em></a>, <a class="reference internal" href="accelerate_kokkos.html"><em>KOKKOS</em></a> packages</td> +</tr> +<tr class="row-odd"><td>Intel Phi</td> +<td><a class="reference internal" href="accelerate_intel.html"><em>USER-INTEL</em></a>, <a class="reference internal" href="accelerate_kokkos.html"><em>KOKKOS</em></a> packages</td> +</tr> +</tbody> +</table> +<p>Which package is fastest for your hardware may depend on the size +problem you are running and what commands (accelerated and +non-accelerated) are invoked by your input script. While these doc +pages include performance guidelines, there is no substitute for +trying out the different packages appropriate to your hardware.</p> <p>Any accelerated style has the same name as the corresponding standard style, except that a suffix is appended. Otherwise, the syntax for the command that uses the style is identical, their functionality is the same, and the numerical results it produces should also be the same, except for precision and round-off effects.</p> <p>For example, all of these styles are accelerated variants of the Lennard-Jones <a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut</em></a>:</p> <ul class="simple"> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/cuda</em></a></li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/gpu</em></a></li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/intel</em></a></li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/kk</em></a></li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/omp</em></a></li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/opt</em></a></li> </ul> <p>To see what accelerate styles are currently available, see <a class="reference internal" href="Section_commands.html#cmd-5"><span>Section_commands 5</span></a> of the manual. The doc pages for individual commands (e.g. <a class="reference internal" href="pair_lj.html"><em>pair lj/cut</em></a> or <a class="reference internal" href="fix_nve.html"><em>fix nve</em></a>) also list any accelerated variants available for that style.</p> <p>To use an accelerator package in LAMMPS, and one or more of the styles it provides, follow these general steps. Details vary from package to package and are explained in the individual accelerator doc pages, listed above:</p> <table border="1" class="docutils"> <colgroup> <col width="26%" /> <col width="74%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td>build the accelerator library</td> <td>only for USER-CUDA and GPU packages</td> </tr> <tr class="row-even"><td>install the accelerator package</td> <td>make yes-opt, make yes-user-intel, etc</td> </tr> </tbody> </table> <div class="line-block"> <div class="line">install the accelerator package | make yes-opt, make yes-user-intel, etc |</div> </div> <blockquote> -<div>only for USER-INTEL, KOKKOS, USER-OMP packages |</div></blockquote> +<div>only for USER-INTEL, KOKKOS, USER-OMP, OPT packages |</div></blockquote> <table border="1" class="docutils"> <colgroup> <col width="26%" /> <col width="74%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td>re-build LAMMPS</td> <td>make machine</td> </tr> -<tr class="row-even"><td>run a LAMMPS simulation</td> -<td>lmp_machine < in.script</td> -</tr> </tbody> </table> <div class="line-block"> -<div class="line">run a LAMMPS simulation | lmp_machine < in.script |</div> +<div class="line">re-build LAMMPS | make machine |</div> </div> <blockquote> +<div>mpirun -np 32 lmp_machine -in in.script |</div></blockquote> +<blockquote> <div>only for USER-CUDA and KOKKOS packages |</div></blockquote> <blockquote> <div><a class="reference internal" href="package.html"><em>package</em></a> command, <br> only if defaults need to be changed |</div></blockquote> <blockquote> <div><a class="reference internal" href="suffix.html"><em>suffix</em></a> command |</div></blockquote> <table border="1" class="docutils"> <colgroup> </colgroup> <tbody valign="top"> </tbody> </table> -<p>The first 4 steps can be done as a single command, using the -src/Make.py tool. The Make.py tool is discussed in <a class="reference internal" href="Section_start.html#start-4"><span>Section 2.4</span></a> of the manual, and its use is +<p>Note that the first 4 steps can be done as a single command, using the +src/Make.py tool. This tool is discussed in <a class="reference internal" href="Section_start.html#start-4"><span>Section 2.4</span></a> of the manual, and its use is illustrated in the individual accelerator sections. Typically these steps only need to be done once, to create an executable that uses one or more accelerator packages.</p> <p>The last 4 steps can all be done from the command-line when LAMMPS is launched, without changing your input script, as illustrated in the individual accelerator sections. Or you can add <a class="reference internal" href="package.html"><em>package</em></a> and <a class="reference internal" href="suffix.html"><em>suffix</em></a> commands to your input script.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">With a few exceptions, you can build a single LAMMPS -executable with all its accelerator packages installed. Note that the -USER-INTEL and KOKKOS packages require you to choose one of their -options when building. I.e. CPU or Phi for USER-INTEL. OpenMP, Cuda, -or Phi for KOKKOS. Here are the exceptions; you cannot build a single -executable with:</p> +executable with all its accelerator packages installed. Note however +that the USER-INTEL and KOKKOS packages require you to choose one of +their hardware options when building for a specific platform. +I.e. CPU or Phi option for the USER-INTEL package. Or the OpenMP, +Cuda, or Phi option for the KOKKOS package.</p> </div> +<p>These are the exceptions. You cannot build a single executable with:</p> <ul class="simple"> <li>both the USER-INTEL Phi and KOKKOS Phi options</li> <li>the USER-INTEL Phi or Kokkos Phi option, and either the USER-CUDA or GPU packages</li> </ul> <p>See the examples/accelerate/README and make.list files for sample Make.py commands that build LAMMPS with any or all of the accelerator packages. As an example, here is a command that builds with all the GPU related packages installed (USER-CUDA, GPU, KOKKOS with Cuda), including settings to build the needed auxiliary USER-CUDA and GPU libraries for Kepler GPUs:</p> <pre class="literal-block"> Make.py -j 16 -p omp gpu cuda kokkos -cc nvcc wrap=mpi -cuda mode=double arch=35 -gpu mode=double arch=35 -kokkos cuda arch=35 lib-all file mpi </pre> <p>The examples/accelerate directory also has input scripts that can be used with all of the accelerator packages. See its README file for details.</p> <p>Likewise, the bench directory has FERMI and KEPLER and PHI sub-directories with Make.py commands and input scripts for using all the accelerator packages on various machines. See the README files in those dirs.</p> <p>As mentioned above, the <a class="reference external" href="http://lammps.sandia.gov/bench.html">Benchmark page</a> of the LAMMPS web site gives performance results for the various accelerator packages for several of the standard LAMMPS benchmark problems, as a function of problem size and number of compute nodes, on different hardware platforms.</p> <p>Here is a brief summary of what the various packages provide. Details are in the individual accelerator sections.</p> <ul class="simple"> <li>Styles with a “cuda” or “gpu” suffix are part of the USER-CUDA or GPU packages, and can be run on NVIDIA GPUs. The speed-up on a GPU depends on a variety of factors, discussed in the accelerator sections.</li> <li>Styles with an “intel” suffix are part of the USER-INTEL package. These styles support vectorized single and mixed precision calculations, in addition to full double precision. In extreme cases, this can provide speedups over 3.5x on CPUs. The package also supports acceleration in “offload” mode to Intel(R) Xeon Phi(TM) coprocessors. This can result in additional speedup over 2x depending on the hardware configuration.</li> <li>Styles with a “kk” suffix are part of the KOKKOS package, and can be run using OpenMP on multicore CPUs, on an NVIDIA GPU, or on an Intel Xeon Phi in “native” mode. The speed-up depends on a variety of factors, as discussed on the KOKKOS accelerator page.</li> <li>Styles with an “omp” suffix are part of the USER-OMP package and allow a pair-style to be run in multi-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 or when the many MPI tasks would overload the available bandwidth for communication.</li> <li>Styles with an “opt” suffix are part of the OPT package and typically speed-up the pairwise calculations of your simulation by 5-25% on a CPU.</li> </ul> <p>The individual accelerator package doc pages explain:</p> <ul class="simple"> <li>what hardware and software the accelerated package requires</li> <li>how to build LAMMPS with the accelerated package</li> <li>how to run with the accelerated package either via command-line switches or modifying the input script</li> <li>speed-ups to expect</li> <li>guidelines for best performance</li> <li>restrictions</li> </ul> <hr class="docutils" /> </div> <div class="section" id="comparison-of-various-accelerator-packages"> <span id="acc-4"></span><h2>5.4. Comparison of various accelerator packages<a class="headerlink" href="#comparison-of-various-accelerator-packages" title="Permalink to this headline">¶</a></h2> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">this section still needs to be re-worked with additional KOKKOS and USER-INTEL information.</p> </div> <p>The next section compares and contrasts the various accelerator options, since there are multiple ways to perform OpenMP threading, run on GPUs, and run on Intel Xeon Phi coprocessors.</p> <p>All 3 of these 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><strong>Guidelines for using each package optimally:</strong></p> <ul class="simple"> <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> <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> <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 +number of atoms per GPU is smaller. 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> <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> <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.</li> </ul> <p><strong>Differences between the two packages:</strong></p> <ul class="simple"> <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> <li>The USER-CUDA package does not support acceleration for minimization.</li> <li>The USER-CUDA package does not support hybrid pair styles.</li> <li>The USER-CUDA package can order atoms in the neighbor list differently from run to run resulting in a different order for force accumulation.</li> <li>The USER-CUDA package has a limit on the number of atom types that can be used in a simulation.</li> <li>The GPU package requires neighbor lists to be built on the CPU when using exclusion lists or a triclinic simulation box.</li> <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.</li> </ul> <div class="section" id="examples"> <h3>5.4.1. Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h3> <p>The LAMMPS distribution has two directories with sample input scripts for the GPU and USER-CUDA packages.</p> <ul class="simple"> <li>lammps/examples/gpu = GPU package files</li> <li>lammps/examples/USER/cuda = USER-CUDA package files</li> </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> </div> </div> </div> </div> </div> <footer> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <a href="Section_howto.html" class="btn btn-neutral float-right" title="6. How-to discussions" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="Section_packages.html" class="btn btn-neutral" title="4. Packages" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/Section_accelerate.txt b/doc/Section_accelerate.txt index ac9b8563d..d5c5dede3 100644 --- a/doc/Section_accelerate.txt +++ b/doc/Section_accelerate.txt @@ -1,397 +1,415 @@ "Previous Section"_Section_packages.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_howto.html :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) :link(lc,Section_commands.html#comm) :line 5. Accelerating LAMMPS performance :h3 This section describes various methods for improving LAMMPS performance for different classes of problems running on different kinds of machines. There are two thrusts to the discussion that follows. The first is using code options that implement alternate algorithms that can speed-up a simulation. The second is to use one of the several accelerator packages provided with LAMMPS that contain code optimized for certain kinds of hardware, including multi-core CPUs, GPUs, and Intel Xeon Phi coprocessors. 5.1 "Measuring performance"_#acc_1 :ulb,l 5.2 "Algorithms and code options to boost performace"_#acc_2 :l 5.3 "Accelerator packages with optimized styles"_#acc_3 :l 5.3.1 "USER-CUDA package"_accelerate_cuda.html :ulb,l 5.3.2 "GPU package"_accelerate_gpu.html :l 5.3.3 "USER-INTEL package"_accelerate_intel.html :l 5.3.4 "KOKKOS package"_accelerate_kokkos.html :l 5.3.5 "USER-OMP package"_accelerate_omp.html :l 5.3.6 "OPT package"_accelerate_opt.html :l,ule 5.4 "Comparison of various accelerator packages"_#acc_4 :l,ule The "Benchmark page"_http://lammps.sandia.gov/bench.html of the LAMMPS web site gives performance results for the various accelerator packages discussed in Section 5.2, for several of the standard LAMMPS benchmark problems, as a function of problem size and number of compute nodes, on different hardware platforms. :line :line 5.1 Measuring performance :h4,link(acc_1) Before trying to make your simulation run faster, you should understand how it currently performs and where the bottlenecks are. The best way to do this is run the your system (actual number of atoms) for a modest number of timesteps (say 100 steps) on several different processor counts, including a single processor if possible. Do this for an equilibrium version of your system, so that the 100-step timings are representative of a much longer run. There is typically no need to run for 1000s of timesteps to get accurate timings; you can simply extrapolate from short runs. For the set of runs, look at the timing data printed to the screen and log file at the end of each LAMMPS run. "This section"_Section_start.html#start_8 of the manual has an overview. Running on one (or a few processors) should give a good estimate of the serial performance and what portions of the timestep are taking the most time. Running the same problem on a few different processor counts should give an estimate of parallel scalability. I.e. if the simulation runs 16x faster on 16 processors, its 100% parallel efficient; if it runs 8x faster on 16 processors, it's 50% efficient. The most important data to look at in the timing info is the timing breakdown and relative percentages. For example, trying different options for speeding up the long-range solvers will have little impact if they only consume 10% of the run time. If the pairwise time is dominating, you may want to look at GPU or OMP versions of the pair style, as discussed below. Comparing how the percentages change as you increase the processor count gives you a sense of how different operations within the timestep are scaling. Note that if you are running with a Kspace solver, there is additional output on the breakdown of the Kspace time. For PPPM, this includes the fraction spent on FFTs, which can be communication intensive. Another important detail in the timing info are the histograms of atoms counts and neighbor counts. If these vary widely across processors, you have a load-imbalance issue. This often results in inaccurate relative timing data, because processors have to wait when communication occurs for other processors to catch up. Thus the reported times for "Communication" or "Other" may be higher than they really are, due to load-imbalance. If this is an issue, you can uncomment the MPI_Barrier() lines in src/timer.cpp, and recompile LAMMPS, to obtain synchronized timings. :line 5.2 General strategies :h4,link(acc_2) NOTE: this section 5.2 is still a work in progress Here is a list of general ideas for improving simulation performance. Most of them are only applicable to certain models and certain bottlenecks in the current performance, so let the timing data you generate be your guide. It is hard, if not impossible, to predict how much difference these options will make, since it is a function of problem size, number of processors used, and your machine. There is no substitute for identifying performance bottlenecks, and trying out various options. rRESPA 2-FFT PPPM Staggered PPPM single vs double PPPM partial charge PPPM verlet/split run style processor command for proc layout and numa layout load-balancing: balance and fix balance :ul 2-FFT PPPM, also called {analytic differentiation} or {ad} PPPM, uses 2 FFTs instead of the 4 FFTs used by the default {ik differentiation} PPPM. However, 2-FFT PPPM also requires a slightly larger mesh size to achieve the same accuracy as 4-FFT PPPM. For problems where the FFT cost is the performance bottleneck (typically large problems running on many processors), 2-FFT PPPM may be faster than 4-FFT PPPM. Staggered PPPM performs calculations using two different meshes, one shifted slightly with respect to the other. This can reduce force aliasing errors and increase the accuracy of the method, but also doubles the amount of work required. For high relative accuracy, using staggered PPPM allows one to half the mesh size in each dimension as compared to regular PPPM, which can give around a 4x speedup in the kspace time. However, for low relative accuracy, using staggered PPPM gives little benefit and can be up to 2x slower in the kspace time. For example, the rhodopsin benchmark was run on a single processor, and results for kspace time vs. relative accuracy for the different methods are shown in the figure below. For this system, staggered PPPM (using ik differentiation) becomes useful when using a relative accuracy of slightly greater than 1e-5 and above. :c,image(JPG/rhodo_staggered.jpg) IMPORTANT NOTE: Using staggered PPPM may not give the same increase in accuracy of energy and pressure as it does in forces, so some caution must be used if energy and/or pressure are quantities of interest, such as when using a barostat. :line 5.3 Packages with optimized styles :h4,link(acc_3) 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. Some require appropriate hardware to be present on your system, e.g. GPUs or Intel Xeon Phi coprocessors. All of these commands are in packages provided with LAMMPS. An overview of packages is give in "Section -packages"_Section_packages.html. These are the accelerator packages +packages"_Section_packages.html. + +These are the accelerator packages currently in LAMMPS, either as standard or user packages: "USER-CUDA"_accelerate_cuda.html : for NVIDIA GPUs "GPU"_accelerate_gpu.html : for NVIDIA GPUs as well as OpenCL support "USER-INTEL"_accelerate_intel.html : for Intel CPUs and Intel Xeon Phi "KOKKOS"_accelerate_kokkos.html : for GPUs, Intel Xeon Phi, and OpenMP threading "USER-OMP"_accelerate_omp.html : for OpenMP threading "OPT"_accelerate_opt.html : generic CPU optimizations :tb(s=:) +Inverting this list, LAMMPS currently has acceleration support for +three kinds of hardware, via the listed packages: + +Many-core CPUs : "USER-INTEL"_accelerate_intel.html, "KOKKOS"_accelerate_kokkos.html, "USER-OMP"_accelerate_omp.html, "OPT"_accelerate_opt.html packages +NVIDIA GPUs : "USER-CUDA"_accelerate_cuda.html, "GPU"_accelerate_gpu.html, "KOKKOS"_accelerate_kokkos.html packages +Intel Phi : "USER-INTEL"_accelerate_intel.html, "KOKKOS"_accelerate_kokkos.html packages :tb(s=:) + +Which package is fastest for your hardware may depend on the size +problem you are running and what commands (accelerated and +non-accelerated) are invoked by your input script. While these doc +pages include performance guidelines, there is no substitute for +trying out the different packages appropriate to your hardware. + Any accelerated style has the same name as the corresponding standard style, except that a suffix is appended. Otherwise, the syntax for the command that uses the style is identical, their functionality is the same, and the numerical results it produces should also be the same, except for precision and round-off effects. For example, all of these styles are accelerated variants of the Lennard-Jones "pair_style lj/cut"_pair_lj.html: "pair_style lj/cut/cuda"_pair_lj.html "pair_style lj/cut/gpu"_pair_lj.html "pair_style lj/cut/intel"_pair_lj.html "pair_style lj/cut/kk"_pair_lj.html "pair_style lj/cut/omp"_pair_lj.html "pair_style lj/cut/opt"_pair_lj.html :ul To see what accelerate styles are currently available, see "Section_commands 5"_Section_commands.html#cmd_5 of the manual. The doc pages for individual commands (e.g. "pair lj/cut"_pair_lj.html or "fix nve"_fix_nve.html) also list any accelerated variants available for that style. To use an accelerator package in LAMMPS, and one or more of the styles it provides, follow these general steps. Details vary from package to package and are explained in the individual accelerator doc pages, listed above: build the accelerator library | only for USER-CUDA and GPU packages | install the accelerator package | make yes-opt, make yes-user-intel, etc | add compile/link flags to Makefile.machine | in src/MAKE, <br> - only for USER-INTEL, KOKKOS, USER-OMP packages | + only for USER-INTEL, KOKKOS, USER-OMP, OPT packages | re-build LAMMPS | make machine | run a LAMMPS simulation | - lmp_machine < in.script | + lmp_machine < in.script <br> + mpirun -np 32 lmp_machine -in in.script | enable the accelerator package | via "-c on" and "-k on" "command-line switches"_Section_start.html#start_7, <br> only for USER-CUDA and KOKKOS packages | set any needed options for the package | via "-pk" "command-line switch"_Section_start.html#start_7 or "package"_package.html command, <br> only if defaults need to be changed | use accelerated styles in your input script | via "-sf" "command-line switch"_Section_start.html#start_7 or "suffix"_suffix.html command :tb(c=2,s=|) -The first 4 steps can be done as a single command, using the -src/Make.py tool. The Make.py tool is discussed in "Section +Note that the first 4 steps can be done as a single command, using the +src/Make.py tool. This tool is discussed in "Section 2.4"_Section_start.html#start_4 of the manual, and its use is illustrated in the individual accelerator sections. Typically these steps only need to be done once, to create an executable that uses one or more accelerator packages. The last 4 steps can all be done from the command-line when LAMMPS is launched, without changing your input script, as illustrated in the individual accelerator sections. Or you can add "package"_package.html and "suffix"_suffix.html commands to your input script. IMPORTANT NOTE: With a few exceptions, you can build a single LAMMPS -executable with all its accelerator packages installed. Note that the -USER-INTEL and KOKKOS packages require you to choose one of their -options when building. I.e. CPU or Phi for USER-INTEL. OpenMP, Cuda, -or Phi for KOKKOS. Here are the exceptions; you cannot build a single -executable with: +executable with all its accelerator packages installed. Note however +that the USER-INTEL and KOKKOS packages require you to choose one of +their hardware options when building for a specific platform. +I.e. CPU or Phi option for the USER-INTEL package. Or the OpenMP, +Cuda, or Phi option for the KOKKOS package. + +These are the exceptions. You cannot build a single executable with: both the USER-INTEL Phi and KOKKOS Phi options the USER-INTEL Phi or Kokkos Phi option, and either the USER-CUDA or GPU packages :ul See the examples/accelerate/README and make.list files for sample Make.py commands that build LAMMPS with any or all of the accelerator packages. As an example, here is a command that builds with all the GPU related packages installed (USER-CUDA, GPU, KOKKOS with Cuda), including settings to build the needed auxiliary USER-CUDA and GPU libraries for Kepler GPUs: Make.py -j 16 -p omp gpu cuda kokkos -cc nvcc wrap=mpi \ -cuda mode=double arch=35 -gpu mode=double arch=35 \\ -kokkos cuda arch=35 lib-all file mpi :pre The examples/accelerate directory also has input scripts that can be used with all of the accelerator packages. See its README file for details. Likewise, the bench directory has FERMI and KEPLER and PHI sub-directories with Make.py commands and input scripts for using all the accelerator packages on various machines. See the README files in those dirs. As mentioned above, the "Benchmark page"_http://lammps.sandia.gov/bench.html of the LAMMPS web site gives performance results for the various accelerator packages for several of the standard LAMMPS benchmark problems, as a function of problem size and number of compute nodes, on different hardware platforms. Here is a brief summary of what the various packages provide. Details are in the individual accelerator sections. Styles with a "cuda" or "gpu" suffix are part of the USER-CUDA or GPU packages, and can be run on NVIDIA GPUs. The speed-up on a GPU depends on a variety of factors, discussed in the accelerator sections. :ulb,l Styles with an "intel" suffix are part of the USER-INTEL package. These styles support vectorized single and mixed precision calculations, in addition to full double precision. In extreme cases, this can provide speedups over 3.5x on CPUs. The package also supports acceleration in "offload" mode to Intel(R) Xeon Phi(TM) coprocessors. This can result in additional speedup over 2x depending on the hardware configuration. :l Styles with a "kk" suffix are part of the KOKKOS package, and can be run using OpenMP on multicore CPUs, on an NVIDIA GPU, or on an Intel Xeon Phi in "native" mode. The speed-up depends on a variety of factors, as discussed on the KOKKOS accelerator page. :l Styles with an "omp" suffix are part of the USER-OMP package and allow a pair-style to be run in multi-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 or when the many MPI tasks would overload the available bandwidth for communication. :l Styles with an "opt" suffix are part of the OPT package and typically speed-up the pairwise calculations of your simulation by 5-25% on a CPU. :l,ule The individual accelerator package doc pages explain: what hardware and software the accelerated package requires how to build LAMMPS with the accelerated package how to run with the accelerated package either via command-line switches or modifying the input script speed-ups to expect guidelines for best performance restrictions :ul :line 5.4 Comparison of various accelerator packages :h4,link(acc_4) NOTE: this section still needs to be re-worked with additional KOKKOS and USER-INTEL information. The next section compares and contrasts the various accelerator options, since there are multiple ways to perform OpenMP threading, run on GPUs, and run on Intel Xeon Phi coprocessors. All 3 of these 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 +number of atoms per GPU is smaller. 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 USER-CUDA package does not support acceleration for minimization. :l The USER-CUDA package does not support hybrid pair styles. :l The USER-CUDA package can order atoms in the neighbor list differently from run to run resulting in a different order for force accumulation. :l The USER-CUDA package has a limit on the number of atom types that can be used in a simulation. :l The GPU package requires neighbor lists to be built on the CPU when using exclusion lists or a triclinic simulation box. :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. diff --git a/doc/Section_commands.html b/doc/Section_commands.html index 7b0864bce..39b34705b 100644 --- a/doc/Section_commands.html +++ b/doc/Section_commands.html @@ -1,1522 +1,1522 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>3. Commands — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <link rel="next" title="4. Packages" href="Section_packages.html"/> <link rel="prev" title="2. Getting Started" href="Section_start.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="">3. Commands</a><ul> <li class="toctree-l2"><a class="reference internal" href="#lammps-input-script">3.1. LAMMPS input script</a></li> <li class="toctree-l2"><a class="reference internal" href="#parsing-rules">3.2. Parsing rules</a></li> <li class="toctree-l2"><a class="reference internal" href="#input-script-structure">3.3. Input script structure</a></li> <li class="toctree-l2"><a class="reference internal" href="#commands-listed-by-category">3.4. Commands listed by category</a></li> <li class="toctree-l2"><a class="reference internal" href="#individual-commands">3.5. Individual commands</a></li> <li class="toctree-l2"><a class="reference internal" href="#fix-styles">3.6. Fix styles</a></li> <li class="toctree-l2"><a class="reference internal" href="#compute-styles">3.7. Compute styles</a></li> <li class="toctree-l2"><a class="reference internal" href="#pair-style-potentials">3.8. Pair_style potentials</a></li> <li class="toctree-l2"><a class="reference internal" href="#bond-style-potentials">3.9. Bond_style potentials</a></li> <li class="toctree-l2"><a class="reference internal" href="#angle-style-potentials">3.10. Angle_style potentials</a></li> <li class="toctree-l2"><a class="reference internal" href="#dihedral-style-potentials">3.11. Dihedral_style potentials</a></li> <li class="toctree-l2"><a class="reference internal" href="#improper-style-potentials">3.12. Improper_style potentials</a></li> <li class="toctree-l2"><a class="reference internal" href="#kspace-solvers">3.13. Kspace solvers</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>3. Commands</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> <div class="rst-footer-buttons" style="margin-bottom: 1em" role="navigation" aria-label="footer navigation"> <a href="Section_packages.html" class="btn btn-neutral float-right" title="4. Packages" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="Section_start.html" class="btn btn-neutral" title="2. Getting Started" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="commands"> <h1>3. Commands<a class="headerlink" href="#commands" title="Permalink to this headline">¶</a></h1> <p>This section describes how a LAMMPS input script is formatted and the input script commands used to define a LAMMPS simulation.</p> <div class="line-block"> <div class="line">3.1 <a class="reference internal" href="#cmd-1"><span>LAMMPS input script</span></a></div> <div class="line">3.2 <a class="reference internal" href="#cmd-2"><span>Parsing rules</span></a></div> <div class="line">3.3 <a class="reference internal" href="#cmd-3"><span>Input script structure</span></a></div> <div class="line">3.4 <a class="reference internal" href="#cmd-4"><span>Commands listed by category</span></a></div> <div class="line">3.5 <a class="reference internal" href="#cmd-5"><span>Commands listed alphabetically</span></a></div> <div class="line"><br /></div> </div> <div class="section" id="lammps-input-script"> <span id="cmd-1"></span><h2>3.1. LAMMPS input script<a class="headerlink" href="#lammps-input-script" title="Permalink to this headline">¶</a></h2> <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> <div class="highlight-python"><div class="highlight"><pre>timestep 0.5 run 100 run 100 </pre></div> </div> <p>does something different than this sequence:</p> <div class="highlight-python"><div class="highlight"><pre>run 100 timestep 0.5 run 100 </pre></div> </div> <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 class="reference internal" href="read_data.html"><em>read_data</em></a> command initializes the system by setting up the simulation box and assigning atoms to processors. If default values are not desired, the <a class="reference internal" href="processors.html"><em>processors</em></a> and <a class="reference internal" href="boundary.html"><em>boundary</em></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 class="reference internal" href="Section_errors.html"><em>This section</em></a> gives more information on what errors mean. The documentation for each command lists restrictions on how the command can be used.</p> <hr class="docutils" /> </div> <div class="section" id="parsing-rules"> <span id="cmd-2"></span><h2>3.2. Parsing rules<a class="headerlink" href="#parsing-rules" title="Permalink to this headline">¶</a></h2> <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, the command is assumed to continue on the next line. The next line is concatenated to the previous line by removing the “&” character and line break. This allows long commands to be continued across two or more lines. See the discussion of triple quotes in (6) for how to continue a command across multiple line without using “&” characters.</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).</p> <p>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”.</p> <p>How the variable is converted to a text string depends on what style of variable it is; see the <a class="reference external" href="variable">variable</a> doc page for details. It can be a variable that stores multiple text strings, and return one of them. The returned text string can be multiple “words” (space separated) which will then be interpreted as multiple arguments in the input command. The variable can also store a numeric formula which will be evaluated and its numeric result returned as a string.</p> <p>As a special case, if the $ is followed by parenthesis, then the text inside the parenthesis is treated as an “immediate” variable and evaluated as an <a class="reference internal" href="variable.html"><em>equal-style variable</em></a>. This is a way to use numeric formulas in an input script without having to assign them to variable names. For example, these 3 input script lines:</p> <div class="highlight-python"><div class="highlight"><pre>variable X equal (xlo+xhi)/2+sqrt(v_area) region 1 block $X 2 INF INF EDGE EDGE variable X delete </pre></div> </div> <p>can be replaced by</p> <div class="highlight-python"><div class="highlight"><pre>region 1 block $((xlo+xhi)/2+sqrt(v_area)) 2 INF INF EDGE EDGE </pre></div> </div> <p>so that you do not have to define (or discard) a temporary variable X.</p> <p>Note that neither the curly-bracket or immediate form of variables can contain nested $ characters for other variables to substitute for. Thus you cannot do this:</p> <div class="highlight-python"><div class="highlight"><pre>variable a equal 2 variable b2 equal 4 print "B2 = ${b$a}" </pre></div> </div> <p>Nor can you specify this $($x-1.0) for an immediate variable, but you could use $(v_x-1.0), since the latter is valid syntax for an <a class="reference internal" href="variable.html"><em>equal-style variable</em></a>.</p> <p>See the <a class="reference internal" href="variable.html"><em>variable</em></a> command for more details of how strings are assigned to variables and evaluated, and how they can be used 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 single or double or triple quotes. A long single argument enclosed in single or double quotes can span multiple lines if the “&” character is used, as described above. When the lines are concatenated together (and the “&” characters and line breaks removed), the text will become a single line. If you want multiple lines of an argument to retain their line breaks, the text can be enclosed in triple quotes, in which case “&” characters are not needed. For example:</p> <div class="highlight-python"><div class="highlight"><pre>print "Volume = $v" print 'Volume = $v' if "${steps} > 1000" then quit variable a string "red green blue & purple orange cyan" print """ System volume = $v System temperature = $t """ </pre></div> </div> <p>In each case, the single, double, or triple quotes are removed when the single argument they enclose is stored internally.</p> <p>See the <a class="reference internal" href="dump_modify.html"><em>dump modify format</em></a>, <a class="reference internal" href="print.html"><em>print</em></a>, <a class="reference internal" href="if.html"><em>if</em></a>, and <a class="reference internal" href="python.html"><em>python</em></a> commands for examples.</p> <p>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> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">If the argument is itself a command that requires a quoted argument (e.g. using a <a class="reference internal" href="print.html"><em>print</em></a> command as part of an <a class="reference internal" href="if.html"><em>if</em></a> or <a class="reference internal" href="run.html"><em>run every</em></a> command), then single, double, or triple 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> </div> <hr class="docutils" /> </div> <div class="section" id="input-script-structure"> <span id="cmd-3"></span><h2>3.3. Input script structure<a class="headerlink" href="#input-script-structure" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="Section_example.html"><em>Section_example</em></a>, and animated on the <a class="reference external" href="http://lammps.sandia.gov">LAMMPS WWW Site</a>.</p> <p>A LAMMPS input script typically has 4 parts:</p> <ol class="arabic simple"> <li>Initialization</li> <li>Atom definition</li> <li>Settings</li> <li>Run a simulation</li> </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> <ol class="arabic simple"> <li>Initialization</li> </ol> <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 class="reference internal" href="units.html"><em>units</em></a>, <a class="reference internal" href="dimension.html"><em>dimension</em></a>, <a class="reference internal" href="newton.html"><em>newton</em></a>, <a class="reference internal" href="processors.html"><em>processors</em></a>, <a class="reference internal" href="boundary.html"><em>boundary</em></a>, <a class="reference internal" href="atom_style.html"><em>atom_style</em></a>, <a class="reference internal" href="atom_modify.html"><em>atom_modify</em></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 class="reference internal" href="pair_style.html"><em>pair_style</em></a>, <a class="reference internal" href="bond_style.html"><em>bond_style</em></a>, <a class="reference internal" href="angle_style.html"><em>angle_style</em></a>, <a class="reference internal" href="dihedral_style.html"><em>dihedral_style</em></a>, <a class="reference internal" href="improper_style.html"><em>improper_style</em></a>.</p> <ol class="arabic simple" start="2"> <li>Atom definition</li> </ol> <p>There are 3 ways to define atoms in LAMMPS. Read them in from a data or restart file via the <a class="reference internal" href="read_data.html"><em>read_data</em></a> or <a class="reference internal" href="read_restart.html"><em>read_restart</em></a> commands. These files can contain molecular topology information. Or create atoms on a lattice (with no molecular topology), using these commands: <a class="reference internal" href="lattice.html"><em>lattice</em></a>, <a class="reference internal" href="region.html"><em>region</em></a>, <a class="reference internal" href="create_box.html"><em>create_box</em></a>, <a class="reference internal" href="create_atoms.html"><em>create_atoms</em></a>. The entire set of atoms can be duplicated to make a larger simulation using the <a class="reference internal" href="replicate.html"><em>replicate</em></a> command.</p> <ol class="arabic simple" start="3"> <li>Settings</li> </ol> <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 class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a>, <a class="reference internal" href="bond_coeff.html"><em>bond_coeff</em></a>, <a class="reference internal" href="angle_coeff.html"><em>angle_coeff</em></a>, <a class="reference internal" href="dihedral_coeff.html"><em>dihedral_coeff</em></a>, <a class="reference internal" href="improper_coeff.html"><em>improper_coeff</em></a>, <a class="reference internal" href="kspace_style.html"><em>kspace_style</em></a>, <a class="reference internal" href="dielectric.html"><em>dielectric</em></a>, <a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a>.</p> <p>Various simulation parameters are set by these commands: <a class="reference internal" href="neighbor.html"><em>neighbor</em></a>, <a class="reference internal" href="neigh_modify.html"><em>neigh_modify</em></a>, <a class="reference internal" href="group.html"><em>group</em></a>, <a class="reference internal" href="timestep.html"><em>timestep</em></a>, <a class="reference internal" href="reset_timestep.html"><em>reset_timestep</em></a>, <a class="reference internal" href="run_style.html"><em>run_style</em></a>, <a class="reference internal" href="min_style.html"><em>min_style</em></a>, <a class="reference internal" href="min_modify.html"><em>min_modify</em></a>.</p> <p>Fixes impose a variety of boundary conditions, time integration, and diagnostic options. The <a class="reference internal" href="fix.html"><em>fix</em></a> command comes in many flavors.</p> <p>Various computations can be specified for execution during a simulation using the <a class="reference internal" href="compute.html"><em>compute</em></a>, <a class="reference internal" href="compute_modify.html"><em>compute_modify</em></a>, and <a class="reference internal" href="variable.html"><em>variable</em></a> commands.</p> <p>Output options are set by the <a class="reference internal" href="thermo.html"><em>thermo</em></a>, <a class="reference internal" href="dump.html"><em>dump</em></a>, and <a class="reference internal" href="restart.html"><em>restart</em></a> commands.</p> <ol class="arabic simple" start="4"> <li>Run a simulation</li> </ol> <p>A molecular dynamics simulation is run using the <a class="reference internal" href="run.html"><em>run</em></a> command. Energy minimization (molecular statics) is performed using the <a class="reference internal" href="minimize.html"><em>minimize</em></a> command. A parallel tempering (replica-exchange) simulation can be run using the <a class="reference internal" href="temper.html"><em>temper</em></a> command.</p> <hr class="docutils" /> </div> <div class="section" id="commands-listed-by-category"> <span id="cmd-4"></span><h2>3.4. Commands listed by category<a class="headerlink" href="#commands-listed-by-category" title="Permalink to this headline">¶</a></h2> <p>This section lists all LAMMPS commands, grouped by category. The <a class="reference internal" href="#cmd-5"><span>next section</span></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 class="reference internal" href="atom_modify.html"><em>atom_modify</em></a>, <a class="reference internal" href="atom_style.html"><em>atom_style</em></a>, <a class="reference internal" href="boundary.html"><em>boundary</em></a>, <a class="reference internal" href="dimension.html"><em>dimension</em></a>, <a class="reference internal" href="newton.html"><em>newton</em></a>, <a class="reference internal" href="processors.html"><em>processors</em></a>, <a class="reference internal" href="units.html"><em>units</em></a></p> <p>Atom definition:</p> <p><a class="reference internal" href="create_atoms.html"><em>create_atoms</em></a>, <a class="reference internal" href="create_box.html"><em>create_box</em></a>, <a class="reference internal" href="lattice.html"><em>lattice</em></a>, <a class="reference internal" href="read_data.html"><em>read_data</em></a>, <a class="reference internal" href="read_dump.html"><em>read_dump</em></a>, <a class="reference internal" href="read_restart.html"><em>read_restart</em></a>, <a class="reference internal" href="region.html"><em>region</em></a>, <a class="reference internal" href="replicate.html"><em>replicate</em></a></p> <p>Force fields:</p> <p><a class="reference internal" href="angle_coeff.html"><em>angle_coeff</em></a>, <a class="reference internal" href="angle_style.html"><em>angle_style</em></a>, <a class="reference internal" href="bond_coeff.html"><em>bond_coeff</em></a>, <a class="reference internal" href="bond_style.html"><em>bond_style</em></a>, <a class="reference internal" href="dielectric.html"><em>dielectric</em></a>, <a class="reference internal" href="dihedral_coeff.html"><em>dihedral_coeff</em></a>, <a class="reference internal" href="dihedral_style.html"><em>dihedral_style</em></a>, <a class="reference internal" href="improper_coeff.html"><em>improper_coeff</em></a>, <a class="reference internal" href="improper_style.html"><em>improper_style</em></a>, <a class="reference internal" href="kspace_modify.html"><em>kspace_modify</em></a>, <a class="reference internal" href="kspace_style.html"><em>kspace_style</em></a>, <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a>, <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a>, <a class="reference internal" href="pair_style.html"><em>pair_style</em></a>, <a class="reference internal" href="pair_write.html"><em>pair_write</em></a>, <a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a></p> <p>Settings:</p> <p><a class="reference internal" href="comm_style.html"><em>comm_style</em></a>, <a class="reference internal" href="group.html"><em>group</em></a>, <a class="reference internal" href="mass.html"><em>mass</em></a>, <a class="reference internal" href="min_modify.html"><em>min_modify</em></a>, <a class="reference internal" href="min_style.html"><em>min_style</em></a>, <a class="reference internal" href="neigh_modify.html"><em>neigh_modify</em></a>, <a class="reference internal" href="neighbor.html"><em>neighbor</em></a>, <a class="reference internal" href="reset_timestep.html"><em>reset_timestep</em></a>, <a class="reference internal" href="run_style.html"><em>run_style</em></a>, <a class="reference internal" href="set.html"><em>set</em></a>, <a class="reference internal" href="timestep.html"><em>timestep</em></a>, <a class="reference internal" href="velocity.html"><em>velocity</em></a></p> <p>Fixes:</p> <p><a class="reference internal" href="fix.html"><em>fix</em></a>, <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a>, <a class="reference internal" href="unfix.html"><em>unfix</em></a></p> <p>Computes:</p> <p><a class="reference internal" href="compute.html"><em>compute</em></a>, <a class="reference internal" href="compute_modify.html"><em>compute_modify</em></a>, <a class="reference internal" href="uncompute.html"><em>uncompute</em></a></p> <p>Output:</p> <p><a class="reference internal" href="dump.html"><em>dump</em></a>, <a class="reference internal" href="dump_image.html"><em>dump image</em></a>, <a class="reference internal" href="dump_modify.html"><em>dump_modify</em></a>, <a class="reference internal" href="dump_image.html"><em>dump movie</em></a>, <a class="reference internal" href="restart.html"><em>restart</em></a>, <a class="reference internal" href="thermo.html"><em>thermo</em></a>, <a class="reference internal" href="thermo_modify.html"><em>thermo_modify</em></a>, <a class="reference internal" href="thermo_style.html"><em>thermo_style</em></a>, <a class="reference internal" href="undump.html"><em>undump</em></a>, <a class="reference internal" href="write_data.html"><em>write_data</em></a>, <a class="reference internal" href="write_dump.html"><em>write_dump</em></a>, <a class="reference internal" href="write_restart.html"><em>write_restart</em></a></p> <p>Actions:</p> <p><a class="reference internal" href="delete_atoms.html"><em>delete_atoms</em></a>, <a class="reference internal" href="delete_bonds.html"><em>delete_bonds</em></a>, <a class="reference internal" href="displace_atoms.html"><em>displace_atoms</em></a>, <a class="reference internal" href="change_box.html"><em>change_box</em></a>, <a class="reference internal" href="minimize.html"><em>minimize</em></a>, <a class="reference internal" href="neb.html"><em>neb</em></a> <a class="reference internal" href="prd.html"><em>prd</em></a>, <a class="reference internal" href="rerun.html"><em>rerun</em></a>, <a class="reference internal" href="run.html"><em>run</em></a>, <a class="reference internal" href="temper.html"><em>temper</em></a></p> <p>Miscellaneous:</p> <p><a class="reference internal" href="clear.html"><em>clear</em></a>, <a class="reference internal" href="echo.html"><em>echo</em></a>, <a class="reference internal" href="if.html"><em>if</em></a>, <a class="reference internal" href="include.html"><em>include</em></a>, <a class="reference internal" href="jump.html"><em>jump</em></a>, <a class="reference internal" href="label.html"><em>label</em></a>, <a class="reference internal" href="log.html"><em>log</em></a>, <a class="reference internal" href="next.html"><em>next</em></a>, <a class="reference internal" href="print.html"><em>print</em></a>, <a class="reference internal" href="shell.html"><em>shell</em></a>, <a class="reference internal" href="variable.html"><em>variable</em></a></p> <hr class="docutils" /> </div> <div class="section" id="individual-commands"> <span id="comm"></span><span id="cmd-5"></span><h2>3.5. Individual commands<a class="headerlink" href="#individual-commands" title="Permalink to this headline">¶</a></h2> <p>This section lists all LAMMPS commands alphabetically, with a separate listing below of styles within certain commands. The <a class="reference internal" href="#cmd-4"><span>previous section</span></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> <table border="1" class="docutils"> <colgroup> <col width="17%" /> <col width="15%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> <col width="17%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="angle_coeff.html"><em>angle_coeff</em></a></td> <td><a class="reference internal" href="angle_style.html"><em>angle_style</em></a></td> <td><a class="reference internal" href="atom_modify.html"><em>atom_modify</em></a></td> <td><a class="reference internal" href="atom_style.html"><em>atom_style</em></a></td> <td><a class="reference internal" href="balance.html"><em>balance</em></a></td> <td><a class="reference internal" href="bond_coeff.html"><em>bond_coeff</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="bond_style.html"><em>bond_style</em></a></td> <td><a class="reference internal" href="boundary.html"><em>boundary</em></a></td> <td><a class="reference internal" href="box.html"><em>box</em></a></td> <td><a class="reference internal" href="change_box.html"><em>change_box</em></a></td> <td><a class="reference internal" href="clear.html"><em>clear</em></a></td> <td><a class="reference internal" href="comm_modify.html"><em>comm_modify</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="comm_style.html"><em>comm_style</em></a></td> <td><a class="reference internal" href="compute.html"><em>compute</em></a></td> <td><a class="reference internal" href="compute_modify.html"><em>compute_modify</em></a></td> <td><a class="reference internal" href="create_atoms.html"><em>create_atoms</em></a></td> <td><a class="reference internal" href="create_bonds.html"><em>create_bonds</em></a></td> <td><a class="reference internal" href="create_box.html"><em>create_box</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="delete_atoms.html"><em>delete_atoms</em></a></td> <td><a class="reference internal" href="delete_bonds.html"><em>delete_bonds</em></a></td> <td><a class="reference internal" href="dielectric.html"><em>dielectric</em></a></td> <td><a class="reference internal" href="dihedral_coeff.html"><em>dihedral_coeff</em></a></td> <td><a class="reference internal" href="dihedral_style.html"><em>dihedral_style</em></a></td> <td><a class="reference internal" href="dimension.html"><em>dimension</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="displace_atoms.html"><em>displace_atoms</em></a></td> <td><a class="reference internal" href="dump.html"><em>dump</em></a></td> <td><a class="reference internal" href="dump_image.html"><em>dump image</em></a></td> <td><a class="reference internal" href="dump_modify.html"><em>dump_modify</em></a></td> <td><a class="reference internal" href="dump_image.html"><em>dump movie</em></a></td> <td><a class="reference internal" href="echo.html"><em>echo</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix.html"><em>fix</em></a></td> <td><a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a></td> <td><a class="reference internal" href="group.html"><em>group</em></a></td> <td><a class="reference internal" href="if.html"><em>if</em></a></td> <td><a class="reference internal" href="info.html"><em>info</em></a></td> <td><a class="reference internal" href="improper_coeff.html"><em>improper_coeff</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="improper_style.html"><em>improper_style</em></a></td> <td><a class="reference internal" href="include.html"><em>include</em></a></td> <td><a class="reference internal" href="jump.html"><em>jump</em></a></td> <td><a class="reference internal" href="kspace_modify.html"><em>kspace_modify</em></a></td> <td><a class="reference internal" href="kspace_style.html"><em>kspace_style</em></a></td> <td><a class="reference internal" href="label.html"><em>label</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="lattice.html"><em>lattice</em></a></td> <td><a class="reference internal" href="log.html"><em>log</em></a></td> <td><a class="reference internal" href="mass.html"><em>mass</em></a></td> <td><a class="reference internal" href="minimize.html"><em>minimize</em></a></td> <td><a class="reference internal" href="min_modify.html"><em>min_modify</em></a></td> <td><a class="reference internal" href="min_style.html"><em>min_style</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="molecule.html"><em>molecule</em></a></td> <td><a class="reference internal" href="neb.html"><em>neb</em></a></td> <td><a class="reference internal" href="neigh_modify.html"><em>neigh_modify</em></a></td> <td><a class="reference internal" href="neighbor.html"><em>neighbor</em></a></td> <td><a class="reference internal" href="newton.html"><em>newton</em></a></td> <td><a class="reference internal" href="next.html"><em>next</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="package.html"><em>package</em></a></td> <td><a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a></td> <td><a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a></td> <td><a class="reference internal" href="pair_style.html"><em>pair_style</em></a></td> <td><a class="reference internal" href="pair_write.html"><em>pair_write</em></a></td> <td><a class="reference internal" href="partition.html"><em>partition</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="prd.html"><em>prd</em></a></td> <td><a class="reference internal" href="print.html"><em>print</em></a></td> <td><a class="reference internal" href="processors.html"><em>processors</em></a></td> <td><a class="reference internal" href="python.html"><em>python</em></a></td> <td><a class="reference internal" href="quit.html"><em>quit</em></a></td> <td><a class="reference internal" href="read_data.html"><em>read_data</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="read_dump.html"><em>read_dump</em></a></td> <td><a class="reference internal" href="read_restart.html"><em>read_restart</em></a></td> <td><a class="reference internal" href="region.html"><em>region</em></a></td> <td><a class="reference internal" href="replicate.html"><em>replicate</em></a></td> <td><a class="reference internal" href="rerun.html"><em>rerun</em></a></td> <td><a class="reference internal" href="reset_timestep.html"><em>reset_timestep</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="restart.html"><em>restart</em></a></td> <td><a class="reference internal" href="run.html"><em>run</em></a></td> <td><a class="reference internal" href="run_style.html"><em>run_style</em></a></td> <td><a class="reference internal" href="set.html"><em>set</em></a></td> <td><a class="reference internal" href="shell.html"><em>shell</em></a></td> <td><a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="suffix.html"><em>suffix</em></a></td> <td><a class="reference internal" href="tad.html"><em>tad</em></a></td> <td><a class="reference internal" href="temper.html"><em>temper</em></a></td> <td><a class="reference internal" href="thermo.html"><em>thermo</em></a></td> <td><a class="reference internal" href="thermo_modify.html"><em>thermo_modify</em></a></td> <td><a class="reference internal" href="thermo_style.html"><em>thermo_style</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="timer.html"><em>timer</em></a></td> <td><a class="reference internal" href="timestep.html"><em>timestep</em></a></td> <td><a class="reference internal" href="uncompute.html"><em>uncompute</em></a></td> <td><a class="reference internal" href="undump.html"><em>undump</em></a></td> <td><a class="reference internal" href="unfix.html"><em>unfix</em></a></td> <td><a class="reference internal" href="units.html"><em>units</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="variable.html"><em>variable</em></a></td> <td><a class="reference internal" href="velocity.html"><em>velocity</em></a></td> <td><a class="reference internal" href="write_data.html"><em>write_data</em></a></td> <td><a class="reference internal" href="write_dump.html"><em>write_dump</em></a></td> <td><a class="reference internal" href="write_restart.html"><em>write_restart</em></a></td> <td> </td> </tr> </tbody> </table> <p>These are additional commands in USER packages, which can be used if <a class="reference internal" href="Section_start.html#start-3"><span>LAMMPS is built with the appropriate package</span></a>.</p> <table border="1" class="docutils"> <colgroup> <col width="100%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="group2ndx.html"><em>group2ndx</em></a></td> </tr> </tbody> </table> </div> <hr class="docutils" /> <div class="section" id="fix-styles"> <h2>3.6. Fix styles<a class="headerlink" href="#fix-styles" title="Permalink to this headline">¶</a></h2> <p>See the <a class="reference internal" href="fix.html"><em>fix</em></a> command for one-line descriptions of each style or click on the style itself for a full description. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <a class="reference internal" href="Section_accelerate.html"><em>appropriate accelerated package</em></a>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.</p> <table border="1" class="docutils"> <colgroup> <col width="16%" /> <col width="11%" /> <col width="12%" /> <col width="13%" /> <col width="10%" /> <col width="11%" /> <col width="15%" /> <col width="12%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="fix_adapt.html"><em>adapt</em></a></td> <td><a class="reference internal" href="fix_addforce.html"><em>addforce (c)</em></a></td> <td><a class="reference internal" href="fix_append_atoms.html"><em>append/atoms</em></a></td> <td><a class="reference internal" href="fix_atom_swap.html"><em>atom/swap</em></a></td> <td><a class="reference internal" href="fix_aveforce.html"><em>aveforce (c)</em></a></td> <td><a class="reference internal" href="fix_ave_atom.html"><em>ave/atom</em></a></td> <td><a class="reference internal" href="fix_ave_chunk.html"><em>ave/chunk</em></a></td> <td><a class="reference internal" href="fix_ave_correlate.html"><em>ave/correlate</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix_ave_histo.html"><em>ave/histo</em></a></td> <td><a class="reference internal" href="fix_ave_histo.html"><em>ave/histo/weight</em></a></td> <td><a class="reference internal" href="fix_ave_spatial.html"><em>ave/spatial</em></a></td> <td><a class="reference internal" href="fix_ave_time.html"><em>ave/time</em></a></td> <td><a class="reference internal" href="fix_balance.html"><em>balance</em></a></td> <td><a class="reference internal" href="fix_bond_break.html"><em>bond/break</em></a></td> <td><a class="reference internal" href="fix_bond_create.html"><em>bond/create</em></a></td> <td><a class="reference internal" href="fix_bond_swap.html"><em>bond/swap</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="fix_box_relax.html"><em>box/relax</em></a></td> <td><a class="reference internal" href="fix_deform.html"><em>deform (k)</em></a></td> <td><a class="reference internal" href="fix_deposit.html"><em>deposit</em></a></td> <td><a class="reference internal" href="fix_drag.html"><em>drag</em></a></td> <td><a class="reference internal" href="fix_dt_reset.html"><em>dt/reset</em></a></td> <td><a class="reference internal" href="fix_efield.html"><em>efield</em></a></td> <td><a class="reference internal" href="fix_enforce2d.html"><em>enforce2d (c)</em></a></td> <td><a class="reference internal" href="fix_evaporate.html"><em>evaporate</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix_external.html"><em>external</em></a></td> <td><a class="reference internal" href="fix_freeze.html"><em>freeze (c)</em></a></td> <td><a class="reference internal" href="fix_gcmc.html"><em>gcmc</em></a></td> <td><a class="reference internal" href="fix_gld.html"><em>gld</em></a></td> <td><a class="reference internal" href="fix_gravity.html"><em>gravity (co)</em></a></td> <td><a class="reference internal" href="fix_heat.html"><em>heat</em></a></td> <td><a class="reference internal" href="fix_indent.html"><em>indent</em></a></td> <td><a class="reference internal" href="fix_langevin.html"><em>langevin (k)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="fix_lineforce.html"><em>lineforce</em></a></td> <td><a class="reference internal" href="fix_momentum.html"><em>momentum</em></a></td> <td><a class="reference internal" href="fix_move.html"><em>move</em></a></td> <td><a class="reference internal" href="fix_msst.html"><em>msst</em></a></td> <td><a class="reference internal" href="fix_neb.html"><em>neb</em></a></td> <td><a class="reference internal" href="fix_nh.html"><em>nph (ko)</em></a></td> <td><a class="reference internal" href="fix_nphug.html"><em>nphug (o)</em></a></td> <td><a class="reference internal" href="fix_nph_asphere.html"><em>nph/asphere (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix_nph_sphere.html"><em>nph/sphere (o)</em></a></td> <td><a class="reference internal" href="fix_nh.html"><em>npt (cko)</em></a></td> <td><a class="reference internal" href="fix_npt_asphere.html"><em>npt/asphere (o)</em></a></td> <td><a class="reference internal" href="fix_npt_sphere.html"><em>npt/sphere (o)</em></a></td> <td><a class="reference internal" href="fix_nve.html"><em>nve (cko)</em></a></td> <td><a class="reference internal" href="fix_nve_asphere.html"><em>nve/asphere</em></a></td> <td><a class="reference internal" href="fix_nve_asphere_noforce.html"><em>nve/asphere/noforce</em></a></td> <td><a class="reference internal" href="fix_nve_body.html"><em>nve/body</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="fix_nve_limit.html"><em>nve/limit</em></a></td> <td><a class="reference internal" href="fix_nve_line.html"><em>nve/line</em></a></td> <td><a class="reference internal" href="fix_nve_noforce.html"><em>nve/noforce</em></a></td> <td><a class="reference internal" href="fix_nve_sphere.html"><em>nve/sphere (o)</em></a></td> <td><a class="reference internal" href="fix_nve_tri.html"><em>nve/tri</em></a></td> <td><a class="reference internal" href="fix_nh.html"><em>nvt (cko)</em></a></td> <td><a class="reference internal" href="fix_nvt_asphere.html"><em>nvt/asphere (o)</em></a></td> <td><a class="reference internal" href="fix_nvt_sllod.html"><em>nvt/sllod (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix_nvt_sphere.html"><em>nvt/sphere (o)</em></a></td> <td><a class="reference internal" href="fix_oneway.html"><em>oneway</em></a></td> <td><a class="reference internal" href="fix_orient_fcc.html"><em>orient/fcc</em></a></td> <td><a class="reference internal" href="fix_planeforce.html"><em>planeforce</em></a></td> <td><a class="reference internal" href="fix_poems.html"><em>poems</em></a></td> <td><a class="reference internal" href="fix_pour.html"><em>pour</em></a></td> <td><a class="reference internal" href="fix_press_berendsen.html"><em>press/berendsen</em></a></td> <td><a class="reference internal" href="fix_print.html"><em>print</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="fix_property_atom.html"><em>property/atom</em></a></td> <td><a class="reference internal" href="fix_qeq_comb.html"><em>qeq/comb (o)</em></a></td> <td><a class="reference internal" href="fix_qeq.html"><em>qeq/dynamic</em></a></td> <td><a class="reference internal" href="fix_qeq.html"><em>qeq/point</em></a></td> <td><a class="reference internal" href="fix_qeq.html"><em>qeq/shielded</em></a></td> <td><a class="reference internal" href="fix_qeq.html"><em>qeq/slater</em></a></td> <td><a class="reference internal" href="fix_reax_bonds.html"><em>reax/bonds</em></a></td> <td><a class="reference internal" href="fix_recenter.html"><em>recenter</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix_restrain.html"><em>restrain</em></a></td> <td><a class="reference internal" href="fix_rigid.html"><em>rigid (o)</em></a></td> <td><a class="reference internal" href="fix_rigid.html"><em>rigid/nph (o)</em></a></td> <td><a class="reference internal" href="fix_rigid.html"><em>rigid/npt (o)</em></a></td> <td><a class="reference internal" href="fix_rigid.html"><em>rigid/nve (o)</em></a></td> <td><a class="reference internal" href="fix_rigid.html"><em>rigid/nvt (o)</em></a></td> <td><a class="reference internal" href="fix_rigid.html"><em>rigid/small (o)</em></a></td> <td><a class="reference internal" href="fix_rigid.html"><em>rigid/small/nph</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="fix_rigid.html"><em>rigid/small/npt</em></a></td> <td><a class="reference internal" href="fix_rigid.html"><em>rigid/small/nve</em></a></td> <td><a class="reference internal" href="fix_rigid.html"><em>rigid/small/nvt</em></a></td> <td><a class="reference internal" href="fix_setforce.html"><em>setforce (c)</em></a></td> <td><a class="reference internal" href="fix_shake.html"><em>shake (c)</em></a></td> <td><a class="reference internal" href="fix_spring.html"><em>spring</em></a></td> <td><a class="reference internal" href="fix_spring_rg.html"><em>spring/rg</em></a></td> <td><a class="reference internal" href="fix_spring_self.html"><em>spring/self</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix_srd.html"><em>srd</em></a></td> <td><a class="reference internal" href="fix_store_force.html"><em>store/force</em></a></td> <td><a class="reference internal" href="fix_store_state.html"><em>store/state</em></a></td> <td><a class="reference internal" href="fix_temp_berendsen.html"><em>temp/berendsen (c)</em></a></td> <td><a class="reference internal" href="fix_temp_csvr.html"><em>temp/csld</em></a></td> <td><a class="reference internal" href="fix_temp_csvr.html"><em>temp/csvr</em></a></td> <td><a class="reference internal" href="fix_temp_rescale.html"><em>temp/rescale (c)</em></a></td> <td><a class="reference internal" href="fix_tfmc.html"><em>tfmc</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="fix_thermal_conductivity.html"><em>thermal/conductivity</em></a></td> <td><a class="reference internal" href="fix_tmd.html"><em>tmd</em></a></td> <td><a class="reference internal" href="fix_ttm.html"><em>ttm</em></a></td> <td><a class="reference internal" href="fix_tune_kspace.html"><em>tune/kspace</em></a></td> <td><a class="reference internal" href="fix_vector.html"><em>vector</em></a></td> <td><a class="reference internal" href="fix_viscosity.html"><em>viscosity</em></a></td> <td><a class="reference internal" href="fix_viscous.html"><em>viscous (c)</em></a></td> <td><a class="reference internal" href="fix_wall.html"><em>wall/colloid</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix_wall_gran.html"><em>wall/gran</em></a></td> <td><a class="reference internal" href="fix_wall.html"><em>wall/harmonic</em></a></td> <td><a class="reference internal" href="fix_wall.html"><em>wall/lj1043</em></a></td> <td><a class="reference internal" href="fix_wall.html"><em>wall/lj126</em></a></td> <td><a class="reference internal" href="fix_wall.html"><em>wall/lj93</em></a></td> <td><a class="reference internal" href="fix_wall_piston.html"><em>wall/piston</em></a></td> <td><a class="reference internal" href="fix_wall_reflect.html"><em>wall/reflect (k)</em></a></td> <td><a class="reference internal" href="fix_wall_region.html"><em>wall/region</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="fix_wall_srd.html"><em>wall/srd</em></a></td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr> </tbody> </table> <p>These are additional fix styles in USER packages, which can be used if <a class="reference internal" href="Section_start.html#start-3"><span>LAMMPS is built with the appropriate package</span></a>.</p> <table border="1" class="docutils"> <colgroup> +<col width="14%" /> <col width="15%" /> <col width="15%" /> <col width="20%" /> <col width="14%" /> <col width="22%" /> -<col width="14%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="fix_adapt_fep.html"><em>adapt/fep</em></a></td> <td><a class="reference internal" href="fix_addtorque.html"><em>addtorque</em></a></td> <td><a class="reference internal" href="fix_atc.html"><em>atc</em></a></td> +<td><a class="reference internal" href="fix_ave_correlate_long.html"><em>ave/correlate/long</em></a></td> <td><a class="reference internal" href="fix_ave_spatial_sphere.html"><em>ave/spatial/sphere</em></a></td> <td><a class="reference internal" href="fix_drude.html"><em>drude</em></a></td> -<td><a class="reference internal" href="fix_drude_transform.html"><em>drude/transform/direct</em></a></td> </tr> -<tr class="row-even"><td><a class="reference internal" href="fix_drude_transform.html"><em>drude/transform/reverse</em></a></td> +<tr class="row-even"><td><a class="reference internal" href="fix_drude_transform.html"><em>drude/transform/direct</em></a></td> +<td><a class="reference internal" href="fix_drude_transform.html"><em>drude/transform/reverse</em></a></td> <td><a class="reference internal" href="fix_colvars.html"><em>colvars</em></a></td> <td><a class="reference internal" href="fix_gle.html"><em>gle</em></a></td> <td><a class="reference internal" href="fix_imd.html"><em>imd</em></a></td> <td><a class="reference internal" href="fix_ipi.html"><em>ipi</em></a></td> -<td><a class="reference internal" href="fix_langevin_drude.html"><em>langevin/drude</em></a></td> </tr> -<tr class="row-odd"><td><a class="reference internal" href="fix_langevin_eff.html"><em>langevin/eff</em></a></td> +<tr class="row-odd"><td><a class="reference internal" href="fix_langevin_drude.html"><em>langevin/drude</em></a></td> +<td><a class="reference internal" href="fix_langevin_eff.html"><em>langevin/eff</em></a></td> <td><a class="reference internal" href="fix_lb_fluid.html"><em>lb/fluid</em></a></td> <td><a class="reference internal" href="fix_lb_momentum.html"><em>lb/momentum</em></a></td> <td><a class="reference internal" href="fix_lb_pc.html"><em>lb/pc</em></a></td> <td><a class="reference internal" href="fix_lb_rigid_pc_sphere.html"><em>lb/rigid/pc/sphere</em></a></td> -<td><a class="reference internal" href="fix_lb_viscous.html"><em>lb/viscous</em></a></td> </tr> -<tr class="row-even"><td><a class="reference internal" href="fix_meso.html"><em>meso</em></a></td> +<tr class="row-even"><td><a class="reference internal" href="fix_lb_viscous.html"><em>lb/viscous</em></a></td> +<td><a class="reference internal" href="fix_meso.html"><em>meso</em></a></td> <td><a class="reference internal" href="fix_meso_stationary.html"><em>meso/stationary</em></a></td> <td><a class="reference internal" href="fix_nh_eff.html"><em>nph/eff</em></a></td> <td><a class="reference internal" href="fix_nh_eff.html"><em>npt/eff</em></a></td> <td><a class="reference internal" href="fix_nve_eff.html"><em>nve/eff</em></a></td> -<td><a class="reference internal" href="fix_nh_eff.html"><em>nvt/eff</em></a></td> </tr> -<tr class="row-odd"><td><a class="reference internal" href="fix_nvt_sllod_eff.html"><em>nvt/sllod/eff</em></a></td> +<tr class="row-odd"><td><a class="reference internal" href="fix_nh_eff.html"><em>nvt/eff</em></a></td> +<td><a class="reference internal" href="fix_nvt_sllod_eff.html"><em>nvt/sllod/eff</em></a></td> <td><a class="reference internal" href="fix_phonon.html"><em>phonon</em></a></td> <td><a class="reference internal" href="fix_pimd.html"><em>pimd</em></a></td> <td><a class="reference internal" href="fix_qbmsst.html"><em>qbmsst</em></a></td> <td><a class="reference internal" href="fix_qeq_reax.html"><em>qeq/reax</em></a></td> -<td><a class="reference internal" href="fix_qmmm.html"><em>qmmm</em></a></td> </tr> -<tr class="row-even"><td><a class="reference internal" href="fix_qtb.html"><em>qtb</em></a></td> +<tr class="row-even"><td><a class="reference internal" href="fix_qmmm.html"><em>qmmm</em></a></td> +<td><a class="reference internal" href="fix_qtb.html"><em>qtb</em></a></td> <td><a class="reference internal" href="fix_reax_bonds.html"><em>reax/c/bonds</em></a></td> <td><a class="reference internal" href="fix_reaxc_species.html"><em>reax/c/species</em></a></td> <td><a class="reference internal" href="fix_saed_vtk.html"><em>saed/vtk</em></a></td> <td><a class="reference internal" href="fix_smd.html"><em>smd</em></a></td> -<td><a class="reference internal" href="fix_smd_adjust_dt.html"><em>smd/adjust/dt</em></a></td> </tr> -<tr class="row-odd"><td><a class="reference internal" href="fix_smd_integrate_tlsph.html"><em>smd/integrate/tlsph</em></a></td> +<tr class="row-odd"><td><a class="reference internal" href="fix_smd_adjust_dt.html"><em>smd/adjust/dt</em></a></td> +<td><a class="reference internal" href="fix_smd_integrate_tlsph.html"><em>smd/integrate/tlsph</em></a></td> <td><a class="reference internal" href="fix_smd_integrate_ulsph.html"><em>smd/integrate/ulsph</em></a></td> <td><a class="reference internal" href="fix_smd_move_triangulated_surface.html"><em>smd/move/triangulated/surface</em></a></td> <td><a class="reference internal" href="fix_smd_setvel.html"><em>smd/setvel</em></a></td> <td><a class="reference internal" href="fix_smd_tlsph_reference_configuration.html"><em>smd/tlsph/reference/configuration</em></a></td> -<td><a class="reference internal" href="fix_smd_wall_surface.html"><em>smd/wall/surface</em></a></td> </tr> -<tr class="row-even"><td><a class="reference internal" href="fix_temp_rescale_eff.html"><em>temp/rescale/eff</em></a></td> +<tr class="row-even"><td><a class="reference internal" href="fix_smd_wall_surface.html"><em>smd/wall/surface</em></a></td> +<td><a class="reference internal" href="fix_temp_rescale_eff.html"><em>temp/rescale/eff</em></a></td> <td><a class="reference internal" href="fix_ti_rs.html"><em>ti/rs</em></a></td> <td><a class="reference internal" href="fix_ti_spring.html"><em>ti/spring</em></a></td> <td><a class="reference internal" href="fix_ttm.html"><em>ttm/mod</em></a></td> <td> </td> -<td> </td> </tr> </tbody> </table> </div> <hr class="docutils" /> <div class="section" id="compute-styles"> <h2>3.7. Compute styles<a class="headerlink" href="#compute-styles" title="Permalink to this headline">¶</a></h2> <p>See the <a class="reference internal" href="compute.html"><em>compute</em></a> command for one-line descriptions of each style or click on the style itself for a full description. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <a class="reference internal" href="Section_accelerate.html"><em>appropriate accelerated package</em></a>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.</p> <table border="1" class="docutils"> <colgroup> <col width="16%" /> <col width="19%" /> <col width="17%" /> <col width="15%" /> <col width="17%" /> <col width="16%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="compute_angle_local.html"><em>angle/local</em></a></td> <td><a class="reference internal" href="compute_angmom_chunk.html"><em>angmom/chunk</em></a></td> <td><a class="reference internal" href="compute_body_local.html"><em>body/local</em></a></td> <td><a class="reference internal" href="compute_bond_local.html"><em>bond/local</em></a></td> <td><a class="reference internal" href="compute_centro_atom.html"><em>centro/atom</em></a></td> <td><a class="reference internal" href="compute_chunk_atom.html"><em>chunk/atom</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="compute_cluster_atom.html"><em>cluster/atom</em></a></td> <td><a class="reference internal" href="compute_cna_atom.html"><em>cna/atom</em></a></td> <td><a class="reference internal" href="compute_com.html"><em>com</em></a></td> <td><a class="reference internal" href="compute_com_chunk.html"><em>com/chunk</em></a></td> <td><a class="reference internal" href="compute_contact_atom.html"><em>contact/atom</em></a></td> <td><a class="reference internal" href="compute_coord_atom.html"><em>coord/atom</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="compute_damage_atom.html"><em>damage/atom</em></a></td> <td><a class="reference internal" href="compute_dihedral_local.html"><em>dihedral/local</em></a></td> <td><a class="reference internal" href="compute_dilatation_atom.html"><em>dilatation/atom</em></a></td> <td><a class="reference internal" href="compute_displace_atom.html"><em>displace/atom</em></a></td> <td><a class="reference internal" href="compute_erotate_asphere.html"><em>erotate/asphere</em></a></td> <td><a class="reference internal" href="compute_erotate_rigid.html"><em>erotate/rigid</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="compute_erotate_sphere.html"><em>erotate/sphere</em></a></td> <td><a class="reference internal" href="compute_erotate_sphere_atom.html"><em>erotate/sphere/atom</em></a></td> <td><a class="reference internal" href="compute_event_displace.html"><em>event/displace</em></a></td> <td><a class="reference internal" href="compute_group_group.html"><em>group/group</em></a></td> <td><a class="reference internal" href="compute_gyration.html"><em>gyration</em></a></td> <td><a class="reference internal" href="compute_gyration_chunk.html"><em>gyration/chunk</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="compute_heat_flux.html"><em>heat/flux</em></a></td> <td><a class="reference internal" href="compute_improper_local.html"><em>improper/local</em></a></td> <td><a class="reference internal" href="compute_inertia_chunk.html"><em>inertia/chunk</em></a></td> <td><a class="reference internal" href="compute_ke.html"><em>ke</em></a></td> <td><a class="reference internal" href="compute_ke_atom.html"><em>ke/atom</em></a></td> <td><a class="reference internal" href="compute_ke_rigid.html"><em>ke/rigid</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="compute_msd.html"><em>msd</em></a></td> <td><a class="reference internal" href="compute_msd_chunk.html"><em>msd/chunk</em></a></td> <td><a class="reference internal" href="compute_msd_nongauss.html"><em>msd/nongauss</em></a></td> <td><a class="reference internal" href="compute_omega_chunk.html"><em>omega/chunk</em></a></td> <td><a class="reference internal" href="compute_pair.html"><em>pair</em></a></td> <td><a class="reference internal" href="compute_pair_local.html"><em>pair/local</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="compute_pe.html"><em>pe (c)</em></a></td> <td><a class="reference internal" href="compute_pe_atom.html"><em>pe/atom</em></a></td> <td><a class="reference internal" href="compute_plasticity_atom.html"><em>plasticity/atom</em></a></td> <td><a class="reference internal" href="compute_pressure.html"><em>pressure (c)</em></a></td> <td><a class="reference internal" href="compute_property_atom.html"><em>property/atom</em></a></td> <td><a class="reference internal" href="compute_property_local.html"><em>property/local</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="compute_property_chunk.html"><em>property/chunk</em></a></td> <td><a class="reference internal" href="compute_rdf.html"><em>rdf</em></a></td> <td><a class="reference internal" href="compute_reduce.html"><em>reduce</em></a></td> <td><a class="reference internal" href="compute_reduce.html"><em>reduce/region</em></a></td> <td><a class="reference internal" href="compute_slice.html"><em>slice</em></a></td> <td><a class="reference internal" href="compute_sna_atom.html"><em>sna/atom</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="compute_sna_atom.html"><em>snad/atom</em></a></td> <td><a class="reference internal" href="compute_sna_atom.html"><em>snav/atom</em></a></td> <td><a class="reference internal" href="compute_stress_atom.html"><em>stress/atom</em></a></td> <td><a class="reference internal" href="compute_temp.html"><em>temp (ck)</em></a></td> <td><a class="reference internal" href="compute_temp_asphere.html"><em>temp/asphere</em></a></td> <td><a class="reference internal" href="compute_temp_com.html"><em>temp/com</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="compute_temp_chunk.html"><em>temp/chunk</em></a></td> <td><a class="reference internal" href="compute_temp_deform.html"><em>temp/deform</em></a></td> <td><a class="reference internal" href="compute_temp_partial.html"><em>temp/partial (c)</em></a></td> <td><a class="reference internal" href="compute_temp_profile.html"><em>temp/profile</em></a></td> <td><a class="reference internal" href="compute_temp_ramp.html"><em>temp/ramp</em></a></td> <td><a class="reference internal" href="compute_temp_region.html"><em>temp/region</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="compute_temp_sphere.html"><em>temp/sphere</em></a></td> <td><a class="reference internal" href="compute_ti.html"><em>ti</em></a></td> <td><a class="reference internal" href="compute_torque_chunk.html"><em>torque/chunk</em></a></td> <td><a class="reference internal" href="compute_vacf.html"><em>vacf</em></a></td> <td><a class="reference internal" href="compute_vcm_chunk.html"><em>vcm/chunk</em></a></td> <td><a class="reference internal" href="compute_voronoi_atom.html"><em>voronoi/atom</em></a></td> </tr> </tbody> </table> <p>These are additional compute styles in USER packages, which can be used if <a class="reference internal" href="Section_start.html#start-3"><span>LAMMPS is built with the appropriate package</span></a>.</p> <table border="1" class="docutils"> <colgroup> <col width="17%" /> <col width="15%" /> <col width="19%" /> <col width="16%" /> <col width="15%" /> <col width="18%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="compute_ackland_atom.html"><em>ackland/atom</em></a></td> <td><a class="reference internal" href="compute_basal_atom.html"><em>basal/atom</em></a></td> <td><a class="reference internal" href="compute_fep.html"><em>fep</em></a></td> <td><a class="reference internal" href="compute_tally.html"><em>force/tally</em></a></td> <td><a class="reference internal" href="compute_tally.html"><em>heat/flux/tally</em></a></td> <td><a class="reference internal" href="compute_ke_eff.html"><em>ke/eff</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="compute_ke_atom_eff.html"><em>ke/atom/eff</em></a></td> <td><a class="reference internal" href="compute_meso_e_atom.html"><em>meso_e/atom</em></a></td> <td><a class="reference internal" href="compute_meso_rho_atom.html"><em>meso_rho/atom</em></a></td> <td><a class="reference internal" href="compute_meso_t_atom.html"><em>meso_t/atom</em></a></td> <td><a class="reference internal" href="compute_tally.html"><em>pe/tally</em></a></td> <td><a class="reference internal" href="compute_saed.html"><em>saed</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="compute_smd_contact_radius.html"><em>smd/contact/radius</em></a></td> <td><a class="reference internal" href="compute_smd_damage.html"><em>smd/damage</em></a></td> <td><a class="reference internal" href="compute_smd_hourglass_error.html"><em>smd/hourglass/error</em></a></td> <td><a class="reference internal" href="compute_smd_internal_energy.html"><em>smd/internal/energy</em></a></td> <td><a class="reference internal" href="compute_smd_plastic_strain.html"><em>smd/plastic/strain</em></a></td> <td><a class="reference internal" href="compute_smd_plastic_strain_rate.html"><em>smd/plastic/strain/rate</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="compute_smd_rho.html"><em>smd/rho</em></a></td> <td><a class="reference internal" href="compute_smd_tlsph_defgrad.html"><em>smd/tlsph/defgrad</em></a></td> <td><a class="reference internal" href="compute_smd_tlsph_dt.html"><em>smd/tlsph/dt</em></a></td> <td><a class="reference internal" href="compute_smd_tlsph_num_neighs.html"><em>smd/tlsph/num/neighs</em></a></td> <td><a class="reference internal" href="compute_smd_tlsph_shape.html"><em>smd/tlsph/shape</em></a></td> <td><a class="reference internal" href="compute_smd_tlsph_strain.html"><em>smd/tlsph/strain</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="compute_smd_tlsph_strain_rate.html"><em>smd/tlsph/strain/rate</em></a></td> <td><a class="reference internal" href="compute_smd_tlsph_stress.html"><em>smd/tlsph/stress</em></a></td> <td><a class="reference internal" href="compute_smd_triangle_mesh_vertices.html"><em>smd/triangle/mesh/vertices</em></a></td> <td><a class="reference internal" href="compute_smd_ulsph_num_neighs.html"><em>smd/ulsph/num/neighs</em></a></td> <td><a class="reference internal" href="compute_smd_ulsph_strain.html"><em>smd/ulsph/strain</em></a></td> <td><a class="reference internal" href="compute_smd_ulsph_strain_rate.html"><em>smd/ulsph/strain/rate</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="compute_smd_ulsph_stress.html"><em>smd/ulsph/stress</em></a></td> <td><a class="reference internal" href="compute_smd_vol.html"><em>smd/vol</em></a></td> <td><a class="reference internal" href="compute_tally.html"><em>stress/tally</em></a></td> <td><a class="reference internal" href="compute_temp_drude.html"><em>temp/drude</em></a></td> <td><a class="reference internal" href="compute_temp_eff.html"><em>temp/eff</em></a></td> <td><a class="reference internal" href="compute_temp_deform_eff.html"><em>temp/deform/eff</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="compute_temp_region_eff.html"><em>temp/region/eff</em></a></td> <td><a class="reference internal" href="compute_temp_rotate.html"><em>temp/rotate</em></a></td> <td><a class="reference internal" href="compute_xrd.html"><em>xrd</em></a></td> <td> </td> <td> </td> <td> </td> </tr> </tbody> </table> </div> <hr class="docutils" /> <div class="section" id="pair-style-potentials"> <h2>3.8. Pair_style potentials<a class="headerlink" href="#pair-style-potentials" title="Permalink to this headline">¶</a></h2> <p>See the <a class="reference internal" href="pair_style.html"><em>pair_style</em></a> command for an overview of pair potentials. Click on the style itself for a full description. Many of the styles have accelerated versions, which can be used if LAMMPS is built with the <a class="reference internal" href="Section_accelerate.html"><em>appropriate accelerated package</em></a>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.</p> <table border="1" class="docutils"> <colgroup> <col width="24%" /> <col width="25%" /> <col width="27%" /> <col width="24%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="pair_none.html"><em>none</em></a></td> <td><a class="reference internal" href="pair_hybrid.html"><em>hybrid</em></a></td> <td><a class="reference internal" href="pair_hybrid.html"><em>hybrid/overlay</em></a></td> <td><a class="reference internal" href="pair_adp.html"><em>adp (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_airebo.html"><em>airebo (o)</em></a></td> <td><a class="reference internal" href="pair_beck.html"><em>beck (go)</em></a></td> <td><a class="reference internal" href="pair_body.html"><em>body</em></a></td> <td><a class="reference internal" href="pair_bop.html"><em>bop</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_born.html"><em>born (go)</em></a></td> <td><a class="reference internal" href="pair_born.html"><em>born/coul/long (cgo)</em></a></td> <td><a class="reference internal" href="pair_born.html"><em>born/coul/long/cs</em></a></td> <td><a class="reference internal" href="pair_born.html"><em>born/coul/msm (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_born.html"><em>born/coul/wolf (go)</em></a></td> <td><a class="reference internal" href="pair_brownian.html"><em>brownian (o)</em></a></td> <td><a class="reference internal" href="pair_brownian.html"><em>brownian/poly (o)</em></a></td> <td><a class="reference internal" href="pair_buck.html"><em>buck (cgko)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_buck.html"><em>buck/coul/cut (cgko)</em></a></td> <td><a class="reference internal" href="pair_buck.html"><em>buck/coul/long (cgko)</em></a></td> <td><a class="reference internal" href="pair_buck.html"><em>buck/coul/long/cs</em></a></td> <td><a class="reference internal" href="pair_buck.html"><em>buck/coul/msm (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_buck_long.html"><em>buck/long/coul/long (o)</em></a></td> <td><a class="reference internal" href="pair_colloid.html"><em>colloid (go)</em></a></td> <td><a class="reference internal" href="pair_comb.html"><em>comb (o)</em></a></td> <td><a class="reference internal" href="pair_comb.html"><em>comb3</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_coul.html"><em>coul/cut (gko)</em></a></td> <td><a class="reference internal" href="pair_coul.html"><em>coul/debye (gko)</em></a></td> <td><a class="reference internal" href="pair_coul.html"><em>coul/dsf (gko)</em></a></td> <td><a class="reference internal" href="pair_coul.html"><em>coul/long (gko)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_coul.html"><em>coul/long/cs</em></a></td> <td><a class="reference internal" href="pair_coul.html"><em>coul/msm</em></a></td> <td><a class="reference internal" href="pair_coul.html"><em>coul/streitz</em></a></td> <td><a class="reference internal" href="pair_coul.html"><em>coul/wolf (ko)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_dpd.html"><em>dpd (o)</em></a></td> <td><a class="reference internal" href="pair_dpd.html"><em>dpd/tstat (o)</em></a></td> <td><a class="reference internal" href="pair_dsmc.html"><em>dsmc</em></a></td> <td><a class="reference internal" href="pair_eam.html"><em>eam (cgkot)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_eam.html"><em>eam/alloy (cgkot)</em></a></td> <td><a class="reference internal" href="pair_eam.html"><em>eam/fs (cgkot)</em></a></td> <td><a class="reference internal" href="pair_eim.html"><em>eim (o)</em></a></td> <td><a class="reference internal" href="pair_gauss.html"><em>gauss (go)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_gayberne.html"><em>gayberne (gio)</em></a></td> <td><a class="reference internal" href="pair_gran.html"><em>gran/hertz/history (o)</em></a></td> <td><a class="reference internal" href="pair_gran.html"><em>gran/hooke (co)</em></a></td> <td><a class="reference internal" href="pair_gran.html"><em>gran/hooke/history (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_hbond_dreiding.html"><em>hbond/dreiding/lj (o)</em></a></td> <td><a class="reference internal" href="pair_hbond_dreiding.html"><em>hbond/dreiding/morse (o)</em></a></td> <td><a class="reference internal" href="pair_kim.html"><em>kim</em></a></td> <td><a class="reference internal" href="pair_lcbop.html"><em>lcbop</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_line_lj.html"><em>line/lj (o)</em></a></td> <td><a class="reference internal" href="pair_charmm.html"><em>lj/charmm/coul/charmm (cko)</em></a></td> <td><a class="reference internal" href="pair_charmm.html"><em>lj/charmm/coul/charmm/implicit (cko)</em></a></td> <td><a class="reference internal" href="pair_charmm.html"><em>lj/charmm/coul/long (cgiko)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_charmm.html"><em>lj/charmm/coul/msm</em></a></td> <td><a class="reference internal" href="pair_class2.html"><em>lj/class2 (cgko)</em></a></td> <td><a class="reference internal" href="pair_class2.html"><em>lj/class2/coul/cut (cko)</em></a></td> <td><a class="reference internal" href="pair_class2.html"><em>lj/class2/coul/long (cgko)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_lj_cubic.html"><em>lj/cubic (go)</em></a></td> <td><a class="reference internal" href="pair_lj.html"><em>lj/cut (cgikot)</em></a></td> <td><a class="reference internal" href="pair_lj.html"><em>lj/cut/coul/cut (cgko)</em></a></td> <td><a class="reference internal" href="pair_lj.html"><em>lj/cut/coul/debye (cgko)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_lj.html"><em>lj/cut/coul/dsf (gko)</em></a></td> <td><a class="reference internal" href="pair_lj.html"><em>lj/cut/coul/long (cgikot)</em></a></td> <td><a class="reference internal" href="pair_lj.html"><em>lj/cut/coul/long/cs</em></a></td> <td><a class="reference internal" href="pair_lj.html"><em>lj/cut/coul/msm (go)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_dipole.html"><em>lj/cut/dipole/cut (go)</em></a></td> <td><a class="reference internal" href="pair_dipole.html"><em>lj/cut/dipole/long</em></a></td> <td><a class="reference internal" href="pair_lj.html"><em>lj/cut/tip4p/cut (o)</em></a></td> <td><a class="reference internal" href="pair_lj.html"><em>lj/cut/tip4p/long (ot)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_lj_expand.html"><em>lj/expand (cgko)</em></a></td> <td><a class="reference internal" href="pair_gromacs.html"><em>lj/gromacs (cgko)</em></a></td> <td><a class="reference internal" href="pair_gromacs.html"><em>lj/gromacs/coul/gromacs (cko)</em></a></td> <td><a class="reference internal" href="pair_lj_long.html"><em>lj/long/coul/long (o)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_dipole.html"><em>lj/long/dipole/long</em></a></td> <td><a class="reference internal" href="pair_lj_long.html"><em>lj/long/tip4p/long</em></a></td> <td><a class="reference internal" href="pair_lj_smooth.html"><em>lj/smooth (co)</em></a></td> <td><a class="reference internal" href="pair_lj_smooth_linear.html"><em>lj/smooth/linear (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_lj96.html"><em>lj96/cut (cgo)</em></a></td> <td><a class="reference internal" href="pair_lubricate.html"><em>lubricate (o)</em></a></td> <td><a class="reference internal" href="pair_lubricate.html"><em>lubricate/poly (o)</em></a></td> <td><a class="reference internal" href="pair_lubricateU.html"><em>lubricateU</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_lubricateU.html"><em>lubricateU/poly</em></a></td> <td><a class="reference internal" href="pair_meam.html"><em>meam (o)</em></a></td> <td><a class="reference internal" href="pair_mie.html"><em>mie/cut (o)</em></a></td> <td><a class="reference internal" href="pair_morse.html"><em>morse (cgot)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_nb3b_harmonic.html"><em>nb3b/harmonic (o)</em></a></td> <td><a class="reference internal" href="pair_nm.html"><em>nm/cut (o)</em></a></td> <td><a class="reference internal" href="pair_nm.html"><em>nm/cut/coul/cut (o)</em></a></td> <td><a class="reference internal" href="pair_nm.html"><em>nm/cut/coul/long (o)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_peri.html"><em>peri/eps</em></a></td> <td><a class="reference internal" href="pair_peri.html"><em>peri/lps (o)</em></a></td> <td><a class="reference internal" href="pair_peri.html"><em>peri/pmb (o)</em></a></td> <td><a class="reference internal" href="pair_peri.html"><em>peri/ves</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_polymorphic.html"><em>polymorphic</em></a></td> <td><a class="reference internal" href="pair_reax.html"><em>reax</em></a></td> <td><a class="reference internal" href="pair_airebo.html"><em>rebo (o)</em></a></td> <td><a class="reference internal" href="pair_resquared.html"><em>resquared (go)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_snap.html"><em>snap</em></a></td> <td><a class="reference internal" href="pair_soft.html"><em>soft (go)</em></a></td> <td><a class="reference internal" href="pair_sw.html"><em>sw (cgkio)</em></a></td> <td><a class="reference internal" href="pair_table.html"><em>table (gko)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_tersoff.html"><em>tersoff (cgko)</em></a></td> <td><a class="reference internal" href="pair_tersoff_mod.html"><em>tersoff/mod (ko)</em></a></td> <td><a class="reference internal" href="pair_tersoff_zbl.html"><em>tersoff/zbl (ko)</em></a></td> <td><a class="reference internal" href="pair_coul.html"><em>tip4p/cut (o)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_coul.html"><em>tip4p/long (o)</em></a></td> <td><a class="reference internal" href="pair_tri_lj.html"><em>tri/lj (o)</em></a></td> +<td><a class="reference internal" href="pair_vashishta.html"><em>vashishta (o)</em></a></td> <td><a class="reference internal" href="pair_yukawa.html"><em>yukawa (go)</em></a></td> -<td><a class="reference internal" href="pair_yukawa_colloid.html"><em>yukawa/colloid (go)</em></a></td> </tr> -<tr class="row-even"><td><a class="reference internal" href="pair_zbl.html"><em>zbl (go)</em></a></td> -<td> </td> +<tr class="row-even"><td><a class="reference internal" href="pair_yukawa_colloid.html"><em>yukawa/colloid (go)</em></a></td> +<td><a class="reference internal" href="pair_zbl.html"><em>zbl (go)</em></a></td> <td> </td> <td> </td> </tr> </tbody> </table> <p>These are additional pair styles in USER packages, which can be used if <a class="reference internal" href="Section_start.html#start-3"><span>LAMMPS is built with the appropriate package</span></a>.</p> <table border="1" class="docutils"> <colgroup> <col width="25%" /> <col width="29%" /> <col width="22%" /> <col width="24%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="pair_awpmd.html"><em>awpmd/cut</em></a></td> <td><a class="reference internal" href="pair_lj_soft.html"><em>coul/cut/soft (o)</em></a></td> <td><a class="reference internal" href="pair_coul_diel.html"><em>coul/diel (o)</em></a></td> <td><a class="reference internal" href="pair_lj_soft.html"><em>coul/long/soft (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_eam.html"><em>eam/cd (o)</em></a></td> <td><a class="reference internal" href="pair_edip.html"><em>edip (o)</em></a></td> <td><a class="reference internal" href="pair_eff.html"><em>eff/cut</em></a></td> <td><a class="reference internal" href="pair_gauss.html"><em>gauss/cut</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_list.html"><em>list</em></a></td> <td><a class="reference internal" href="pair_charmm.html"><em>lj/charmm/coul/long/soft (o)</em></a></td> <td><a class="reference internal" href="pair_lj_soft.html"><em>lj/cut/coul/cut/soft (o)</em></a></td> <td><a class="reference internal" href="pair_lj_soft.html"><em>lj/cut/coul/long/soft (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_dipole.html"><em>lj/cut/dipole/sf (go)</em></a></td> <td><a class="reference internal" href="pair_lj_soft.html"><em>lj/cut/soft (o)</em></a></td> <td><a class="reference internal" href="pair_lj_soft.html"><em>lj/cut/tip4p/long/soft (o)</em></a></td> <td><a class="reference internal" href="pair_sdk.html"><em>lj/sdk (gko)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_sdk.html"><em>lj/sdk/coul/long (go)</em></a></td> <td><a class="reference internal" href="pair_sdk.html"><em>lj/sdk/coul/msm (o)</em></a></td> <td><a class="reference internal" href="pair_lj_sf.html"><em>lj/sf (o)</em></a></td> <td><a class="reference internal" href="pair_meam_spline.html"><em>meam/spline</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_meam_sw_spline.html"><em>meam/sw/spline</em></a></td> <td><a class="reference internal" href="pair_quip.html"><em>quip</em></a></td> <td><a class="reference internal" href="pair_reax_c.html"><em>reax/c</em></a></td> <td><a class="reference internal" href="pair_smd_hertz.html"><em>smd/hertz</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_smd_tlsph.html"><em>smd/tlsph</em></a></td> <td><a class="reference internal" href="pair_smd_triangulated_surface.html"><em>smd/triangulated/surface</em></a></td> <td><a class="reference internal" href="pair_smd_ulsph.html"><em>smd/ulsph</em></a></td> <td><a class="reference internal" href="pair_sph_heatconduction.html"><em>sph/heatconduction</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_sph_idealgas.html"><em>sph/idealgas</em></a></td> <td><a class="reference internal" href="pair_sph_lj.html"><em>sph/lj</em></a></td> <td><a class="reference internal" href="pair_sph_rhosum.html"><em>sph/rhosum</em></a></td> <td><a class="reference internal" href="pair_sph_taitwater.html"><em>sph/taitwater</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_sph_taitwater_morris.html"><em>sph/taitwater/morris</em></a></td> <td><a class="reference internal" href="pair_srp.html"><em>srp</em></a></td> <td><a class="reference internal" href="pair_tersoff.html"><em>tersoff/table (o)</em></a></td> <td><a class="reference internal" href="pair_thole.html"><em>thole</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_lj_soft.html"><em>tip4p/long/soft (o)</em></a></td> <td> </td> <td> </td> <td> </td> </tr> </tbody> </table> </div> <hr class="docutils" /> <div class="section" id="bond-style-potentials"> <h2>3.9. Bond_style potentials<a class="headerlink" href="#bond-style-potentials" title="Permalink to this headline">¶</a></h2> <p>See the <a class="reference internal" href="bond_style.html"><em>bond_style</em></a> command for an overview of bond potentials. Click on the style itself for a full description. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <a class="reference internal" href="Section_accelerate.html"><em>appropriate accelerated package</em></a>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.</p> <table border="1" class="docutils"> <colgroup> <col width="28%" /> <col width="25%" /> <col width="22%" /> <col width="25%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="bond_none.html"><em>none</em></a></td> <td><a class="reference internal" href="bond_hybrid.html"><em>hybrid</em></a></td> <td><a class="reference internal" href="bond_class2.html"><em>class2 (o)</em></a></td> <td><a class="reference internal" href="bond_fene.html"><em>fene (ko)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="bond_fene_expand.html"><em>fene/expand (o)</em></a></td> <td><a class="reference internal" href="bond_harmonic.html"><em>harmonic (ko)</em></a></td> <td><a class="reference internal" href="bond_morse.html"><em>morse (o)</em></a></td> <td><a class="reference internal" href="bond_nonlinear.html"><em>nonlinear (o)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="bond_quartic.html"><em>quartic (o)</em></a></td> <td><a class="reference internal" href="bond_table.html"><em>table (o)</em></a></td> <td> </td> <td> </td> </tr> </tbody> </table> <p>These are additional bond styles in USER packages, which can be used if <a class="reference internal" href="Section_start.html#start-3"><span>LAMMPS is built with the appropriate package</span></a>.</p> <table border="1" class="docutils"> <colgroup> <col width="46%" /> <col width="54%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="bond_harmonic_shift.html"><em>harmonic/shift (o)</em></a></td> <td><a class="reference internal" href="bond_harmonic_shift_cut.html"><em>harmonic/shift/cut (o)</em></a></td> </tr> </tbody> </table> </div> <hr class="docutils" /> <div class="section" id="angle-style-potentials"> <h2>3.10. Angle_style potentials<a class="headerlink" href="#angle-style-potentials" title="Permalink to this headline">¶</a></h2> <p>See the <a class="reference internal" href="angle_style.html"><em>angle_style</em></a> command for an overview of angle potentials. Click on the style itself for a full description. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <a class="reference internal" href="Section_accelerate.html"><em>appropriate accelerated package</em></a>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.</p> <table border="1" class="docutils"> <colgroup> <col width="21%" /> <col width="25%" /> <col width="28%" /> <col width="27%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="angle_none.html"><em>none</em></a></td> <td><a class="reference internal" href="angle_hybrid.html"><em>hybrid</em></a></td> <td><a class="reference internal" href="angle_charmm.html"><em>charmm (ko)</em></a></td> <td><a class="reference internal" href="angle_class2.html"><em>class2 (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="angle_cosine.html"><em>cosine (o)</em></a></td> <td><a class="reference internal" href="angle_cosine_delta.html"><em>cosine/delta (o)</em></a></td> <td><a class="reference internal" href="angle_cosine_periodic.html"><em>cosine/periodic (o)</em></a></td> <td><a class="reference internal" href="angle_cosine_squared.html"><em>cosine/squared (o)</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="angle_harmonic.html"><em>harmonic (ko)</em></a></td> <td><a class="reference internal" href="angle_table.html"><em>table (o)</em></a></td> <td> </td> <td> </td> </tr> </tbody> </table> <p>These are additional angle styles in USER packages, which can be used if <a class="reference internal" href="Section_start.html#start-3"><span>LAMMPS is built with the appropriate package</span></a>.</p> <table border="1" class="docutils"> <colgroup> <col width="29%" /> <col width="31%" /> <col width="20%" /> <col width="21%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="angle_cosine_shift.html"><em>cosine/shift (o)</em></a></td> <td><a class="reference internal" href="angle_cosine_shift_exp.html"><em>cosine/shift/exp (o)</em></a></td> <td><a class="reference internal" href="angle_dipole.html"><em>dipole (o)</em></a></td> <td><a class="reference internal" href="angle_fourier.html"><em>fourier (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="angle_fourier_simple.html"><em>fourier/simple (o)</em></a></td> <td><a class="reference internal" href="angle_quartic.html"><em>quartic (o)</em></a></td> <td><a class="reference internal" href="angle_sdk.html"><em>sdk</em></a></td> <td> </td> </tr> </tbody> </table> </div> <hr class="docutils" /> <div class="section" id="dihedral-style-potentials"> <h2>3.11. Dihedral_style potentials<a class="headerlink" href="#dihedral-style-potentials" title="Permalink to this headline">¶</a></h2> <p>See the <a class="reference internal" href="dihedral_style.html"><em>dihedral_style</em></a> command for an overview of dihedral potentials. Click on the style itself for a full description. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <a class="reference internal" href="Section_accelerate.html"><em>appropriate accelerated package</em></a>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.</p> <table border="1" class="docutils"> <colgroup> <col width="25%" /> <col width="21%" /> <col width="32%" /> <col width="22%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="dihedral_none.html"><em>none</em></a></td> <td><a class="reference internal" href="dihedral_hybrid.html"><em>hybrid</em></a></td> <td><a class="reference internal" href="dihedral_charmm.html"><em>charmm (ko)</em></a></td> <td><a class="reference internal" href="dihedral_class2.html"><em>class2 (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="dihedral_harmonic.html"><em>harmonic (o)</em></a></td> <td><a class="reference internal" href="dihedral_helix.html"><em>helix (o)</em></a></td> <td><a class="reference internal" href="dihedral_multi_harmonic.html"><em>multi/harmonic (o)</em></a></td> <td><a class="reference internal" href="dihedral_opls.html"><em>opls (ko)</em></a></td> </tr> </tbody> </table> <p>These are additional dihedral styles in USER packages, which can be used if <a class="reference internal" href="Section_start.html#start-3"><span>LAMMPS is built with the appropriate package</span></a>.</p> <table border="1" class="docutils"> <colgroup> <col width="31%" /> <col width="21%" /> <col width="24%" /> <col width="24%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="dihedral_cosine_shift_exp.html"><em>cosine/shift/exp (o)</em></a></td> <td><a class="reference internal" href="dihedral_fourier.html"><em>fourier (o)</em></a></td> <td><a class="reference internal" href="dihedral_nharmonic.html"><em>nharmonic (o)</em></a></td> <td><a class="reference internal" href="dihedral_quadratic.html"><em>quadratic (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="dihedral_table.html"><em>table (o)</em></a></td> <td> </td> <td> </td> <td> </td> </tr> </tbody> </table> </div> <hr class="docutils" /> <div class="section" id="improper-style-potentials"> <h2>3.12. Improper_style potentials<a class="headerlink" href="#improper-style-potentials" title="Permalink to this headline">¶</a></h2> <p>See the <a class="reference internal" href="improper_style.html"><em>improper_style</em></a> command for an overview of improper potentials. Click on the style itself for a full description. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <a class="reference internal" href="Section_accelerate.html"><em>appropriate accelerated package</em></a>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.</p> <table border="1" class="docutils"> <colgroup> <col width="27%" /> <col width="27%" /> <col width="24%" /> <col width="22%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="improper_none.html"><em>none</em></a></td> <td><a class="reference internal" href="improper_hybrid.html"><em>hybrid</em></a></td> <td><a class="reference internal" href="improper_class2.html"><em>class2 (o)</em></a></td> <td><a class="reference internal" href="improper_cvff.html"><em>cvff (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="improper_harmonic.html"><em>harmonic (ko)</em></a></td> <td><a class="reference internal" href="improper_umbrella.html"><em>umbrella (o)</em></a></td> <td> </td> <td> </td> </tr> </tbody> </table> <p>These are additional improper styles in USER packages, which can be used if <a class="reference internal" href="Section_start.html#start-3"><span>LAMMPS is built with the appropriate package</span></a>.</p> <table border="1" class="docutils"> <colgroup> <col width="33%" /> <col width="36%" /> <col width="31%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="improper_cossq.html"><em>cossq (o)</em></a></td> <td><a class="reference internal" href="improper_fourier.html"><em>fourier (o)</em></a></td> <td><a class="reference internal" href="improper_ring.html"><em>ring (o)</em></a></td> </tr> </tbody> </table> </div> <hr class="docutils" /> <div class="section" id="kspace-solvers"> <h2>3.13. Kspace solvers<a class="headerlink" href="#kspace-solvers" title="Permalink to this headline">¶</a></h2> <p>See the <a class="reference internal" href="kspace_style.html"><em>kspace_style</em></a> command for an overview of Kspace solvers. Click on the style itself for a full description. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <a class="reference internal" href="Section_accelerate.html"><em>appropriate accelerated package</em></a>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.</p> <table border="1" class="docutils"> <colgroup> <col width="26%" /> <col width="24%" /> <col width="23%" /> <col width="27%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="kspace_style.html"><em>ewald (o)</em></a></td> <td><a class="reference internal" href="kspace_style.html"><em>ewald/disp</em></a></td> <td><a class="reference internal" href="kspace_style.html"><em>msm (o)</em></a></td> <td><a class="reference internal" href="kspace_style.html"><em>msm/cg (o)</em></a></td> </tr> <tr class="row-even"><td><a class="reference internal" href="kspace_style.html"><em>pppm (cgo)</em></a></td> <td><a class="reference internal" href="kspace_style.html"><em>pppm/cg (o)</em></a></td> <td><a class="reference internal" href="kspace_style.html"><em>pppm/disp</em></a></td> <td><a class="reference internal" href="kspace_style.html"><em>pppm/disp/tip4p</em></a></td> </tr> <tr class="row-odd"><td><a class="reference internal" href="kspace_style.html"><em>pppm/tip4p (o)</em></a></td> <td> </td> <td> </td> <td> </td> </tr> </tbody> </table> </div> </div> </div> </div> <footer> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <a href="Section_packages.html" class="btn btn-neutral float-right" title="4. Packages" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="Section_start.html" class="btn btn-neutral" title="2. Getting Started" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/Section_commands.txt b/doc/Section_commands.txt index 16fc3bb4a..c5aad509a 100644 --- a/doc/Section_commands.txt +++ b/doc/Section_commands.txt @@ -1,1078 +1,1079 @@ "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 the input script commands used to define a LAMMPS simulation. 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 :line 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(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, the command is assumed to continue on the next line. The next line is concatenated to the previous line by removing the "&" character and line break. This allows long commands to be continued across two or more lines. See the discussion of triple quotes in (6) for how to continue a command across multiple line without using "&" characters. (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". How the variable is converted to a text string depends on what style of variable it is; see the "variable"_variable doc page for details. It can be a variable that stores multiple text strings, and return one of them. The returned text string can be multiple "words" (space separated) which will then be interpreted as multiple arguments in the input command. The variable can also store a numeric formula which will be evaluated and its numeric result returned as a string. As a special case, if the $ is followed by parenthesis, then the text inside the parenthesis is treated as an "immediate" variable and evaluated as an "equal-style variable"_variable.html. This is a way to use numeric formulas in an input script without having to assign them to variable names. For example, these 3 input script lines: variable X equal (xlo+xhi)/2+sqrt(v_area) region 1 block $X 2 INF INF EDGE EDGE variable X delete :pre can be replaced by region 1 block $((xlo+xhi)/2+sqrt(v_area)) 2 INF INF EDGE EDGE :pre so that you do not have to define (or discard) a temporary variable X. Note that neither the curly-bracket or immediate form of variables can contain nested $ characters for other variables to substitute for. Thus you cannot do this: variable a equal 2 variable b2 equal 4 print "B2 = $\{b$a\}" :pre Nor can you specify this $($x-1.0) for an immediate variable, but you could use $(v_x-1.0), since the latter is valid syntax for an "equal-style variable"_variable.html. See the "variable"_variable.html command for more details of how strings are assigned to variables and evaluated, and how they can be used 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 single or double or triple quotes. A long single argument enclosed in single or double quotes can span multiple lines if the "&" character is used, as described above. When the lines are concatenated together (and the "&" characters and line breaks removed), the text will become a single line. If you want multiple lines of an argument to retain their line breaks, the text can be enclosed in triple quotes, in which case "&" characters are not needed. For example: print "Volume = $v" print 'Volume = $v' if "$\{steps\} > 1000" then quit variable a string "red green blue & purple orange cyan" print """ System volume = $v System temperature = $t """ :pre In each case, the single, double, or triple quotes are removed when the single argument they enclose is stored internally. See the "dump modify format"_dump_modify.html, "print"_print.html, "if"_if.html, and "python"_python.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 single, double, or triple 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(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 "Section_example"_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(cmd_4),h4 This section lists all LAMMPS commands, grouped by category. The "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_dump"_read_dump.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: "comm_style"_comm_style.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, "dump movie"_dump_image.html, "restart"_restart.html, "thermo"_thermo.html, "thermo_modify"_thermo_modify.html, "thermo_style"_thermo_style.html, "undump"_undump.html, "write_data"_write_data.html, "write_dump"_write_dump.html, "write_restart"_write_restart.html Actions: "delete_atoms"_delete_atoms.html, "delete_bonds"_delete_bonds.html, "displace_atoms"_displace_atoms.html, "change_box"_change_box.html, "minimize"_minimize.html, "neb"_neb.html "prd"_prd.html, "rerun"_rerun.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(cmd_5),link(comm) This section lists all LAMMPS commands alphabetically, with a separate listing below of styles within certain commands. The "previous 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, "balance"_balance.html, "bond_coeff"_bond_coeff.html, "bond_style"_bond_style.html, "boundary"_boundary.html, "box"_box.html, "change_box"_change_box.html, "clear"_clear.html, "comm_modify"_comm_modify.html, "comm_style"_comm_style.html, "compute"_compute.html, "compute_modify"_compute_modify.html, "create_atoms"_create_atoms.html, "create_bonds"_create_bonds.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, "dump"_dump.html, "dump image"_dump_image.html, "dump_modify"_dump_modify.html, "dump movie"_dump_image.html, "echo"_echo.html, "fix"_fix.html, "fix_modify"_fix_modify.html, "group"_group.html, "if"_if.html, "info"_info.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, "molecule"_molecule.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, "partition"_partition.html, "prd"_prd.html, "print"_print.html, "processors"_processors.html, "python"_python.html, "quit"_quit.html, "read_data"_read_data.html, "read_dump"_read_dump.html, "read_restart"_read_restart.html, "region"_region.html, "replicate"_replicate.html, "rerun"_rerun.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, "timer"_timer.html, "timestep"_timestep.html, "uncompute"_uncompute.html, "undump"_undump.html, "unfix"_unfix.html, "units"_units.html, "variable"_variable.html, "velocity"_velocity.html, "write_data"_write_data.html, "write_dump"_write_dump.html, "write_restart"_write_restart.html :tb(c=6,ea=c) These are additional commands in USER packages, which can be used if "LAMMPS is built with the appropriate package"_Section_start.html#start_3. "group2ndx"_group2ndx.html :tb(c=1,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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the "appropriate accelerated package"_Section_accelerate.html. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "adapt"_fix_adapt.html, "addforce (c)"_fix_addforce.html, "append/atoms"_fix_append_atoms.html, "atom/swap"_fix_atom_swap.html, "aveforce (c)"_fix_aveforce.html, "ave/atom"_fix_ave_atom.html, "ave/chunk"_fix_ave_chunk.html, "ave/correlate"_fix_ave_correlate.html, "ave/histo"_fix_ave_histo.html, "ave/histo/weight"_fix_ave_histo.html, "ave/spatial"_fix_ave_spatial.html, "ave/time"_fix_ave_time.html, "balance"_fix_balance.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 (k)"_fix_deform.html, "deposit"_fix_deposit.html, "drag"_fix_drag.html, "dt/reset"_fix_dt_reset.html, "efield"_fix_efield.html, "enforce2d (c)"_fix_enforce2d.html, "evaporate"_fix_evaporate.html, "external"_fix_external.html, "freeze (c)"_fix_freeze.html, "gcmc"_fix_gcmc.html, "gld"_fix_gld.html, "gravity (co)"_fix_gravity.html, "heat"_fix_heat.html, "indent"_fix_indent.html, "langevin (k)"_fix_langevin.html, "lineforce"_fix_lineforce.html, "momentum"_fix_momentum.html, "move"_fix_move.html, "msst"_fix_msst.html, "neb"_fix_neb.html, "nph (ko)"_fix_nh.html, "nphug (o)"_fix_nphug.html, "nph/asphere (o)"_fix_nph_asphere.html, "nph/sphere (o)"_fix_nph_sphere.html, "npt (cko)"_fix_nh.html, "npt/asphere (o)"_fix_npt_asphere.html, "npt/sphere (o)"_fix_npt_sphere.html, "nve (cko)"_fix_nve.html, "nve/asphere"_fix_nve_asphere.html, "nve/asphere/noforce"_fix_nve_asphere_noforce.html, "nve/body"_fix_nve_body.html, "nve/limit"_fix_nve_limit.html, "nve/line"_fix_nve_line.html, "nve/noforce"_fix_nve_noforce.html, "nve/sphere (o)"_fix_nve_sphere.html, "nve/tri"_fix_nve_tri.html, "nvt (cko)"_fix_nh.html, "nvt/asphere (o)"_fix_nvt_asphere.html, "nvt/sllod (o)"_fix_nvt_sllod.html, "nvt/sphere (o)"_fix_nvt_sphere.html, "oneway"_fix_oneway.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, "property/atom"_fix_property_atom.html, "qeq/comb (o)"_fix_qeq_comb.html, "qeq/dynamic"_fix_qeq.html, "qeq/point"_fix_qeq.html, "qeq/shielded"_fix_qeq.html, "qeq/slater"_fix_qeq.html, "recenter"_fix_recenter.html, "restrain"_fix_restrain.html, "rigid (o)"_fix_rigid.html, "rigid/nph (o)"_fix_rigid.html, "rigid/npt (o)"_fix_rigid.html, "rigid/nve (o)"_fix_rigid.html, "rigid/nvt (o)"_fix_rigid.html, "rigid/small (o)"_fix_rigid.html, "rigid/small/nph"_fix_rigid.html, "rigid/small/npt"_fix_rigid.html, "rigid/small/nve"_fix_rigid.html, "rigid/small/nvt"_fix_rigid.html, "setforce (c)"_fix_setforce.html, "shake (c)"_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 (c)"_fix_temp_berendsen.html, "temp/csld"_fix_temp_csvr.html, "temp/csvr"_fix_temp_csvr.html, "temp/rescale (c)"_fix_temp_rescale.html, "tfmc"_fix_tfmc.html, "thermal/conductivity"_fix_thermal_conductivity.html, "tmd"_fix_tmd.html, "ttm"_fix_ttm.html, "tune/kspace"_fix_tune_kspace.html, "vector"_fix_vector.html, "viscosity"_fix_viscosity.html, "viscous (c)"_fix_viscous.html, "wall/colloid"_fix_wall.html, "wall/gran"_fix_wall_gran.html, "wall/harmonic"_fix_wall.html, "wall/lj1043"_fix_wall.html, "wall/lj126"_fix_wall.html, "wall/lj93"_fix_wall.html, "wall/piston"_fix_wall_piston.html, "wall/reflect (k)"_fix_wall_reflect.html, "wall/region"_fix_wall_region.html, "wall/srd"_fix_wall_srd.html :tb(c=8,ea=c) These are additional fix styles in USER packages, which can be used if "LAMMPS is built with the appropriate package"_Section_start.html#start_3. "adapt/fep"_fix_adapt_fep.html, "addtorque"_fix_addtorque.html, "atc"_fix_atc.html, +"ave/correlate/long"_fix_ave_correlate_long.html, "ave/spatial/sphere"_fix_ave_spatial_sphere.html, "drude"_fix_drude.html, "drude/transform/direct"_fix_drude_transform.html, "drude/transform/reverse"_fix_drude_transform.html, "colvars"_fix_colvars.html, "gle"_fix_gle.html, "imd"_fix_imd.html, "ipi"_fix_ipi.html, "langevin/drude"_fix_langevin_drude.html, "langevin/eff"_fix_langevin_eff.html, "lb/fluid"_fix_lb_fluid.html, "lb/momentum"_fix_lb_momentum.html, "lb/pc"_fix_lb_pc.html, "lb/rigid/pc/sphere"_fix_lb_rigid_pc_sphere.html, "lb/viscous"_fix_lb_viscous.html, "meso"_fix_meso.html, "meso/stationary"_fix_meso_stationary.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, "phonon"_fix_phonon.html, "pimd"_fix_pimd.html, "qbmsst"_fix_qbmsst.html, "qeq/reax"_fix_qeq_reax.html, "qmmm"_fix_qmmm.html, "qtb"_fix_qtb.html, "reax/c/bonds"_fix_reaxc_bonds.html, "reax/c/species"_fix_reaxc_species.html, "saed/vtk"_fix_saed_vtk.html, "smd"_fix_smd.html, "smd/adjust/dt"_fix_smd_adjust_dt.html, "smd/integrate/tlsph"_fix_smd_integrate_tlsph.html, "smd/integrate/ulsph"_fix_smd_integrate_ulsph.html, "smd/move/triangulated/surface"_fix_smd_move_triangulated_surface.html, "smd/setvel"_fix_smd_setvel.html, "smd/tlsph/reference/configuration"_fix_smd_tlsph_reference_configuration.html, "smd/wall/surface"_fix_smd_wall_surface.html, "temp/rescale/eff"_fix_temp_rescale_eff.html, "ti/rs"_fix_ti_rs.html, "ti/spring"_fix_ti_spring.html, "ttm/mod"_fix_ttm.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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the "appropriate accelerated package"_Section_accelerate.html. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "angle/local"_compute_angle_local.html, "angmom/chunk"_compute_angmom_chunk.html, "body/local"_compute_body_local.html, "bond/local"_compute_bond_local.html, "centro/atom"_compute_centro_atom.html, "chunk/atom"_compute_chunk_atom.html, "cluster/atom"_compute_cluster_atom.html, "cna/atom"_compute_cna_atom.html, "com"_compute_com.html, "com/chunk"_compute_com_chunk.html, "contact/atom"_compute_contact_atom.html, "coord/atom"_compute_coord_atom.html, "damage/atom"_compute_damage_atom.html, "dihedral/local"_compute_dihedral_local.html, "dilatation/atom"_compute_dilatation_atom.html, "displace/atom"_compute_displace_atom.html, "erotate/asphere"_compute_erotate_asphere.html, "erotate/rigid"_compute_erotate_rigid.html, "erotate/sphere"_compute_erotate_sphere.html, "erotate/sphere/atom"_compute_erotate_sphere_atom.html, "event/displace"_compute_event_displace.html, "group/group"_compute_group_group.html, "gyration"_compute_gyration.html, "gyration/chunk"_compute_gyration_chunk.html, "heat/flux"_compute_heat_flux.html, "improper/local"_compute_improper_local.html, "inertia/chunk"_compute_inertia_chunk.html, "ke"_compute_ke.html, "ke/atom"_compute_ke_atom.html, "ke/rigid"_compute_ke_rigid.html, "msd"_compute_msd.html, "msd/chunk"_compute_msd_chunk.html, "msd/nongauss"_compute_msd_nongauss.html, "omega/chunk"_compute_omega_chunk.html, "pair"_compute_pair.html, "pair/local"_compute_pair_local.html, "pe (c)"_compute_pe.html, "pe/atom"_compute_pe_atom.html, "plasticity/atom"_compute_plasticity_atom.html, "pressure (c)"_compute_pressure.html, "property/atom"_compute_property_atom.html, "property/local"_compute_property_local.html, "property/chunk"_compute_property_chunk.html, "rdf"_compute_rdf.html, "reduce"_compute_reduce.html, "reduce/region"_compute_reduce.html, "slice"_compute_slice.html, "sna/atom"_compute_sna_atom.html, "snad/atom"_compute_sna_atom.html, "snav/atom"_compute_sna_atom.html, "stress/atom"_compute_stress_atom.html, "temp (ck)"_compute_temp.html, "temp/asphere"_compute_temp_asphere.html, "temp/com"_compute_temp_com.html, "temp/chunk"_compute_temp_chunk.html, "temp/deform"_compute_temp_deform.html, "temp/partial (c)"_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, "torque/chunk"_compute_torque_chunk.html, "vacf"_compute_vacf.html, "vcm/chunk"_compute_vcm_chunk.html, "voronoi/atom"_compute_voronoi_atom.html :tb(c=6,ea=c) These are additional compute styles in USER packages, which can be used if "LAMMPS is built with the appropriate package"_Section_start.html#start_3. "ackland/atom"_compute_ackland_atom.html, "basal/atom"_compute_basal_atom.html, "fep"_compute_fep.html, "force/tally"_compute_tally.html, "heat/flux/tally"_compute_tally.html, "ke/eff"_compute_ke_eff.html, "ke/atom/eff"_compute_ke_atom_eff.html, "meso_e/atom"_compute_meso_e_atom.html, "meso_rho/atom"_compute_meso_rho_atom.html, "meso_t/atom"_compute_meso_t_atom.html, "pe/tally"_compute_tally.html, "saed"_compute_saed.html, "smd/contact/radius"_compute_smd_contact_radius.html, "smd/damage"_compute_smd_damage.html, "smd/hourglass/error"_compute_smd_hourglass_error.html, "smd/internal/energy"_compute_smd_internal_energy.html, "smd/plastic/strain"_compute_smd_plastic_strain.html, "smd/plastic/strain/rate"_compute_smd_plastic_strain_rate.html, "smd/rho"_compute_smd_rho.html, "smd/tlsph/defgrad"_compute_smd_tlsph_defgrad.html, "smd/tlsph/dt"_compute_smd_tlsph_dt.html, "smd/tlsph/num/neighs"_compute_smd_tlsph_num_neighs.html, "smd/tlsph/shape"_compute_smd_tlsph_shape.html, "smd/tlsph/strain"_compute_smd_tlsph_strain.html, "smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html, "smd/tlsph/stress"_compute_smd_tlsph_stress.html, "smd/triangle/mesh/vertices"_compute_smd_triangle_mesh_vertices.html, "smd/ulsph/num/neighs"_compute_smd_ulsph_num_neighs.html, "smd/ulsph/strain"_compute_smd_ulsph_strain.html, "smd/ulsph/strain/rate"_compute_smd_ulsph_strain_rate.html, "smd/ulsph/stress"_compute_smd_ulsph_stress.html, "smd/vol"_compute_smd_vol.html, "stress/tally"_compute_tally.html, "temp/drude"_compute_temp_drude.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, "xrd"_compute_xrd.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. Many of the styles have accelerated versions, which can be used if LAMMPS is built with the "appropriate accelerated package"_Section_accelerate.html. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "none"_pair_none.html, "hybrid"_pair_hybrid.html, "hybrid/overlay"_pair_hybrid.html, "adp (o)"_pair_adp.html, "airebo (o)"_pair_airebo.html, "beck (go)"_pair_beck.html, "body"_pair_body.html, "bop"_pair_bop.html, "born (go)"_pair_born.html, "born/coul/long (cgo)"_pair_born.html, "born/coul/long/cs"_pair_born.html, "born/coul/msm (o)"_pair_born.html, "born/coul/wolf (go)"_pair_born.html, "brownian (o)"_pair_brownian.html, "brownian/poly (o)"_pair_brownian.html, "buck (cgko)"_pair_buck.html, "buck/coul/cut (cgko)"_pair_buck.html, "buck/coul/long (cgko)"_pair_buck.html, "buck/coul/long/cs"_pair_buck.html, "buck/coul/msm (o)"_pair_buck.html, "buck/long/coul/long (o)"_pair_buck_long.html, "colloid (go)"_pair_colloid.html, "comb (o)"_pair_comb.html, "comb3"_pair_comb.html, "coul/cut (gko)"_pair_coul.html, "coul/debye (gko)"_pair_coul.html, "coul/dsf (gko)"_pair_coul.html, "coul/long (gko)"_pair_coul.html, "coul/long/cs"_pair_coul.html, "coul/msm"_pair_coul.html, "coul/streitz"_pair_coul.html, "coul/wolf (ko)"_pair_coul.html, "dpd (o)"_pair_dpd.html, "dpd/tstat (o)"_pair_dpd.html, "dsmc"_pair_dsmc.html, "eam (cgkot)"_pair_eam.html, "eam/alloy (cgkot)"_pair_eam.html, "eam/fs (cgkot)"_pair_eam.html, "eim (o)"_pair_eim.html, "gauss (go)"_pair_gauss.html, "gayberne (gio)"_pair_gayberne.html, "gran/hertz/history (o)"_pair_gran.html, "gran/hooke (co)"_pair_gran.html, "gran/hooke/history (o)"_pair_gran.html, "hbond/dreiding/lj (o)"_pair_hbond_dreiding.html, "hbond/dreiding/morse (o)"_pair_hbond_dreiding.html, "kim"_pair_kim.html, "lcbop"_pair_lcbop.html, "line/lj (o)"_pair_line_lj.html, "lj/charmm/coul/charmm (cko)"_pair_charmm.html, "lj/charmm/coul/charmm/implicit (cko)"_pair_charmm.html, "lj/charmm/coul/long (cgiko)"_pair_charmm.html, "lj/charmm/coul/msm"_pair_charmm.html, "lj/class2 (cgko)"_pair_class2.html, "lj/class2/coul/cut (cko)"_pair_class2.html, "lj/class2/coul/long (cgko)"_pair_class2.html, "lj/cubic (go)"_pair_lj_cubic.html, "lj/cut (cgikot)"_pair_lj.html, "lj/cut/coul/cut (cgko)"_pair_lj.html, "lj/cut/coul/debye (cgko)"_pair_lj.html, "lj/cut/coul/dsf (gko)"_pair_lj.html, "lj/cut/coul/long (cgikot)"_pair_lj.html, "lj/cut/coul/long/cs"_pair_lj.html, "lj/cut/coul/msm (go)"_pair_lj.html, "lj/cut/dipole/cut (go)"_pair_dipole.html, "lj/cut/dipole/long"_pair_dipole.html, "lj/cut/tip4p/cut (o)"_pair_lj.html, "lj/cut/tip4p/long (ot)"_pair_lj.html, "lj/expand (cgko)"_pair_lj_expand.html, "lj/gromacs (cgko)"_pair_gromacs.html, "lj/gromacs/coul/gromacs (cko)"_pair_gromacs.html, "lj/long/coul/long (o)"_pair_lj_long.html, "lj/long/dipole/long"_pair_dipole.html, "lj/long/tip4p/long"_pair_lj_long.html, "lj/smooth (co)"_pair_lj_smooth.html, "lj/smooth/linear (o)"_pair_lj_smooth_linear.html, "lj96/cut (cgo)"_pair_lj96.html, "lubricate (o)"_pair_lubricate.html, "lubricate/poly (o)"_pair_lubricate.html, "lubricateU"_pair_lubricateU.html, "lubricateU/poly"_pair_lubricateU.html, "meam (o)"_pair_meam.html, "mie/cut (o)"_pair_mie.html, "morse (cgot)"_pair_morse.html, "nb3b/harmonic (o)"_pair_nb3b_harmonic.html, "nm/cut (o)"_pair_nm.html, "nm/cut/coul/cut (o)"_pair_nm.html, "nm/cut/coul/long (o)"_pair_nm.html, "peri/eps"_pair_peri.html, "peri/lps (o)"_pair_peri.html, "peri/pmb (o)"_pair_peri.html, "peri/ves"_pair_peri.html, "polymorphic"_pair_polymorphic.html, "rebo (o)"_pair_airebo.html, "resquared (go)"_pair_resquared.html, "snap"_pair_snap.html, "soft (go)"_pair_soft.html, "sw (cgkio)"_pair_sw.html, "table (gko)"_pair_table.html, "tersoff (cgko)"_pair_tersoff.html, "tersoff/mod (ko)"_pair_tersoff_mod.html, "tersoff/zbl (ko)"_pair_tersoff_zbl.html, "tip4p/cut (o)"_pair_coul.html, "tip4p/long (o)"_pair_coul.html, "tri/lj (o)"_pair_tri_lj.html, -"vashishta"_pair_vashishta.html, +"vashishta (o)"_pair_vashishta.html, "yukawa (go)"_pair_yukawa.html, "yukawa/colloid (go)"_pair_yukawa_colloid.html, "zbl (go)"_pair_zbl.html :tb(c=4,ea=c) These are additional pair styles in USER packages, which can be used if "LAMMPS is built with the appropriate package"_Section_start.html#start_3. "awpmd/cut"_pair_awpmd.html, "coul/cut/soft (o)"_pair_lj_soft.html, "coul/diel (o)"_pair_coul_diel.html, "coul/long/soft (o)"_pair_lj_soft.html, "eam/cd (o)"_pair_eam.html, "edip (o)"_pair_edip.html, "eff/cut"_pair_eff.html, "gauss/cut"_pair_gauss.html, "list"_pair_list.html, "lj/charmm/coul/long/soft (o)"_pair_charmm.html, "lj/cut/coul/cut/soft (o)"_pair_lj_soft.html, "lj/cut/coul/long/soft (o)"_pair_lj_soft.html, "lj/cut/dipole/sf (go)"_pair_dipole.html, "lj/cut/soft (o)"_pair_lj_soft.html, "lj/cut/tip4p/long/soft (o)"_pair_lj_soft.html, "lj/sdk (gko)"_pair_sdk.html, "lj/sdk/coul/long (go)"_pair_sdk.html, "lj/sdk/coul/msm (o)"_pair_sdk.html, "lj/sf (o)"_pair_lj_sf.html, "meam/spline"_pair_meam_spline.html, "meam/sw/spline"_pair_meam_sw_spline.html, "quip"_pair_quip.html, "reax/c"_pair_reax_c.html, "smd/hertz"_pair_smd_hertz.html, "smd/tlsph"_pair_smd_tlsph.html, "smd/triangulated/surface"_pair_smd_triangulated_surface.html, "smd/ulsph"_pair_smd_ulsph.html, "sph/heatconduction"_pair_sph_heatconduction.html, "sph/idealgas"_pair_sph_idealgas.html, "sph/lj"_pair_sph_lj.html, "sph/rhosum"_pair_sph_rhosum.html, "sph/taitwater"_pair_sph_taitwater.html, "sph/taitwater/morris"_pair_sph_taitwater_morris.html, "srp"_pair_srp.html, "tersoff/table (o)"_pair_tersoff.html, "thole"_pair_thole.html, "tip4p/long/soft (o)"_pair_lj_soft.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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the "appropriate accelerated package"_Section_accelerate.html. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "none"_bond_none.html, "hybrid"_bond_hybrid.html, "class2 (o)"_bond_class2.html, "fene (ko)"_bond_fene.html, "fene/expand (o)"_bond_fene_expand.html, "harmonic (ko)"_bond_harmonic.html, "morse (o)"_bond_morse.html, "nonlinear (o)"_bond_nonlinear.html, "quartic (o)"_bond_quartic.html, "table (o)"_bond_table.html :tb(c=4,ea=c) These are additional bond styles in USER packages, which can be used if "LAMMPS is built with the appropriate package"_Section_start.html#start_3. "harmonic/shift (o)"_bond_harmonic_shift.html, "harmonic/shift/cut (o)"_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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the "appropriate accelerated package"_Section_accelerate.html. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "none"_angle_none.html, "hybrid"_angle_hybrid.html, "charmm (ko)"_angle_charmm.html, "class2 (o)"_angle_class2.html, "cosine (o)"_angle_cosine.html, "cosine/delta (o)"_angle_cosine_delta.html, "cosine/periodic (o)"_angle_cosine_periodic.html, "cosine/squared (o)"_angle_cosine_squared.html, "harmonic (ko)"_angle_harmonic.html, "table (o)"_angle_table.html :tb(c=4,ea=c) These are additional angle styles in USER packages, which can be used if "LAMMPS is built with the appropriate package"_Section_start.html#start_3. "cosine/shift (o)"_angle_cosine_shift.html, "cosine/shift/exp (o)"_angle_cosine_shift_exp.html, "dipole (o)"_angle_dipole.html, "fourier (o)"_angle_fourier.html, "fourier/simple (o)"_angle_fourier_simple.html, "quartic (o)"_angle_quartic.html, "sdk"_angle_sdk.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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the "appropriate accelerated package"_Section_accelerate.html. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "none"_dihedral_none.html, "hybrid"_dihedral_hybrid.html, "charmm (ko)"_dihedral_charmm.html, "class2 (o)"_dihedral_class2.html, "harmonic (o)"_dihedral_harmonic.html, "helix (o)"_dihedral_helix.html, "multi/harmonic (o)"_dihedral_multi_harmonic.html, "opls (ko)"_dihedral_opls.html :tb(c=4,ea=c) These are additional dihedral styles in USER packages, which can be used if "LAMMPS is built with the appropriate package"_Section_start.html#start_3. "cosine/shift/exp (o)"_dihedral_cosine_shift_exp.html, "fourier (o)"_dihedral_fourier.html, "nharmonic (o)"_dihedral_nharmonic.html, "quadratic (o)"_dihedral_quadratic.html, "table (o)"_dihedral_table.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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the "appropriate accelerated package"_Section_accelerate.html. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "none"_improper_none.html, "hybrid"_improper_hybrid.html, "class2 (o)"_improper_class2.html, "cvff (o)"_improper_cvff.html, "harmonic (ko)"_improper_harmonic.html, "umbrella (o)"_improper_umbrella.html :tb(c=4,ea=c) These are additional improper styles in USER packages, which can be used if "LAMMPS is built with the appropriate package"_Section_start.html#start_3. "cossq (o)"_improper_cossq.html, "fourier (o)"_improper_fourier.html, "ring (o)"_improper_ring.html :tb(c=4,ea=c) :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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the "appropriate accelerated package"_Section_accelerate.html. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "ewald (o)"_kspace_style.html, "ewald/disp"_kspace_style.html, "msm (o)"_kspace_style.html, "msm/cg (o)"_kspace_style.html, "pppm (cgo)"_kspace_style.html, "pppm/cg (o)"_kspace_style.html, "pppm/disp"_kspace_style.html, "pppm/disp/tip4p"_kspace_style.html, "pppm/tip4p (o)"_kspace_style.html :tb(c=4,ea=c) diff --git a/doc/Section_example.html b/doc/Section_example.html index 9a9441679..779318d58 100644 --- a/doc/Section_example.html +++ b/doc/Section_example.html @@ -1,130 +1,401 @@ -<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> +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>7. Example problems — LAMMPS 15 May 2015 version documentation</title> + + + + + + + -<HR> + -<H3>7. Example problems -</H3> -<P>The LAMMPS distribution includes an examples sub-directory with + + + <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + + + + <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> + + + + <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> + <link rel="next" title="8. Performance & scalability" href="Section_perf.html"/> + <link rel="prev" title="6. How-to discussions" href="Section_howto.html"/> + + + <script src="_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav" role="document"> + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-nav-search"> + + + + <a href="Manual.html" class="icon icon-home"> LAMMPS + + + + </a> + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + <ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="">7. Example problems</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> +</ul> + + + + </div> + + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="Manual.html">LAMMPS</a> + </nav> + + + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="breadcrumbs navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="Manual.html">Docs</a> »</li> + + <li>7. Example problems</li> + <li class="wy-breadcrumbs-aside"> + + + <a href="http://lammps.sandia.gov">Website</a> + <a href="Section_commands.html#comm">Commands</a> + + </li> + </ul> + <hr/> + + <div class="rst-footer-buttons" style="margin-bottom: 1em" role="navigation" aria-label="footer navigation"> + + <a href="Section_perf.html" class="btn btn-neutral float-right" title="8. Performance & scalability" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="Section_howto.html" class="btn btn-neutral" title="6. How-to discussions" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="example-problems"> +<h1>7. Example problems<a class="headerlink" href="#example-problems" title="Permalink to this headline">¶</a></h1> +<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>For examples that use input data files, many of them were produced by -<A HREF = "http://pizza.sandia.gov">Pizza.py</A> or setup tools described in the -<A HREF = "Section_tools.html">Additional Tools</A> section of the LAMMPS -documentation and provided with the LAMMPS distribution. -</P> -<P>If you uncomment the <A HREF = "dump.html">dump</A> command in the input script, a +log.crack.foo.P means it ran on P processors of machine “foo”.</p> +<p>For examples that use input data files, many of them were produced by +<a class="reference external" href="http://pizza.sandia.gov">Pizza.py</a> or setup tools described in the +<a class="reference internal" href="Section_tools.html"><em>Additional Tools</em></a> section of the LAMMPS +documentation and provided with the LAMMPS distribution.</p> +<p>If you uncomment the <a class="reference internal" href="dump.html"><em>dump</em></a> command in the input script, a text dump file will be produced, which can be animated by various -<A HREF = "http://lammps.sandia.gov/viz.html">visualization programs</A>. It can -also be animated using the xmovie tool described in the <A HREF = "Section_tools.html">Additional -Tools</A> section of the LAMMPS documentation. -</P> -<P>If you uncomment the <A HREF = "dump.html">dump image</A> command in the input +<a class="reference external" href="http://lammps.sandia.gov/viz.html">visualization programs</a>. It can +also be animated using the xmovie tool described in the <a class="reference internal" href="Section_tools.html"><em>Additional Tools</em></a> section of the LAMMPS documentation.</p> +<p>If you uncomment the <a class="reference internal" href="dump.html"><em>dump image</em></a> command in the input script, and assuming you have built LAMMPS with a JPG library, JPG snapshot images will be produced when the simulation runs. They can be quickly post-processed into a movie using commands described on the -<A HREF = "dump_image.html">dump image</A> doc page. -</P> -<P>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 WIDTH="0%" BORDER=1 > -<TR><TD >balance</TD><TD > dynamic load balancing, 2d system</TD></TR> -<TR><TD >body</TD><TD > body particles, 2d system</TD></TR> -<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 >cuda</TD><TD > use of the USER-CUDA package for GPU acceleration</TD></TR> -<TR><TD >dipole</TD><TD > point dipolar particles, 2d system</TD></TR> -<TR><TD >dreiding</TD><TD > methanol via Dreiding FF</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 >gpu</TD><TD > use of the GPU package for GPU acceleration</TD></TR> -<TR><TD >hugoniostat</TD><TD > Hugoniostat shock dynamics</TD></TR> -<TR><TD >indent</TD><TD > spherical indenter into a 2d solid</TD></TR> -<TR><TD >intel</TD><TD > use of the USER-INTEL package for CPU or Intel(R) Xeon Phi(TM) coprocessor</TD></TR> -<TR><TD >kim</TD><TD > use of potentials in Knowledge Base for Interatomic Models (KIM)</TD></TR> -<TR><TD >line</TD><TD > line segment particles in 2d rigid bodies</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 >nb3b</TD><TD > use of nonbonded 3-body harmonic pair style</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 vacancy diffusion in bulk Si</TD></TR> -<TR><TD >qeq</TD><TD > use of the QEQ pacakge for charge equilibration</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 >snap</TD><TD > NVE dynamics for BCC tantalum crystal using SNAP potential</TD></TR> -<TR><TD >srd</TD><TD > stochastic rotation dynamics (SRD) particles as solvent</TD></TR> -<TR><TD >tad</TD><TD > temperature-accelerated dynamics of vacancy diffusion in bulk Si</TD></TR> -<TR><TD >tri</TD><TD > triangular particles in rigid bodies -</TD></TR></TABLE></DIV> - -<P>Here is how you might run and visualize one of the sample problems: -</P> -<PRE>cd indent +<a class="reference internal" href="dump_image.html"><em>dump image</em></a> doc page.</p> +<p>Animations of many of these examples can be viewed on the Movies +section of the <a class="reference external" href="http://lammps.sandia.gov">LAMMPS WWW Site</a>.</p> +<p>These are the sample problems in the examples sub-directories:</p> +<table border="1" class="docutils"> +<colgroup> +<col width="15%" /> +<col width="85%" /> +</colgroup> +<tbody valign="top"> +<tr class="row-odd"><td>balance</td> +<td>dynamic load balancing, 2d system</td> +</tr> +<tr class="row-even"><td>body</td> +<td>body particles, 2d system</td> +</tr> +<tr class="row-odd"><td>colloid</td> +<td>big colloid particles in a small particle solvent, 2d system</td> +</tr> +<tr class="row-even"><td>comb</td> +<td>models using the COMB potential</td> +</tr> +<tr class="row-odd"><td>crack</td> +<td>crack propagation in a 2d solid</td> +</tr> +<tr class="row-even"><td>cuda</td> +<td>use of the USER-CUDA package for GPU acceleration</td> +</tr> +<tr class="row-odd"><td>dipole</td> +<td>point dipolar particles, 2d system</td> +</tr> +<tr class="row-even"><td>dreiding</td> +<td>methanol via Dreiding FF</td> +</tr> +<tr class="row-odd"><td>eim</td> +<td>NaCl using the EIM potential</td> +</tr> +<tr class="row-even"><td>ellipse</td> +<td>ellipsoidal particles in spherical solvent, 2d system</td> +</tr> +<tr class="row-odd"><td>flow</td> +<td>Couette and Poiseuille flow in a 2d channel</td> +</tr> +<tr class="row-even"><td>friction</td> +<td>frictional contact of spherical asperities between 2d surfaces</td> +</tr> +<tr class="row-odd"><td>gpu</td> +<td>use of the GPU package for GPU acceleration</td> +</tr> +<tr class="row-even"><td>hugoniostat</td> +<td>Hugoniostat shock dynamics</td> +</tr> +<tr class="row-odd"><td>indent</td> +<td>spherical indenter into a 2d solid</td> +</tr> +<tr class="row-even"><td>intel</td> +<td>use of the USER-INTEL package for CPU or Intel(R) Xeon Phi(TM) coprocessor</td> +</tr> +<tr class="row-odd"><td>kim</td> +<td>use of potentials in Knowledge Base for Interatomic Models (KIM)</td> +</tr> +<tr class="row-even"><td>line</td> +<td>line segment particles in 2d rigid bodies</td> +</tr> +<tr class="row-odd"><td>meam</td> +<td>MEAM test for SiC and shear (same as shear examples)</td> +</tr> +<tr class="row-even"><td>melt</td> +<td>rapid melt of 3d LJ system</td> +</tr> +<tr class="row-odd"><td>micelle</td> +<td>self-assembly of small lipid-like molecules into 2d bilayers</td> +</tr> +<tr class="row-even"><td>min</td> +<td>energy minimization of 2d LJ melt</td> +</tr> +<tr class="row-odd"><td>msst</td> +<td>MSST shock dynamics</td> +</tr> +<tr class="row-even"><td>nb3b</td> +<td>use of nonbonded 3-body harmonic pair style</td> +</tr> +<tr class="row-odd"><td>neb</td> +<td>nudged elastic band (NEB) calculation for barrier finding</td> +</tr> +<tr class="row-even"><td>nemd</td> +<td>non-equilibrium MD of 2d sheared system</td> +</tr> +<tr class="row-odd"><td>obstacle</td> +<td>flow around two voids in a 2d channel</td> +</tr> +<tr class="row-even"><td>peptide</td> +<td>dynamics of a small solvated peptide chain (5-mer)</td> +</tr> +<tr class="row-odd"><td>peri</td> +<td>Peridynamic model of cylinder impacted by indenter</td> +</tr> +<tr class="row-even"><td>pour</td> +<td>pouring of granular particles into a 3d box, then chute flow</td> +</tr> +<tr class="row-odd"><td>prd</td> +<td>parallel replica dynamics of vacancy diffusion in bulk Si</td> +</tr> +<tr class="row-even"><td>qeq</td> +<td>use of the QEQ pacakge for charge equilibration</td> +</tr> +<tr class="row-odd"><td>reax</td> +<td>RDX and TATB models using the ReaxFF</td> +</tr> +<tr class="row-even"><td>rigid</td> +<td>rigid bodies modeled as independent or coupled</td> +</tr> +<tr class="row-odd"><td>shear</td> +<td>sideways shear applied to 2d solid, with and without a void</td> +</tr> +<tr class="row-even"><td>snap</td> +<td>NVE dynamics for BCC tantalum crystal using SNAP potential</td> +</tr> +<tr class="row-odd"><td>srd</td> +<td>stochastic rotation dynamics (SRD) particles as solvent</td> +</tr> +<tr class="row-even"><td>tad</td> +<td>temperature-accelerated dynamics of vacancy diffusion in bulk Si</td> +</tr> +<tr class="row-odd"><td>tri</td> +<td>triangular particles in rigid bodies</td> +</tr> +</tbody> +</table> +<p>vashishta: models using the Vashishta potential</p> +<p>Here is how you might run and visualize one of the sample problems:</p> +<div class="highlight-python"><div class="highlight"><pre>cd indent cp ../../src/lmp_linux . # copy LAMMPS executable to this dir -lmp_linux -in 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> -<P>If you uncomment the <A HREF = "dump_image.html">dump image</A> line(s) in the input +lmp_linux -in in.indent # run the problem +</pre></div> +</div> +<p>Running the simulation produces the files <em>dump.indent</em> and +<em>log.lammps</em>. You can visualize the dump file as follows:</p> +<div class="highlight-python"><div class="highlight"><pre>../../tools/xmovie/xmovie -scale dump.indent +</pre></div> +</div> +<p>If you uncomment the <a class="reference internal" href="dump_image.html"><em>dump image</em></a> line(s) in the input script a series of JPG images will be produced by the run. These can be viewed individually or turned into a movie or animated by tools like ImageMagick or QuickTime or various Windows-based tools. See the -<A HREF = "dump_image.html">dump image</A> doc page for more details. E.g. this +<a class="reference internal" href="dump_image.html"><em>dump image</em></a> doc page for more details. E.g. this Imagemagick command would create a GIF file suitable for viewing in a -browser. -</P> -<PRE>% convert -loop 1 *.jpg foo.gif -</PRE> -<HR> - -<P>There is also a COUPLE directory with examples of how to use LAMMPS as +browser.</p> +<div class="highlight-python"><div class="highlight"><pre>% convert -loop 1 *.jpg foo.gif +</pre></div> +</div> +<hr class="docutils" /> +<p>There is also a COUPLE directory with examples of how to use LAMMPS as a library, either by itself or in tandem with another code or library. -See the COUPLE/README file to get started. -</P> -<P>There is also an ELASTIC directory with an example script for +See the COUPLE/README file to get started.</p> +<p>There is also an ELASTIC directory with an example script for computing elastic constants at zero temperature, using an Si example. See -the ELASTIC/in.elastic file for more info. -</P> -<P>There is also an ELASTIC_T directory with an example script for +the ELASTIC/in.elastic file for more info.</p> +<p>There is also an ELASTIC_T directory with an example script for computing elastic constants at finite temperature, using an Si example. See -the ELASTIC_T/in.elastic file for more info. -</P> -<P>There is also a USER directory which contains subdirectories of +the ELASTIC_T/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 -<A HREF = "Section_start.html">Section_start.html</A> file for more info about user -packages. -</P> -</HTML> +<a class="reference internal" href="Section_start.html"><em>Section_start.html</em></a> file for more info about user +packages.</p> +</div> + + + </div> + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="Section_perf.html" class="btn btn-neutral float-right" title="8. Performance & scalability" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="Section_howto.html" class="btn btn-neutral" title="6. How-to discussions" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright . + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'./', + VERSION:'15 May 2015 version', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> + + + + + + <script type="text/javascript" src="_static/js/theme.js"></script> + + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.StickyNav.enable(); + }); + </script> + + +</body> +</html> \ No newline at end of file diff --git a/doc/Section_howto.html b/doc/Section_howto.html index 6f86f92b8..dd8e5a703 100644 --- a/doc/Section_howto.html +++ b/doc/Section_howto.html @@ -1,2876 +1,2891 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>6. How-to discussions — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <link rel="next" title="7. Example problems" href="Section_example.html"/> <link rel="prev" title="5. Accelerating LAMMPS performance" href="Section_accelerate.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="">6. How-to discussions</a><ul> <li class="toctree-l2"><a class="reference internal" href="#restarting-a-simulation">6.1. Restarting a simulation</a></li> <li class="toctree-l2"><a class="reference internal" href="#d-simulations">6.2. 2d simulations</a></li> <li class="toctree-l2"><a class="reference internal" href="#charmm-amber-and-dreiding-force-fields">6.3. CHARMM, AMBER, and DREIDING force fields</a></li> <li class="toctree-l2"><a class="reference internal" href="#running-multiple-simulations-from-one-input-script">6.4. Running multiple simulations from one input script</a></li> <li class="toctree-l2"><a class="reference internal" href="#multi-replica-simulations">6.5. Multi-replica simulations</a></li> <li class="toctree-l2"><a class="reference internal" href="#granular-models">6.6. Granular models</a></li> <li class="toctree-l2"><a class="reference internal" href="#tip3p-water-model">6.7. TIP3P water model</a></li> <li class="toctree-l2"><a class="reference internal" href="#tip4p-water-model">6.8. TIP4P water model</a></li> <li class="toctree-l2"><a class="reference internal" href="#spc-water-model">6.9. SPC water model</a></li> <li class="toctree-l2"><a class="reference internal" href="#coupling-lammps-to-other-codes">6.10. Coupling LAMMPS to other codes</a></li> <li class="toctree-l2"><a class="reference internal" href="#visualizing-lammps-snapshots">6.11. Visualizing LAMMPS snapshots</a></li> <li class="toctree-l2"><a class="reference internal" href="#triclinic-non-orthogonal-simulation-boxes">6.12. Triclinic (non-orthogonal) simulation boxes</a></li> <li class="toctree-l2"><a class="reference internal" href="#nemd-simulations">6.13. NEMD simulations</a></li> <li class="toctree-l2"><a class="reference internal" href="#finite-size-spherical-and-aspherical-particles">6.14. Finite-size spherical and aspherical particles</a><ul> <li class="toctree-l3"><a class="reference internal" href="#atom-styles">6.14.1. Atom styles</a></li> <li class="toctree-l3"><a class="reference internal" href="#pair-potentials">6.14.2. Pair potentials</a></li> <li class="toctree-l3"><a class="reference internal" href="#time-integration">6.14.3. Time integration</a></li> <li class="toctree-l3"><a class="reference internal" href="#computes-thermodynamics-and-dump-output">6.14.4. Computes, thermodynamics, and dump output</a></li> <li class="toctree-l3"><a class="reference internal" href="#rigid-bodies-composed-of-finite-size-particles">6.14.5. Rigid bodies composed of finite-size particles</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="#output-from-lammps-thermo-dumps-computes-fixes-variables">6.15. Output from LAMMPS (thermo, dumps, computes, fixes, variables)</a><ul> <li class="toctree-l3"><a class="reference internal" href="#global-per-atom-local-data">6.15.1. Global/per-atom/local data</a></li> <li class="toctree-l3"><a class="reference internal" href="#scalar-vector-array-data">6.15.2. Scalar/vector/array data</a></li> <li class="toctree-l3"><a class="reference internal" href="#thermodynamic-output">6.15.3. Thermodynamic output</a></li> <li class="toctree-l3"><a class="reference internal" href="#dump-file-output">6.15.4. Dump file output</a></li> <li class="toctree-l3"><a class="reference internal" href="#fixes-that-write-output-files">6.15.5. Fixes that write output files</a></li> <li class="toctree-l3"><a class="reference internal" href="#computes-that-process-output-quantities">6.15.6. Computes that process output quantities</a></li> <li class="toctree-l3"><a class="reference internal" href="#fixes-that-process-output-quantities">6.15.7. Fixes that process output quantities</a></li> <li class="toctree-l3"><a class="reference internal" href="#computes-that-generate-values-to-output">6.15.8. Computes that generate values to output</a></li> <li class="toctree-l3"><a class="reference internal" href="#fixes-that-generate-values-to-output">6.15.9. Fixes that generate values to output</a></li> <li class="toctree-l3"><a class="reference internal" href="#variables-that-generate-values-to-output">6.15.10. Variables that generate values to output</a></li> <li class="toctree-l3"><a class="reference internal" href="#summary-table-of-output-options-and-data-flow-between-commands">6.15.11. Summary table of output options and data flow between commands</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="#thermostatting-barostatting-and-computing-temperature">6.16. Thermostatting, barostatting, and computing temperature</a></li> <li class="toctree-l2"><a class="reference internal" href="#walls">6.17. Walls</a></li> <li class="toctree-l2"><a class="reference internal" href="#elastic-constants">6.18. Elastic constants</a></li> <li class="toctree-l2"><a class="reference internal" href="#library-interface-to-lammps">6.19. Library interface to LAMMPS</a></li> <li class="toctree-l2"><a class="reference internal" href="#calculating-thermal-conductivity">6.20. Calculating thermal conductivity</a></li> <li class="toctree-l2"><a class="reference internal" href="#calculating-viscosity">6.21. Calculating viscosity</a></li> <li class="toctree-l2"><a class="reference internal" href="#calculating-a-diffusion-coefficient">6.22. Calculating a diffusion coefficient</a></li> <li class="toctree-l2"><a class="reference internal" href="#using-chunks-to-calculate-system-properties">6.23. Using chunks to calculate system properties</a><ul> <li class="toctree-l3"><a class="reference internal" href="#compute-chunk-atom-command">6.23.1. Compute chunk/atom command:</a></li> <li class="toctree-l3"><a class="reference internal" href="#fix-ave-chunk-command">6.23.2. Fix ave/chunk command:</a></li> <li class="toctree-l3"><a class="reference internal" href="#compute-chunk-commands">6.23.3. Compute */chunk commands:</a></li> <li class="toctree-l3"><a class="reference internal" href="#example-calculations-with-chunks">6.23.4. Example calculations with chunks</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="#setting-parameters-for-the-kspace-style-pppm-disp-command">6.24. Setting parameters for the <code class="docutils literal"><span class="pre">kspace_style</span> <span class="pre">pppm/disp</span></code> command</a></li> <li class="toctree-l2"><a class="reference internal" href="#polarizable-models">6.25. Polarizable models</a></li> <li class="toctree-l2"><a class="reference internal" href="#adiabatic-core-shell-model">6.26. Adiabatic core/shell model</a></li> <li class="toctree-l2"><a class="reference internal" href="#drude-induced-dipoles">6.27. Drude induced dipoles</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>6. How-to discussions</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> <div class="rst-footer-buttons" style="margin-bottom: 1em" role="navigation" aria-label="footer navigation"> <a href="Section_example.html" class="btn btn-neutral float-right" title="7. Example problems" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="Section_accelerate.html" class="btn btn-neutral" title="5. Accelerating LAMMPS performance" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="how-to-discussions"> <h1>6. How-to discussions<a class="headerlink" href="#how-to-discussions" title="Permalink to this headline">¶</a></h1> <p>This section describes how to perform common tasks using LAMMPS.</p> <div class="line-block"> <div class="line">6.1 <a class="reference internal" href="#howto-1"><span>Restarting a simulation</span></a></div> <div class="line">6.2 <a class="reference internal" href="#howto-2"><span>2d simulations</span></a></div> <div class="line">6.3 <a class="reference internal" href="#howto-3"><span>CHARMM, AMBER, and DREIDING force fields</span></a></div> <div class="line">6.4 <a class="reference internal" href="#howto-4"><span>Running multiple simulations from one input script</span></a></div> <div class="line">6.5 <a class="reference internal" href="#howto-5"><span>Multi-replica simulations</span></a></div> <div class="line">6.6 <a class="reference internal" href="#howto-6"><span>Granular models</span></a></div> <div class="line">6.7 <a class="reference internal" href="#howto-7"><span>TIP3P water model</span></a></div> <div class="line">6.8 <a class="reference internal" href="#howto-8"><span>TIP4P water model</span></a></div> <div class="line">6.9 <a class="reference internal" href="#howto-9"><span>SPC water model</span></a></div> <div class="line">6.10 <a class="reference internal" href="#howto-10"><span>Coupling LAMMPS to other codes</span></a></div> <div class="line">6.11 <a class="reference internal" href="#howto-11"><span>Visualizing LAMMPS snapshots</span></a></div> <div class="line">6.12 <a class="reference internal" href="#howto-12"><span>Triclinic (non-orthogonal) simulation boxes</span></a></div> <div class="line">6.13 <a class="reference internal" href="#howto-13"><span>NEMD simulations</span></a></div> <div class="line">6.14 <a class="reference internal" href="#howto-14"><span>Finite-size spherical and aspherical particles</span></a></div> <div class="line">6.15 <a class="reference internal" href="#howto-15"><span>Output from LAMMPS (thermo, dumps, computes, fixes, variables)</span></a></div> <div class="line">6.16 <a class="reference internal" href="#howto-16"><span>Thermostatting, barostatting and computing temperature</span></a></div> <div class="line">6.17 <a class="reference internal" href="#howto-17"><span>Walls</span></a></div> <div class="line">6.18 <a class="reference internal" href="#howto-18"><span>Elastic constants</span></a></div> <div class="line">6.19 <a class="reference internal" href="#howto-19"><span>Library interface to LAMMPS</span></a></div> <div class="line">6.20 <a class="reference internal" href="#howto-20"><span>Calculating thermal conductivity</span></a></div> <div class="line">6.21 <a class="reference internal" href="#howto-21"><span>Calculating viscosity</span></a></div> <div class="line">6.22 <a class="reference internal" href="#howto-22"><span>Calculating a diffusion coefficient</span></a></div> <div class="line">6.23 <a class="reference internal" href="#howto-23"><span>Using chunks to calculate system properties</span></a></div> <div class="line">6.24 <a class="reference internal" href="#howto-24"><span>Setting parameters for the kspace_style pppm/disp command</span></a></div> <div class="line">6.25 <a class="reference internal" href="#howto-25"><span>Polarizable models</span></a></div> <div class="line">6.26 <a class="reference internal" href="#howto-26"><span>Adiabatic core/shell model</span></a></div> <div class="line">6.27 <a class="reference internal" href="#howto-27"><span>Drude induced dipoles</span></a></div> <div class="line"><br /></div> </div> <p>The example input scripts included in the LAMMPS distribution and highlighted in <a class="reference internal" href="Section_example.html"><em>Section_example</em></a> also show how to setup and run various kinds of simulations.</p> <div class="section" id="restarting-a-simulation"> <span id="howto-1"></span><h2>6.1. Restarting a simulation<a class="headerlink" href="#restarting-a-simulation" title="Permalink to this headline">¶</a></h2> <p>There are 3 ways to continue a long LAMMPS simulation. Multiple <a class="reference internal" href="run.html"><em>run</em></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 class="reference internal" href="restart.html"><em>restart</em></a> command. At a later time, these binary files can be read via a <a class="reference internal" href="read_restart.html"><em>read_restart</em></a> command in a new script. Or they can be converted to text data files using the <a class="reference internal" href="Section_start.html#start-7"><span>-r command-line switch</span></a> and read by a <a class="reference internal" href="read_data.html"><em>read_data</em></a> command in a new script.</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 class="reference internal" href="read_restart.html"><em>read_restart</em></a> and <a class="reference internal" href="read_data.html"><em>read_data</em></a> commands.</p> <p>Look at the <em>in.chain</em> input script provided in the <em>bench</em> directory of the LAMMPS distribution to see the original script that these 2 scripts are based on. If that script had the line</p> <div class="highlight-python"><div class="highlight"><pre>restart 50 tmp.restart </pre></div> </div> <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> <div class="highlight-python"><div class="highlight"><pre>read_restart tmp.restart.50 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>neighbor 0.4 bin neigh_modify every 1 delay 1 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>fix 1 all nve fix 2 all langevin 1.0 1.0 10.0 904297 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>timestep 0.012 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>run 50 </pre></div> </div> <p>Note that the following commands do not need to be repeated because their settings are included in the restart file: <em>units, atom_style, special_bonds, pair_style, bond_style</em>. However these commands do need to be used, since their settings are not in the restart file: <em>neighbor, fix, timestep</em>.</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 class="reference internal" href="fix_langevin.html"><em>fix langevin</em></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 as follows:</p> <div class="highlight-python"><div class="highlight"><pre>lmp_g++ -r tmp.restart.50 tmp.restart.data </pre></div> </div> <p>Then, this script could be used to re-run the last 50 steps:</p> <div class="highlight-python"><div class="highlight"><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></div> </div> <div class="highlight-python"><div class="highlight"><pre>read_data tmp.restart.data </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>neighbor 0.4 bin neigh_modify every 1 delay 1 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>fix 1 all nve fix 2 all langevin 1.0 1.0 10.0 904297 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>timestep 0.012 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>reset_timestep 50 run 50 </pre></div> </div> <p>Note that nearly all the settings specified in the original <em>in.chain</em> script must be repeated, except the <em>pair_coeff</em> and <em>bond_coeff</em> commands since the new data file lists the force field coefficients. Also, the <a class="reference internal" href="reset_timestep.html"><em>reset_timestep</em></a> command is used to tell LAMMPS the current timestep. This value is stored in restart files, but not in data files.</p> <hr class="docutils" /> </div> <div class="section" id="d-simulations"> <span id="howto-2"></span><h2>6.2. 2d simulations<a class="headerlink" href="#d-simulations" title="Permalink to this headline">¶</a></h2> <p>Use the <a class="reference internal" href="dimension.html"><em>dimension</em></a> command to specify a 2d simulation.</p> <p>Make the simulation box periodic in z via the <a class="reference internal" href="boundary.html"><em>boundary</em></a> command. This is the default.</p> <p>If using the <a class="reference internal" href="create_box.html"><em>create box</em></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 class="literal-block"> <a class="reference internal" href="create_box.html"><em>create box</em></a> 1 -10 10 -10 10 -0.25 0.25 </pre> <p>If using the <a class="reference internal" href="read_data.html"><em>read data</em></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 class="reference internal" href="fix_enforce2d.html"><em>fix enforce2d</em></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> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">Some models in LAMMPS treat particles as finite-size 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> </div> <hr class="docutils" /> </div> <div class="section" id="charmm-amber-and-dreiding-force-fields"> <span id="howto-3"></span><h2>6.3. CHARMM, AMBER, and DREIDING force fields<a class="headerlink" href="#charmm-amber-and-dreiding-force-fields" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="read_data.html"><em>read_data</em></a> command or in the input script with commands like <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> or <a class="reference internal" href="bond_coeff.html"><em>bond_coeff</em></a>. See <a class="reference internal" href="Section_tools.html"><em>Section_tools</em></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 class="reference internal" href="#mackerell"><span>(MacKerell)</span></a> for a description of the CHARMM force field. See <a class="reference internal" href="#cornell"><span>(Cornell)</span></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 class="simple"> <li><a class="reference internal" href="bond_harmonic.html"><em>bond_style</em></a> harmonic</li> <li><a class="reference internal" href="angle_charmm.html"><em>angle_style</em></a> charmm</li> <li><a class="reference internal" href="dihedral_charmm.html"><em>dihedral_style</em></a> charmm</li> <li><a class="reference internal" href="pair_charmm.html"><em>pair_style</em></a> lj/charmm/coul/charmm</li> <li><a class="reference internal" href="pair_charmm.html"><em>pair_style</em></a> lj/charmm/coul/charmm/implicit</li> <li><a class="reference internal" href="pair_charmm.html"><em>pair_style</em></a> lj/charmm/coul/long</li> <li><a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a> charmm</li> <li><a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a> amber</li> </ul> <p>DREIDING is a generic force field developed by the <a class="reference external" 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 class="reference internal" href="pair_hbond_dreiding.html"><em>explicit hydrogen bond term</em></a> to describe interactions involving a hydrogen atom on very electronegative atoms (N, O, F).</p> <p>See <a class="reference internal" href="#mayo"><span>(Mayo)</span></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 class="simple"> <li><a class="reference internal" href="bond_harmonic.html"><em>bond_style</em></a> harmonic</li> <li><a class="reference internal" href="bond_morse.html"><em>bond_style</em></a> morse</li> <li><a class="reference internal" href="angle_harmonic.html"><em>angle_style</em></a> harmonic</li> <li><a class="reference internal" href="angle_cosine.html"><em>angle_style</em></a> cosine</li> <li><a class="reference internal" href="angle_cosine_periodic.html"><em>angle_style</em></a> cosine/periodic</li> <li><a class="reference internal" href="dihedral_charmm.html"><em>dihedral_style</em></a> charmm</li> <li><a class="reference internal" href="improper_umbrella.html"><em>improper_style</em></a> umbrella</li> <li><a class="reference internal" href="pair_buck.html"><em>pair_style</em></a> buck</li> <li><a class="reference internal" href="pair_buck.html"><em>pair_style</em></a> buck/coul/cut</li> <li><a class="reference internal" href="pair_buck.html"><em>pair_style</em></a> buck/coul/long</li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style</em></a> lj/cut</li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style</em></a> lj/cut/coul/cut</li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style</em></a> lj/cut/coul/long</li> <li><a class="reference internal" href="pair_hbond_dreiding.html"><em>pair_style</em></a> hbond/dreiding/lj</li> <li><a class="reference internal" href="pair_hbond_dreiding.html"><em>pair_style</em></a> hbond/dreiding/morse</li> <li><a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a> dreiding</li> </ul> <hr class="docutils" /> </div> <div class="section" id="running-multiple-simulations-from-one-input-script"> <span id="howto-4"></span><h2>6.4. Running multiple simulations from one input script<a class="headerlink" href="#running-multiple-simulations-from-one-input-script" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="run.html"><em>run</em></a> command multiple times. For example, this script</p> <div class="highlight-python"><div class="highlight"><pre>units lj atom_style atomic read_data data.lj run 10000 run 10000 run 10000 run 10000 run 10000 </pre></div> </div> <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 class="reference internal" href="clear.html"><em>clear</em></a> command can be used in between them to re-initialize LAMMPS. For example, this script</p> <div class="highlight-python"><div class="highlight"><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></div> </div> <p>would run 2 independent simulations, one after the other.</p> <p>For large numbers of independent simulations, you can use <a class="reference internal" href="variable.html"><em>variables</em></a> and the <a class="reference internal" href="next.html"><em>next</em></a> and <a class="reference internal" href="jump.html"><em>jump</em></a> commands to loop over the same input script multiple times with different settings. For example, this script, named in.polymer</p> <div class="highlight-python"><div class="highlight"><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></div> </div> <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> <div class="highlight-python"><div class="highlight"><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 clear next t next a jump in.polymer </pre></div> </div> <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 class="reference internal" href="Section_start.html#start-7"><span>this section</span></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 <em>universe</em>-style variables, as described in the <a class="reference internal" href="variable.html"><em>variable</em></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 class="docutils" /> </div> <div class="section" id="multi-replica-simulations"> <span id="howto-5"></span><h2>6.5. Multi-replica simulations<a class="headerlink" href="#multi-replica-simulations" title="Permalink to this headline">¶</a></h2> <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 class="simple"> <li><a class="reference internal" href="neb.html"><em>neb</em></a> for nudged elastic band calculations</li> <li><a class="reference internal" href="prd.html"><em>prd</em></a> for parallel replica dynamics</li> <li><a class="reference internal" href="tad.html"><em>tad</em></a> for temperature accelerated dynamics</li> <li><a class="reference internal" href="temper.html"><em>temper</em></a> for parallel tempering</li> <li><a class="reference internal" href="fix_pimd.html"><em>fix pimd</em></a> for path-integral molecular dynamics (PIMD)</li> </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 commands can only be used if LAMMPS was built with the REPLICA package. See the <a class="reference internal" href="Section_start.html#start-3"><span>Making LAMMPS</span></a> section for more info on packages.</p> <p>PIMD runs different replicas whose individual particles are coupled together by springs to model a system or ring-polymers.</p> <p>This commands can only be used if LAMMPS was built with the USER-MISC package. See the <a class="reference internal" href="Section_start.html#start-3"><span>Making LAMMPS</span></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 class="reference internal" href="Section_start.html#start-7"><span>-partition command-line switch</span></a> to launch LAMMPS on multiple partitions, which in this context are the same as replicas. E.g. these commands:</p> <div class="highlight-python"><div class="highlight"><pre>mpirun -np 16 lmp_linux -partition 8x2 -in in.temper mpirun -np 8 lmp_linux -partition 8x1 -in in.neb </pre></div> </div> <p>would each run 8 replicas, on either 16 or 8 processors. Note the use of the <a class="reference internal" href="Section_start.html#start-7"><span>-in command-line switch</span></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 class="docutils" /> </div> <div class="section" id="granular-models"> <span id="howto-6"></span><h2>6.6. Granular models<a class="headerlink" href="#granular-models" title="Permalink to this headline">¶</a></h2> <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 class="simple"> <li><a class="reference internal" href="atom_style.html"><em>atom_style sphere</em></a></li> <li><a class="reference internal" href="fix_nve_sphere.html"><em>fix nve/sphere</em></a></li> <li><a class="reference internal" href="fix_gravity.html"><em>fix gravity</em></a></li> </ul> <p>This compute</p> <ul class="simple"> <li><a class="reference internal" href="compute_erotate_sphere.html"><em>compute erotate/sphere</em></a></li> </ul> <p>calculates rotational kinetic energy which can be <a class="reference internal" href="#howto-15"><span>output with thermodynamic info</span></a>.</p> <p>Use one of these 3 pair potentials, which compute forces and torques between interacting pairs of particles:</p> <ul class="simple"> <li><a class="reference internal" href="pair_style.html"><em>pair_style</em></a> gran/history</li> <li><a class="reference internal" href="pair_style.html"><em>pair_style</em></a> gran/no_history</li> <li><a class="reference internal" href="pair_style.html"><em>pair_style</em></a> gran/hertzian</li> </ul> <p>These commands implement fix options specific to granular systems:</p> <ul class="simple"> <li><a class="reference internal" href="fix_freeze.html"><em>fix freeze</em></a></li> <li><a class="reference internal" href="fix_pour.html"><em>fix pour</em></a></li> <li><a class="reference internal" href="fix_viscous.html"><em>fix viscous</em></a></li> <li><a class="reference internal" href="fix_wall_gran.html"><em>fix wall/gran</em></a></li> </ul> <p>The fix style <em>freeze</em> zeroes both the force and torque of frozen atoms, and should be used for granular system instead of the fix style <em>setforce</em>.</p> <p>For computational efficiency, you can eliminate needless pairwise computations between frozen atoms by using this command:</p> <ul class="simple"> <li><a class="reference internal" href="neigh_modify.html"><em>neigh_modify</em></a> exclude</li> </ul> <hr class="docutils" /> </div> <div class="section" id="tip3p-water-model"> <span id="howto-7"></span><h2>6.7. TIP3P water model<a class="headerlink" href="#tip3p-water-model" title="Permalink to this headline">¶</a></h2> <p>The TIP3P water model as implemented in CHARMM <a class="reference internal" href="#mackerell"><span>(MacKerell)</span></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 class="reference internal" href="fix_shake.html"><em>fix shake</em></a> command can be used to hold the two O-H bonds and the H-O-H angle rigid. A bond style of <em>harmonic</em> and an angle style of <em>harmonic</em> or <em>charmm</em> 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 class="reference internal" href="pair_lj.html#jorgensen"><span>(Jorgensen)</span></a>.</p> +<a class="reference internal" href="#jorgensen"><span>(Jorgensen)</span></a>.</p> <div class="line-block"> <div class="line">O mass = 15.9994</div> <div class="line">H mass = 1.008</div> <div class="line">O charge = -0.834</div> <div class="line">H charge = 0.417</div> <div class="line">LJ epsilon of OO = 0.1521</div> <div class="line">LJ sigma of OO = 3.1507</div> <div class="line">LJ epsilon of HH = 0.0460</div> <div class="line">LJ sigma of HH = 0.4000</div> <div class="line">LJ epsilon of OH = 0.0836</div> <div class="line">LJ sigma of OH = 1.7753</div> <div class="line">K of OH bond = 450</div> <div class="line">r0 of OH bond = 0.9572</div> <div class="line">K of HOH angle = 55</div> <div class="line">theta of HOH angle = 104.52</div> <div class="line"><br /></div> </div> <p>These are the parameters to use for TIP3P with a long-range Coulombic solver (e.g. Ewald or PPPM in LAMMPS), see <a class="reference internal" href="#price"><span>(Price)</span></a> for details:</p> <div class="line-block"> <div class="line">O mass = 15.9994</div> <div class="line">H mass = 1.008</div> <div class="line">O charge = -0.830</div> <div class="line">H charge = 0.415</div> <div class="line">LJ epsilon of OO = 0.102</div> <div class="line">LJ sigma of OO = 3.188</div> <div class="line">LJ epsilon, sigma of OH, HH = 0.0</div> <div class="line">K of OH bond = 450</div> <div class="line">r0 of OH bond = 0.9572</div> <div class="line">K of HOH angle = 55</div> <div class="line">theta of HOH angle = 104.52</div> <div class="line"><br /></div> </div> <p>Wikipedia also has a nice article on <a class="reference external" href="http://en.wikipedia.org/wiki/Water_model">water models</a>.</p> <hr class="docutils" /> </div> <div class="section" id="tip4p-water-model"> <span id="howto-8"></span><h2>6.8. TIP4P water model<a class="headerlink" href="#tip4p-water-model" title="Permalink to this headline">¶</a></h2> <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 <em>harmonic</em> and an angle style of <em>harmonic</em> or <em>charmm</em> should also be used.</p> <p>A TIP4P model is run with LAMMPS using either this command for a cutoff model:</p> <p><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/tip4p/cut</em></a></p> <p>or these two commands for a long-range model:</p> <ul class="simple"> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/tip4p/long</em></a></li> <li><a class="reference internal" href="kspace_style.html"><em>kspace_style pppm/tip4p</em></a></li> </ul> <p>For both models, the bond lengths and bond angles should be held fixed using the <a class="reference internal" href="fix_shake.html"><em>fix shake</em></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 class="reference internal" href="pair_lj.html#jorgensen"><span>(Jorgensen)</span></a>. Note that the OM distance is specified in +<a class="reference internal" href="#jorgensen"><span>(Jorgensen)</span></a>. Note that the OM distance is specified in the <a class="reference internal" href="pair_style.html"><em>pair_style</em></a> command, not as part of the pair coefficients.</p> <div class="line-block"> <div class="line">O mass = 15.9994</div> <div class="line">H mass = 1.008</div> <div class="line">O charge = -1.040</div> <div class="line">H charge = 0.520</div> <div class="line">r0 of OH bond = 0.9572</div> <div class="line">theta of HOH angle = 104.52</div> <div class="line">OM distance = 0.15</div> <div class="line">LJ epsilon of O-O = 0.1550</div> <div class="line">LJ sigma of O-O = 3.1536</div> <div class="line">LJ epsilon, sigma of OH, HH = 0.0</div> <div class="line">Coulombic cutoff = 8.5</div> <div class="line"><br /></div> </div> <p>For the TIP4/Ice model (J Chem Phys, 122, 234511 (2005); <a class="reference external" href="http://dx.doi.org/10.1063/1.1931662">http://dx.doi.org/10.1063/1.1931662</a>) these values can be used:</p> <div class="line-block"> <div class="line">O mass = 15.9994</div> <div class="line">H mass = 1.008</div> <div class="line">O charge = -1.1794</div> <div class="line">H charge = 0.5897</div> <div class="line">r0 of OH bond = 0.9572</div> <div class="line">theta of HOH angle = 104.52</div> <div class="line">OM distance = 0.1577</div> <div class="line">LJ epsilon of O-O = 0.21084</div> <div class="line">LJ sigma of O-O = 3.1668</div> <div class="line">LJ epsilon, sigma of OH, HH = 0.0</div> <div class="line">Coulombic cutoff = 8.5</div> <div class="line"><br /></div> </div> <p>For the TIP4P/2005 model (J Chem Phys, 123, 234505 (2005); <a class="reference external" href="http://dx.doi.org/10.1063/1.2121687">http://dx.doi.org/10.1063/1.2121687</a>), these values can be used:</p> <div class="line-block"> <div class="line">O mass = 15.9994</div> <div class="line">H mass = 1.008</div> <div class="line">O charge = -1.1128</div> <div class="line">H charge = 0.5564</div> <div class="line">r0 of OH bond = 0.9572</div> <div class="line">theta of HOH angle = 104.52</div> <div class="line">OM distance = 0.1546</div> <div class="line">LJ epsilon of O-O = 0.1852</div> <div class="line">LJ sigma of O-O = 3.1589</div> <div class="line">LJ epsilon, sigma of OH, HH = 0.0</div> <div class="line">Coulombic cutoff = 8.5</div> <div class="line"><br /></div> </div> <p>These are the parameters to use for TIP4P with a long-range Coulombic solver (e.g. Ewald or PPPM in LAMMPS):</p> <div class="line-block"> <div class="line">O mass = 15.9994</div> <div class="line">H mass = 1.008</div> <div class="line">O charge = -1.0484</div> <div class="line">H charge = 0.5242</div> <div class="line">r0 of OH bond = 0.9572</div> <div class="line">theta of HOH angle = 104.52</div> <div class="line">OM distance = 0.1250</div> <div class="line">LJ epsilon of O-O = 0.16275</div> <div class="line">LJ sigma of O-O = 3.16435</div> <div class="line">LJ epsilon, sigma of OH, HH = 0.0</div> <div class="line"><br /></div> </div> <p>Note that the when using the TIP4P pair style, the neighobr list cutoff for Coulomb interactions is effectively extended by a distance 2 * (OM distance), to account for the offset distance of the fictitious charges on O atoms in water molecules. Thus it is typically best in an efficiency sense to use a LJ cutoff >= Coulomb cutoff + 2*(OM distance), to shrink the size of the neighbor list. This leads to slightly larger cost for the long-range calculation, so you can test the trade-off for your model. The OM distance and the LJ and Coulombic cutoffs are set in the <a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/tip4p/long</em></a> command.</p> <p>Wikipedia also has a nice article on <a class="reference external" href="http://en.wikipedia.org/wiki/Water_model">water models</a>.</p> <hr class="docutils" /> </div> <div class="section" id="spc-water-model"> <span id="howto-9"></span><h2>6.9. SPC water model<a class="headerlink" href="#spc-water-model" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="fix_shake.html"><em>fix shake</em></a> command can be used to hold the two O-H bonds and the H-O-H angle rigid. A bond style of <em>harmonic</em> and an angle style of <em>harmonic</em> or <em>charmm</em> 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> <div class="line-block"> <div class="line">O mass = 15.9994</div> <div class="line">H mass = 1.008</div> <div class="line">O charge = -0.820</div> <div class="line">H charge = 0.410</div> <div class="line">LJ epsilon of OO = 0.1553</div> <div class="line">LJ sigma of OO = 3.166</div> <div class="line">LJ epsilon, sigma of OH, HH = 0.0</div> <div class="line">r0 of OH bond = 1.0</div> <div class="line">theta of HOH angle = 109.47</div> <div class="line"><br /></div> </div> <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> <div class="line-block"> <div class="line">O charge = -0.8476</div> <div class="line">H charge = 0.4238</div> <div class="line"><br /></div> </div> <p>See the <a class="reference internal" href="#berendsen"><span>(Berendsen)</span></a> reference for more details on both the SPC and SPC/E models.</p> <p>Wikipedia also has a nice article on <a class="reference external" href="http://en.wikipedia.org/wiki/Water_model">water models</a>.</p> <hr class="docutils" /> </div> <div class="section" id="coupling-lammps-to-other-codes"> <span id="howto-10"></span><h2>6.10. Coupling LAMMPS to other codes<a class="headerlink" href="#coupling-lammps-to-other-codes" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="fix.html"><em>fix</em></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 class="reference external" 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 class="reference internal" href="fix_poems.html"><em>fix_poems</em></a> command for more details. See <a class="reference internal" href="Section_modify.html"><em>this section</em></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 class="reference internal" href="run.html"><em>run</em></a> command facilitates this with its <em>every</em> 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 class="reference internal" href="Section_modify.html"><em>Section_modify</em></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 class="reference internal" href="run.html"><em>run</em></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 examples/COUPLE directory of the LAMMPS distribution; see examples/COUPLE/README for more details:</p> <ul class="simple"> <li>simple: simple driver programs in C++ and C which invoke LAMMPS as a library</li> <li>lammps_quest: coupling of LAMMPS and <a class="reference external" href="http://dft.sandia.gov/Quest">Quest</a>, to run classical MD with quantum forces calculated by a density functional code</li> <li>lammps_spparks: coupling of LAMMPS and <a class="reference external" 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</li> </ul> <p><a class="reference internal" href="Section_start.html#start-5"><span>This section</span></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 class="reference internal" href="Section_python.html"><em>Section_python</em></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 class="reference internal" href="#howto-19"><span>Section_howto 19</span></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 class="docutils" /> </div> <div class="section" id="visualizing-lammps-snapshots"> <span id="howto-11"></span><h2>6.11. Visualizing LAMMPS snapshots<a class="headerlink" href="#visualizing-lammps-snapshots" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="dump.html"><em>dump</em></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 class="reference internal" href="Section_tools.html#xmovie"><span>xmovie</span></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 class="reference internal" href="Section_tools.html"><em>Section_tools</em></a> doc page for details. The first is the <a class="reference internal" href="Section_tools.html#charmm"><span>ch2lmp tool</span></a>, which contains a lammps2pdb Perl script which converts LAMMPS dump files into PDB files. The second is the <a class="reference internal" href="Section_tools.html#arc"><span>lmp2arc tool</span></a> which converts LAMMPS dump files into Accelrys’ Insight MD program files. The third is the <a class="reference internal" href="Section_tools.html#cfg"><span>lmp2cfg tool</span></a> which converts LAMMPS dump files into CFG files which can be read into the <a class="reference external" 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 class="reference external" 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 class="reference external" 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 class="reference external" 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 class="reference external" 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 class="reference internal" href="dump.html"><em>dump</em></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 class="reference external" href="http://www.ks.uiuc.edu/Research/vmd">VMD</a> for visualization. See the <a class="reference internal" href="dump.html"><em>dump</em></a> command for more information on XTC files.</p> <hr class="docutils" /> </div> <div class="section" id="triclinic-non-orthogonal-simulation-boxes"> <span id="howto-12"></span><h2>6.12. Triclinic (non-orthogonal) simulation boxes<a class="headerlink" href="#triclinic-non-orthogonal-simulation-boxes" title="Permalink to this headline">¶</a></h2> <p>By default, LAMMPS uses an orthogonal simulation box to encompass the particles. The <a class="reference internal" href="boundary.html"><em>boundary</em></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 <strong>a</strong> = (xhi-xlo,0,0); <strong>b</strong> = (0,yhi-ylo,0); <strong>c</strong> = (0,0,zhi-zlo). The 6 parameters (xlo,xhi,ylo,yhi,zlo,zhi) are defined at the time the simulation box is created, e.g. by the <a class="reference internal" href="create_box.html"><em>create_box</em></a> or <a class="reference internal" href="read_data.html"><em>read_data</em></a> or <a class="reference internal" href="read_restart.html"><em>read_restart</em></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 class="reference internal" href="thermo_style.html"><em>thermo_style custom</em></a> command.</p> <p>LAMMPS also allows simulations to be performed in triclinic (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 <strong>a</strong> = (xhi-xlo,0,0); <strong>b</strong> = (xy,yhi-ylo,0); <strong>c</strong> = (xz,yz,zhi-zlo). <em>xy,xz,yz</em> 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. In LAMMPS the triclinic simulation box edge vectors <strong>a</strong>, <strong>b</strong>, and <strong>c</strong> cannot be arbitrary vectors. As indicated, <strong>a</strong> must lie on the positive x axis. <strong>b</strong> must lie in the xy plane, with strictly positive y component. <strong>c</strong> may have any orientation with strictly positive z component. The requirement that <strong>a</strong>, <strong>b</strong>, and <strong>c</strong> have strictly positive x, y, and z components, respectively, ensures that <strong>a</strong>, <strong>b</strong>, and <strong>c</strong> form a complete right-handed basis. These restrictions impose no loss of generality, since it is possible to rotate/invert any set of 3 crystal basis vectors so that they conform to the restrictions.</p> <p>For example, assume that the 3 vectors <strong>A</strong>,**B**,**C** are the edge vectors of a general parallelepiped, where there is no restriction on <strong>A</strong>,**B**,**C** other than they form a complete right-handed basis i.e. <strong>A</strong> x <strong>B</strong> . <strong>C</strong> > 0. The equivalent LAMMPS <strong>a</strong>,**b**,**c** are a linear rotation of <strong>A</strong>, <strong>B</strong>, and <strong>C</strong> and can be computed as follows:</p> <img alt="_images/transform.jpg" class="align-center" src="_images/transform.jpg" /> <p>where A = <a href="#id73"><span class="problematic" id="id74">|**A**|</span></a> indicates the scalar length of <strong>A</strong>. The ^ hat symbol indicates the corresponding unit vector. <em>beta</em> and <em>gamma</em> are angles between the vectors described below. Note that by construction, <strong>a</strong>, <strong>b</strong>, and <strong>c</strong> have strictly positive x, y, and z components, respectively. If it should happen that <strong>A</strong>, <strong>B</strong>, and <strong>C</strong> form a left-handed basis, then the above equations are not valid for <strong>c</strong>. In this case, it is necessary to first apply an inversion. This can be achieved by interchanging two basis vectors or by changing the sign of one of them.</p> <p>For consistency, the same rotation/inversion applied to the basis vectors must also be applied to atom positions, velocities, and any other vector quantities. This can be conveniently achieved by first converting to fractional coordinates in the old basis and then converting to distance coordinates in the new basis. The transformation is given by the following equation:</p> <img alt="_images/rotate.jpg" class="align-center" src="_images/rotate.jpg" /> <p>where <em>V</em> is the volume of the box, <strong>X</strong> is the original vector quantity and <strong>x</strong> is the vector in the LAMMPS basis.</p> <p>There is no requirement that a triclinic box be periodic in any dimension, though it typically should be in at least the 2nd dimension of the tilt (y in xy) if you want to enforce a shift in periodic boundary conditions across that boundary. Some commands that work with triclinic boxes, e.g. the <a class="reference internal" href="fix_deform.html"><em>fix deform</em></a> and <a class="reference internal" href="fix_nh.html"><em>fix npt</em></a> commands, require periodicity or non-shrink-wrap boundary conditions in specific dimensions. See the command doc pages for details.</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 class="reference internal" href="create_box.html"><em>create_box</em></a> command is used with a region of style <em>prism</em>, then a triclinic box is setup. See the <a class="reference internal" href="region.html"><em>region</em></a> command for details. If the <a class="reference internal" href="read_data.html"><em>read_data</em></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 class="reference internal" href="read_data.html"><em>read_data</em></a> command for details. Finally, if the <a class="reference internal" href="read_restart.html"><em>read_restart</em></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 class="reference internal" href="fix_nh.html"><em>fix npt</em></a> or <a class="reference internal" href="fix_deform.html"><em>fix deform</em></a> commands. Alternatively, you can use the <a class="reference internal" href="change_box.html"><em>change_box</em></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 class="reference internal" href="thermo_style.html"><em>thermo_style custom</em></a> command.</p> <p>To avoid extremely tilted boxes (which would be computationally inefficient), LAMMPS normally requires that 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). This is required both when the simulation box is created, e.g. via the <a class="reference internal" href="create_box.html"><em>create_box</em></a> or <a class="reference internal" href="read_data.html"><em>read_data</em></a> commands, as well as when the box shape changes dynamically during a simulation, e.g. via the <a class="reference internal" href="fix_deform.html"><em>fix deform</em></a> or <a class="reference internal" href="fix_nh.html"><em>fix npt</em></a> commands.</p> <p>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. If the box tilt exceeds this limit during a dynamics run (e.g. via the <a class="reference internal" href="fix_deform.html"><em>fix deform</em></a> command), then the box is “flipped” to an equivalent shape with a tilt factor within the bounds, so the run can continue. See the <a class="reference internal" href="fix_deform.html"><em>fix deform</em></a> doc page for further details.</p> <p>One exception to this rule is if the 1st dimension in the tilt factor (x for xy) is non-periodic. In that case, the limits on the tilt factor are not enforced, since flipping the box in that dimension does not change the atom positions due to non-periodicity. In this mode, if you tilt the system to extreme angles, the simulation will simply become inefficient, due to the highly skewed simulation box.</p> <p>The limitation on not creating a simulation box with a tilt factor skewing the box more than half the distance of the parallel box length can be overridden via the <a class="reference internal" href="box.html"><em>box</em></a> command. Setting the <em>tilt</em> keyword to <em>large</em> allows any tilt factors to be specified.</p> <p>Box flips that may occur using the <a class="reference internal" href="fix_deform.html"><em>fix deform</em></a> or <a class="reference internal" href="fix_nh.html"><em>fix npt</em></a> commands can be turned off using the <em>flip no</em> option with either of the commands.</p> <p>Note that if a simulation box has a large tilt factor, LAMMPS will run less efficiently, due to the large volume of communication needed to acquire ghost atoms around a processor’s irregular-shaped sub-domain. For extreme values of tilt, LAMMPS may also lose atoms and generate an error.</p> <p>Triclinic crystal structures are often defined using three lattice constants <em>a</em>, <em>b</em>, and <em>c</em>, and three angles <em>alpha</em>, <em>beta</em> and <em>gamma</em>. Note that in this nomenclature, the a, b, and c lattice constants are the scalar lengths of the edge vectors <strong>a</strong>, <strong>b</strong>, and <strong>c</strong> 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> <img alt="_images/box.jpg" class="align-center" src="_images/box.jpg" /> <p>The inverse relationship can be written as follows:</p> <img alt="_images/box_inverse.jpg" class="align-center" src="_images/box_inverse.jpg" /> <p>The values of <em>a</em>, <em>b</em>, <em>c</em> , <em>alpha</em>, <em>beta</em> , and <em>gamma</em> can be printed out or accessed by computes using the <a class="reference internal" href="thermo_style.html"><em>thermo_style custom</em></a> keywords <em>cella</em>, <em>cellb</em>, <em>cellc</em>, <em>cellalpha</em>, <em>cellbeta</em>, <em>cellgamma</em>, respectively.</p> <p>As discussed on the <a class="reference internal" href="dump.html"><em>dump</em></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> <div class="highlight-python"><div class="highlight"><pre>ITEM: BOX BOUNDS xy xz yz xlo_bound xhi_bound xy ylo_bound yhi_bound xz zlo_bound zhi_bound yz </pre></div> </div> <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> <div class="highlight-python"><div class="highlight"><pre><span class="n">xlo_bound</span> <span class="o">=</span> <span class="n">xlo</span> <span class="o">+</span> <span class="n">MIN</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span><span class="n">xy</span><span class="p">,</span><span class="n">xz</span><span class="p">,</span><span class="n">xy</span><span class="o">+</span><span class="n">xz</span><span class="p">)</span> <span class="n">xhi_bound</span> <span class="o">=</span> <span class="n">xhi</span> <span class="o">+</span> <span class="n">MAX</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span><span class="n">xy</span><span class="p">,</span><span class="n">xz</span><span class="p">,</span><span class="n">xy</span><span class="o">+</span><span class="n">xz</span><span class="p">)</span> <span class="n">ylo_bound</span> <span class="o">=</span> <span class="n">ylo</span> <span class="o">+</span> <span class="n">MIN</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span><span class="n">yz</span><span class="p">)</span> <span class="n">yhi_bound</span> <span class="o">=</span> <span class="n">yhi</span> <span class="o">+</span> <span class="n">MAX</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span><span class="n">yz</span><span class="p">)</span> <span class="n">zlo_bound</span> <span class="o">=</span> <span class="n">zlo</span> <span class="n">zhi_bound</span> <span class="o">=</span> <span class="n">zhi</span> </pre></div> </div> <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 class="reference internal" href="lattice.html"><em>lattice</em></a> command can be used with non-orthogonal basis vectors to define a lattice that will tile a triclinic simulation box via the <a class="reference internal" href="create_atoms.html"><em>create_atoms</em></a> command.</p> <p>A second use is to run Parinello-Rahman dyanamics via the <a class="reference internal" href="fix_nh.html"><em>fix npt</em></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 class="reference internal" href="minimize.html"><em>energy minimization</em></a> is the <a class="reference internal" href="fix_box_relax.html"><em>fix box/relax</em></a> command.</p> <p>A third use is to shear a bulk solid to study the response of the material. The <a class="reference internal" href="fix_deform.html"><em>fix deform</em></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 class="docutils" /> </div> <div class="section" id="nemd-simulations"> <span id="howto-13"></span><h2>6.13. NEMD simulations<a class="headerlink" href="#nemd-simulations" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="fix_deform.html"><em>fix deform</em></a> command. The <a class="reference internal" href="fix_nvt_sllod.html"><em>fix nvt/sllod</em></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 class="reference internal" href="compute_temp_deform.html"><em>compute temp/deform</em></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 class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></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 class="reference internal" href="fix_deform.html"><em>fix deform</em></a> can continuously strain a box by an arbitrary amount. As discussed in the <a class="reference internal" href="fix_deform.html"><em>fix deform</em></a> command, when the tilt value reaches a limit, the box is flipped 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 class="reference internal" href="fix_deform.html"><em>fix deform</em></a> should be set to “remap v”, since that is what <a class="reference internal" href="fix_nvt_sllod.html"><em>fix nvt/sllod</em></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 class="reference internal" href="fix_viscosity.html"><em>fix viscosity</em></a> command.</p> <hr class="docutils" /> </div> <div class="section" id="finite-size-spherical-and-aspherical-particles"> <span id="howto-14"></span><h2>6.14. Finite-size spherical and aspherical particles<a class="headerlink" href="#finite-size-spherical-and-aspherical-particles" title="Permalink to this headline">¶</a></h2> <p>Typical MD models treat atoms or particles as point masses. Sometimes it is desirable to have a model with finite-size particles such as spheroids or ellipsoids or generalized aspherical bodies. The difference is that such particles have a moment of inertia, rotational energy, and angular momentum. Rotation is induced by torque coming 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 class="simple"> <li>atom styles</li> <li>pair potentials</li> <li>time integration</li> <li>computes, thermodynamics, and dump output</li> <li>rigid bodies composed of finite-size particles</li> </ul> <p>Example input scripts for these kinds of models are in the body, colloid, dipole, ellipse, line, peri, pour, and tri directories of the <a class="reference internal" href="Section_example.html"><em>examples directory</em></a> in the LAMMPS distribution.</p> <div class="section" id="atom-styles"> <h3>6.14.1. Atom styles<a class="headerlink" href="#atom-styles" title="Permalink to this headline">¶</a></h3> <p>There are several <a class="reference internal" href="atom_style.html"><em>atom styles</em></a> that allow for definition of finite-size particles: sphere, dipole, ellipsoid, line, tri, peri, and body.</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 dipole style does not actually define finite-size particles, but is often used in conjunction with spherical particles, via a command like</p> <div class="highlight-python"><div class="highlight"><pre>atom_style hybrid sphere dipole </pre></div> </div> <p>This is because when dipoles interact with each other, they induce torques, and a particle must be finite-size (i.e. have a moment of inertia) in order to respond and rotate. See the <a class="reference internal" href="atom_style.html"><em>atom_style dipole</em></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>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 line style defines line segment particles with two end points and a mass (or density). They can be used in 2d simulations, and they can be joined together to form rigid bodies which represent arbitrary polygons.</p> <p>The tri style defines triangular particles with three corner points and a mass (or density). They can be used in 3d simulations, and they can be joined together to form rigid bodies which represent arbitrary particles with a triangulated surface.</p> <p>The peri style is used with <a class="reference internal" href="pair_peri.html"><em>Peridynamic models</em></a> and defines particles as having a volume, that is used internally in the <a class="reference internal" href="pair_peri.html"><em>pair_style peri</em></a> potentials.</p> <p>The body style allows for definition of particles which can represent complex entities, such as surface meshes of discrete points, collections of sub-particles, deformable objects, etc. The body style is discussed in more detail on the <a class="reference internal" href="body.html"><em>body</em></a> doc page.</p> <p>Note that if one of these atom styles is used (or multiple styles via the <a class="reference internal" href="atom_style.html"><em>atom_style hybrid</em></a> command), not all particles in the system are required to be finite-size or aspherical.</p> <p>For example, in the ellipsoid style, 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. In the line or tri style, if the lineflag or triflag is specified as 0, then it will be a point particle.</p> <p>Some of the pair styles used to compute pairwise interactions between finite-size particles also compute the correct interaction with point particles as well, e.g. the interaction between a point particle and a finite-size particle or between two point particles. If necessary, <a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid</em></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 class="reference internal" href="dimension.html"><em>2d simulations</em></a>, atom styles sphere and ellipsoid still use 3d particles, rather than as circular disks or ellipses. This means they have the same moment of inertia as the 3d object. When temperature is computed, the correct degrees of freedom are used for rotation in a 2d versus 3d system.</p> </div> <div class="section" id="pair-potentials"> <h3>6.14.2. Pair potentials<a class="headerlink" href="#pair-potentials" title="Permalink to this headline">¶</a></h3> <p>When a system with finite-size particles is defined, the particles will only rotate and experience torque if the force field computes such interactions. These are the various <a class="reference internal" href="pair_style.html"><em>pair styles</em></a> that generate torque:</p> <ul class="simple"> <li><a class="reference internal" href="pair_gran.html"><em>pair_style gran/history</em></a></li> <li><a class="reference internal" href="pair_gran.html"><em>pair_style gran/hertzian</em></a></li> <li><a class="reference internal" href="pair_gran.html"><em>pair_style gran/no_history</em></a></li> <li><a class="reference internal" href="pair_dipole.html"><em>pair_style dipole/cut</em></a></li> <li><a class="reference internal" href="pair_gayberne.html"><em>pair_style gayberne</em></a></li> <li><a class="reference internal" href="pair_resquared.html"><em>pair_style resquared</em></a></li> <li><a class="reference internal" href="pair_brownian.html"><em>pair_style brownian</em></a></li> <li><a class="reference internal" href="pair_lubricate.html"><em>pair_style lubricate</em></a></li> <li><a class="reference internal" href="pair_line_lj.html"><em>pair_style line/lj</em></a></li> <li><a class="reference internal" href="pair_tri_lj.html"><em>pair_style tri/lj</em></a></li> <li><a class="reference internal" href="pair_body.html"><em>pair_style body</em></a></li> </ul> <p>The granular pair styles are used with spherical particles. The dipole pair style is used with the dipole atom style, which could be applied to spherical or ellipsoidal particles. The GayBerne and REsquared potentials require ellipsoidal particles, though they will also work if the 3 shape parameters are the same (a sphere). The Brownian and lubrication potentials are used with spherical particles. The line, tri, and body potentials are used with line segment, triangular, and body particles respectively.</p> </div> <div class="section" id="time-integration"> <h3>6.14.3. Time integration<a class="headerlink" href="#time-integration" title="Permalink to this headline">¶</a></h3> <p>There are several fixes that perform time integration on finite-size spherical particles, meaning the integrators update the rotational orientation and angular velocity or angular momentum of the particles:</p> <ul class="simple"> <li><a class="reference internal" href="fix_nve_sphere.html"><em>fix nve/sphere</em></a></li> <li><a class="reference internal" href="fix_nvt_sphere.html"><em>fix nvt/sphere</em></a></li> <li><a class="reference internal" href="fix_npt_sphere.html"><em>fix npt/sphere</em></a></li> </ul> <p>Likewise, there are 3 fixes that perform time integration on ellipsoidal particles:</p> <ul class="simple"> <li><a class="reference internal" href="fix_nve_asphere.html"><em>fix nve/asphere</em></a></li> <li><a class="reference internal" href="fix_nvt_asphere.html"><em>fix nvt/asphere</em></a></li> <li><a class="reference internal" href="fix_npt_asphere.html"><em>fix npt/asphere</em></a></li> </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. The <a class="reference external" href="fix_langevin">fix langevin</a> command can also be used with its <em>omgea</em> or <em>angmom</em> options to thermostat the rotational degrees of freedom for spherical or ellipsoidal particles. Other thermostatting fixes only operate on the translational kinetic energy of finite-size particles.</p> <p>These fixes perform constant NVE time integration on line segment, triangular, and body particles:</p> <ul class="simple"> <li><a class="reference internal" href="fix_nve_line.html"><em>fix nve/line</em></a></li> <li><a class="reference internal" href="fix_nve_tri.html"><em>fix nve/tri</em></a></li> <li><a class="reference internal" href="fix_nve_body.html"><em>fix nve/body</em></a></li> </ul> <p>Note that for mixtures of point and finite-size particles, these integration fixes can only be used with <a class="reference internal" href="group.html"><em>groups</em></a> which contain finite-size particles.</p> </div> <div class="section" id="computes-thermodynamics-and-dump-output"> <h3>6.14.4. Computes, thermodynamics, and dump output<a class="headerlink" href="#computes-thermodynamics-and-dump-output" title="Permalink to this headline">¶</a></h3> <p>There are several computes that calculate the temperature or rotational energy of spherical or ellipsoidal particles:</p> <ul class="simple"> <li><a class="reference internal" href="compute_temp_sphere.html"><em>compute temp/sphere</em></a></li> <li><a class="reference internal" href="compute_temp_asphere.html"><em>compute temp/asphere</em></a></li> <li><a class="reference internal" href="compute_erotate_sphere.html"><em>compute erotate/sphere</em></a></li> <li><a class="reference internal" href="compute_erotate_asphere.html"><em>compute erotate/asphere</em></a></li> </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 finite-size particles), then the compute can be defined and the <a class="reference internal" href="thermo_modify.html"><em>thermo_modify</em></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 class="reference internal" href="thermo_style.html"><em>thermo_style</em></a> command for details.</p> <p>These commands can be used to output various attributes of finite-size particles:</p> <ul class="simple"> <li><a class="reference internal" href="dump.html"><em>dump custom</em></a></li> <li><a class="reference internal" href="compute_property_atom.html"><em>compute property/atom</em></a></li> <li><a class="reference internal" href="dump.html"><em>dump local</em></a></li> <li><a class="reference internal" href="compute_body_local.html"><em>compute body/local</em></a></li> </ul> <p>Attributes include the dipole moment, the angular velocity, the angular momentum, the quaternion, the torque, the end-point and corner-point coordinates (for line and tri particles), and sub-particle attributes of body particles.</p> </div> <div class="section" id="rigid-bodies-composed-of-finite-size-particles"> <h3>6.14.5. Rigid bodies composed of finite-size particles<a class="headerlink" href="#rigid-bodies-composed-of-finite-size-particles" title="Permalink to this headline">¶</a></h3> <p>The <a class="reference internal" href="fix_rigid.html"><em>fix rigid</em></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 finite-size particles (spheres or ellipsoids or line segments or triangles), 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 spheroids, even if the two particles have the same mass. Finite-size 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 class="reference internal" href="fix_shake.html"><em>fix shake</em></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> <p>Also note that body particles cannot be modeled with the <a class="reference internal" href="fix_rigid.html"><em>fix rigid</em></a> command. Body particles are treated by LAMMPS as single particles, though they can store internal state, such as a list of sub-particles. Individual body partices are typically treated as rigid bodies, and their motion integrated with a command like <a class="reference internal" href="fix_nve_body.html"><em>fix nve/body</em></a>. Interactions between pairs of body particles are computed via a command like <a class="reference internal" href="pair_body.html"><em>pair_style body</em></a>.</p> <hr class="docutils" /> </div> </div> <div class="section" id="output-from-lammps-thermo-dumps-computes-fixes-variables"> <span id="howto-15"></span><h2>6.15. Output from LAMMPS (thermo, dumps, computes, fixes, variables)<a class="headerlink" href="#output-from-lammps-thermo-dumps-computes-fixes-variables" title="Permalink to this headline">¶</a></h2> <p>There are four basic kinds of LAMMPS output:</p> <ul class="simple"> <li><a class="reference internal" href="thermo_style.html"><em>Thermodynamic output</em></a>, which is a list of quantities printed every few timesteps to the screen and logfile.</li> <li><a class="reference internal" href="dump.html"><em>Dump files</em></a>, which contain snapshots of atoms and various per-atom values and are written at a specified frequency.</li> <li>Certain fixes can output user-specified quantities to files: <a class="reference internal" href="fix_ave_time.html"><em>fix ave/time</em></a> for time averaging, <a class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></a> for spatial averaging, and <a class="reference internal" href="fix_print.html"><em>fix print</em></a> for single-line output of <a class="reference internal" href="variable.html"><em>variables</em></a>. Fix print can also output to the screen.</li> <li><a class="reference internal" href="restart.html"><em>Restart files</em></a>.</li> </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 class="reference internal" href="dump.html"><em>dump</em></a> and <a class="reference internal" href="fix.html"><em>fix</em></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 class="reference internal" href="Section_modify.html"><em>add their own computes and fixes to LAMMPS</em></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 class="simple"> <li><a class="reference internal" href="#global"><span>Global/per-atom/local data</span></a></li> <li><a class="reference internal" href="#scalar"><span>Scalar/vector/array data</span></a></li> <li><a class="reference internal" href="#thermo"><span>Thermodynamic output</span></a></li> <li><a class="reference internal" href="#dump"><span>Dump file output</span></a></li> <li><span class="xref std std-ref">Fixes that write output files</span></li> <li><a class="reference internal" href="#computeoutput"><span>Computes that process output quantities</span></a></li> <li><span class="xref std std-ref">Fixes that process output quantities</span></li> <li><a class="reference internal" href="#compute"><span>Computes that generate values to output</span></a></li> <li><a class="reference internal" href="#fix"><span>Fixes that generate values to output</span></a></li> <li><a class="reference internal" href="#variable"><span>Variables that generate values to output</span></a></li> <li><a class="reference internal" href="#table"><span>Summary table of output options and data flow between commands</span></a></li> </ul> <div class="section" id="global-per-atom-local-data"> <span id="global"></span><h3>6.15.1. Global/per-atom/local data<a class="headerlink" href="#global-per-atom-local-data" title="Permalink to this headline">¶</a></h3> <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> </div> <div class="section" id="scalar-vector-array-data"> <span id="scalar"></span><h3>6.15.2. Scalar/vector/array data<a class="headerlink" href="#scalar-vector-array-data" title="Permalink to this headline">¶</a></h3> <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 “<a href="#id75"><span class="problematic" id="id76">c_</span></a>” would be replaced by “<a href="#id77"><span class="problematic" id="id78">f_</span></a>” for a fix, or “<a href="#id79"><span class="problematic" id="id80">v_</span></a>” for a variable:</p> <table border="1" class="docutils"> <colgroup> <col width="21%" /> <col width="79%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td>c_ID</td> <td>entire scalar, vector, or array</td> </tr> <tr class="row-even"><td>c_ID[I]</td> <td>one element of vector, one column of array</td> </tr> <tr class="row-odd"><td>c_ID[I][J]</td> <td>one element of array</td> </tr> </tbody> </table> <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> </div> <div class="section" id="thermodynamic-output"> <span id="thermo"></span><h3>6.15.3. Thermodynamic output<a class="headerlink" href="#thermodynamic-output" title="Permalink to this headline">¶</a></h3> <p>The frequency and format of thermodynamic output is set by the <a class="reference internal" href="thermo.html"><em>thermo</em></a>, <a class="reference internal" href="thermo_style.html"><em>thermo_style</em></a>, and <a class="reference internal" href="thermo_modify.html"><em>thermo_modify</em></a> commands. The <a class="reference internal" href="thermo_style.html"><em>thermo_style</em></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 class="reference internal" href="compute.html"><em>compute</em></a> or <a class="reference internal" href="fix.html"><em>fix</em></a> or <a class="reference internal" href="variable.html"><em>variable</em></a> provides the value to be output. In each case, the compute, fix, or variable must generate global values for input to the <a class="reference internal" href="dump.html"><em>thermo_style custom</em></a> command.</p> <p>Note that thermodynamic output values can be “extensive” or “intensive”. The former scale with the number of atoms in the system (e.g. total energy), the latter do not (e.g. temperature). The setting for <a class="reference internal" href="thermo_modify.html"><em>thermo_modify norm</em></a> determines whether extensive quantities are normalized or not. Computes and fixes produce either extensive or intensive values; see their individual doc pages for details. <a class="reference internal" href="variable.html"><em>Equal-style variables</em></a> produce only intensive values; you can include a division by “natoms” in the formula if desired, to make an extensive calculation produce an intensive result.</p> </div> <div class="section" id="dump-file-output"> <span id="dump"></span><h3>6.15.4. Dump file output<a class="headerlink" href="#dump-file-output" title="Permalink to this headline">¶</a></h3> <p>Dump file output is specified by the <a class="reference internal" href="dump.html"><em>dump</em></a> and <a class="reference internal" href="dump_modify.html"><em>dump_modify</em></a> commands. There are several pre-defined formats (dump atom, dump xtc, etc).</p> <p>There is also a <a class="reference internal" href="dump.html"><em>dump custom</em></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 class="reference internal" href="compute.html"><em>compute</em></a> or <a class="reference internal" href="fix.html"><em>fix</em></a> or <a class="reference internal" href="variable.html"><em>variable</em></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 class="reference internal" href="dump.html"><em>dump custom</em></a> command.</p> <p>There is also a <a class="reference internal" href="dump.html"><em>dump local</em></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 class="reference internal" href="compute.html"><em>compute</em></a> or <a class="reference internal" href="fix.html"><em>fix</em></a> or <a class="reference internal" href="variable.html"><em>variable</em></a> provides the values to be output. In each case, the compute or fix must generate local values for input to the <a class="reference internal" href="dump.html"><em>dump local</em></a> command.</p> </div> <div class="section" id="fixes-that-write-output-files"> <span id="fixoutput"></span><h3>6.15.5. Fixes that write output files<a class="headerlink" href="#fixes-that-write-output-files" title="Permalink to this headline">¶</a></h3> <p>Several fixes take various quantities as input and can write output files: <a class="reference internal" href="fix_ave_time.html"><em>fix ave/time</em></a>, <a class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></a>, <a class="reference internal" href="fix_ave_histo.html"><em>fix ave/histo</em></a>, <a class="reference internal" href="fix_ave_correlate.html"><em>fix ave/correlate</em></a>, and <a class="reference internal" href="fix_print.html"><em>fix print</em></a>.</p> <p>The <a class="reference internal" href="fix_ave_time.html"><em>fix ave/time</em></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 class="reference internal" href="compute.html"><em>compute</em></a> values, global <a class="reference internal" href="fix.html"><em>fix</em></a> values, or <a class="reference internal" href="variable.html"><em>variables</em></a> of any style except the atom style which produces per-atom values. Since a variable can refer to keywords used by the <a class="reference internal" href="thermo_style.html"><em>thermo_style custom</em></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 class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></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 class="reference internal" href="compute.html"><em>compute</em></a>, by a <a class="reference internal" href="fix.html"><em>fix</em></a>, or by an atom-style <a class="reference internal" href="variable.html"><em>variable</em></a>. The spatial-averaged output of this fix can also be used as input to other output commands.</p> <p>The <a class="reference internal" href="fix_ave_histo.html"><em>fix ave/histo</em></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 class="reference internal" href="fix_ave_correlate.html"><em>fix ave/correlate</em></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 class="reference internal" href="fix_print.html"><em>fix print</em></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 class="reference internal" href="variable.html"><em>variable</em></a> values for any style variable except the atom style). As explained above, variables themselves can contain references to global values generated by <a class="reference internal" href="thermo_style.html"><em>thermodynamic keywords</em></a>, <a class="reference internal" href="compute.html"><em>computes</em></a>, <a class="reference internal" href="fix.html"><em>fixes</em></a>, or other <a class="reference internal" href="variable.html"><em>variables</em></a>, or to per-atom values for a specific atom. Thus the <a class="reference internal" href="fix_print.html"><em>fix print</em></a> command is a means to output a wide variety of quantities separate from normal thermodynamic or dump file output.</p> </div> <div class="section" id="computes-that-process-output-quantities"> <span id="computeoutput"></span><h3>6.15.6. Computes that process output quantities<a class="headerlink" href="#computes-that-process-output-quantities" title="Permalink to this headline">¶</a></h3> <p>The <a class="reference internal" href="compute_reduce.html"><em>compute reduce</em></a> and <a class="reference internal" href="compute_reduce.html"><em>compute reduce/region</em></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 class="reference internal" href="compute_slice.html"><em>compute slice</em></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 class="reference internal" href="compute_property_atom.html"><em>compute property/atom</em></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 class="reference internal" href="dump.html"><em>dump custom</em></a> command.</p> <p>The <a class="reference internal" href="compute_property_local.html"><em>compute property/local</em></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> </div> <div class="section" id="fixes-that-process-output-quantities"> <span id="id3"></span><h3>6.15.7. Fixes that process output quantities<a class="headerlink" href="#fixes-that-process-output-quantities" title="Permalink to this headline">¶</a></h3> <p>The <a class="reference internal" href="fix_vector.html"><em>fix vector</em></a> command can create global vectors as output from global scalars as input, accumulating them one element at a time.</p> <p>The <a class="reference internal" href="fix_ave_atom.html"><em>fix ave/atom</em></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 class="reference internal" href="compute.html"><em>compute</em></a>, by a <a class="reference internal" href="fix.html"><em>fix</em></a>, or by an atom-style <a class="reference internal" href="variable.html"><em>variable</em></a>. The time-averaged per-atom output of this fix can be used as input to other output commands.</p> <p>The <a class="reference internal" href="fix_store_state.html"><em>fix store/state</em></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 class="reference internal" href="dump.html"><em>dump custom</em></a> command, including per-atom quantities calculated by a <a class="reference internal" href="compute.html"><em>compute</em></a>, by a <a class="reference internal" href="fix.html"><em>fix</em></a>, or by an atom-style <a class="reference internal" href="variable.html"><em>variable</em></a>. The output of this fix can be used as input to other output commands.</p> </div> <div class="section" id="computes-that-generate-values-to-output"> <span id="compute"></span><h3>6.15.8. Computes that generate values to output<a class="headerlink" href="#computes-that-generate-values-to-output" title="Permalink to this headline">¶</a></h3> <p>Every <a class="reference internal" href="compute.html"><em>compute</em></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> </div> <div class="section" id="fixes-that-generate-values-to-output"> <span id="fix"></span><h3>6.15.9. Fixes that generate values to output<a class="headerlink" href="#fixes-that-generate-values-to-output" title="Permalink to this headline">¶</a></h3> <p>Some <a class="reference internal" href="fix.html"><em>fixes</em></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> </div> <div class="section" id="variables-that-generate-values-to-output"> <span id="variable"></span><h3>6.15.10. Variables that generate values to output<a class="headerlink" href="#variables-that-generate-values-to-output" title="Permalink to this headline">¶</a></h3> <p>Every <a class="reference internal" href="variable.html"><em>variables</em></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> </div> <div class="section" id="summary-table-of-output-options-and-data-flow-between-commands"> <span id="table"></span><h3>6.15.11. Summary table of output options and data flow between commands<a class="headerlink" href="#summary-table-of-output-options-and-data-flow-between-commands" title="Permalink to this headline">¶</a></h3> <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> <table border="1" class="docutils"> <colgroup> <col width="39%" /> <col width="30%" /> <col width="30%" /> <col width="1%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td>Command</td> <td>Input</td> <td>Output</td> <td> </td> </tr> <tr class="row-even"><td><a class="reference internal" href="thermo_style.html"><em>thermo_style custom</em></a></td> <td>global scalars</td> <td>screen, log file</td> <td> </td> </tr> <tr class="row-odd"><td><a class="reference internal" href="dump.html"><em>dump custom</em></a></td> <td>per-atom vectors</td> <td>dump file</td> <td> </td> </tr> <tr class="row-even"><td><a class="reference internal" href="dump.html"><em>dump local</em></a></td> <td>local vectors</td> <td>dump file</td> <td> </td> </tr> <tr class="row-odd"><td><a class="reference internal" href="fix_print.html"><em>fix print</em></a></td> <td>global scalar from variable</td> <td>screen, file</td> <td> </td> </tr> <tr class="row-even"><td><a class="reference internal" href="print.html"><em>print</em></a></td> <td>global scalar from variable</td> <td>screen</td> <td> </td> </tr> <tr class="row-odd"><td><a class="reference internal" href="compute.html"><em>computes</em></a></td> <td>N/A</td> <td>global/per-atom/local scalar/vector/array</td> <td> </td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix.html"><em>fixes</em></a></td> <td>N/A</td> <td>global/per-atom/local scalar/vector/array</td> <td> </td> </tr> <tr class="row-odd"><td><a class="reference internal" href="variable.html"><em>variables</em></a></td> <td>global scalars, per-atom vectors</td> <td>global scalar, per-atom vector</td> <td> </td> </tr> <tr class="row-even"><td><a class="reference internal" href="compute_reduce.html"><em>compute reduce</em></a></td> <td>per-atom/local vectors</td> <td>global scalar/vector</td> <td> </td> </tr> <tr class="row-odd"><td><a class="reference internal" href="compute_slice.html"><em>compute slice</em></a></td> <td>global vectors/arrays</td> <td>global vector/array</td> <td> </td> </tr> <tr class="row-even"><td><a class="reference internal" href="compute_property_atom.html"><em>compute property/atom</em></a></td> <td>per-atom vectors</td> <td>per-atom vector/array</td> <td> </td> </tr> <tr class="row-odd"><td><a class="reference internal" href="compute_property_local.html"><em>compute property/local</em></a></td> <td>local vectors</td> <td>local vector/array</td> <td> </td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix_vector.html"><em>fix vector</em></a></td> <td>global scalars</td> <td>global vector</td> <td> </td> </tr> <tr class="row-odd"><td><a class="reference internal" href="fix_ave_atom.html"><em>fix ave/atom</em></a></td> <td>per-atom vectors</td> <td>per-atom vector/array</td> <td> </td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix_ave_time.html"><em>fix ave/time</em></a></td> <td>global scalars/vectors</td> <td>global scalar/vector/array, file</td> <td> </td> </tr> <tr class="row-odd"><td><a class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></a></td> <td>per-atom vectors</td> <td>global array, file</td> <td> </td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix_ave_histo.html"><em>fix ave/histo</em></a></td> <td>global/per-atom/local scalars and vectors</td> <td>global array, file</td> <td> </td> </tr> <tr class="row-odd"><td><a class="reference internal" href="fix_ave_correlate.html"><em>fix ave/correlate</em></a></td> <td>global scalars</td> <td>global array, file</td> <td> </td> </tr> <tr class="row-even"><td><a class="reference internal" href="fix_store_state.html"><em>fix store/state</em></a></td> <td>per-atom vectors</td> <td>per-atom vector/array</td> <td> </td> </tr> <tr class="row-odd"><td> </td> <td> </td> <td> </td> <td> </td> </tr> </tbody> </table> <hr class="docutils" /> </div> </div> <div class="section" id="thermostatting-barostatting-and-computing-temperature"> <span id="howto-16"></span><h2>6.16. Thermostatting, barostatting, and computing temperature<a class="headerlink" href="#thermostatting-barostatting-and-computing-temperature" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="compute.html"><em>compute commands</em></a> calculate temperature, and the <a class="reference internal" href="compute_pressure.html"><em>compute pressure</em></a> command calculates pressure.</p> <ul class="simple"> <li><a class="reference internal" href="compute_temp.html"><em>compute temp</em></a></li> <li><a class="reference internal" href="compute_temp_sphere.html"><em>compute temp/sphere</em></a></li> <li><a class="reference internal" href="compute_temp_asphere.html"><em>compute temp/asphere</em></a></li> <li><a class="reference internal" href="compute_temp_com.html"><em>compute temp/com</em></a></li> <li><a class="reference internal" href="compute_temp_deform.html"><em>compute temp/deform</em></a></li> <li><a class="reference internal" href="compute_temp_partial.html"><em>compute temp/partial</em></a></li> <li><a class="reference internal" href="compute_temp_profile.html"><em>compute temp/profile</em></a></li> <li><a class="reference internal" href="compute_temp_ramp.html"><em>compute temp/ramp</em></a></li> <li><a class="reference internal" href="compute_temp_region.html"><em>compute temp/region</em></a></li> </ul> <p>All but the first 3 calculate velocity biases directly (e.g. advection velocities) that are removed when computing the thermal temperature. <a class="reference internal" href="compute_temp_sphere.html"><em>Compute temp/sphere</em></a> and <a class="reference internal" href="compute_temp_asphere.html"><em>compute temp/asphere</em></a> compute kinetic energy for finite-size particles that includes rotational degrees of freedom. They both allow for velocity biases indirectly, via an optional extra argument, another temperature compute that subtracts a velocity bias. This allows the translational velocity of spherical or aspherical particles to be adjusted in prescribed ways.</p> <p>Thermostatting in LAMMPS is performed by <a class="reference internal" href="fix.html"><em>fixes</em></a>, or in one case by a pair style. Several thermostatting fixes are available: Nose-Hoover (nvt), Berendsen, CSVR, Langevin, and direct rescaling (temp/rescale). Dissipative particle dynamics (DPD) thermostatting can be invoked via the <em>dpd/tstat</em> pair style:</p> <ul class="simple"> <li><a class="reference internal" href="fix_nh.html"><em>fix nvt</em></a></li> <li><a class="reference internal" href="fix_nvt_sphere.html"><em>fix nvt/sphere</em></a></li> <li><a class="reference internal" href="fix_nvt_asphere.html"><em>fix nvt/asphere</em></a></li> <li><a class="reference internal" href="fix_nvt_sllod.html"><em>fix nvt/sllod</em></a></li> <li><a class="reference internal" href="fix_temp_berendsen.html"><em>fix temp/berendsen</em></a></li> <li><a class="reference internal" href="fix_temp_csvr.html"><em>fix temp/csvr</em></a></li> <li><a class="reference internal" href="fix_langevin.html"><em>fix langevin</em></a></li> <li><a class="reference internal" href="fix_temp_rescale.html"><em>fix temp/rescale</em></a></li> <li><a class="reference internal" href="pair_dpd.html"><em>pair_style dpd/tstat</em></a></li> </ul> <p><a class="reference internal" href="fix_nh.html"><em>Fix nvt</em></a> only thermostats the translational velocity of particles. <a class="reference internal" href="fix_nvt_sllod.html"><em>Fix nvt/sllod</em></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 class="reference internal" href="#howto-13"><span>NEMD simulations</span></a> section of this page for further details. <a class="reference internal" href="fix_nvt_sphere.html"><em>Fix nvt/sphere</em></a> and <a class="reference internal" href="fix_nvt_asphere.html"><em>fix nvt/asphere</em></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 class="reference internal" href="fix_langevin.html"><em>fix langevin</em></a>.</p> <p>Any of the thermostatting fixes can use temperature computes that remove bias which has two effects. First, the current calculated temperature, which is compared to the requested target temperature, is caluclated with the velocity bias removed. Second, the thermostat adjusts only the thermal temperature component of the particle’s velocities, which are the velocities with the bias removed. The removed bias is then added back to the adjusted velocities. See the doc pages for the individual fixes and for the <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></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 class="reference internal" href="compute_temp_partial.html"><em>compute temp/partial</em></a>. Of you could thermostat only the thermal temperature of a streaming flow of particles without affecting the streaming velocity, by using <a class="reference internal" href="compute_temp_profile.html"><em>compute temp/profile</em></a>.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">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> </div> <ul class="simple"> <li><a class="reference internal" href="fix_nve.html"><em>fix nve</em></a></li> <li><a class="reference internal" href="fix_nve_sphere.html"><em>fix nve/sphere</em></a></li> <li><a class="reference internal" href="fix_nve_asphere.html"><em>fix nve/asphere</em></a></li> </ul> <p>Barostatting in LAMMPS is also performed by <a class="reference internal" href="fix.html"><em>fixes</em></a>. Two barosttating methods are currently available: Nose-Hoover (npt and nph) and Berendsen:</p> <ul class="simple"> <li><a class="reference internal" href="fix_nh.html"><em>fix npt</em></a></li> <li><a class="reference internal" href="fix_npt_sphere.html"><em>fix npt/sphere</em></a></li> <li><a class="reference internal" href="fix_npt_asphere.html"><em>fix npt/asphere</em></a></li> <li><a class="reference internal" href="fix_nh.html"><em>fix nph</em></a></li> <li><a class="reference internal" href="fix_press_berendsen.html"><em>fix press/berendsen</em></a></li> </ul> <p>The <a class="reference internal" href="fix_nh.html"><em>fix npt</em></a> commands include a Nose-Hoover thermostat and barostat. <a class="reference internal" href="fix_nh.html"><em>Fix nph</em></a> is just a Nose/Hoover barostat; it does no thermostatting. Both <a class="reference internal" href="fix_nh.html"><em>fix nph</em></a> and <a class="reference internal" href="fix_press_berendsen.html"><em>fix press/bernendsen</em></a> can be used in conjunction with any of the thermostatting fixes.</p> <p>As with the thermostats, <a class="reference internal" href="fix_nh.html"><em>fix npt</em></a> and <a class="reference internal" href="fix_nh.html"><em>fix nph</em></a> only use translational motion of the particles in computing T and P and performing thermo/barostatting. <a class="reference internal" href="fix_npt_sphere.html"><em>Fix npt/sphere</em></a> and <a class="reference internal" href="fix_npt_asphere.html"><em>fix npt/asphere</em></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 class="reference internal" href="compute_pressure.html"><em>compute pressure</em></a> compute to calculate a current pressure. By default, this compute is created with a simple <a class="reference internal" href="compute_temp.html"><em>compute temp</em></a> (see the last argument of the <a class="reference internal" href="compute_pressure.html"><em>compute pressure</em></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 class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> command for instructions on how to assign a temperature or pressure compute to a barostatting fix.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">As with the thermostats, the Nose/Hoover methods (<a class="reference internal" href="fix_nh.html"><em>fix npt</em></a> and <a class="reference internal" href="fix_nh.html"><em>fix nph</em></a>) perform time integration. <a class="reference internal" href="fix_press_berendsen.html"><em>Fix press/berendsen</em></a> does NOT, so it should be used with one of the constant NVE fixes or with one of the NVT fixes.</p> </div> <p>Finally, thermodynamic output, which can be setup via the <a class="reference internal" href="thermo_style.html"><em>thermo_style</em></a> command, often includes temperature and pressure values. As explained on the doc page for the <a class="reference internal" href="thermo_style.html"><em>thermo_style</em></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 class="reference internal" href="thermo_style.html"><em>thermo_style custom</em></a> command. Or you can use the <a class="reference internal" href="thermo_modify.html"><em>thermo_modify</em></a> command to re-define what temperature or pressure compute is used for default thermodynamic output.</p> <hr class="docutils" /> </div> <div class="section" id="walls"> <span id="howto-17"></span><h2>6.17. Walls<a class="headerlink" href="#walls" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="lattice.html"><em>lattice</em></a> and <a class="reference internal" href="create_atoms.html"><em>create_atoms</em></a> commands, or read in via the <a class="reference internal" href="read_data.html"><em>read_data</em></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 class="reference internal" href="fix_nve.html"><em>fix nve</em></a> or <a class="reference internal" href="fix_nh.html"><em>fix nvt</em></a> is not used with the group that contains wall particles, their positions and velocities will not be updated.</p> <ul class="simple"> <li><a class="reference internal" href="fix_aveforce.html"><em>fix aveforce</em></a> - set force on particles to average value, so they move together</li> <li><a class="reference internal" href="fix_setforce.html"><em>fix setforce</em></a> - set force on particles to a value, e.g. 0.0</li> <li><a class="reference internal" href="fix_freeze.html"><em>fix freeze</em></a> - freeze particles for use as granular walls</li> <li><a class="reference internal" href="fix_nve_noforce.html"><em>fix nve/noforce</em></a> - advect particles by their velocity, but without force</li> <li><a class="reference internal" href="fix_move.html"><em>fix move</em></a> - prescribe motion of particles by a linear velocity, oscillation, rotation, variable</li> </ul> <p>The <a class="reference internal" href="fix_move.html"><em>fix move</em></a> command offers the most generality, since the motion of individual particles can be specified with <a class="reference internal" href="variable.html"><em>variable</em></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 class="reference internal" href="neigh_modify.html"><em>neigh_modify exclude</em></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 class="reference internal" href="bond_style.html"><em>bond</em></a>. The bonded particles do interact with other mobile particles.</p> <p>Idealized walls can be specified via several fix commands. <a class="reference internal" href="fix_wall_gran.html"><em>Fix wall/gran</em></a> creates frictional walls for use with granular particles; all the other commands create smooth walls.</p> <ul class="simple"> <li><a class="reference internal" href="fix_wall_reflect.html"><em>fix wall/reflect</em></a> - reflective flat walls</li> <li><a class="reference internal" href="fix_wall.html"><em>fix wall/lj93</em></a> - flat walls, with Lennard-Jones 9/3 potential</li> <li><a class="reference internal" href="fix_wall.html"><em>fix wall/lj126</em></a> - flat walls, with Lennard-Jones 12/6 potential</li> <li><a class="reference internal" href="fix_wall.html"><em>fix wall/colloid</em></a> - flat walls, with <a class="reference internal" href="pair_colloid.html"><em>pair_style colloid</em></a> potential</li> <li><a class="reference internal" href="fix_wall.html"><em>fix wall/harmonic</em></a> - flat walls, with repulsive harmonic spring potential</li> <li><a class="reference internal" href="fix_wall_region.html"><em>fix wall/region</em></a> - use region surface as wall</li> <li><a class="reference internal" href="fix_wall_gran.html"><em>fix wall/gran</em></a> - flat or curved walls with <a class="reference internal" href="pair_gran.html"><em>pair_style granular</em></a> potential</li> </ul> <p>The <em>lj93</em>, <em>lj126</em>, <em>colloid</em>, and <em>harmonic</em> styles all allow the flat walls to move with a constant velocity, or oscillate in time. The <a class="reference internal" href="fix_wall_region.html"><em>fix wall/region</em></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 class="reference internal" href="region.html"><em>Regions</em></a> can also specify a volume “interior” or “exterior” to the specified primitive shape or <em>union</em> or <em>intersection</em>. <a class="reference internal" href="region.html"><em>Regions</em></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 class="reference internal" href="fix_wall_gran.html"><em>fix wall/gran</em></a> command. At some point we plan to allow regoin surfaces to be used as frictional walls, as well as triangulated surfaces.</p> <hr class="docutils" /> </div> <div class="section" id="elastic-constants"> <span id="howto-18"></span><h2>6.18. Elastic constants<a class="headerlink" href="#elastic-constants" title="Permalink to this headline">¶</a></h2> <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 simulation box in one of the six directions using the <a class="reference internal" href="change_box.html"><em>change_box</em></a> command 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 class="reference internal" href="Section_example.html"><em>this section</em></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 class="reference internal" href="#shinoda"><span>(Shinoda)</span></a></p> <hr class="docutils" /> </div> <div class="section" id="library-interface-to-lammps"> <span id="howto-19"></span><h2>6.19. Library interface to LAMMPS<a class="headerlink" href="#library-interface-to-lammps" title="Permalink to this headline">¶</a></h2> <p>As described in <a class="reference internal" href="Section_start.html#start-5"><span>Section_start 5</span></a>, LAMMPS can be built as a library, so that it can be called by another code, used in a <a class="reference internal" href="#howto-10"><span>coupled manner</span></a> with other codes, or driven through a <a class="reference internal" href="Section_python.html"><em>Python interface</em></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 5 basic functions:</p> <div class="highlight-python"><div class="highlight"><pre>void lammps_open(int, char **, MPI_Comm, void **) void lammps_close(void *) int lammps_version(void *) void lammps_file(void *, char *) char *lammps_command(void *, char *) </pre></div> </div> <p>The lammps_open() function is used to initialize LAMMPS, passing in a list of strings as if they were <a class="reference internal" href="Section_start.html#start-7"><span>command-line arguments</span></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_version() function can be used to determined the specific version of the underlying LAMMPS code. This is particularly useful when loading LAMMPS as a shared library via dlopen(). The code using the library interface can than use this information to adapt to changes to the LAMMPS command syntax between versions. The returned LAMMPS version code is an integer (e.g. 2 Sep 2015 results in 20150902) that grows with every new LAMMPS version.</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> <div class="highlight-python"><div class="highlight"><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_set_variable(void *, char *, char *) int lammps_get_natoms(void *) void lammps_get_coords(void *, double *) void lammps_put_coords(void *, double *) </pre></div> </div> <p>These can extract various global or per-atom quantities from LAMMPS as well as values calculated by a compute, fix, or variable. The “set_variable” function can set an existing string-style variable to a new value, so that subsequent LAMMPS commands can access the 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 class="reference internal" href="Section_python.html"><em>Python interface</em></a>. The routines you add can access or change any LAMMPS data you wish. The examples/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 class="docutils" /> </div> <div class="section" id="calculating-thermal-conductivity"> <span id="howto-20"></span><h2>6.20. Calculating thermal conductivity<a class="headerlink" href="#calculating-thermal-conductivity" title="Permalink to this headline">¶</a></h2> <p>The thermal conductivity kappa of a material can be measured in at least 4 ways using various options in LAMMPS. See the examples/KAPPA directory for scripts that implement the 4 methods discussed here for a simple Lennard-Jones fluid model. Also, see <a class="reference internal" href="#howto-21"><span>this section</span></a> of the manual for an analogous discussion for viscosity.</p> <p>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 class="reference internal" href="#howto-13"><span>thermostatting fix</span></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 class="reference internal" href="#ikeshoji"><span>Ikeshoji and Hafskjold</span></a> for details of this idea. Note that thermostatting fixes such as <a class="reference internal" href="fix_nh.html"><em>fix nvt</em></a>, <a class="reference internal" href="fix_langevin.html"><em>fix langevin</em></a>, and <a class="reference internal" href="fix_temp_rescale.html"><em>fix temp/rescale</em></a> store the cumulative energy they add/subtract.</p> <p>Alternatively, as a second method, the <a class="reference internal" href="fix_heat.html"><em>fix heat</em></a> command can used in place of thermostats on each of two regions to add/subtract specified amounts of energy to both regions. In both cases, the resulting temperatures of the two regions can be monitored with the “compute temp/region” command and the temperature profile of the intermediate region can be monitored with the <a class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></a> and <a class="reference internal" href="compute_ke_atom.html"><em>compute ke/atom</em></a> commands.</p> <p>The third method is to perform a reverse non-equilibrium MD simulation using the <a class="reference internal" href="fix_thermal_conductivity.html"><em>fix thermal/conductivity</em></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 class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></a> and <a class="reference internal" href="compute_ke_atom.html"><em>compute ke/atom</em></a> commands. The fix tallies the cumulative energy transfer that it performs. See the <a class="reference internal" href="fix_thermal_conductivity.html"><em>fix thermal/conductivity</em></a> command for details.</p> <p>The fourth 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 class="reference internal" href="compute_heat_flux.html"><em>compute heat/flux</em></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 class="reference internal" href="fix_ave_correlate.html"><em>fix ave/correlate</em></a> command to calculate the needed auto-correlation. See the doc page for the <a class="reference internal" href="compute_heat_flux.html"><em>compute heat/flux</em></a> command for an example input script that calculates the thermal conductivity of solid Ar via the GK formalism.</p> <hr class="docutils" /> </div> <div class="section" id="calculating-viscosity"> <span id="howto-21"></span><h2>6.21. Calculating viscosity<a class="headerlink" href="#calculating-viscosity" title="Permalink to this headline">¶</a></h2> <p>The shear viscosity eta of a fluid can be measured in at least 4 ways using various options in LAMMPS. See the examples/VISCOSITY directory for scripts that implement the 4 methods discussed here for a simple Lennard-Jones fluid model. Also, see <a class="reference internal" href="#howto-20"><span>this section</span></a> of the manual for an analogous discussion for thermal conductivity.</p> <p>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 class="reference internal" href="fix_deform.html"><em>fix deform</em></a> command, and using the <a class="reference internal" href="fix_nvt_sllod.html"><em>fix nvt/sllod</em></a> command to thermostat the fluid via the SLLOD equations of motion. Alternatively, as a second method, one or more moving walls can be used to shear the fluid in between them, again with some kind of thermostat that modifies only the thermal (non-shearing) components of velocity to prevent the fluid from heating up.</p> <p>In both cases, the velocity profile setup in the fluid by this procedure can be monitored by the <a class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></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. The Pxy off-diagonal component of the pressure or stress tensor, as calculated by the <a class="reference internal" href="compute_pressure.html"><em>compute pressure</em></a> command, can also be monitored, which is the J term in the equation above. See <a class="reference internal" href="#howto-13"><span>this section</span></a> of the manual for details on NEMD simulations.</p> <p>The third method is to perform a reverse non-equilibrium MD simulation using the <a class="reference internal" href="fix_viscosity.html"><em>fix viscosity</em></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 class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></a> command. The fix tallies the cummulative momentum transfer that it performs. See the <a class="reference internal" href="fix_viscosity.html"><em>fix viscosity</em></a> command for details.</p> <p>The fourth 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> <div class="highlight-python"><div class="highlight"><pre><span class="c"># Sample LAMMPS input script for viscosity of liquid Ar</span> </pre></div> </div> <div class="highlight-python"><div class="highlight"><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></div> </div> <div class="highlight-python"><div class="highlight"><pre><span class="c"># convert from LAMMPS real units to SI</span> </pre></div> </div> <div class="highlight-python"><div class="highlight"><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></div> </div> <div class="highlight-python"><div class="highlight"><pre><span class="c"># setup problem</span> </pre></div> </div> <div class="highlight-python"><div class="highlight"><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></div> </div> <div class="highlight-python"><div class="highlight"><pre><span class="c"># equilibration and thermalization</span> </pre></div> </div> <div class="highlight-python"><div class="highlight"><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></div> </div> <div class="highlight-python"><div class="highlight"><pre><span class="c"># viscosity calculation, switch to NVE if desired</span> </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre><span class="c">#unfix NVT</span> <span class="c">#fix NVE all nve</span> </pre></div> </div> <div class="highlight-python"><div class="highlight"><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></div> </div> <hr class="docutils" /> </div> <div class="section" id="calculating-a-diffusion-coefficient"> <span id="howto-22"></span><h2>6.22. Calculating a diffusion coefficient<a class="headerlink" href="#calculating-a-diffusion-coefficient" title="Permalink to this headline">¶</a></h2> <p>The diffusion coefficient D of a material can be measured in at least 2 ways using various options in LAMMPS. See the examples/DIFFUSE directory for scripts that implement the 2 methods discussed here for a simple Lennard-Jones fluid model.</p> <p>The first method is to measure the mean-squared displacement (MSD) of the system, via the <a class="reference internal" href="compute_msd.html"><em>compute msd</em></a> command. The slope of the MSD versus time is proportional to the diffusion coefficient. The instantaneous MSD values can be accumulated in a vector via the <a class="reference internal" href="fix_vector.html"><em>fix vector</em></a> command, and a line fit to the vector to compute its slope via the <a class="reference internal" href="variable.html"><em>variable slope</em></a> function, and thus extract D.</p> <p>The second method is to measure the velocity auto-correlation function (VACF) of the system, via the <a class="reference internal" href="compute_vacf.html"><em>compute vacf</em></a> command. The time-integral of the VACF is proportional to the diffusion coefficient. The instantaneous VACF values can be accumulated in a vector via the <a class="reference internal" href="fix_vector.html"><em>fix vector</em></a> command, and time integrated via the <a class="reference internal" href="variable.html"><em>variable trap</em></a> function, and thus extract D.</p> <hr class="docutils" /> </div> <div class="section" id="using-chunks-to-calculate-system-properties"> <span id="howto-23"></span><h2>6.23. Using chunks to calculate system properties<a class="headerlink" href="#using-chunks-to-calculate-system-properties" title="Permalink to this headline">¶</a></h2> <p>In LAMMS, “chunks” are collections of atoms, as defined by the <a class="reference internal" href="compute_chunk_atom.html"><em>compute chunk/atom</em></a> command, which assigns each atom to a chunk ID (or to no chunk at all). The number of chunks and the assignment of chunk IDs to atoms can be static or change over time. Examples of “chunks” are molecules or spatial bins or atoms with similar values (e.g. coordination number or potential energy).</p> <p>The per-atom chunk IDs can be used as input to two other kinds of commands, to calculate various properties of a system:</p> <ul class="simple"> <li><a class="reference internal" href="fix_ave_chunk.html"><em>fix ave/chunk</em></a></li> <li>any of the <a class="reference internal" href="compute.html"><em>compute */chunk</em></a> commands</li> </ul> <p>Here, each of the 3 kinds of chunk-related commands is briefly overviewed. Then some examples are given of how to compute different properties with chunk commands.</p> <div class="section" id="compute-chunk-atom-command"> <h3>6.23.1. Compute chunk/atom command:<a class="headerlink" href="#compute-chunk-atom-command" title="Permalink to this headline">¶</a></h3> <p>This compute can assign atoms to chunks of various styles. Only atoms in the specified group and optional specified region are assigned to a chunk. Here are some possible chunk definitions:</p> <table border="1" class="docutils"> <colgroup> <col width="31%" /> <col width="69%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td>atoms in same molecule</td> <td>chunk ID = molecule ID</td> </tr> <tr class="row-even"><td>atoms of same atom type</td> <td>chunk ID = atom type</td> </tr> <tr class="row-odd"><td>all atoms with same atom property (charge, radius, etc)</td> <td>chunk ID = output of compute property/atom</td> </tr> <tr class="row-even"><td>atoms in same cluster</td> <td>chunk ID = output of <a class="reference internal" href="compute_cluster_atom.html"><em>compute cluster/atom</em></a> command</td> </tr> <tr class="row-odd"><td>atoms in same spatial bin</td> <td>chunk ID = bin ID</td> </tr> <tr class="row-even"><td>atoms in same rigid body</td> <td>chunk ID = molecule ID used to define rigid bodies</td> </tr> <tr class="row-odd"><td>atoms with similar potential energy</td> <td>chunk ID = output of <a class="reference internal" href="compute_pe_atom.html"><em>compute pe/atom</em></a></td> </tr> <tr class="row-even"><td>atoms with same local defect structure</td> <td>chunk ID = output of <a class="reference internal" href="compute_centro_atom.html"><em>compute centro/atom</em></a> or <a class="reference internal" href="compute_coord_atom.html"><em>compute coord/atom</em></a> command</td> </tr> </tbody> </table> <p>Note that chunk IDs are integer values, so for atom properties or computes that produce a floating point value, they will be truncated to an integer. You could also use the compute in a variable that scales the floating point value to spread it across multiple intergers.</p> <p>Spatial bins can be of various kinds, e.g. 1d bins = slabs, 2d bins = pencils, 3d bins = boxes, spherical bins, cylindrical bins.</p> <p>This compute also calculates the number of chunks <em>Nchunk</em>, which is used by other commands to tally per-chunk data. <em>Nchunk</em> can be a static value or change over time (e.g. the number of clusters). The chunk ID for an individual atom can also be static (e.g. a molecule ID), or dynamic (e.g. what spatial bin an atom is in as it moves).</p> <p>Note that this compute allows the per-atom output of other <a class="reference internal" href="compute.html"><em>computes</em></a>, <a class="reference internal" href="fix.html"><em>fixes</em></a>, and <a class="reference internal" href="variable.html"><em>variables</em></a> to be used to define chunk IDs for each atom. This means you can write your own compute or fix to output a per-atom quantity to use as chunk ID. See <a class="reference internal" href="Section_modify.html"><em>Section_modify</em></a> of the documentation for how to do this. You can also define a <a class="reference internal" href="variable.html"><em>per-atom variable</em></a> in the input script that uses a formula to generate a chunk ID for each atom.</p> </div> <div class="section" id="fix-ave-chunk-command"> <h3>6.23.2. Fix ave/chunk command:<a class="headerlink" href="#fix-ave-chunk-command" title="Permalink to this headline">¶</a></h3> <p>This fix takes the ID of a <a class="reference internal" href="compute_chunk_atom.html"><em>compute chunk/atom</em></a> command as input. For each chunk, it then sums one or more specified per-atom values over the atoms in each chunk. The per-atom values can be any atom property, such as velocity, force, charge, potential energy, kinetic energy, stress, etc. Additional keywords are defined for per-chunk properties like density and temperature. More generally any per-atom value generated by other <a class="reference internal" href="compute.html"><em>computes</em></a>, <a class="reference internal" href="fix.html"><em>fixes</em></a>, and <a class="reference internal" href="variable.html"><em>per-atom variables</em></a>, can be summed over atoms in each chunk.</p> <p>Similar to other averaging fixes, this fix allows the summed per-chunk values to be time-averaged in various ways, and output to a file. The fix produces a global array as output with one row of values per chunk.</p> </div> <div class="section" id="compute-chunk-commands"> <h3>6.23.3. Compute <a href="#id70"><span class="problematic" id="id71">*</span></a>/chunk commands:<a class="headerlink" href="#compute-chunk-commands" title="Permalink to this headline">¶</a></h3> <p>Currently the following computes operate on chunks of atoms to produce per-chunk values.</p> <ul class="simple"> <li><a class="reference internal" href="compute_com_chunk.html"><em>compute com/chunk</em></a></li> <li><a class="reference internal" href="compute_gyration_chunk.html"><em>compute gyration/chunk</em></a></li> <li><a class="reference internal" href="compute_inertia_chunk.html"><em>compute inertia/chunk</em></a></li> <li><a class="reference internal" href="compute_msd_chunk.html"><em>compute msd/chunk</em></a></li> <li><a class="reference internal" href="compute_property_chunk.html"><em>compute property/chunk</em></a></li> <li><a class="reference internal" href="compute_temp_chunk.html"><em>compute temp/chunk</em></a></li> <li><a class="reference internal" href="compute_vcm_chunk.html"><em>compute torque/chunk</em></a></li> <li><a class="reference internal" href="compute_vcm_chunk.html"><em>compute vcm/chunk</em></a></li> </ul> <p>They each take the ID of a <a class="reference internal" href="compute_chunk_atom.html"><em>compute chunk/atom</em></a> command as input. As their names indicate, they calculate the center-of-mass, radius of gyration, moments of inertia, mean-squared displacement, temperature, torque, and velocity of center-of-mass for each chunk of atoms. The <a class="reference internal" href="compute_property_chunk.html"><em>compute property/chunk</em></a> command can tally the count of atoms in each chunk and extract other per-chunk properties.</p> <p>The reason these various calculations are not part of the <a class="reference internal" href="fix_ave_chunk.html"><em>fix ave/chunk command</em></a>, is that each requires a more complicated operation than simply summing and averaging over per-atom values in each chunk. For example, many of them require calculation of a center of mass, which requires summing mass*position over the atoms and then dividing by summed mass.</p> <p>All of these computes produce a global vector or global array as output, wih one or more values per chunk. They can be used in various ways:</p> <ul class="simple"> <li>As input to the <a class="reference internal" href="fix_ave_time.html"><em>fix ave/time</em></a> command, which can write the values to a file and optionally time average them.</li> <li>As input to the <a class="reference internal" href="fix_ave_histo.html"><em>fix ave/histo</em></a> command to histogram values across chunks. E.g. a histogram of cluster sizes or molecule diffusion rates.</li> <li>As input to special functions of <a class="reference internal" href="variable.html"><em>equal-style variables</em></a>, like sum() and max(). E.g. to find the largest cluster or fastest diffusing molecule.</li> </ul> </div> <div class="section" id="example-calculations-with-chunks"> <h3>6.23.4. Example calculations with chunks<a class="headerlink" href="#example-calculations-with-chunks" title="Permalink to this headline">¶</a></h3> <p>Here are eaxmples using chunk commands to calculate various properties:</p> <ol class="arabic simple"> <li>Average velocity in each of 1000 2d spatial bins:</li> </ol> <div class="highlight-python"><div class="highlight"><pre>compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.01 units reduced fix 1 all ave/chunk 100 10 1000 cc1 vx vy file tmp.out </pre></div> </div> <p>(2) Temperature in each spatial bin, after subtracting a flow velocity:</p> <div class="highlight-python"><div class="highlight"><pre>compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.1 units reduced compute vbias all temp/profile 1 0 0 y 10 fix 1 all ave/chunk 100 10 1000 cc1 temp bias vbias file tmp.out </pre></div> </div> <ol class="arabic simple" start="3"> <li>Center of mass of each molecule:</li> </ol> <div class="highlight-python"><div class="highlight"><pre>compute cc1 all chunk/atom molecule compute myChunk all com/chunk cc1 fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector </pre></div> </div> <ol class="arabic simple" start="4"> <li>Total force on each molecule and ave/max across all molecules:</li> </ol> <div class="highlight-python"><div class="highlight"><pre>compute cc1 all chunk/atom molecule fix 1 all ave/chunk 1000 1 1000 cc1 fx fy fz file tmp.out variable xave equal ave(f_1**2**) variable xmax equal max(f_1**2**) thermo 1000 thermo_style custom step temp v_xave v_xmax </pre></div> </div> <ol class="arabic simple" start="5"> <li>Histogram of cluster sizes:</li> </ol> <div class="highlight-python"><div class="highlight"><pre>compute cluster all cluster/atom 1.0 compute cc1 all chunk/atom c_cluster compress yes compute size all property/chunk cc1 count fix 1 all ave/histo 100 1 100 0 20 20 c_size mode vector ave running beyond ignore file tmp.histo </pre></div> </div> <hr class="docutils" /> </div> </div> <div class="section" id="setting-parameters-for-the-kspace-style-pppm-disp-command"> <span id="howto-24"></span><h2>6.24. Setting parameters for the <a class="reference internal" href="kspace_style.html"><em>kspace_style pppm/disp</em></a> command<a class="headerlink" href="#setting-parameters-for-the-kspace-style-pppm-disp-command" title="Permalink to this headline">¶</a></h2> <p>The PPPM method computes interactions by splitting the pair potential into two parts, one of which is computed in a normal pairwise fashion, the so-called real-space part, and one of which is computed using the Fourier transform, the so called reciprocal-space or kspace part. For both parts, the potential is not computed exactly but is approximated. Thus, there is an error in both parts of the computation, the real-space and the kspace error. The just mentioned facts are true both for the PPPM for Coulomb as well as dispersion interactions. The deciding difference - and also the reason why the parameters for pppm/disp have to be selected with more care - is the impact of the errors on the results: The kspace error of the PPPM for Coulomb and dispersion interaction and the real-space error of the PPPM for Coulomb interaction have the character of noise. In contrast, the real-space error of the PPPM for dispersion has a clear physical interpretation: the underprediction of cohesion. As a consequence, the real-space error has a much stronger effect than the kspace error on simulation results for pppm/disp. Parameters must thus be chosen in a way that this error is much smaller than the kspace error.</p> <p>When using pppm/disp and not making any specifications on the PPPM parameters via the kspace modify command, parameters will be tuned such that the real-space error and the kspace error are equal. This will result in simulations that are either inaccurate or slow, both of which is not desirable. For selecting parameters for the pppm/disp that provide fast and accurate simulations, there are two approaches, which both have their up- and downsides.</p> <p>The first approach is to set desired real-space an kspace accuracies via the <em>kspace_modify force/disp/real</em> and <em>kspace_modify force/disp/kspace</em> commands. Note that the accuracies have to be specified in force units and are thus dependend on the chosen unit settings. For real units, 0.0001 and 0.002 seem to provide reasonable accurate and efficient computations for the real-space and kspace accuracies. 0.002 and 0.05 work well for most systems using lj units. PPPM parameters will be generated based on the desired accuracies. The upside of this approach is that it usually provides a good set of parameters and will work for both the <em>kspace_modify diff ad</em> and <em>kspace_modify diff ik</em> options. The downside of the method is that setting the PPPM parameters will take some time during the initialization of the simulation.</p> <p>The second approach is to set the parameters for the pppm/disp explicitly using the <em>kspace_modify mesh/disp</em>, <em>kspace_modify order/disp</em>, and <em>kspace_modify gewald/disp</em> commands. This approach requires a more experienced user who understands well the impact of the choice of parameters on the simulation accuracy and performance. This approach provides a fast initialization of the simulation. However, it is sensitive to errors: A combination of parameters that will perform well for one system might result in far-from-optimal conditions for other simulations. For example, parametes that provide accurate and fast computations for all-atomistic force fields can provide insufficient accuracy or united-atomistic force fields (which is related to that the latter typically have larger dispersion coefficients).</p> <p>To avoid inaccurate or inefficient simulations, the pppm/disp stops simulations with an error message if no action is taken to control the PPPM parameters. If the automatic parameter generation is desired and real-space and kspace accuracies are desired to be equal, this error message can be suppressed using the <em>kspace_modify disp/auto yes</em> command.</p> <p>A reasonable approach that combines the upsides of both methods is to make the first run using the <em>kspace_modify force/disp/real</em> and <em>kspace_modify force/disp/kspace</em> commands, write down the PPPM parameters from the outut, and specify these parameters using the second approach in subsequent runs (which have the same composition, force field, and approximately the same volume).</p> <p>Concerning the performance of the pppm/disp there are two more things to consider. The first is that when using the pppm/disp, the cutoff parameter does no longer affect the accuracy of the simulation (subject to that gewald/disp is adjusted when changing the cutoff). The performance can thus be increased by examining different values for the cutoff parameter. A lower bound for the cutoff is only set by the truncation error of the repulsive term of pair potentials.</p> <p>The second is that the mixing rule of the pair style has an impact on the computation time when using the pppm/disp. Fastest computations are achieved when using the geometric mixing rule. Using the arithmetic mixing rule substantially increases the computational cost. The computational overhead can be reduced using the <em>kspace_modify mix/disp geom</em> and <em>kspace_modify splittol</em> commands. The first command simply enforces geometric mixing of the dispersion coeffiecients in kspace computations. This introduces some error in the computations but will also significantly speed-up the simulations. The second keyword sets the accuracy with which the dispersion coefficients are approximated using a matrix factorization approach. This may result in better accuracy then using the first command, but will usually also not provide an equally good increase of efficiency.</p> <p>Finally, pppm/disp can also be used when no mixing rules apply. This can be achieved using the <em>kspace_modify mix/disp none</em> command. Note that the code does not check automatically whether any mixing rule is fulfilled. If mixing rules do not apply, the user will have to specify this command explicitly.</p> <hr class="docutils" /> </div> <div class="section" id="polarizable-models"> <span id="howto-25"></span><h2>6.25. Polarizable models<a class="headerlink" href="#polarizable-models" title="Permalink to this headline">¶</a></h2> <p>In polarizable force fields the charge distributions in molecules and materials respond to their electrostatic environements. Polarizable systems can be simulated in LAMMPS using three methods:</p> <ul class="simple"> <li>the fluctuating charge method, implemented in the <a class="reference internal" href="fix_qeq.html"><em>QEQ</em></a> package,</li> <li>the adiabatic core-shell method, implemented in the <a class="reference internal" href="#howto-26"><span>CORESHELL</span></a> package,</li> <li>the thermalized Drude dipole method, implemented in the <a class="reference internal" href="#howto-27"><span>USER-DRUDE</span></a> package.</li> </ul> <p>The fluctuating charge method calculates instantaneous charges on interacting atoms based on the electronegativity equalization principle. It is implemented in the <a class="reference internal" href="fix_qeq.html"><em>fix qeq</em></a> which is available in several variants. It is a relatively efficient technique since no additional particles are introduced. This method allows for charge transfer between molecules or atom groups. However, because the charges are located at the interaction sites, off-plane components of polarization cannot be represented in planar molecules or atom groups.</p> <p>The two other methods share the same basic idea: polarizable atoms are split into one core atom and one satellite particle (called shell or Drude particle) attached to it by a harmonic spring. Both atoms bear a charge and they represent collectively an induced electric dipole. These techniques are computationally more expensive than the QEq method because of additional particles and bonds. These two charge-on-spring methods differ in certain features, with the core-shell model being normally used for ionic/crystalline materials, whereas the so-called Drude model is normally used for molecular systems and fluid states.</p> <p>The core-shell model is applicable to crystalline materials where the high symmetry around each site leads to stable trajectories of the core-shell pairs. However, bonded atoms in molecules can be so close that a core would interact too strongly or even capture the Drude particle of a neighbor. The Drude dipole model is relatively more complex in order to remediate this and other issues. Specifically, the Drude model includes specific thermostating of the core-Drude pairs and short-range damping of the induced dipoles.</p> <p>The three polarization methods can be implemented through a self-consistent calculation of charges or induced dipoles at each timestep. In the fluctuating charge scheme this is done by the matrix inversion method in <a class="reference internal" href="fix_qeq.html"><em>fix qeq/point</em></a>, but for core-shell or Drude-dipoles the relaxed-dipoles technique would require an slow iterative procedure. These self-consistent solutions yield accurate trajectories since the additional degrees of freedom representing polarization are massless. An alternative is to attribute a mass to the additional degrees of freedom and perform time integration using an extended Lagrangian technique. For the fluctuating charge scheme this is done by <a class="reference internal" href="fix_qeq.html"><em>fix qeq/dynamic</em></a>, and for the charge-on-spring models by the methods outlined in the next two sections. The assignment of masses to the additional degrees of freedom can lead to unphysical trajectories if care is not exerted in choosing the parameters of the poarizable models and the simulation conditions.</p> <p>In the core-shell model the vibration of the shells is kept faster than the ionic vibrations to mimic the fast response of the polarizable electrons. But in molecular systems thermalizing the core-Drude pairs at temperatures comparable to the rest of the simulation leads to several problems (kinetic energy transfer, too short a timestep, etc.) In order to avoid these problems the relative motion of the Drude particles with respect to their cores is kept “cold” so the vibration of the core-Drude pairs is very slow, approaching the self-consistent regime. In both models the temperature is regulated using the velocities of the center of mass of core+shell (or Drude) pairs, but in the Drude model the actual relative core-Drude particle motion is thermostated separately as well.</p> <hr class="docutils" /> </div> <div class="section" id="adiabatic-core-shell-model"> <span id="howto-26"></span><h2>6.26. Adiabatic core/shell model<a class="headerlink" href="#adiabatic-core-shell-model" title="Permalink to this headline">¶</a></h2> <p>The adiabatic core-shell model by <a class="reference internal" href="compute_temp_cs.html#mitchellfinchham"><span>Mitchell and Finchham</span></a> is a simple method for adding polarizability to a system. In order to mimic the electron shell of an ion, a satellite particle is attached to it. This way the ions are split into a core and a shell where the latter is meant to react to the electrostatic environment inducing polarizability.</p> <p>Technically, shells are attached to the cores by a spring force f = k*r where k is a parametrized spring constant and r is the distance between the core and the shell. The charges of the core and the shell -add up to the ion charge, thus q(ion) = q(core) + q(shell). In a +add up to the ion charge, thus q(ion) = q(core) + q(shell). This +setup introduces the ion polarizability (alpha) given by +alpha = q(shell)^2 / k. In a similar fashion the mass of the ion is distributed on the core and the shell with the core having the larger mass.</p> <p>To run this model in LAMMPS, <a class="reference internal" href="atom_style.html"><em>atom_style</em></a> <em>full</em> can be used since atom charge and bonds are needed. Each kind of core/shell pair requires two atom types and a bond type. The core and shell of a core/shell pair should be bonded to each other with a harmonic bond that provides the spring force. For example, a data file for NaCl, as found in examples/coreshell, has this format:</p> <div class="highlight-python"><div class="highlight"><pre>432 atoms # core and shell atoms 216 bonds # number of core/shell springs </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>4 atom types # 2 cores and 2 shells for Na and Cl 2 bond types </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>0.0 24.09597 xlo xhi 0.0 24.09597 ylo yhi 0.0 24.09597 zlo zhi </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre><span class="n">Masses</span> <span class="c"># core/shell mass ratio = 0.1</span> </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>1 20.690784 # Na core 2 31.90500 # Cl core 3 2.298976 # Na shell 4 3.54500 # Cl shell </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre><span class="n">Atoms</span> </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>1 1 2 1.5005 0.00000000 0.00000000 0.00000000 # core of core/shell pair 1 2 1 4 -2.5005 0.00000000 0.00000000 0.00000000 # shell of core/shell pair 1 3 2 1 1.5056 4.01599500 4.01599500 4.01599500 # core of core/shell pair 2 4 2 3 -0.5056 4.01599500 4.01599500 4.01599500 # shell of core/shell pair 2 (...) </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre><span class="n">Bonds</span> <span class="c"># Bond topology for spring forces</span> </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>1 2 1 2 # spring for core/shell pair 1 2 2 3 4 # spring for core/shell pair 2 (...) </pre></div> </div> <p>Non-Coulombic (e.g. Lennard-Jones) pairwise interactions are only defined between the shells. Coulombic interactions are defined between all cores and shells. If desired, additional bonds can be specified between cores.</p> <p>The <a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a> command should be used to turn-off the Coulombic interaction within core/shell pairs, since that interaction is set by the bond spring. This is done using the <a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a> command with a 1-2 weight = 0.0, which is the default value. It needs to be considered whether one has to adjust the <a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a> weighting according to the molecular topology since the interactions of the shells are bypassed over an extra bond.</p> <p>Note that this core/shell implementation does not require all ions to be polarized. One can mix core/shell pairs and ions without a satellite particle if desired.</p> <p>Since the core/shell model permits distances of r = 0.0 between the core and shell, a pair style with a “cs” suffix needs to be used to -implement a valid long-rangeCoulombic correction. Several such pair +implement a valid long-range Coulombic correction. Several such pair styles are provided in the CORESHELL package. See <a class="reference internal" href="pair_cs.html"><em>this doc page</em></a> for details. All of the core/shell enabled pair styles require the use of a long-range Coulombic solver, as specified by the <a class="reference internal" href="kspace_style.html"><em>kspace_style</em></a> command. Either the PPPM or Ewald solvers can be used.</p> <p>For the NaCL example problem, these pair style and bond style settings are used:</p> <div class="highlight-python"><div class="highlight"><pre>pair_style born/coul/long/cs 20.0 20.0 pair_coeff * * 0.0 1.000 0.00 0.00 0.00 pair_coeff 3 3 487.0 0.23768 0.00 1.05 0.50 #Na-Na pair_coeff 3 4 145134.0 0.23768 0.00 6.99 8.70 #Na-Cl pair_coeff 4 4 405774.0 0.23768 0.00 72.40 145.40 #Cl-Cl </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>bond_style harmonic bond_coeff 1 63.014 0.0 bond_coeff 2 25.724 0.0 </pre></div> </div> <p>When running dynamics with the adiabatic core/shell model, the following issues should be considered. Since the relative motion of the core and shell particles corresponds to the polarization, typical -thermostats can alter the polarization behaviour, meaining the shell -will not react freely to its electrostatic environment. Therefore +thermostats can alter the polarization behaviour, meaning the shell +will not react freely to its electrostatic environment. This is +critical during the equilibration of the system. Therefore it’s typically desirable to decouple the relative motion of the core/shell pair, which is an imaginary degree of freedom, from the real physical system. To do that, the <a class="reference internal" href="compute_temp_cs.html"><em>compute temp/cs</em></a> command can be used, in conjunction with any of the thermostat fixes, such as <a class="reference internal" href="fix_nh.html"><em>fix nvt</em></a> or <a class="reference external" href="fix_langevin">fix langevin</a>. This compute uses the center-of-mass velocity of the core/shell pairs to calculate a temperature, and insures that velocity is what is rescaled for thermostatting purposes. This compute also works for a system with both core/shell pairs and non-polarized ions (ions without an attached satellite particle). The <a class="reference internal" href="compute_temp_cs.html"><em>compute temp/cs</em></a> command requires input of two groups, one for the core atoms, another for the shell atoms. Non-polarized ions which might also be included in the treated system should not be included into either of these groups, they are taken into account by the <em>group-ID</em> (2nd argument) of the compute. The groups can be defined using the <a class="reference internal" href="group.html"><em>group *type*</em></a> command. Note that to perform thermostatting using this definition of temperature, the <a class="reference internal" href="fix_modify.html"><em>fix modify temp</em></a> command should be -used to assign the comptue to the thermostat fix. Likewise the +used to assign the compute to the thermostat fix. Likewise the <a class="reference internal" href="thermo_modify.html"><em>thermo_modify temp</em></a> command can be used to make this temperature be output for the overall system.</p> <p>For the NaCl example, this can be done as follows:</p> <div class="highlight-python"><div class="highlight"><pre>group cores type 1 2 group shells type 3 4 compute CSequ all temp/cs cores shells fix thermoberendsen all temp/berendsen 1427 1427 0.4 # thermostat for the true physical system fix thermostatequ all nve # integrator as needed for the berendsen thermostat fix_modify thermoberendsen temp CSequ thermo_modify temp CSequ # output of center-of-mass derived temperature </pre></div> </div> +<p>If <a class="reference internal" href="compute_temp_cs.html"><em>compute temp/cs</em></a> is used, the decoupled +relative motion of the core and the shell should in theory be +stable. However numerical fluctuation can introduce a small +momentum to the system, which is noticable over long trajectories. +Therefore it is recomendable to use the <a class="reference internal" href="fix_momentum.html"><em>fix momentum</em></a> command in combination with <a class="reference internal" href="compute_temp_cs.html"><em>compute temp/cs</em></a> when equilibrating the system to +prevent any drift.</p> <p>When intializing the velocities of a system with core/shell pairs, it is also desirable to not introduce energy into the relative motion of the core/shell particles, but only assign a center-of-mass velocity to the pairs. This can be done by using the <em>bias</em> keyword of the <a class="reference internal" href="velocity.html"><em>velocity create</em></a> command and assigning the <a class="reference internal" href="compute_temp_cs.html"><em>compute temp/cs</em></a> command to the <em>temp</em> keyword of the <a class="reference internal" href="velocity.html"><em>velocity</em></a> commmand, e.g.</p> <div class="highlight-python"><div class="highlight"><pre>velocity all create 1427 134 bias yes temp CSequ velocity all scale 1427 temp CSequ </pre></div> </div> <p>It is important to note that the polarizability of the core/shell pairs is based on their relative motion. Therefore the choice of spring force and mass ratio need to ensure much faster relative motion of the 2 atoms within the core/shell pair than their center-of-mass velocity. This allow the shells to effectively react instantaneously to the electrostatic environment. This fast movement also limits the timestep size that can be used.</p> -<p>Additionally, the mass mismatch of the core and shell particles means -that only a small amount of energy is transfered to the decoupled -imaginary degrees of freedom. However, this transfer will typically -lead to a a small drift in total energy over time. This internal -energy can be monitored using the <a class="reference internal" href="compute_chunk_atom.html"><em>compute chunk/atom</em></a> and <a class="reference internal" href="compute_temp_chunk.html"><em>compute temp/chunk</em></a> commands. The internal kinetic +<p>The primary literature of the adiabatic core/shell model suggests that +the fast relative motion of the core/shell pairs only allows negligible +energy transfer to the environment. Therefore it is not intended to +decouple the core/shell degree of freedom from the physical system +during production runs. In other words, the <a class="reference internal" href="compute_temp_cs.html"><em>compute temp/cs</em></a> command should not be used during +production runs and is only required during equilibration. This way one +is consistent with literature (based on the code packages DL_POLY or +GULP for instance).</p> +<p>The mentioned energy transfer will typically lead to a a small drift +in total energy over time. This internal energy can be monitored +using the <a class="reference internal" href="compute_chunk_atom.html"><em>compute chunk/atom</em></a> and <a class="reference internal" href="compute_temp_chunk.html"><em>compute temp/chunk</em></a> commands. The internal kinetic energies of each core/shell pair can then be summed using the sum() special function of the <a class="reference internal" href="variable.html"><em>variable</em></a> command. Or they can be time/averaged and output using the <a class="reference internal" href="fix_ave_time.html"><em>fix ave/time</em></a> command. To use these commands, each core/shell pair must be defined as a “chunk”. If each core/shell pair is defined as its own molecule, the molecule ID can be used to define the chunks. If cores are bonded to each other to form larger molecules, the chunks can be identified by the <a class="reference internal" href="fix_property_atom.html"><em>fix property/atom</em></a> via assigning a core/shell ID to each atom using a special field in the data file read by the <a class="reference internal" href="read_data.html"><em>read_data</em></a> command. This field can then be accessed by the <a class="reference internal" href="compute_property_atom.html"><em>compute property/atom</em></a> command, to use as input to the <a class="reference internal" href="compute_chunk_atom.html"><em>compute chunk/atom</em></a> command to define the core/shell pairs as chunks.</p> <p>For example,</p> <div class="highlight-python"><div class="highlight"><pre>fix csinfo all property/atom i_CSID # property/atom command read_data NaCl_CS_x0.1_prop.data fix csinfo NULL CS-Info # atom property added in the data-file compute prop all property/atom i_CSID compute cs_chunk all chunk/atom c_prop compute cstherm all temp/chunk cs_chunk temp internal com yes cdof 3.0 # note the chosen degrees of freedom for the core/shell pairs fix ave_chunk all ave/time 10 1 10 c_cstherm file chunk.dump mode vector </pre></div> </div> <p>The additional section in the date file would be formatted like this:</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">CS</span><span class="o">-</span><span class="n">Info</span> <span class="c"># header of additional section</span> </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>1 1 # column 1 = atom ID, column 2 = core/shell ID 2 1 3 2 4 2 5 3 6 3 7 4 8 4 (...) </pre></div> </div> <hr class="docutils" /> </div> <div class="section" id="drude-induced-dipoles"> <span id="howto-27"></span><h2>6.27. Drude induced dipoles<a class="headerlink" href="#drude-induced-dipoles" title="Permalink to this headline">¶</a></h2> <p>The thermalized Drude model, similarly to the <a class="reference internal" href="#howto-26"><span>core-shell</span></a> model, representes induced dipoles by a pair of charges (the core atom and the Drude particle) connected by a harmonic spring. The Drude model has a number of features aimed at its use in molecular systems (<a class="reference internal" href="#lamoureux"><span>Lamoureux and Roux</span></a>):</p> <ul class="simple"> <li>Thermostating of the additional degrees of freedom associated with the induced dipoles at very low temperature, in terms of the reduced coordinates of the Drude particles with respect to their cores. This makes the trajectory close to that of relaxed induced dipoles.</li> <li>Consistent definition of 1-2 to 1-4 neighbors. A core-Drude particle pair represents a single (polarizable) atom, so the special screening factors in a covalent structure should be the same for the core and the Drude particle. Drude particles have to inherit the 1-2, 1-3, 1-4 special neighbor relations from their respective cores.</li> <li>Stabilization of the interactions between induced dipoles. Drude dipoles on covalently bonded atoms interact too strongly due to the short distances, so an atom may capture the Drude particle of a neighbor, or the induced dipoles within the same molecule may align too much. To avoid this, damping at short range can be done by Thole functions (for which there are physical grounds). This Thole damping is applied to the point charges composing the induced dipole (the charge of the Drude particle and the opposite charge on the core, not to the total charge of the core atom).</li> </ul> <p>A detailed tutorial covering the usage of Drude induced dipoles in LAMMPS is <a class="reference internal" href="tutorial_drude.html"><em>available here</em></a>.</p> <p>As with the core-shell model, the cores and Drude particles should appear in the data file as standard atoms. The same holds for the springs between them, which are described by standard harmonic bonds. The nature of the atoms (core, Drude particle or non-polarizable) is specified via the <a class="reference internal" href="fix_drude.html"><em>fix drude</em></a> command. The special list of neighbors is automatically refactored to account for the equivalence of core and Drude particles as regards special 1-2 to 1-4 screening. It may be necessary to use the <em>extra</em> keyword of the <a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a> command. If using <a class="reference internal" href="fix_shake.html"><em>fix shake</em></a>, make sure no Drude particle is in this fix group.</p> <p>There are two ways to thermostat the Drude particles at a low temperature: use either <a class="reference internal" href="fix_langevin_drude.html"><em>fix langevin/drude</em></a> for a Langevin thermostat, or <a class="reference internal" href="fix_drude_transform.html"><em>fix drude/transform/*</em></a> for a Nose-Hoover thermostat. The former requires use of the command <a class="reference internal" href="comm_modify.html"><em>comm_modify vel yes</em></a>. The latter requires two separate integration fixes like <em>nvt</em> or <em>npt</em>. The correct temperatures of the reduced degrees of freedom can be calculated using the <a class="reference internal" href="compute_temp_drude.html"><em>compute temp/drude</em></a>. This requires also to use the command <em>comm_modify vel yes</em>.</p> <p>Short-range damping of the induced dipole interactions can be achieved using Thole functions through the the <a class="reference internal" href="pair_thole.html"><em>pair style thole</em></a> in <a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid/overlay</em></a> with a Coulomb pair style. It may be useful to use <em>coul/long/cs</em> or similar from the CORESHELL package if the core and Drude particle come too close, which can cause numerical issues.</p> <p id="berendsen"><strong>(Berendsen)</strong> Berendsen, Grigera, Straatsma, J Phys Chem, 91, 6269-6271 (1987).</p> <p id="cornell"><strong>(Cornell)</strong> Cornell, Cieplak, Bayly, Gould, Merz, Ferguson, Spellmeyer, Fox, Caldwell, Kollman, JACS 117, 5179-5197 (1995).</p> <p id="horn"><strong>(Horn)</strong> Horn, Swope, Pitera, Madura, Dick, Hura, and Head-Gordon, J Chem Phys, 120, 9665 (2004).</p> <p id="ikeshoji"><strong>(Ikeshoji)</strong> Ikeshoji and Hafskjold, Molecular Physics, 81, 251-261 (1994).</p> <p id="mackerell"><strong>(MacKerell)</strong> MacKerell, Bashford, Bellott, Dunbrack, Evanseck, Field, Fischer, Gao, Guo, Ha, et al, J Phys Chem, 102, 3586 (1998).</p> <p id="mayo"><strong>(Mayo)</strong> Mayo, Olfason, Goddard III, J Phys Chem, 94, 8897-8909 (1990).</p> <p id="jorgensen"><strong>(Jorgensen)</strong> Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem Phys, 79, 926 (1983).</p> <p id="price"><strong>(Price)</strong> Price and Brooks, J Chem Phys, 121, 10096 (2004).</p> <p id="shinoda"><strong>(Shinoda)</strong> Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).</p> <p id="mitchellfinchham"><strong>(Mitchell and Finchham)</strong> Mitchell, Finchham, J Phys Condensed Matter, 5, 1031-1038 (1993).</p> <p id="lamoureux"><strong>(Lamoureux and Roux)</strong> G. Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003)</p> </div> </div> </div> </div> <footer> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <a href="Section_example.html" class="btn btn-neutral float-right" title="7. Example problems" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="Section_accelerate.html" class="btn btn-neutral" title="5. Accelerating LAMMPS performance" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/Section_howto.txt b/doc/Section_howto.txt index 051bffd48..7f38a9562 100644 --- a/doc/Section_howto.txt +++ b/doc/Section_howto.txt @@ -1,2790 +1,2809 @@ "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 6. How-to discussions :h3 This section describes how to perform common tasks using LAMMPS. 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 "Finite-size 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 6.22 "Calculating a diffusion coefficient"_#howto_22 6.23 "Using chunks to calculate system properties"_#howto_23 6.24 "Setting parameters for the kspace_style pppm/disp command"_#howto_24 6.25 "Polarizable models"_#howto_25 6.26 "Adiabatic core/shell model"_#howto_26 6.27 "Drude induced dipoles"_#howto_27 :all(b) The example input scripts included in the LAMMPS distribution and highlighted in "Section_example"_Section_example.html also show how to setup and run various kinds of simulations. :line :line 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 using the "-r command-line switch"_Section_start.html#start_7 and read by a "read_data"_read_data.html command in a new script. 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 as follows: lmp_g++ -r 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 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 finite-size 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 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 "Section_tools"_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 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 clear 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#start_7 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 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 "fix pimd"_fix_pimd.html for path-integral molecular dynamics (PIMD) :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 commands can only be used if LAMMPS was built with the REPLICA package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info on packages. PIMD runs different replicas whose individual particles are coupled together by springs to model a system or ring-polymers. This commands can only be used if LAMMPS was built with the USER-MISC 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#start_7 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#start_7 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 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#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 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 O charge = -0.834 H charge = 0.417 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 K of OH bond = 450 r0 of OH bond = 0.9572 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 (e.g. Ewald or PPPM in LAMMPS), see "(Price)"_#Price for details: O mass = 15.9994 H mass = 1.008 O charge = -0.830 H charge = 0.415 LJ epsilon of OO = 0.102 LJ sigma of OO = 3.188 LJ epsilon, sigma of OH, HH = 0.0 K of OH bond = 450 r0 of OH bond = 0.9572 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 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. A TIP4P model is run with LAMMPS using either this command for a cutoff model: "pair_style lj/cut/tip4p/cut"_pair_lj.html or these two commands for a long-range model: "pair_style lj/cut/tip4p/long"_pair_lj.html "kspace_style pppm/tip4p"_kspace_style.html :ul 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 O charge = -1.040 H charge = 0.520 r0 of OH bond = 0.9572 theta of HOH angle = 104.52 OM distance = 0.15 LJ epsilon of O-O = 0.1550 LJ sigma of O-O = 3.1536 LJ epsilon, sigma of OH, HH = 0.0 Coulombic cutoff = 8.5 :all(b),p For the TIP4/Ice model (J Chem Phys, 122, 234511 (2005); http://dx.doi.org/10.1063/1.1931662) these values can be used: O mass = 15.9994 H mass = 1.008 O charge = -1.1794 H charge = 0.5897 r0 of OH bond = 0.9572 theta of HOH angle = 104.52 OM distance = 0.1577 LJ epsilon of O-O = 0.21084 LJ sigma of O-O = 3.1668 LJ epsilon, sigma of OH, HH = 0.0 Coulombic cutoff = 8.5 :all(b),p For the TIP4P/2005 model (J Chem Phys, 123, 234505 (2005); http://dx.doi.org/10.1063/1.2121687), these values can be used: O mass = 15.9994 H mass = 1.008 O charge = -1.1128 H charge = 0.5564 r0 of OH bond = 0.9572 theta of HOH angle = 104.52 OM distance = 0.1546 LJ epsilon of O-O = 0.1852 LJ sigma of O-O = 3.1589 LJ epsilon, sigma of OH, HH = 0.0 Coulombic cutoff = 8.5 :all(b),p These are the parameters to use for TIP4P with a long-range Coulombic solver (e.g. Ewald or PPPM in LAMMPS): O mass = 15.9994 H mass = 1.008 O charge = -1.0484 H charge = 0.5242 r0 of OH bond = 0.9572 theta of HOH angle = 104.52 OM distance = 0.1250 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 Note that the when using the TIP4P pair style, the neighobr list cutoff for Coulomb interactions is effectively extended by a distance 2 * (OM distance), to account for the offset distance of the fictitious charges on O atoms in water molecules. Thus it is typically best in an efficiency sense to use a LJ cutoff >= Coulomb cutoff + 2*(OM distance), to shrink the size of the neighbor list. This leads to slightly larger cost for the long-range calculation, so you can test the trade-off for your model. The OM distance and the LJ and Coulombic cutoffs are set in the "pair_style lj/cut/tip4p/long"_pair_lj.html command. Wikipedia also has a nice article on "water models"_http://en.wikipedia.org/wiki/Water_model. :line 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 O charge = -0.820 H charge = 0.410 LJ epsilon of OO = 0.1553 LJ sigma of OO = 3.166 LJ epsilon, sigma of OH, HH = 0.0 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 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 "Section_modify"_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 examples/COUPLE directory of the LAMMPS distribution; see examples/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#start_5 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 "Section_python"_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 "Section_howto 19"_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 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 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 simulation 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 performed in triclinic (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. In LAMMPS the triclinic simulation box edge vectors [a], [b], and [c] cannot be arbitrary vectors. As indicated, [a] must lie on the positive x axis. [b] must lie in the xy plane, with strictly positive y component. [c] may have any orientation with strictly positive z component. The requirement that [a], [b], and [c] have strictly positive x, y, and z components, respectively, ensures that [a], [b], and [c] form a complete right-handed basis. These restrictions impose no loss of generality, since it is possible to rotate/invert any set of 3 crystal basis vectors so that they conform to the restrictions. For example, assume that the 3 vectors [A],[B],[C] are the edge vectors of a general parallelepiped, where there is no restriction on [A],[B],[C] other than they form a complete right-handed basis i.e. [A] x [B] . [C] > 0. The equivalent LAMMPS [a],[b],[c] are a linear rotation of [A], [B], and [C] and can be computed as follows: :c,image(Eqs/transform.jpg) where A = |[A]| indicates the scalar length of [A]. The ^ hat symbol indicates the corresponding unit vector. {beta} and {gamma} are angles between the vectors described below. Note that by construction, [a], [b], and [c] have strictly positive x, y, and z components, respectively. If it should happen that [A], [B], and [C] form a left-handed basis, then the above equations are not valid for [c]. In this case, it is necessary to first apply an inversion. This can be achieved by interchanging two basis vectors or by changing the sign of one of them. For consistency, the same rotation/inversion applied to the basis vectors must also be applied to atom positions, velocities, and any other vector quantities. This can be conveniently achieved by first converting to fractional coordinates in the old basis and then converting to distance coordinates in the new basis. The transformation is given by the following equation: :c,image(Eqs/rotate.jpg) where {V} is the volume of the box, [X] is the original vector quantity and [x] is the vector in the LAMMPS basis. There is no requirement that a triclinic box be periodic in any dimension, though it typically should be in at least the 2nd dimension of the tilt (y in xy) if you want to enforce a shift in periodic boundary conditions across that boundary. Some commands that work with triclinic boxes, e.g. the "fix deform"_fix_deform.html and "fix npt"_fix_nh.html commands, require periodicity or non-shrink-wrap boundary conditions in specific dimensions. See the command doc pages for details. 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), LAMMPS normally requires that 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). This is required both when the simulation box is created, e.g. via the "create_box"_create_box.html or "read_data"_read_data.html commands, as well as when the box shape changes dynamically during a simulation, e.g. via the "fix deform"_fix_deform.html or "fix npt"_fix_nh.html commands. 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. If the box tilt exceeds this limit during a dynamics run (e.g. via the "fix deform"_fix_deform.html command), then the box is "flipped" to an equivalent shape with a tilt factor within the bounds, so the run can continue. See the "fix deform"_fix_deform.html doc page for further details. One exception to this rule is if the 1st dimension in the tilt factor (x for xy) is non-periodic. In that case, the limits on the tilt factor are not enforced, since flipping the box in that dimension does not change the atom positions due to non-periodicity. In this mode, if you tilt the system to extreme angles, the simulation will simply become inefficient, due to the highly skewed simulation box. The limitation on not creating a simulation box with a tilt factor skewing the box more than half the distance of the parallel box length can be overridden via the "box"_box.html command. Setting the {tilt} keyword to {large} allows any tilt factors to be specified. Box flips that may occur using the "fix deform"_fix_deform.html or "fix npt"_fix_nh.html commands can be turned off using the {flip no} option with either of the commands. Note that if a simulation box has a large tilt factor, LAMMPS will run less efficiently, due to the large volume of communication needed to acquire ghost atoms around a processor's irregular-shaped sub-domain. For extreme values of tilt, LAMMPS may also lose atoms and generate an error. 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 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 flipped 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 6.14 Finite-size spherical and aspherical particles :link(howto_14),h4 Typical MD models treat atoms or particles as point masses. Sometimes it is desirable to have a model with finite-size particles such as spheroids or ellipsoids or generalized aspherical bodies. The difference is that such particles have a moment of inertia, rotational energy, and angular momentum. Rotation is induced by torque coming 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 finite-size particles :ul Example input scripts for these kinds of models are in the body, colloid, dipole, ellipse, line, peri, pour, and tri directories of the "examples directory"_Section_example.html in the LAMMPS distribution. Atom styles :h5 There are several "atom styles"_atom_style.html that allow for definition of finite-size particles: sphere, dipole, ellipsoid, line, tri, peri, and body. 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 dipole style does not actually define finite-size 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 finite-size (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. 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 line style defines line segment particles with two end points and a mass (or density). They can be used in 2d simulations, and they can be joined together to form rigid bodies which represent arbitrary polygons. The tri style defines triangular particles with three corner points and a mass (or density). They can be used in 3d simulations, and they can be joined together to form rigid bodies which represent arbitrary particles with a triangulated surface. The peri style is used with "Peridynamic models"_pair_peri.html and defines particles as having a volume, that is used internally in the "pair_style peri"_pair_peri.html potentials. The body style allows for definition of particles which can represent complex entities, such as surface meshes of discrete points, collections of sub-particles, deformable objects, etc. The body style is discussed in more detail on the "body"_body.html doc page. 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, in the ellipsoid style, 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. In the line or tri style, if the lineflag or triflag is specified as 0, then it will be a point particle. Some of the pair styles used to compute pairwise interactions between finite-size particles also compute the correct interaction with point particles as well, e.g. the interaction between a point particle and a finite-size particle or between two point particles. If necessary, "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, atom styles sphere and ellipsoid still use 3d particles, rather than as circular disks or ellipses. This means they have the same moment of inertia as the 3d object. When temperature is computed, the correct degrees of freedom are used for rotation in a 2d versus 3d system. Pair potentials :h5 When a system with finite-size 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 brownian"_pair_brownian.html "pair_style lubricate"_pair_lubricate.html "pair_style line/lj"_pair_line_lj.html "pair_style tri/lj"_pair_tri_lj.html "pair_style body"_pair_body.html :ul The granular pair styles are used with spherical particles. The dipole pair style is used with the dipole atom style, which could be applied to spherical or ellipsoidal particles. The GayBerne and REsquared potentials require ellipsoidal particles, though they will also work if the 3 shape parameters are the same (a sphere). The Brownian and lubrication potentials are used with spherical particles. The line, tri, and body potentials are used with line segment, triangular, and body particles respectively. Time integration :h5 There are several fixes that perform time integration on finite-size 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 ellipsoidal 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. The "fix langevin"_fix_langevin command can also be used with its {omgea} or {angmom} options to thermostat the rotational degrees of freedom for spherical or ellipsoidal particles. Other thermostatting fixes only operate on the translational kinetic energy of finite-size particles. These fixes perform constant NVE time integration on line segment, triangular, and body particles: "fix nve/line"_fix_nve_line.html "fix nve/tri"_fix_nve_tri.html "fix nve/body"_fix_nve_body.html :ul Note that for mixtures of point and finite-size particles, these integration fixes can only be used with "groups"_group.html which contain finite-size particles. Computes, thermodynamics, and dump output :h5 There are several computes that calculate the temperature or rotational energy of spherical or ellipsoidal particles: "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 finite-size 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. These commands can be used to output various attributes of finite-size particles: "dump custom"_dump.html "compute property/atom"_compute_property_atom.html "dump local"_dump.html "compute body/local"_compute_body_local.html :ul Attributes include the dipole moment, the angular velocity, the angular momentum, the quaternion, the torque, the end-point and corner-point coordinates (for line and tri particles), and sub-particle attributes of body particles. Rigid bodies composed of finite-size 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 finite-size particles (spheres or ellipsoids or line segments or triangles), 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 spheroids, even if the two particles have the same mass. Finite-size 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. Also note that body particles cannot be modeled with the "fix rigid"_fix_rigid.html command. Body particles are treated by LAMMPS as single particles, though they can store internal state, such as a list of sub-particles. Individual body partices are typically treated as rigid bodies, and their motion integrated with a command like "fix nve/body"_fix_nve_body.html. Interactions between pairs of body particles are computed via a command like "pair_style body"_pair_body.html. :line 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. Note that thermodynamic output values can be "extensive" or "intensive". The former scale with the number of atoms in the system (e.g. total energy), the latter do not (e.g. temperature). The setting for "thermo_modify norm"_thermo_modify.html determines whether extensive quantities are normalized or not. Computes and fixes produce either extensive or intensive values; see their individual doc pages for details. "Equal-style variables"_variable.html produce only intensive values; you can include a division by "natoms" in the formula if desired, to make an extensive calculation produce an intensive result. 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) Several 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_correlate.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. Fixes that process output quantities :h5,link(fixoutput) The "fix vector"_fix_vector.html command can create global vectors as output from global scalars as input, accumulating them one element at a time. 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: "fix vector"_fix_vector.html: global scalars: global vector: "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 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 directly (e.g. 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 finite-size particles that includes rotational degrees of freedom. They both allow for velocity biases indirectly, via an optional extra argument, another temperature compute that subtracts a velocity bias. This allows the translational velocity of 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. Several thermostatting fixes are available: Nose-Hoover (nvt), Berendsen, CSVR, 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 temp/csvr"_fix_temp_csvr.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"_#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 which has two effects. First, the current calculated temperature, which is compared to the requested target temperature, is caluclated with the velocity bias removed. Second, the thermostat adjusts only the thermal temperature component of the particle's velocities, which are the velocities with the bias removed. The removed bias is then added back to the adjusted 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. Of you could thermostat only the thermal temperature of a streaming flow of particles without affecting the streaming velocity, by using "compute temp/profile"_compute_temp_profile.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 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 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 simulation box in one of the six directions using the "change_box"_change_box.html command 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 6.19 Library interface to LAMMPS :link(howto_19),h4 As described in "Section_start 5"_Section_start.html#start_5, 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 5 basic functions: void lammps_open(int, char **, MPI_Comm, void **) void lammps_close(void *) int lammps_version(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"_Section_start.html#start_7 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_version() function can be used to determined the specific version of the underlying LAMMPS code. This is particularly useful when loading LAMMPS as a shared library via dlopen(). The code using the library interface can than use this information to adapt to changes to the LAMMPS command syntax between versions. The returned LAMMPS version code is an integer (e.g. 2 Sep 2015 results in 20150902) that grows with every new LAMMPS version. 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_set_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 "set_variable" function can set an existing string-style variable to a new value, so that subsequent LAMMPS commands can access the 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 examples/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 6.20 Calculating thermal conductivity :link(howto_20),h4 The thermal conductivity kappa of a material can be measured in at least 4 ways using various options in LAMMPS. See the examples/KAPPA directory for scripts that implement the 4 methods discussed here for a simple Lennard-Jones fluid model. Also, see "this 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#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, as a second method, the "fix heat"_fix_heat.html command can used in place of thermostats on each of two regions to add/subtract specified amounts of energy to both regions. In both cases, the resulting temperatures of the two regions can be monitored with the "compute temp/region" command and the temperature profile of the intermediate region can be monitored with the "fix ave/spatial"_fix_ave_spatial.html and "compute ke/atom"_compute_ke_atom.html commands. The third 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 fourth 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 6.21 Calculating viscosity :link(howto_21),h4 The shear viscosity eta of a fluid can be measured in at least 4 ways using various options in LAMMPS. See the examples/VISCOSITY directory for scripts that implement the 4 methods discussed here for a simple Lennard-Jones fluid model. Also, see "this 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. Alternatively, as a second method, one or more moving walls can be used to shear the fluid in between them, again with some kind of thermostat that modifies only the thermal (non-shearing) components of velocity to prevent the fluid from heating up. In both cases, 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. 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#howto_13 of the manual for details on NEMD simulations. The third 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 fourth 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 6.22 Calculating a diffusion coefficient :link(howto_22),h4 The diffusion coefficient D of a material can be measured in at least 2 ways using various options in LAMMPS. See the examples/DIFFUSE directory for scripts that implement the 2 methods discussed here for a simple Lennard-Jones fluid model. The first method is to measure the mean-squared displacement (MSD) of the system, via the "compute msd"_compute_msd.html command. The slope of the MSD versus time is proportional to the diffusion coefficient. The instantaneous MSD values can be accumulated in a vector via the "fix vector"_fix_vector.html command, and a line fit to the vector to compute its slope via the "variable slope"_variable.html function, and thus extract D. The second method is to measure the velocity auto-correlation function (VACF) of the system, via the "compute vacf"_compute_vacf.html command. The time-integral of the VACF is proportional to the diffusion coefficient. The instantaneous VACF values can be accumulated in a vector via the "fix vector"_fix_vector.html command, and time integrated via the "variable trap"_variable.html function, and thus extract D. :line 6.23 Using chunks to calculate system properties :link(howto_23),h4 In LAMMS, "chunks" are collections of atoms, as defined by the "compute chunk/atom"_compute_chunk_atom.html command, which assigns each atom to a chunk ID (or to no chunk at all). The number of chunks and the assignment of chunk IDs to atoms can be static or change over time. Examples of "chunks" are molecules or spatial bins or atoms with similar values (e.g. coordination number or potential energy). The per-atom chunk IDs can be used as input to two other kinds of commands, to calculate various properties of a system: "fix ave/chunk"_fix_ave_chunk.html any of the "compute */chunk"_compute.html commands :ul Here, each of the 3 kinds of chunk-related commands is briefly overviewed. Then some examples are given of how to compute different properties with chunk commands. Compute chunk/atom command: :h5 This compute can assign atoms to chunks of various styles. Only atoms in the specified group and optional specified region are assigned to a chunk. Here are some possible chunk definitions: atoms in same molecule | chunk ID = molecule ID | atoms of same atom type | chunk ID = atom type | all atoms with same atom property (charge, radius, etc) | chunk ID = output of compute property/atom | atoms in same cluster | chunk ID = output of "compute cluster/atom"_compute_cluster_atom.html command | atoms in same spatial bin | chunk ID = bin ID | atoms in same rigid body | chunk ID = molecule ID used to define rigid bodies | atoms with similar potential energy | chunk ID = output of "compute pe/atom"_compute_pe_atom.html | atoms with same local defect structure | chunk ID = output of "compute centro/atom"_compute_centro_atom.html or "compute coord/atom"_compute_coord_atom.html command :tb(s=|,c=2) Note that chunk IDs are integer values, so for atom properties or computes that produce a floating point value, they will be truncated to an integer. You could also use the compute in a variable that scales the floating point value to spread it across multiple intergers. Spatial bins can be of various kinds, e.g. 1d bins = slabs, 2d bins = pencils, 3d bins = boxes, spherical bins, cylindrical bins. This compute also calculates the number of chunks {Nchunk}, which is used by other commands to tally per-chunk data. {Nchunk} can be a static value or change over time (e.g. the number of clusters). The chunk ID for an individual atom can also be static (e.g. a molecule ID), or dynamic (e.g. what spatial bin an atom is in as it moves). Note that this compute allows the per-atom output of other "computes"_compute.html, "fixes"_fix.html, and "variables"_variable.html to be used to define chunk IDs for each atom. This means you can write your own compute or fix to output a per-atom quantity to use as chunk ID. See "Section_modify"_Section_modify.html of the documentation for how to do this. You can also define a "per-atom variable"_variable.html in the input script that uses a formula to generate a chunk ID for each atom. Fix ave/chunk command: :h5 This fix takes the ID of a "compute chunk/atom"_compute_chunk_atom.html command as input. For each chunk, it then sums one or more specified per-atom values over the atoms in each chunk. The per-atom values can be any atom property, such as velocity, force, charge, potential energy, kinetic energy, stress, etc. Additional keywords are defined for per-chunk properties like density and temperature. More generally any per-atom value generated by other "computes"_compute.html, "fixes"_fix.html, and "per-atom variables"_variable.html, can be summed over atoms in each chunk. Similar to other averaging fixes, this fix allows the summed per-chunk values to be time-averaged in various ways, and output to a file. The fix produces a global array as output with one row of values per chunk. Compute */chunk commands: :h5 Currently the following computes operate on chunks of atoms to produce per-chunk values. "compute com/chunk"_compute_com_chunk.html "compute gyration/chunk"_compute_gyration_chunk.html "compute inertia/chunk"_compute_inertia_chunk.html "compute msd/chunk"_compute_msd_chunk.html "compute property/chunk"_compute_property_chunk.html "compute temp/chunk"_compute_temp_chunk.html "compute torque/chunk"_compute_vcm_chunk.html "compute vcm/chunk"_compute_vcm_chunk.html :ul They each take the ID of a "compute chunk/atom"_compute_chunk_atom.html command as input. As their names indicate, they calculate the center-of-mass, radius of gyration, moments of inertia, mean-squared displacement, temperature, torque, and velocity of center-of-mass for each chunk of atoms. The "compute property/chunk"_compute_property_chunk.html command can tally the count of atoms in each chunk and extract other per-chunk properties. The reason these various calculations are not part of the "fix ave/chunk command"_fix_ave_chunk.html, is that each requires a more complicated operation than simply summing and averaging over per-atom values in each chunk. For example, many of them require calculation of a center of mass, which requires summing mass*position over the atoms and then dividing by summed mass. All of these computes produce a global vector or global array as output, wih one or more values per chunk. They can be used in various ways: As input to the "fix ave/time"_fix_ave_time.html command, which can write the values to a file and optionally time average them. :ulb,l As input to the "fix ave/histo"_fix_ave_histo.html command to histogram values across chunks. E.g. a histogram of cluster sizes or molecule diffusion rates. :l As input to special functions of "equal-style variables"_variable.html, like sum() and max(). E.g. to find the largest cluster or fastest diffusing molecule. :l,ule Example calculations with chunks :h5 Here are eaxmples using chunk commands to calculate various properties: (1) Average velocity in each of 1000 2d spatial bins: compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.01 units reduced fix 1 all ave/chunk 100 10 1000 cc1 vx vy file tmp.out :pre (2) Temperature in each spatial bin, after subtracting a flow velocity: compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.1 units reduced compute vbias all temp/profile 1 0 0 y 10 fix 1 all ave/chunk 100 10 1000 cc1 temp bias vbias file tmp.out :pre (3) Center of mass of each molecule: compute cc1 all chunk/atom molecule compute myChunk all com/chunk cc1 fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector :pre (4) Total force on each molecule and ave/max across all molecules: compute cc1 all chunk/atom molecule fix 1 all ave/chunk 1000 1 1000 cc1 fx fy fz file tmp.out variable xave equal ave(f_1[2]) variable xmax equal max(f_1[2]) thermo 1000 thermo_style custom step temp v_xave v_xmax :pre (5) Histogram of cluster sizes: compute cluster all cluster/atom 1.0 compute cc1 all chunk/atom c_cluster compress yes compute size all property/chunk cc1 count fix 1 all ave/histo 100 1 100 0 20 20 c_size mode vector ave running beyond ignore file tmp.histo :pre :line 6.24 Setting parameters for the "kspace_style pppm/disp"_kspace_style.html command :link(howto_24),h4 The PPPM method computes interactions by splitting the pair potential into two parts, one of which is computed in a normal pairwise fashion, the so-called real-space part, and one of which is computed using the Fourier transform, the so called reciprocal-space or kspace part. For both parts, the potential is not computed exactly but is approximated. Thus, there is an error in both parts of the computation, the real-space and the kspace error. The just mentioned facts are true both for the PPPM for Coulomb as well as dispersion interactions. The deciding difference - and also the reason why the parameters for pppm/disp have to be selected with more care - is the impact of the errors on the results: The kspace error of the PPPM for Coulomb and dispersion interaction and the real-space error of the PPPM for Coulomb interaction have the character of noise. In contrast, the real-space error of the PPPM for dispersion has a clear physical interpretation: the underprediction of cohesion. As a consequence, the real-space error has a much stronger effect than the kspace error on simulation results for pppm/disp. Parameters must thus be chosen in a way that this error is much smaller than the kspace error. When using pppm/disp and not making any specifications on the PPPM parameters via the kspace modify command, parameters will be tuned such that the real-space error and the kspace error are equal. This will result in simulations that are either inaccurate or slow, both of which is not desirable. For selecting parameters for the pppm/disp that provide fast and accurate simulations, there are two approaches, which both have their up- and downsides. The first approach is to set desired real-space an kspace accuracies via the {kspace_modify force/disp/real} and {kspace_modify force/disp/kspace} commands. Note that the accuracies have to be specified in force units and are thus dependend on the chosen unit settings. For real units, 0.0001 and 0.002 seem to provide reasonable accurate and efficient computations for the real-space and kspace accuracies. 0.002 and 0.05 work well for most systems using lj units. PPPM parameters will be generated based on the desired accuracies. The upside of this approach is that it usually provides a good set of parameters and will work for both the {kspace_modify diff ad} and {kspace_modify diff ik} options. The downside of the method is that setting the PPPM parameters will take some time during the initialization of the simulation. The second approach is to set the parameters for the pppm/disp explicitly using the {kspace_modify mesh/disp}, {kspace_modify order/disp}, and {kspace_modify gewald/disp} commands. This approach requires a more experienced user who understands well the impact of the choice of parameters on the simulation accuracy and performance. This approach provides a fast initialization of the simulation. However, it is sensitive to errors: A combination of parameters that will perform well for one system might result in far-from-optimal conditions for other simulations. For example, parametes that provide accurate and fast computations for all-atomistic force fields can provide insufficient accuracy or united-atomistic force fields (which is related to that the latter typically have larger dispersion coefficients). To avoid inaccurate or inefficient simulations, the pppm/disp stops simulations with an error message if no action is taken to control the PPPM parameters. If the automatic parameter generation is desired and real-space and kspace accuracies are desired to be equal, this error message can be suppressed using the {kspace_modify disp/auto yes} command. A reasonable approach that combines the upsides of both methods is to make the first run using the {kspace_modify force/disp/real} and {kspace_modify force/disp/kspace} commands, write down the PPPM parameters from the outut, and specify these parameters using the second approach in subsequent runs (which have the same composition, force field, and approximately the same volume). Concerning the performance of the pppm/disp there are two more things to consider. The first is that when using the pppm/disp, the cutoff parameter does no longer affect the accuracy of the simulation (subject to that gewald/disp is adjusted when changing the cutoff). The performance can thus be increased by examining different values for the cutoff parameter. A lower bound for the cutoff is only set by the truncation error of the repulsive term of pair potentials. The second is that the mixing rule of the pair style has an impact on the computation time when using the pppm/disp. Fastest computations are achieved when using the geometric mixing rule. Using the arithmetic mixing rule substantially increases the computational cost. The computational overhead can be reduced using the {kspace_modify mix/disp geom} and {kspace_modify splittol} commands. The first command simply enforces geometric mixing of the dispersion coeffiecients in kspace computations. This introduces some error in the computations but will also significantly speed-up the simulations. The second keyword sets the accuracy with which the dispersion coefficients are approximated using a matrix factorization approach. This may result in better accuracy then using the first command, but will usually also not provide an equally good increase of efficiency. Finally, pppm/disp can also be used when no mixing rules apply. This can be achieved using the {kspace_modify mix/disp none} command. Note that the code does not check automatically whether any mixing rule is fulfilled. If mixing rules do not apply, the user will have to specify this command explicitly. :line 6.25 Polarizable models :link(howto_25),h4 In polarizable force fields the charge distributions in molecules and materials respond to their electrostatic environements. Polarizable systems can be simulated in LAMMPS using three methods: the fluctuating charge method, implemented in the "QEQ"_fix_qeq.html package, :ulb,l the adiabatic core-shell method, implemented in the "CORESHELL"_#howto_26 package, :l the thermalized Drude dipole method, implemented in the "USER-DRUDE"_#howto_27 package. :l,ule The fluctuating charge method calculates instantaneous charges on interacting atoms based on the electronegativity equalization principle. It is implemented in the "fix qeq"_fix_qeq.html which is available in several variants. It is a relatively efficient technique since no additional particles are introduced. This method allows for charge transfer between molecules or atom groups. However, because the charges are located at the interaction sites, off-plane components of polarization cannot be represented in planar molecules or atom groups. The two other methods share the same basic idea: polarizable atoms are split into one core atom and one satellite particle (called shell or Drude particle) attached to it by a harmonic spring. Both atoms bear a charge and they represent collectively an induced electric dipole. These techniques are computationally more expensive than the QEq method because of additional particles and bonds. These two charge-on-spring methods differ in certain features, with the core-shell model being normally used for ionic/crystalline materials, whereas the so-called Drude model is normally used for molecular systems and fluid states. The core-shell model is applicable to crystalline materials where the high symmetry around each site leads to stable trajectories of the core-shell pairs. However, bonded atoms in molecules can be so close that a core would interact too strongly or even capture the Drude particle of a neighbor. The Drude dipole model is relatively more complex in order to remediate this and other issues. Specifically, the Drude model includes specific thermostating of the core-Drude pairs and short-range damping of the induced dipoles. The three polarization methods can be implemented through a self-consistent calculation of charges or induced dipoles at each timestep. In the fluctuating charge scheme this is done by the matrix inversion method in "fix qeq/point"_fix_qeq.html, but for core-shell or Drude-dipoles the relaxed-dipoles technique would require an slow iterative procedure. These self-consistent solutions yield accurate trajectories since the additional degrees of freedom representing polarization are massless. An alternative is to attribute a mass to the additional degrees of freedom and perform time integration using an extended Lagrangian technique. For the fluctuating charge scheme this is done by "fix qeq/dynamic"_fix_qeq.html, and for the charge-on-spring models by the methods outlined in the next two sections. The assignment of masses to the additional degrees of freedom can lead to unphysical trajectories if care is not exerted in choosing the parameters of the poarizable models and the simulation conditions. In the core-shell model the vibration of the shells is kept faster than the ionic vibrations to mimic the fast response of the polarizable electrons. But in molecular systems thermalizing the core-Drude pairs at temperatures comparable to the rest of the simulation leads to several problems (kinetic energy transfer, too short a timestep, etc.) In order to avoid these problems the relative motion of the Drude particles with respect to their cores is kept "cold" so the vibration of the core-Drude pairs is very slow, approaching the self-consistent regime. In both models the temperature is regulated using the velocities of the center of mass of core+shell (or Drude) pairs, but in the Drude model the actual relative core-Drude particle motion is thermostated separately as well. :line 6.26 Adiabatic core/shell model :link(howto_26),h4 The adiabatic core-shell model by "Mitchell and Finchham"_#MitchellFinchham is a simple method for adding polarizability to a system. In order to mimic the electron shell of an ion, a satellite particle is attached to it. This way the ions are split into a core and a shell where the latter is meant to react to the electrostatic environment inducing polarizability. Technically, shells are attached to the cores by a spring force f = k*r where k is a parametrized spring constant and r is the distance between the core and the shell. The charges of the core and the shell -add up to the ion charge, thus q(ion) = q(core) + q(shell). In a +add up to the ion charge, thus q(ion) = q(core) + q(shell). This +setup introduces the ion polarizability (alpha) given by +alpha = q(shell)^2 / k. In a similar fashion the mass of the ion is distributed on the core and the shell with the core having the larger mass. To run this model in LAMMPS, "atom_style"_atom_style.html {full} can be used since atom charge and bonds are needed. Each kind of core/shell pair requires two atom types and a bond type. The core and shell of a core/shell pair should be bonded to each other with a harmonic bond that provides the spring force. For example, a data file for NaCl, as found in examples/coreshell, has this format: 432 atoms # core and shell atoms 216 bonds # number of core/shell springs :pre 4 atom types # 2 cores and 2 shells for Na and Cl 2 bond types :pre 0.0 24.09597 xlo xhi 0.0 24.09597 ylo yhi 0.0 24.09597 zlo zhi :pre Masses # core/shell mass ratio = 0.1 :pre 1 20.690784 # Na core 2 31.90500 # Cl core 3 2.298976 # Na shell 4 3.54500 # Cl shell :pre Atoms :pre 1 1 2 1.5005 0.00000000 0.00000000 0.00000000 # core of core/shell pair 1 2 1 4 -2.5005 0.00000000 0.00000000 0.00000000 # shell of core/shell pair 1 3 2 1 1.5056 4.01599500 4.01599500 4.01599500 # core of core/shell pair 2 4 2 3 -0.5056 4.01599500 4.01599500 4.01599500 # shell of core/shell pair 2 (...) :pre Bonds # Bond topology for spring forces :pre 1 2 1 2 # spring for core/shell pair 1 2 2 3 4 # spring for core/shell pair 2 (...) :pre Non-Coulombic (e.g. Lennard-Jones) pairwise interactions are only defined between the shells. Coulombic interactions are defined between all cores and shells. If desired, additional bonds can be -specified between cores. +specified between cores. The "special_bonds"_special_bonds.html command should be used to turn-off the Coulombic interaction within core/shell pairs, since that interaction is set by the bond spring. This is done using the "special_bonds"_special_bonds.html command with a 1-2 weight = 0.0, which is the default value. It needs to be considered whether one has to adjust the "special_bonds"_special_bonds.html weighting according to the molecular topology since the interactions of the shells are bypassed over an extra bond. Note that this core/shell implementation does not require all ions to be polarized. One can mix core/shell pairs and ions without a satellite particle if desired. Since the core/shell model permits distances of r = 0.0 between the core and shell, a pair style with a "cs" suffix needs to be used to -implement a valid long-rangeCoulombic correction. Several such pair +implement a valid long-range Coulombic correction. Several such pair styles are provided in the CORESHELL package. See "this doc page"_pair_cs.html for details. All of the core/shell enabled pair styles require the use of a long-range Coulombic solver, as specified by the "kspace_style"_kspace_style.html command. Either the PPPM or Ewald solvers can be used. For the NaCL example problem, these pair style and bond style settings are used: pair_style born/coul/long/cs 20.0 20.0 pair_coeff * * 0.0 1.000 0.00 0.00 0.00 pair_coeff 3 3 487.0 0.23768 0.00 1.05 0.50 #Na-Na pair_coeff 3 4 145134.0 0.23768 0.00 6.99 8.70 #Na-Cl pair_coeff 4 4 405774.0 0.23768 0.00 72.40 145.40 #Cl-Cl :pre bond_style harmonic bond_coeff 1 63.014 0.0 bond_coeff 2 25.724 0.0 :pre When running dynamics with the adiabatic core/shell model, the following issues should be considered. Since the relative motion of the core and shell particles corresponds to the polarization, typical -thermostats can alter the polarization behaviour, meaining the shell -will not react freely to its electrostatic environment. Therefore +thermostats can alter the polarization behaviour, meaning the shell +will not react freely to its electrostatic environment. This is +critical during the equilibration of the system. Therefore it's typically desirable to decouple the relative motion of the core/shell pair, which is an imaginary degree of freedom, from the real physical system. To do that, the "compute temp/cs"_compute_temp_cs.html command can be used, in conjunction with any of the thermostat fixes, such as "fix nvt"_fix_nh.html or "fix langevin"_fix_langevin. This compute uses the center-of-mass velocity of the core/shell pairs to calculate a temperature, and insures that velocity is what is rescaled for thermostatting purposes. This compute also works for a system with both core/shell pairs and non-polarized ions (ions without an attached satellite particle). The "compute temp/cs"_compute_temp_cs.html command requires input of two groups, one for the core atoms, another for the shell atoms. Non-polarized ions which might also be included in the treated system should not be included into either of these groups, they are taken into account by the {group-ID} (2nd argument) of the compute. The groups can be defined using the "group {type}"_group.html command. Note that to perform thermostatting using this definition of temperature, the "fix modify temp"_fix_modify.html command should be -used to assign the comptue to the thermostat fix. Likewise the +used to assign the compute to the thermostat fix. Likewise the "thermo_modify temp"_thermo_modify.html command can be used to make -this temperature be output for the overall system. +this temperature be output for the overall system. For the NaCl example, this can be done as follows: group cores type 1 2 group shells type 3 4 compute CSequ all temp/cs cores shells fix thermoberendsen all temp/berendsen 1427 1427 0.4 # thermostat for the true physical system fix thermostatequ all nve # integrator as needed for the berendsen thermostat fix_modify thermoberendsen temp CSequ thermo_modify temp CSequ # output of center-of-mass derived temperature :pre +If "compute temp/cs"_compute_temp_cs.html is used, the decoupled +relative motion of the core and the shell should in theory be +stable. However numerical fluctuation can introduce a small +momentum to the system, which is noticable over long trajectories. +Therefore it is recomendable to use the "fix +momentum"_fix_momentum.html command in combination with "compute +temp/cs"_compute_temp_cs.html when equilibrating the system to +prevent any drift. + When intializing the velocities of a system with core/shell pairs, it is also desirable to not introduce energy into the relative motion of the core/shell particles, but only assign a center-of-mass velocity to the pairs. This can be done by using the {bias} keyword of the "velocity create"_velocity.html command and assigning the "compute temp/cs"_compute_temp_cs.html command to the {temp} keyword of the "velocity"_velocity.html commmand, e.g. velocity all create 1427 134 bias yes temp CSequ velocity all scale 1427 temp CSequ :pre It is important to note that the polarizability of the core/shell pairs is based on their relative motion. Therefore the choice of spring force and mass ratio need to ensure much faster relative motion of the 2 atoms within the core/shell pair than their center-of-mass velocity. This allow the shells to effectively react instantaneously to the electrostatic environment. This fast movement also limits the timestep size that can be used. -Additionally, the mass mismatch of the core and shell particles means -that only a small amount of energy is transfered to the decoupled -imaginary degrees of freedom. However, this transfer will typically -lead to a a small drift in total energy over time. This internal -energy can be monitored using the "compute -chunk/atom"_compute_chunk_atom.html and "compute +The primary literature of the adiabatic core/shell model suggests that +the fast relative motion of the core/shell pairs only allows negligible +energy transfer to the environment. Therefore it is not intended to +decouple the core/shell degree of freedom from the physical system +during production runs. In other words, the "compute +temp/cs"_compute_temp_cs.html command should not be used during +production runs and is only required during equilibration. This way one +is consistent with literature (based on the code packages DL_POLY or +GULP for instance). + +The mentioned energy transfer will typically lead to a a small drift +in total energy over time. This internal energy can be monitored +using the "compute chunk/atom"_compute_chunk_atom.html and "compute temp/chunk"_compute_temp_chunk.html commands. The internal kinetic energies of each core/shell pair can then be summed using the sum() special function of the "variable"_variable.html command. Or they can be time/averaged and output using the "fix ave/time"_fix_ave_time.html command. To use these commands, each core/shell pair must be defined as a "chunk". If each core/shell pair is defined as its own molecule, the molecule ID can be used to define the chunks. If cores are bonded to each other to form larger molecules, the chunks can be identified by the "fix property/atom"_fix_property_atom.html via assigning a core/shell ID to each atom using a special field in the data file read by the "read_data"_read_data.html command. This field can then be accessed by the "compute property/atom"_compute_property_atom.html command, to use as input to the "compute chunk/atom"_compute_chunk_atom.html command to define the core/shell pairs as chunks. For example, fix csinfo all property/atom i_CSID # property/atom command read_data NaCl_CS_x0.1_prop.data fix csinfo NULL CS-Info # atom property added in the data-file compute prop all property/atom i_CSID compute cs_chunk all chunk/atom c_prop compute cstherm all temp/chunk cs_chunk temp internal com yes cdof 3.0 # note the chosen degrees of freedom for the core/shell pairs fix ave_chunk all ave/time 10 1 10 c_cstherm file chunk.dump mode vector :pre The additional section in the date file would be formatted like this: CS-Info # header of additional section :pre 1 1 # column 1 = atom ID, column 2 = core/shell ID 2 1 3 2 4 2 5 3 6 3 7 4 8 4 (...) :pre :line 6.27 Drude induced dipoles :link(howto_27),h4 The thermalized Drude model, similarly to the "core-shell"_#howto_26 model, representes induced dipoles by a pair of charges (the core atom and the Drude particle) connected by a harmonic spring. The Drude model has a number of features aimed at its use in molecular systems ("Lamoureux and Roux"_#Lamoureux): Thermostating of the additional degrees of freedom associated with the induced dipoles at very low temperature, in terms of the reduced coordinates of the Drude particles with respect to their cores. This makes the trajectory close to that of relaxed induced dipoles. :ulb,l Consistent definition of 1-2 to 1-4 neighbors. A core-Drude particle pair represents a single (polarizable) atom, so the special screening factors in a covalent structure should be the same for the core and the Drude particle. Drude particles have to inherit the 1-2, 1-3, 1-4 special neighbor relations from their respective cores. :l Stabilization of the interactions between induced dipoles. Drude dipoles on covalently bonded atoms interact too strongly due to the short distances, so an atom may capture the Drude particle of a neighbor, or the induced dipoles within the same molecule may align too much. To avoid this, damping at short range can be done by Thole functions (for which there are physical grounds). This Thole damping is applied to the point charges composing the induced dipole (the charge of the Drude particle and the opposite charge on the core, not to the total charge of the core atom). :l,ule A detailed tutorial covering the usage of Drude induced dipoles in LAMMPS is "available here"_tutorial_drude.html. As with the core-shell model, the cores and Drude particles should appear in the data file as standard atoms. The same holds for the springs between them, which are described by standard harmonic bonds. The nature of the atoms (core, Drude particle or non-polarizable) is specified via the "fix drude"_fix_drude.html command. The special list of neighbors is automatically refactored to account for the equivalence of core and Drude particles as regards special 1-2 to 1-4 screening. It may be necessary to use the {extra} keyword of the "special_bonds"_special_bonds.html command. If using "fix shake"_fix_shake.html, make sure no Drude particle is in this fix group. There are two ways to thermostat the Drude particles at a low temperature: use either "fix langevin/drude"_fix_langevin_drude.html for a Langevin thermostat, or "fix drude/transform/*"_fix_drude_transform.html for a Nose-Hoover thermostat. The former requires use of the command "comm_modify vel yes"_comm_modify.html. The latter requires two separate integration fixes like {nvt} or {npt}. The correct temperatures of the reduced degrees of freedom can be calculated using the "compute temp/drude"_compute_temp_drude.html. This requires also to use the command {comm_modify vel yes}. Short-range damping of the induced dipole interactions can be achieved using Thole functions through the the "pair style thole"_pair_thole.html in "pair_style hybrid/overlay"_pair_hybrid.html with a Coulomb pair style. It may be useful to use {coul/long/cs} or similar from the CORESHELL package if the core and Drude particle come too close, which can cause numerical issues. :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). :link(MitchellFinchham) [(Mitchell and Finchham)] Mitchell, Finchham, J Phys Condensed Matter, 5, 1031-1038 (1993). :link(Lamoureux) [(Lamoureux and Roux)] G. Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003) diff --git a/doc/Section_packages.html b/doc/Section_packages.html index e66095d9b..eaa221f45 100644 --- a/doc/Section_packages.html +++ b/doc/Section_packages.html @@ -1,1428 +1,1521 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>4. Packages — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <link rel="next" title="5. Accelerating LAMMPS performance" href="Section_accelerate.html"/> <link rel="prev" title="3. Commands" href="Section_commands.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="">4. Packages</a><ul> <li class="toctree-l2"><a class="reference internal" href="#standard-packages">4.1. Standard packages</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-packages">4.2. User packages</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-atc-package">4.3. USER-ATC package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-awpmd-package">4.4. USER-AWPMD package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-cg-cmm-package">4.5. USER-CG-CMM package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-colvars-package">4.6. USER-COLVARS package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-cuda-package">4.7. USER-CUDA package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-diffraction-package">4.8. USER-DIFFRACTION package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-drude-package">4.9. USER-DRUDE package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-eff-package">4.10. USER-EFF package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-fep-package">4.11. USER-FEP package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-h5md-package">4.12. USER-H5MD package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-intel-package">4.13. USER-INTEL package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-lb-package">4.14. USER-LB package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-misc-package">4.15. USER-MISC package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-molfile-package">4.16. USER-MOLFILE package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-omp-package">4.17. USER-OMP package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-phonon-package">4.18. USER-PHONON package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-qmmm-package">4.19. USER-QMMM package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-qtb-package">4.20. USER-QTB package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-reaxc-package">4.21. USER-REAXC package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-smd-package">4.22. USER-SMD package</a></li> -<li class="toctree-l2"><a class="reference internal" href="#user-sph-package">4.23. USER-SPH package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#build-instructions-for-compress-package">4.2. Build instructions for COMPRESS package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#build-instructions-for-gpu-package">4.3. Build instructions for GPU package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#build-instructions-for-kim-package">4.4. Build instructions for KIM package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#build-instructions-for-kokkos-package">4.5. Build instructions for KOKKOS package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#build-instructions-for-kspace-package">4.6. Build instructions for KSPACE package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#build-instructions-for-meam-package">4.7. Build instructions for MEAM package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#build-instructions-for-poems-package">4.8. Build instructions for POEMS package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#build-instructions-for-python-package">4.9. Build instructions for PYTHON package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#build-instructions-for-reax-package">4.10. Build instructions for REAX package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#build-instructions-for-voronoi-package">4.11. Build instructions for VORONOI package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#build-instructions-for-xtc-package">4.12. Build instructions for XTC package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-packages">4.13. User packages</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-atc-package">4.14. USER-ATC package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-awpmd-package">4.15. USER-AWPMD package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-cg-cmm-package">4.16. USER-CG-CMM package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-colvars-package">4.17. USER-COLVARS package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-cuda-package">4.18. USER-CUDA package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-diffraction-package">4.19. USER-DIFFRACTION package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-drude-package">4.20. USER-DRUDE package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-eff-package">4.21. USER-EFF package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-fep-package">4.22. USER-FEP package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-h5md-package">4.23. USER-H5MD package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-intel-package">4.24. USER-INTEL package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-lb-package">4.25. USER-LB package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-misc-package">4.26. USER-MISC package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-molfile-package">4.27. USER-MOLFILE package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-omp-package">4.28. USER-OMP package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-phonon-package">4.29. USER-PHONON package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-qmmm-package">4.30. USER-QMMM package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-qtb-package">4.31. USER-QTB package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-reaxc-package">4.32. USER-REAXC package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-smd-package">4.33. USER-SMD package</a></li> +<li class="toctree-l2"><a class="reference internal" href="#user-sph-package">4.34. USER-SPH package</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>4. Packages</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> <div class="rst-footer-buttons" style="margin-bottom: 1em" role="navigation" aria-label="footer navigation"> <a href="Section_accelerate.html" class="btn btn-neutral float-right" title="5. Accelerating LAMMPS performance" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="Section_commands.html" class="btn btn-neutral" title="3. Commands" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="packages"> <h1>4. Packages<a class="headerlink" href="#packages" title="Permalink to this headline">¶</a></h1> <p>This section gives a quick overview of the add-on packages that extend LAMMPS functionality.</p> <div class="line-block"> <div class="line">4.1 <a class="reference internal" href="#pkg-1"><span>Standard packages</span></a></div> <div class="line">4.2 <a class="reference internal" href="#pkg-2"><span>User packages</span></a></div> <div class="line"><br /></div> </div> <p>LAMMPS includes many optional packages, which 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” from within the src directory of the LAMMPS distribution.</p> <p>See <a class="reference internal" href="Section_start.html#start-3"><span>Section_start 3</span></a> of the manual for details on how to include/exclude specific packages as part of the LAMMPS build process, and for more details about the differences -between standard packages and user packages in LAMMPS.</p> -<p>Below, the packages currently availabe in LAMMPS are listed. For -standard packages, just a one-line description is given. For user -packages, more details are provided.</p> +between standard packages and user packages.</p> +<p>Unless otherwise noted below, every package is independent of all the +others. I.e. any package can be included or excluded in a LAMMPS +build, independent of all other packages. However, note that some +packages include commands derived from commands in other packages. If +the other package is not installed, the derived command from the new +package will also not be installed when you include the new one. +E.g. the pair lj/cut/coul/long/omp command from the USER-OMP package +will not be installed as part of the USER-OMP package if the KSPACE +package is not also installed, since it contains the pair +lj/cut/coul/long command. If you later install the KSPACE pacakge and +the USER-OMP package is already installed, both the pair +lj/cut/coul/long and lj/cut/coul/long/omp commands will be installed.</p> +<p>The two tables below list currently available packages in LAMMPS, with +a one-line descriptions of each. The sections below give a few more +details, including instructions for building LAMMPS with the package, +either via the make command or the Make.py tool described in <a class="reference internal" href="Section_start.html#start-4"><span>Section 2.4</span></a>.</p> <div class="section" id="standard-packages"> <span id="pkg-1"></span><h2>4.1. Standard packages<a class="headerlink" href="#standard-packages" title="Permalink to this headline">¶</a></h2> -<p>The current list of standard packages is as follows:</p> +<p>The current list of standard packages is as follows.</p> <table border="1" class="docutils"> <colgroup> <col width="7%" /> <col width="23%" /> <col width="24%" /> <col width="32%" /> <col width="7%" /> <col width="7%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td>Package</td> <td>Description</td> <td>Author(s)</td> <td>Doc page</td> <td>Example</td> <td>Library</td> </tr> <tr class="row-even"><td>ASPHERE</td> <td>aspherical particles</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="Section_howto.html#howto-14"><span>Section_howto 6.14</span></a></td> <td>ellipse</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>BODY</td> <td>body-style particles</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="body.html"><em>body</em></a></td> <td>body</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>CLASS2</td> <td>class 2 force fields</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="pair_class2.html"><em>pair_style lj/class2</em></a></td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>COLLOID</td> <td>colloidal particles</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="atom_style.html"><em>atom_style colloid</em></a></td> <td>colloid</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>COMPRESS</td> <td>I/O compression</td> <td>Axel Kohlmeyer (Temple U)</td> <td><a class="reference internal" href="dump.html"><em>dump */gz</em></a></td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>CORESHELL</td> <td>adiabatic core/shell model</td> <td>Hendrik Heenen (Technical U of Munich)</td> <td><a class="reference internal" href="Section_howto.html#howto-25"><span>Section_howto 6.25</span></a></td> <td>coreshell</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>DIPOLE</td> <td>point dipole particles</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="pair_dipole.html"><em>pair_style dipole/cut</em></a></td> <td>dipole</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>FLD</td> <td>Fast Lubrication Dynamics</td> <td>Kumar & Bybee & Higdon (1)</td> <td><a class="reference internal" href="pair_lubricateU.html"><em>pair_style lubricateU</em></a></td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>GPU</td> <td>GPU-enabled styles</td> <td>Mike Brown (ORNL)</td> <td><a class="reference internal" href="accelerate_gpu.html"><em>Section accelerate</em></a></td> <td>gpu</td> <td>lib/gpu</td> </tr> <tr class="row-odd"><td>GRANULAR</td> <td>granular systems</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="Section_howto.html#howto-6"><span>Section_howto 6.6</span></a></td> <td>pour</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>KIM</td> <td>openKIM potentials</td> <td>Smirichinski & Elliot & Tadmor (3)</td> <td><a class="reference internal" href="pair_kim.html"><em>pair_style kim</em></a></td> <td>kim</td> <td>KIM</td> </tr> <tr class="row-odd"><td>KOKKOS</td> <td>Kokkos-enabled styles</td> <td>Trott & Edwards (4)</td> <td><a class="reference internal" href="accelerate_kokkos.html"><em>Section_accelerate</em></a></td> <td>kokkos</td> <td>lib/kokkos</td> </tr> <tr class="row-even"><td>KSPACE</td> <td>long-range Coulombic solvers</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="kspace_style.html"><em>kspace_style</em></a></td> <td>peptide</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>MANYBODY</td> <td>many-body potentials</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="pair_tersoff.html"><em>pair_style tersoff</em></a></td> <td>shear</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>MEAM</td> <td>modified EAM potential</td> <td>Greg Wagner (Sandia)</td> <td><a class="reference internal" href="pair_meam.html"><em>pair_style meam</em></a></td> <td>meam</td> <td>lib/meam</td> </tr> <tr class="row-odd"><td>MC</td> <td>Monte Carlo options</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="fix_gcmc.html"><em>fix gcmc</em></a></td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>MOLECULE</td> <td>molecular system force fields</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="Section_howto.html#howto-3"><span>Section_howto 6.3</span></a></td> <td>peptide</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>OPT</td> <td>optimized pair styles</td> <td>Fischer & Richie & Natoli (2)</td> <td><a class="reference internal" href="accelerate_opt.html"><em>Section accelerate</em></a></td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>PERI</td> <td>Peridynamics models</td> <td>Mike Parks (Sandia)</td> <td><a class="reference internal" href="pair_peri.html"><em>pair_style peri</em></a></td> <td>peri</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>POEMS</td> <td>coupled rigid body motion</td> <td>Rudra Mukherjee (JPL)</td> <td><a class="reference internal" href="fix_poems.html"><em>fix poems</em></a></td> <td>rigid</td> <td>lib/poems</td> </tr> <tr class="row-even"><td>PYTHON</td> <td>embed Python code in an input script</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="python.html"><em>python</em></a></td> <td>python</td> <td>lib/python</td> </tr> <tr class="row-odd"><td>REAX</td> <td>ReaxFF potential</td> <td>Aidan Thompson (Sandia)</td> <td><a class="reference internal" href="pair_reax.html"><em>pair_style reax</em></a></td> <td>reax</td> <td>lib/reax</td> </tr> <tr class="row-even"><td>REPLICA</td> <td>multi-replica methods</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="Section_howto.html#howto-5"><span>Section_howto 6.5</span></a></td> <td>tad</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>RIGID</td> <td>rigid bodies</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="fix_rigid.html"><em>fix rigid</em></a></td> <td>rigid</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>SHOCK</td> <td>shock loading methods</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="fix_msst.html"><em>fix msst</em></a></td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>SNAP</td> <td>quantum-fit potential</td> <td>Aidan Thompson (Sandia)</td> <td><a class="reference internal" href="pair_snap.html"><em>pair snap</em></a></td> <td>snap</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>SRD</td> <td>stochastic rotation dynamics</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="fix_srd.html"><em>fix srd</em></a></td> <td>srd</td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>VORONOI</td> <td>Voronoi tesselations</td> <td>Daniel Schwen (LANL)</td> <td><a class="reference internal" href="compute_voronoi_atom.html"><em>compute voronoi/atom</em></a></td> <td><ul class="first last simple"> <li></li> </ul> </td> <td>Voro++</td> </tr> <tr class="row-even"><td>XTC</td> <td>dumps in XTC format</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><a class="reference internal" href="dump.html"><em>dump</em></a></td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr> </tbody> </table> <p>The “Authors” column lists a name(s) if a specific person is -responible for creating and maintaining the package.</p> +responible for creating and maintaining the package. +More details on +multiple authors are give below.</p> <p>(1) The FLD package was created by Amit Kumar and Michael Bybee from Jonathan Higdon’s group at UIUC.</p> <p>(2) The OPT package was created by James Fischer (High Performance Technologies), David Richie, and Vincent Natoli (Stone Ridge Technolgy).</p> <p>(3) The KIM package was created by Valeriu Smirichinski, Ryan Elliott, and Ellad Tadmor (U Minn).</p> <p>(4) The KOKKOS package was created primarily by Christian Trott (Sandia). It uses the Kokkos library which was developed by Carter Edwards, Christian, and collaborators at Sandia.</p> <p>The “Doc page” column links to either a portion of the <a class="reference internal" href="Section_howto.html"><em>Section_howto</em></a> of the manual, or an input script command implemented as part of the package.</p> <p>The “Example” column is a sub-directory in the examples directory of the distribution which has an input script that uses the package. E.g. “peptide” refers to the examples/peptide directory.</p> <p>The “Library” column lists an external library which must be built first and which LAMMPS links to when it is built. If it is listed as lib/package, then the code for the library is under the lib directory of the LAMMPS distribution. See the lib/package/README file for info on how to build the library. If it is not listed as lib/package, then it is a third-party library not included in the LAMMPS distribution. See the src/package/README or src/package/Makefile.lammps file for info on where to download the library. <a class="reference internal" href="Section_start.html#start-3-3"><span>Section start</span></a> of the manual also gives details on how to build LAMMPS with both kinds of auxiliary libraries.</p> +<p>Except where explained below, all of these packages can be installed, +and LAMMPS re-built, by issuing these commands from the src dir.</p> +<div class="highlight-python"><div class="highlight"><pre>make yes-package +make machine +or +Make.py -p package -a machine +</pre></div> +</div> +<p>To un-install the package and re-build LAMMPS without it:</p> +<div class="highlight-python"><div class="highlight"><pre>make no-package +make machine +or +Make.py -p ^package -a machine +</pre></div> +</div> +<p>“Package” is the name of the package in lower-case letters, +e.g. asphere or rigid, and “machine” is the build target, e.g. mpi or +serial.</p> +</div> +<div class="section" id="build-instructions-for-compress-package"> +<h2>4.2. Build instructions for COMPRESS package<a class="headerlink" href="#build-instructions-for-compress-package" title="Permalink to this headline">¶</a></h2> +</div> +<div class="section" id="build-instructions-for-gpu-package"> +<h2>4.3. Build instructions for GPU package<a class="headerlink" href="#build-instructions-for-gpu-package" title="Permalink to this headline">¶</a></h2> +</div> +<div class="section" id="build-instructions-for-kim-package"> +<h2>4.4. Build instructions for KIM package<a class="headerlink" href="#build-instructions-for-kim-package" title="Permalink to this headline">¶</a></h2> +</div> +<div class="section" id="build-instructions-for-kokkos-package"> +<h2>4.5. Build instructions for KOKKOS package<a class="headerlink" href="#build-instructions-for-kokkos-package" title="Permalink to this headline">¶</a></h2> +</div> +<div class="section" id="build-instructions-for-kspace-package"> +<h2>4.6. Build instructions for KSPACE package<a class="headerlink" href="#build-instructions-for-kspace-package" title="Permalink to this headline">¶</a></h2> +</div> +<div class="section" id="build-instructions-for-meam-package"> +<h2>4.7. Build instructions for MEAM package<a class="headerlink" href="#build-instructions-for-meam-package" title="Permalink to this headline">¶</a></h2> +</div> +<div class="section" id="build-instructions-for-poems-package"> +<h2>4.8. Build instructions for POEMS package<a class="headerlink" href="#build-instructions-for-poems-package" title="Permalink to this headline">¶</a></h2> +</div> +<div class="section" id="build-instructions-for-python-package"> +<h2>4.9. Build instructions for PYTHON package<a class="headerlink" href="#build-instructions-for-python-package" title="Permalink to this headline">¶</a></h2> +</div> +<div class="section" id="build-instructions-for-reax-package"> +<h2>4.10. Build instructions for REAX package<a class="headerlink" href="#build-instructions-for-reax-package" title="Permalink to this headline">¶</a></h2> +</div> +<div class="section" id="build-instructions-for-voronoi-package"> +<h2>4.11. Build instructions for VORONOI package<a class="headerlink" href="#build-instructions-for-voronoi-package" title="Permalink to this headline">¶</a></h2> +</div> +<div class="section" id="build-instructions-for-xtc-package"> +<h2>4.12. Build instructions for XTC package<a class="headerlink" href="#build-instructions-for-xtc-package" title="Permalink to this headline">¶</a></h2> +<hr class="docutils" /> </div> <div class="section" id="user-packages"> -<span id="pkg-2"></span><h2>4.2. User packages<a class="headerlink" href="#user-packages" title="Permalink to this headline">¶</a></h2> +<span id="pkg-2"></span><h2>4.13. User packages<a class="headerlink" href="#user-packages" title="Permalink to this headline">¶</a></h2> <p>The current list of user-contributed packages is as follows:</p> <table border="1" class="docutils"> <colgroup> <col width="8%" /> <col width="21%" /> <col width="22%" /> <col width="25%" /> <col width="8%" /> <col width="10%" /> <col width="6%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td>Package</td> <td>Description</td> <td>Author(s)</td> <td>Doc page</td> <td>Example</td> <td>Pic/movie</td> <td>Library</td> </tr> <tr class="row-even"><td>USER-ATC</td> <td>atom-to-continuum coupling</td> <td>Jones & Templeton & Zimmerman (1)</td> <td><a class="reference internal" href="fix_atc.html"><em>fix atc</em></a></td> <td>USER/atc</td> <td><a class="reference external" href="http://lammps.sandia.gov/pictures.html#atc">atc</a></td> <td>lib/atc</td> </tr> <tr class="row-odd"><td>USER-AWPMD</td> <td>wave-packet MD</td> <td>Ilya Valuev (JIHT)</td> <td><a class="reference internal" href="pair_awpmd.html"><em>pair_style awpmd/cut</em></a></td> <td>USER/awpmd</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td>lib/awpmd</td> </tr> <tr class="row-even"><td>USER-CG-CMM</td> <td>coarse-graining model</td> <td>Axel Kohlmeyer (Temple U)</td> <td><a class="reference internal" href="pair_sdk.html"><em>pair_style lj/sdk</em></a></td> <td>USER/cg-cmm</td> <td><a class="reference external" href="http://lammps.sandia.gov/pictures.html#cg">cg</a></td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>USER-COLVARS</td> <td>collective variables</td> <td>Fiorin & Henin & Kohlmeyer (2)</td> <td><a class="reference internal" href="fix_colvars.html"><em>fix colvars</em></a></td> <td>USER/colvars</td> <td><a class="reference external" href="colvars">colvars</a></td> <td>lib/colvars</td> </tr> <tr class="row-even"><td>USER-CUDA</td> <td>NVIDIA GPU styles</td> <td>Christian Trott (U Tech Ilmenau)</td> <td><a class="reference internal" href="accelerate_cuda.html"><em>Section accelerate</em></a></td> <td>USER/cuda</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td>lib/cuda</td> </tr> <tr class="row-odd"><td>USER-DIFFRACTION</td> <td>virutal x-ray and electron diffraction</td> <td>Shawn Coleman (ARL)</td> <td><a class="reference internal" href="compute_xrd.html"><em>compute xrd</em></a></td> <td>USER/diffraction</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>USER-DRUDE</td> <td>Drude oscillators</td> <td>Dequidt & Devemy & Padua (3)</td> <td><a class="reference internal" href="tutorial_drude.html"><em>tutorial</em></a></td> <td>USER/drude</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>USER-EFF</td> <td>electron force field</td> <td>Andres Jaramillo-Botero (Caltech)</td> <td><a class="reference internal" href="pair_eff.html"><em>pair_style eff/cut</em></a></td> <td>USER/eff</td> <td><a class="reference external" href="http://lammps.sandia.gov/movies.html#eff">eff</a></td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>USER-FEP</td> <td>free energy perturbation</td> <td>Agilio Padua (U Blaise Pascal Clermont-Ferrand)</td> <td><a class="reference internal" href="compute_fep.html"><em>compute fep</em></a></td> <td>USER/fep</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>USER-H5MD</td> <td>dump output via HDF5</td> <td>Pierre de Buyl (KU Leuven)</td> <td><a class="reference internal" href="dump_h5md.html"><em>dump h5md</em></a></td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> <td>lib/h5md</td> </tr> <tr class="row-even"><td>USER-INTEL</td> <td>Vectorized CPU and Intel(R) coprocessor styles</td> <td><ol class="first last upperalpha simple" start="23"> <li>Michael Brown (Intel)</li> </ol> </td> <td><a class="reference internal" href="accelerate_intel.html"><em>Section accelerate</em></a></td> <td>examples/intel</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>USER-LB</td> <td>Lattice Boltzmann fluid</td> <td>Colin Denniston (U Western Ontario)</td> <td><a class="reference internal" href="fix_lb_fluid.html"><em>fix lb/fluid</em></a></td> <td>USER/lb</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>USER-MISC</td> <td>single-file contributions</td> <td>USER-MISC/README</td> <td>USER-MISC/README</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>USER-MOLFILE</td> <td><a class="reference external" href="http://www.ks.uiuc.edu/Research/vmd">VMD</a> molfile plug-ins</td> <td>Axel Kohlmeyer (Temple U)</td> <td><a class="reference internal" href="dump_molfile.html"><em>dump molfile</em></a></td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> <td>VMD-MOLFILE</td> </tr> <tr class="row-even"><td>USER-OMP</td> <td>OpenMP threaded styles</td> <td>Axel Kohlmeyer (Temple U)</td> <td><a class="reference internal" href="accelerate_omp.html"><em>Section accelerate</em></a></td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>USER-PHONON</td> <td>phonon dynamical matrix</td> <td>Ling-Ti Kong (Shanghai Jiao Tong U)</td> <td><a class="reference internal" href="fix_phonon.html"><em>fix phonon</em></a></td> <td>USER/phonon</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>USER-QMMM</td> <td>QM/MM coupling</td> <td>Axel Kohlmeyer (Temple U)</td> <td><a class="reference internal" href="fix_qmmm.html"><em>fix qmmm</em></a></td> <td>USER/qmmm</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td>lib/qmmm</td> </tr> <tr class="row-odd"><td>USER-QTB</td> <td>quantum nuclear effects</td> <td>Yuan Shen (Stanford)</td> <td><a class="reference internal" href="fix_qtb.html"><em>fix qtb</em></a> <a class="reference internal" href="fix_qbmsst.html"><em>fix_qbmsst</em></a></td> <td>qtb</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>USER-QUIP</td> <td>QUIP/libatoms interface</td> <td>Albert Bartok-Partay (U Cambridge)</td> <td><a class="reference internal" href="pair_quip.html"><em>pair_style quip</em></a></td> <td>USER/quip</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td>lib/quip</td> </tr> <tr class="row-odd"><td>USER-REAXC</td> <td>C version of ReaxFF</td> <td>Metin Aktulga (LBNL)</td> <td><a class="reference internal" href="pair_reax_c.html"><em>pair_style reaxc</em></a></td> <td>reax</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>USER-SMD</td> <td>smoothed Mach dynamics</td> <td>Georg Ganzenmuller (EMI)</td> <td><a class="reference external" href="PDF/SMD_LAMMPS_userguide.pdf">userguide.pdf</a></td> <td>USER/smd</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td>USER-SPH</td> <td>smoothed particle hydrodynamics</td> <td>Georg Ganzenmuller (EMI)</td> <td><a class="reference external" href="PDF/SPH_LAMMPS_userguide.pdf">userguide.pdf</a></td> <td>USER/sph</td> <td><a class="reference external" href="http://lammps.sandia.gov/movies.html#sph">sph</a></td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-even"><td>USER-TALLY</td> <td>Pairwise tallied computes</td> <td>Axel Kohlmeyer (Temple U)</td> <td><code class="xref doc docutils literal"><span class="pre">compute</span></code></td> <td>USER/tally</td> <td><ul class="first last simple"> <li></li> </ul> </td> <td><ul class="first last simple"> <li></li> </ul> </td> </tr> <tr class="row-odd"><td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr> </tbody> </table> <p>The “Authors” column lists a name(s) if a specific person is responible for creating and maintaining the package.</p> -<p>If the Library is not listed as lib/package, then it is a third-party -library not included in the LAMMPS distribution. See the -src/package/Makefile.lammps file for info on where to download the -library from.</p> -<p>(2) The ATC package was created by Reese Jones, Jeremy Templeton, and +<p>(1) The ATC package was created by Reese Jones, Jeremy Templeton, and Jon Zimmerman (Sandia).</p> <p>(2) The COLVARS package was created by Axel Kohlmeyer (Temple U) using the colvars module library written by Giacomo Fiorin (Temple U) and Jerome Henin (LISM, Marseille, France).</p> <p>(3) The DRUDE package was created by Alain Dequidt (U Blaise Pascal Clermont-Ferrand) and co-authors Julien Devemy (CNRS) and Agilio Padua (U Blaise Pascal).</p> +<p>If the Library is not listed as lib/package, then it is a third-party +library not included in the LAMMPS distribution. See the +src/package/Makefile.lammps file for info on where to download the +library from.</p> <p>The “Doc page” column links to either a portion of the <a class="reference internal" href="Section_howto.html"><em>Section_howto</em></a> of the manual, or an input script command implemented as part of the package, or to additional -documentation provided witht he package.</p> +documentation provided within the package.</p> <p>The “Example” column is a sub-directory in the examples directory of the distribution which has an input script that uses the package. E.g. “peptide” refers to the examples/peptide directory. USER/cuda refers to the examples/USER/cuda directory.</p> <p>The “Library” column lists an external library which must be built first and which LAMMPS links to when it is built. If it is listed as lib/package, then the code for the library is under the lib directory of the LAMMPS distribution. See the lib/package/README file for info on how to build the library. If it is not listed as lib/package, then it is a third-party library not included in the LAMMPS distribution. See the src/package/Makefile.lammps file for info on where to download the library. <a class="reference internal" href="Section_start.html#start-3-3"><span>Section start</span></a> of the manual also gives details on how to build LAMMPS with both kinds of auxiliary libraries.</p> -<p>More details on each package, from the USER-<a href="#id2"><span class="problematic" id="id3">*</span></a>/README file is given -below.</p> +<p>Except where explained below, all of these packages can be installed, +and LAMMPS re-built, by issuing these commands from the src dir.</p> +<div class="highlight-python"><div class="highlight"><pre>make yes-user-package +make machine +or +Make.py -p package -a machine +</pre></div> +</div> +<p>To un-install the package and re-build LAMMPS without it:</p> +<div class="highlight-python"><div class="highlight"><pre>make no-user-package +make machine +or +Make.py -p ^package -a machine +</pre></div> +</div> +<p>“Package” is the name of the package (in this case without the user +prefix) in lower-case letters, e.g. drude or phonon, and “machine” is +the build target, e.g. mpi or serial.</p> </div> -<hr class="docutils" /> <div class="section" id="user-atc-package"> -<h2>4.3. USER-ATC package<a class="headerlink" href="#user-atc-package" title="Permalink to this headline">¶</a></h2> +<h2>4.14. USER-ATC package<a class="headerlink" href="#user-atc-package" title="Permalink to this headline">¶</a></h2> <p>This package implements a “fix atc” command which can be used in a LAMMPS input script. This fix can be employed to either do concurrent coupling of MD with FE-based physics surrogates or on-the-fly post-processing of atomic information to continuum fields.</p> <p>See the doc page for the fix atc command to get started. At the bottom of the doc page are many links to additional documentation contained in the doc/USER/atc directory.</p> <p>There are example scripts for using this package in examples/USER/atc.</p> <p>This package uses an external library in lib/atc which must be compiled before making LAMMPS. See the lib/atc/README file and the LAMMPS manual for information on building LAMMPS with external libraries.</p> <p>The primary people who created this package are Reese Jones (rjones at sandia.gov), Jeremy Templeton (jatempl at sandia.gov) and Jon Zimmerman (jzimmer at sandia.gov) at Sandia. Contact them directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-awpmd-package"> -<h2>4.4. USER-AWPMD package<a class="headerlink" href="#user-awpmd-package" title="Permalink to this headline">¶</a></h2> +<h2>4.15. USER-AWPMD package<a class="headerlink" href="#user-awpmd-package" title="Permalink to this headline">¶</a></h2> <p>This package contains a LAMMPS implementation of the Antisymmetrized Wave Packet Molecular Dynamics (AWPMD) method.</p> <p>See the doc page for the pair_style awpmd/cut command to get started.</p> <p>There are example scripts for using this package in examples/USER/awpmd.</p> <p>This package uses an external library in lib/awpmd which must be compiled before making LAMMPS. See the lib/awpmd/README file and the LAMMPS manual for information on building LAMMPS with external libraries.</p> <p>The person who created this package is Ilya Valuev at the JIHT in Russia (valuev at physik.hu-berlin.de). Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-cg-cmm-package"> -<h2>4.5. USER-CG-CMM package<a class="headerlink" href="#user-cg-cmm-package" title="Permalink to this headline">¶</a></h2> +<h2>4.16. USER-CG-CMM package<a class="headerlink" href="#user-cg-cmm-package" title="Permalink to this headline">¶</a></h2> <p>This package implements 3 commands which can be used in a LAMMPS input script:</p> <ul class="simple"> <li>pair_style lj/sdk</li> <li>pair_style lj/sdk/coul/long</li> <li>angle_style sdk</li> </ul> <p>These styles allow coarse grained MD simulations with the parametrization of Shinoda, DeVane, Klein, Mol Sim, 33, 27 (2007) (SDK), with extensions to simulate ionic liquids, electrolytes, lipids and charged amino acids.</p> <p>See the doc pages for these commands for details.</p> <p>There are example scripts for using this package in examples/USER/cg-cmm.</p> <p>This is the second generation implementation reducing the the clutter of the previous version. For many systems with electrostatics, it will be faster to use pair_style hybrid/overlay with lj/sdk and coul/long instead of the combined lj/sdk/coul/long style. since the number of charged atom types is usually small. For any other coulomb interactions this is now required. To exploit this property, the use of the kspace_style pppm/cg is recommended over regular pppm. For all new styles, input file backward compatibility is provided. The old implementation is still available through appending the /old suffix. These will be discontinued and removed after the new implementation has been fully validated.</p> <p>The current version of this package should be considered beta quality. The CG potentials work correctly for “normal” situations, but have not been testing with all kinds of potential parameters and simulation systems.</p> <p>The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-colvars-package"> -<h2>4.6. USER-COLVARS package<a class="headerlink" href="#user-colvars-package" title="Permalink to this headline">¶</a></h2> +<h2>4.17. USER-COLVARS package<a class="headerlink" href="#user-colvars-package" title="Permalink to this headline">¶</a></h2> <p>This package implements the “fix colvars” command which can be used in a LAMMPS input script.</p> <p>This fix allows to use “collective variables” to implement Adaptive Biasing Force, Metadynamics, Steered MD, Umbrella Sampling and Restraints. This code consists of two parts:</p> <ul class="simple"> <li>A portable collective variable module library written and maintained</li> <li>by Giacomo Fiorin (ICMS, Temple University, Philadelphia, PA, USA) and</li> <li>Jerome Henin (LISM, CNRS, Marseille, France). This code is located in</li> <li>the directory lib/colvars and needs to be compiled first. The colvars</li> <li>fix and an interface layer, exchanges information between LAMMPS and</li> <li>the collective variable module.</li> </ul> <p>See the doc page of <a class="reference internal" href="fix_colvars.html"><em>fix colvars</em></a> for more details.</p> <p>There are example scripts for using this package in examples/USER/colvars</p> <p>This is a very new interface that does not yet support all features in the module and will see future optimizations and improvements. The colvars module library is also available in NAMD has been thoroughly used and tested there. Bugs and problems are likely due to the interface layers code. Thus the current version of this package should be considered beta quality.</p> <p>The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-cuda-package"> -<h2>4.7. USER-CUDA package<a class="headerlink" href="#user-cuda-package" title="Permalink to this headline">¶</a></h2> +<h2>4.18. USER-CUDA package<a class="headerlink" href="#user-cuda-package" title="Permalink to this headline">¶</a></h2> <p>This package provides acceleration of various LAMMPS pair styles, fix styles, compute styles, and long-range Coulombics via PPPM for NVIDIA GPUs.</p> <p>See this section of the manual to get started:</p> <p><span class="xref std std-ref">Section_accelerate</span></p> <p>There are example scripts for using this package in examples/USER/cuda.</p> <p>This package uses an external library in lib/cuda which must be compiled before making LAMMPS. See the lib/cuda/README file and the LAMMPS manual for information on building LAMMPS with external libraries.</p> <p>The person who created this package is Christian Trott at the University of Technology Ilmenau, Germany (christian.trott at tu-ilmenau.de). Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-diffraction-package"> -<h2>4.8. USER-DIFFRACTION package<a class="headerlink" href="#user-diffraction-package" title="Permalink to this headline">¶</a></h2> +<h2>4.19. USER-DIFFRACTION package<a class="headerlink" href="#user-diffraction-package" title="Permalink to this headline">¶</a></h2> <p>This package contains the commands neeed to calculate x-ray and electron diffraction intensities based on kinematic diffraction theory.</p> <p>See these doc pages and their related commands to get started:</p> <ul class="simple"> <li><a class="reference internal" href="compute_xrd.html"><em>compute xrd</em></a></li> <li><a class="reference internal" href="compute_saed.html"><em>compute saed</em></a></li> <li><a class="reference internal" href="fix_saed_vtk.html"><em>fix saed/vtk</em></a></li> </ul> <p>The person who created this package is Shawn P. Coleman (shawn.p.coleman8.ctr at mail.mil) while at the University of Arkansas. Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-drude-package"> -<h2>4.9. USER-DRUDE package<a class="headerlink" href="#user-drude-package" title="Permalink to this headline">¶</a></h2> +<h2>4.20. USER-DRUDE package<a class="headerlink" href="#user-drude-package" title="Permalink to this headline">¶</a></h2> <p>This package implements methods for simulating polarizable systems in LAMMPS using thermalized Drude oscillators.</p> <p>See these doc pages and their related commands to get started:</p> <ul class="simple"> <li><a class="reference internal" href="tutorial_drude.html"><em>Drude tutorial</em></a></li> <li><a class="reference internal" href="fix_drude.html"><em>fix drude</em></a></li> <li><a class="reference internal" href="compute_temp_drude.html"><em>compute temp/drude</em></a></li> <li><a class="reference internal" href="fix_langevin_drude.html"><em>fix langevin/drude</em></a></li> <li><a class="reference internal" href="fix_drude_transform.html"><em>fix drude/transform/...</em></a></li> <li><a class="reference internal" href="pair_thole.html"><em>pair thole</em></a></li> </ul> <p>There are auxiliary tools for using this package in tools/drude.</p> <p>The person who created this package is Alain Dequidt at Universite Blaise Pascal Clermont-Ferrand (alain.dequidt at univ-bpclermont.fr) Contact him directly if you have questions. Co-authors: Julien Devemy, Agilio Padua.</p> </div> <hr class="docutils" /> <div class="section" id="user-eff-package"> -<h2>4.10. USER-EFF package<a class="headerlink" href="#user-eff-package" title="Permalink to this headline">¶</a></h2> +<h2>4.21. USER-EFF package<a class="headerlink" href="#user-eff-package" title="Permalink to this headline">¶</a></h2> <p>This package contains a LAMMPS implementation of the electron Force Field (eFF) currently under development at Caltech, as described in A. Jaramillo-Botero, J. Su, Q. An, and W.A. Goddard III, JCC, 2010. The eFF potential was first introduced by Su and Goddard, 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. We classify it as a mixed QM-classical approach rather than a conventional force field method, which introduces QM-based terms (a spin-dependent repulsion term to account for the Pauli exclusion principle and the electron wavefunction kinetic energy associated with the Heisenberg principle) that reduce, along with classical electrostatic terms between nuclei and electrons, to the sum of a set of effective pairwise potentials. 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.</p> <p>The necessary customizations to the LAMMPS core are in place to enable the correct handling of explicit electron properties during minimization and dynamics.</p> <p>See the doc page for the pair_style eff/cut command to get started.</p> <p>There are example scripts for using this package in examples/USER/eff.</p> <p>There are auxiliary tools for using this package in tools/eff.</p> <p>The person who created this package is Andres Jaramillo-Botero at CalTech (ajaramil at wag.caltech.edu). Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-fep-package"> -<h2>4.11. USER-FEP package<a class="headerlink" href="#user-fep-package" title="Permalink to this headline">¶</a></h2> +<h2>4.22. USER-FEP package<a class="headerlink" href="#user-fep-package" title="Permalink to this headline">¶</a></h2> <p>This package provides methods for performing free energy perturbation simulations with soft-core pair potentials in LAMMPS.</p> <p>See these doc pages and their related commands to get started:</p> <ul class="simple"> <li><a class="reference internal" href="fix_adapt_fep.html"><em>fix adapt/fep</em></a></li> <li><a class="reference internal" href="compute_fep.html"><em>compute fep</em></a></li> <li><a class="reference internal" href="pair_lj_soft.html"><em>soft pair styles</em></a></li> </ul> <p>The person who created this package is Agilio Padua at Universite Blaise Pascal Clermont-Ferrand (agilio.padua at univ-bpclermont.fr) Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-h5md-package"> -<h2>4.12. USER-H5MD package<a class="headerlink" href="#user-h5md-package" title="Permalink to this headline">¶</a></h2> +<h2>4.23. USER-H5MD package<a class="headerlink" href="#user-h5md-package" title="Permalink to this headline">¶</a></h2> <p>This package contains a <a class="reference internal" href="dump_h5md.html"><em>dump h5md</em></a> command for performing a dump of atom properties in HDF5 format. <a class="reference external" href="http://www.hdfgroup.org/HDF5/">HDF5 files</a> are binary, portable and self-describing and can be examined and used by a variety of auxiliary tools. The output HDF5 files are structured in a format called H5MD, which was designed to store molecular data, and can be used and produced by various MD and MD-related codes. The <code class="xref doc docutils literal"><span class="pre">dump</span> <span class="pre">h5md</span></code> command gives a citation to a paper describing the format.</p> <p>The person who created this package and the underlying H5MD format is Pierre de Buyl at KU Leuven (see <a class="reference external" href="http://pdebuyl.be">http://pdebuyl.be</a>). Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-intel-package"> -<h2>4.13. USER-INTEL package<a class="headerlink" href="#user-intel-package" title="Permalink to this headline">¶</a></h2> +<h2>4.24. USER-INTEL package<a class="headerlink" href="#user-intel-package" title="Permalink to this headline">¶</a></h2> <p>This package provides options for performing neighbor list and non-bonded force calculations in single, mixed, or double precision and also a capability for accelerating calculations with an Intel(R) Xeon Phi(TM) coprocessor.</p> <p>See this section of the manual to get started:</p> <p><span class="xref std std-ref">Section_accelerate</span></p> <p>The person who created this package is W. Michael Brown at Intel (michael.w.brown at intel.com). Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-lb-package"> -<h2>4.14. USER-LB package<a class="headerlink" href="#user-lb-package" title="Permalink to this headline">¶</a></h2> +<h2>4.25. USER-LB package<a class="headerlink" href="#user-lb-package" title="Permalink to this headline">¶</a></h2> <p>This package contains a LAMMPS implementation of a background Lattice-Boltzmann fluid, which can be used to model MD particles influenced by hydrodynamic forces.</p> <p>See this doc page and its related commands to get started:</p> <p><a class="reference internal" href="fix_lb_fluid.html"><em>fix lb/fluid</em></a></p> <p>The people who created this package are Frances Mackay (fmackay at uwo.ca) and Colin (cdennist at uwo.ca) Denniston, University of Western Ontario. Contact them directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-misc-package"> -<h2>4.15. USER-MISC package<a class="headerlink" href="#user-misc-package" title="Permalink to this headline">¶</a></h2> +<h2>4.26. USER-MISC package<a class="headerlink" href="#user-misc-package" title="Permalink to this headline">¶</a></h2> <p>The files in this package are a potpourri of (mostly) unrelated features contributed to LAMMPS by users. Each feature is a single -pair of files (<a href="#id4"><span class="problematic" id="id5">*</span></a>.cpp and <a href="#id6"><span class="problematic" id="id7">*</span></a>.h).</p> +pair of files (<a href="#id2"><span class="problematic" id="id3">*</span></a>.cpp and <a href="#id4"><span class="problematic" id="id5">*</span></a>.h).</p> <p>More information about each feature can be found by reading its doc page in the LAMMPS doc directory. The doc page which lists all LAMMPS input script commands is as follows:</p> <p><a class="reference internal" href="Section_commands.html#cmd-5"><span>Section_commands</span></a></p> <p>User-contributed features are listed at the bottom of the fix, compute, pair, etc sections.</p> <p>The list of features and author of each is given in the src/USER-MISC/README file.</p> <p>You should contact the author directly if you have specific questions about the feature or its coding.</p> </div> <hr class="docutils" /> <div class="section" id="user-molfile-package"> -<h2>4.16. USER-MOLFILE package<a class="headerlink" href="#user-molfile-package" title="Permalink to this headline">¶</a></h2> +<h2>4.27. USER-MOLFILE package<a class="headerlink" href="#user-molfile-package" title="Permalink to this headline">¶</a></h2> <p>This package contains a dump molfile command which uses molfile plugins that are bundled with the <a class="reference external" href="http://www.ks.uiuc.edu/Research/vmd">VMD</a> molecular visualization and analysis program, to enable LAMMPS to dump its information in formats compatible with various molecular simulation tools.</p> <p>The package only provides the interface code, not the plugins. These can be obtained from a VMD installation which has to match the platform that you are using to compile LAMMPS for. By adding plugins to VMD, support for new file formats can be added to LAMMPS (or VMD or other programs that use them) without having to recompile the application itself.</p> <p>See this doc page to get started:</p> <p><span class="xref std std-ref">dump molfile</span></p> <p>The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-omp-package"> -<h2>4.17. USER-OMP package<a class="headerlink" href="#user-omp-package" title="Permalink to this headline">¶</a></h2> +<h2>4.28. USER-OMP package<a class="headerlink" href="#user-omp-package" title="Permalink to this headline">¶</a></h2> <p>This package provides OpenMP multi-threading support and other optimizations of various LAMMPS pair styles, dihedral styles, and fix styles.</p> <p>See this section of the manual to get started:</p> <p><span class="xref std std-ref">Section_accelerate</span></p> <p>The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-phonon-package"> -<h2>4.18. USER-PHONON package<a class="headerlink" href="#user-phonon-package" title="Permalink to this headline">¶</a></h2> +<h2>4.29. USER-PHONON package<a class="headerlink" href="#user-phonon-package" title="Permalink to this headline">¶</a></h2> <p>This package contains a fix phonon command that calculates dynamical matrices, which can then be used to compute phonon dispersion relations, directly from molecular dynamics simulations.</p> <p>See this doc page to get started:</p> <p><a class="reference internal" href="fix_phonon.html"><em>fix phonon</em></a></p> <p>The person who created this package is Ling-Ti Kong (konglt at sjtu.edu.cn) at Shanghai Jiao Tong University. Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-qmmm-package"> -<h2>4.19. USER-QMMM package<a class="headerlink" href="#user-qmmm-package" title="Permalink to this headline">¶</a></h2> +<h2>4.30. USER-QMMM package<a class="headerlink" href="#user-qmmm-package" title="Permalink to this headline">¶</a></h2> <p>This package provides a fix qmmm command which allows LAMMPS to be used in a QM/MM simulation, currently only in combination with pw.x code from the <a class="reference external" href="http://www.quantum-espresso.org">Quantum ESPRESSO</a> package.</p> <p>The current implementation only supports an ONIOM style mechanical coupling to the Quantum ESPRESSO plane wave DFT package. Electrostatic coupling is in preparation and the interface has been written in a manner that coupling to other QM codes should be possible without changes to LAMMPS itself.</p> <p>See this doc page to get started:</p> <p><a class="reference internal" href="fix_qmmm.html"><em>fix qmmm</em></a></p> <p>as well as the lib/qmmm/README file.</p> <p>The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-qtb-package"> -<h2>4.20. USER-QTB package<a class="headerlink" href="#user-qtb-package" title="Permalink to this headline">¶</a></h2> +<h2>4.31. USER-QTB package<a class="headerlink" href="#user-qtb-package" title="Permalink to this headline">¶</a></h2> <p>This package provides a self-consistent quantum treatment of the vibrational modes in a classical molecular dynamics simulation. By coupling the MD simulation to a colored thermostat, it introduces zero point energy into the system, alter the energy power spectrum and the heat capacity towards their quantum nature. This package could be of interest if one wants to model systems at temperatures lower than their classical limits or when temperatures ramp up across the classical limits in the simulation.</p> <p>See these two doc pages to get started:</p> <p><a class="reference internal" href="fix_qtb.html"><em>fix qtb</em></a> provides quantum nulcear correction through a colored thermostat and can be used with other time integration schemes like <a class="reference internal" href="fix_nve.html"><em>fix nve</em></a> or <a class="reference internal" href="fix_nh.html"><em>fix nph</em></a>.</p> <p><a class="reference internal" href="fix_qbmsst.html"><em>fix qbmsst</em></a> enables quantum nuclear correction of a multi-scale shock technique simulation by coupling the quantum thermal bath with the shocked system.</p> <p>The person who created this package is Yuan Shen (sy0302 at stanford.edu) at Stanford University. Contact him directly if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-reaxc-package"> -<h2>4.21. USER-REAXC package<a class="headerlink" href="#user-reaxc-package" title="Permalink to this headline">¶</a></h2> +<h2>4.32. USER-REAXC package<a class="headerlink" href="#user-reaxc-package" title="Permalink to this headline">¶</a></h2> <p>This package 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.</p> <p>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 library was originally authored by Adri van Duin.</p> <p>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 with Fortran memory allocation or linking to a Fortran library.</p> <p>For technical details about this implemention of ReaxFF, see this paper:</p> <p>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, in press (2011).</p> <p>See the doc page for the pair_style reax/c command for details of how to use it in LAMMPS.</p> <p>The person who created this package is Hasan Metin Aktulga (hmaktulga at lbl.gov), while at Purdue University. Contact him directly, or Aidan Thompson at Sandia (athomps at sandia.gov), if you have questions.</p> </div> <hr class="docutils" /> <div class="section" id="user-smd-package"> -<h2>4.22. USER-SMD package<a class="headerlink" href="#user-smd-package" title="Permalink to this headline">¶</a></h2> +<h2>4.33. USER-SMD package<a class="headerlink" href="#user-smd-package" title="Permalink to this headline">¶</a></h2> <p>This package implements smoothed Mach dynamics (SMD) in LAMMPS. Currently, the package has the following features:</p> <ul class="simple"> <li>Does liquids via traditional Smooth Particle Hydrodynamics (SPH)</li> <li>Also solves solids mechanics problems via a state of the art stabilized meshless method with hourglass control.</li> <li>Can specify hydrostatic interactions independently from material strength models, i.e. pressure and deviatoric stresses are separated.</li> <li>Many material models available (Johnson-Cook, plasticity with hardening, Mie-Grueneisen, Polynomial EOS). Easy to add new material models.</li> <li>Rigid boundary conditions (walls) can be loaded as surface geometries -from <a href="#id9"><span class="problematic" id="id10">*</span></a>.STL files.</li> +from <a href="#id7"><span class="problematic" id="id8">*</span></a>.STL files.</li> </ul> <p>See the file doc/PDF/SMD_LAMMPS_userguide.pdf to get started.</p> <p>There are example scripts for using this package in examples/USER/smd.</p> <p>The person who created this package is Georg Ganzenmuller at the Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if you have questions.</p> </div> <div class="section" id="user-sph-package"> -<h2>4.23. USER-SPH package<a class="headerlink" href="#user-sph-package" title="Permalink to this headline">¶</a></h2> +<h2>4.34. USER-SPH package<a class="headerlink" href="#user-sph-package" title="Permalink to this headline">¶</a></h2> <p>This package implements smoothed particle hydrodynamics (SPH) in LAMMPS. Currently, the package has the following features:</p> <ul class="simple"> <li>Tait, ideal gas, Lennard-Jones equation of states, full support for complete (i.e. internal-energy dependent) equations of state</li> <li>Plain or Monaghans XSPH integration of the equations of motion</li> <li>Density continuity or density summation to propagate the density field</li> <li>Commands to set internal energy and density of particles from the input script</li> <li>Output commands to access internal energy and density for dumping and thermo output</li> </ul> <p>See the file doc/PDF/SPH_LAMMPS_userguide.pdf to get started.</p> <p>There are example scripts for using this package in examples/USER/sph.</p> <p>The person who created this package is Georg Ganzenmuller at the Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if you have questions.</p> </div> </div> </div> </div> <footer> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <a href="Section_accelerate.html" class="btn btn-neutral float-right" title="5. Accelerating LAMMPS performance" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="Section_commands.html" class="btn btn-neutral" title="3. Commands" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/Section_packages.txt b/doc/Section_packages.txt index 01190f4a0..cfc879fb2 100644 --- a/doc/Section_packages.txt +++ b/doc/Section_packages.txt @@ -1,705 +1,803 @@ "Previous Section"_Section_commands.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_accelerate.html :c :link(lws,http://lammps.sandia.gov) :link(ld,Manual.html) :link(lc,Section_commands.html#comm) :line 4. Packages :h3 This section gives a quick overview of the add-on packages that extend LAMMPS functionality. 4.1 "Standard packages"_#pkg_1 4.2 "User packages"_#pkg_2 :all(b) LAMMPS includes many optional packages, which 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" from within the src directory of the LAMMPS distribution. See "Section_start 3"_Section_start.html#start_3 of the manual for details on how to include/exclude specific packages as part of the LAMMPS build process, and for more details about the differences -between standard packages and user packages in LAMMPS. - -Below, the packages currently availabe in LAMMPS are listed. For -standard packages, just a one-line description is given. For user -packages, more details are provided. +between standard packages and user packages. + +Unless otherwise noted below, every package is independent of all the +others. I.e. any package can be included or excluded in a LAMMPS +build, independent of all other packages. However, note that some +packages include commands derived from commands in other packages. If +the other package is not installed, the derived command from the new +package will also not be installed when you include the new one. +E.g. the pair lj/cut/coul/long/omp command from the USER-OMP package +will not be installed as part of the USER-OMP package if the KSPACE +package is not also installed, since it contains the pair +lj/cut/coul/long command. If you later install the KSPACE pacakge and +the USER-OMP package is already installed, both the pair +lj/cut/coul/long and lj/cut/coul/long/omp commands will be installed. + +The two tables below list currently available packages in LAMMPS, with +a one-line descriptions of each. The sections below give a few more +details, including instructions for building LAMMPS with the package, +either via the make command or the Make.py tool described in "Section +2.4"_Section_start.html#start_4. :line :line 4.1 Standard packages :h4,link(pkg_1) -The current list of standard packages is as follows: +The current list of standard packages is as follows. Package, Description, Author(s), Doc page, Example, Library ASPHERE, aspherical particles, -, "Section_howto 6.14"_Section_howto.html#howto_14, ellipse, - BODY, body-style particles, -, "body"_body.html, body, - CLASS2, class 2 force fields, -, "pair_style lj/class2"_pair_class2.html, -, - COLLOID, colloidal particles, -, "atom_style colloid"_atom_style.html, colloid, - COMPRESS, I/O compression, Axel Kohlmeyer (Temple U), "dump */gz"_dump.html, -, - CORESHELL, adiabatic core/shell model, Hendrik Heenen (Technical U of Munich), "Section_howto 6.25"_Section_howto.html#howto_25, coreshell, - DIPOLE, point dipole particles, -, "pair_style dipole/cut"_pair_dipole.html, dipole, - FLD, Fast Lubrication Dynamics, Kumar & Bybee & Higdon (1), "pair_style lubricateU"_pair_lubricateU.html, -, - GPU, GPU-enabled styles, Mike Brown (ORNL), "Section accelerate"_accelerate_gpu.html, gpu, lib/gpu GRANULAR, granular systems, -, "Section_howto 6.6"_Section_howto.html#howto_6, pour, - KIM, openKIM potentials, Smirichinski & Elliot & Tadmor (3), "pair_style kim"_pair_kim.html, kim, KIM KOKKOS, Kokkos-enabled styles, Trott & Edwards (4), "Section_accelerate"_accelerate_kokkos.html, kokkos, lib/kokkos KSPACE, long-range Coulombic solvers, -, "kspace_style"_kspace_style.html, peptide, - MANYBODY, many-body potentials, -, "pair_style tersoff"_pair_tersoff.html, shear, - MEAM, modified EAM potential, Greg Wagner (Sandia), "pair_style meam"_pair_meam.html, meam, lib/meam MC, Monte Carlo options, -, "fix gcmc"_fix_gcmc.html, -, - MOLECULE, molecular system force fields, -, "Section_howto 6.3"_Section_howto.html#howto_3, peptide, - OPT, optimized pair styles, Fischer & Richie & Natoli (2), "Section accelerate"_accelerate_opt.html, -, - PERI, Peridynamics models, Mike Parks (Sandia), "pair_style peri"_pair_peri.html, peri, - POEMS, coupled rigid body motion, Rudra Mukherjee (JPL), "fix poems"_fix_poems.html, rigid, lib/poems PYTHON, embed Python code in an input script, -, "python"_python.html, python, lib/python REPLICA, multi-replica methods, -, "Section_howto 6.5"_Section_howto.html#howto_5, tad, - RIGID, rigid bodies, -, "fix rigid"_fix_rigid.html, rigid, - SHOCK, shock loading methods, -, "fix msst"_fix_msst.html, -, - SNAP, quantum-fit potential, Aidan Thompson (Sandia), "pair snap"_pair_snap.html, snap, - SRD, stochastic rotation dynamics, -, "fix srd"_fix_srd.html, srd, - VORONOI, Voronoi tesselations, Daniel Schwen (LANL), "compute voronoi/atom"_compute_voronoi_atom.html, -, Voro++ XTC, dumps in XTC format, -, "dump"_dump.html, -, - :tb(ea=c) The "Authors" column lists a name(s) if a specific person is responible for creating and maintaining the package. +More details on +multiple authors are give below. (1) The FLD package was created by Amit Kumar and Michael Bybee from Jonathan Higdon's group at UIUC. (2) The OPT package was created by James Fischer (High Performance Technologies), David Richie, and Vincent Natoli (Stone Ridge Technolgy). (3) The KIM package was created by Valeriu Smirichinski, Ryan Elliott, and Ellad Tadmor (U Minn). (4) The KOKKOS package was created primarily by Christian Trott (Sandia). It uses the Kokkos library which was developed by Carter Edwards, Christian, and collaborators at Sandia. The "Doc page" column links to either a portion of the "Section_howto"_Section_howto.html of the manual, or an input script command implemented as part of the package. The "Example" column is a sub-directory in the examples directory of the distribution which has an input script that uses the package. E.g. "peptide" refers to the examples/peptide directory. The "Library" column lists an external library which must be built first and which LAMMPS links to when it is built. If it is listed as lib/package, then the code for the library is under the lib directory of the LAMMPS distribution. See the lib/package/README file for info on how to build the library. If it is not listed as lib/package, then it is a third-party library not included in the LAMMPS distribution. See the src/package/README or src/package/Makefile.lammps file for info on where to download the library. "Section start"_Section_start.html#start_3_3 of the manual also gives details on how to build LAMMPS with both kinds of auxiliary libraries. +Except where explained below, all of these packages can be installed, +and LAMMPS re-built, by issuing these commands from the src dir. + +make yes-package +make machine +or +Make.py -p package -a machine :pre + +To un-install the package and re-build LAMMPS without it: + +make no-package +make machine +or +Make.py -p ^package -a machine :pre + +"Package" is the name of the package in lower-case letters, +e.g. asphere or rigid, and "machine" is the build target, e.g. mpi or +serial. + +:line +:line + +Build instructions for COMPRESS package :h4 + +:line + +Build instructions for GPU package :h4 + +:line + +Build instructions for KIM package :h4 + +:line + +Build instructions for KOKKOS package :h4 + +:line + +Build instructions for KSPACE package :h4 + +:line + +Build instructions for MEAM package :h4 + +:line + +Build instructions for POEMS package :h4 + +:line + +Build instructions for PYTHON package :h4 + +:line + +Build instructions for REAX package :h4 + +:line + +Build instructions for VORONOI package :h4 + +:line + +Build instructions for XTC package :h4 + :line :line 4.2 User packages :h4,link(pkg_2) The current list of user-contributed packages is as follows: Package, Description, Author(s), Doc page, Example, Pic/movie, Library USER-ATC, atom-to-continuum coupling, Jones & Templeton & Zimmerman (1), "fix atc"_fix_atc.html, USER/atc, "atc"_atc, lib/atc USER-AWPMD, wave-packet MD, Ilya Valuev (JIHT), "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, -, lib/awpmd USER-CG-CMM, coarse-graining model, Axel Kohlmeyer (Temple U), "pair_style lj/sdk"_pair_sdk.html, USER/cg-cmm, "cg"_cg, - USER-COLVARS, collective variables, Fiorin & Henin & Kohlmeyer (2), "fix colvars"_fix_colvars.html, USER/colvars, "colvars"_colvars, lib/colvars USER-CUDA, NVIDIA GPU styles, Christian Trott (U Tech Ilmenau), "Section accelerate"_accelerate_cuda.html, USER/cuda, -, lib/cuda USER-DIFFRACTION, virutal x-ray and electron diffraction, Shawn Coleman (ARL),"compute xrd"_compute_xrd.html, USER/diffraction, -, - USER-DRUDE, Drude oscillators, Dequidt & Devemy & Padua (3), "tutorial"_tutorial_drude.html, USER/drude, -, - USER-EFF, electron force field, Andres Jaramillo-Botero (Caltech), "pair_style eff/cut"_pair_eff.html, USER/eff, "eff"_eff, - USER-FEP, free energy perturbation, Agilio Padua (U Blaise Pascal Clermont-Ferrand), "compute fep"_compute_fep.html, USER/fep, -, - USER-H5MD, dump output via HDF5, Pierre de Buyl (KU Leuven), "dump h5md"_dump_h5md.html, -, -, lib/h5md USER-INTEL, Vectorized CPU and Intel(R) coprocessor styles, W. Michael Brown (Intel), "Section accelerate"_accelerate_intel.html, examples/intel, -, - USER-LB, Lattice Boltzmann fluid, Colin Denniston (U Western Ontario), "fix lb/fluid"_fix_lb_fluid.html, USER/lb, -, - USER-MISC, single-file contributions, USER-MISC/README, USER-MISC/README, -, -, - USER-MOLFILE, "VMD"_VMD molfile plug-ins, Axel Kohlmeyer (Temple U), "dump molfile"_dump_molfile.html, -, -, VMD-MOLFILE USER-OMP, OpenMP threaded styles, Axel Kohlmeyer (Temple U), "Section accelerate"_accelerate_omp.html, -, -, - USER-PHONON, phonon dynamical matrix, Ling-Ti Kong (Shanghai Jiao Tong U), "fix phonon"_fix_phonon.html, USER/phonon, -, - USER-QMMM, QM/MM coupling, Axel Kohlmeyer (Temple U), "fix qmmm"_fix_qmmm.html, USER/qmmm, -, lib/qmmm USER-QTB, quantum nuclear effects, Yuan Shen (Stanford), "fix qtb"_fix_qtb.html "fix_qbmsst"_fix_qbmsst.html, qtb, -, - USER-QUIP, QUIP/libatoms interface, Albert Bartok-Partay (U Cambridge), "pair_style quip"_pair_quip.html, USER/quip, -, lib/quip USER-REAXC, C version of ReaxFF, Metin Aktulga (LBNL), "pair_style reaxc"_pair_reax_c.html, reax, -, - USER-SMD, smoothed Mach dynamics, Georg Ganzenmuller (EMI), "userguide.pdf"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, -, - USER-SPH, smoothed particle hydrodynamics, Georg Ganzenmuller (EMI), "userguide.pdf"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, "sph"_sph, - USER-TALLY, Pairwise tallied computes, Axel Kohlmeyer (Temple U), "compute <...>/tally"_compute_tally.html, USER/tally, -, - :tb(ea=c) :link(atc,http://lammps.sandia.gov/pictures.html#atc) :link(cg,http://lammps.sandia.gov/pictures.html#cg) :link(eff,http://lammps.sandia.gov/movies.html#eff) :link(sph,http://lammps.sandia.gov/movies.html#sph) :link(VMD,http://www.ks.uiuc.edu/Research/vmd) The "Authors" column lists a name(s) if a specific person is responible for creating and maintaining the package. -If the Library is not listed as lib/package, then it is a third-party -library not included in the LAMMPS distribution. See the -src/package/Makefile.lammps file for info on where to download the -library from. - -(2) The ATC package was created by Reese Jones, Jeremy Templeton, and +(1) The ATC package was created by Reese Jones, Jeremy Templeton, and Jon Zimmerman (Sandia). (2) The COLVARS package was created by Axel Kohlmeyer (Temple U) using the colvars module library written by Giacomo Fiorin (Temple U) and Jerome Henin (LISM, Marseille, France). (3) The DRUDE package was created by Alain Dequidt (U Blaise Pascal Clermont-Ferrand) and co-authors Julien Devemy (CNRS) and Agilio Padua (U Blaise Pascal). +If the Library is not listed as lib/package, then it is a third-party +library not included in the LAMMPS distribution. See the +src/package/Makefile.lammps file for info on where to download the +library from. + The "Doc page" column links to either a portion of the "Section_howto"_Section_howto.html of the manual, or an input script command implemented as part of the package, or to additional -documentation provided witht he package. +documentation provided within the package. The "Example" column is a sub-directory in the examples directory of the distribution which has an input script that uses the package. E.g. "peptide" refers to the examples/peptide directory. USER/cuda refers to the examples/USER/cuda directory. The "Library" column lists an external library which must be built first and which LAMMPS links to when it is built. If it is listed as lib/package, then the code for the library is under the lib directory of the LAMMPS distribution. See the lib/package/README file for info on how to build the library. If it is not listed as lib/package, then it is a third-party library not included in the LAMMPS distribution. See the src/package/Makefile.lammps file for info on where to download the library. "Section start"_Section_start.html#start_3_3 of the manual also gives details on how to build LAMMPS with both kinds of auxiliary libraries. -More details on each package, from the USER-*/README file is given -below. +Except where explained below, all of these packages can be installed, +and LAMMPS re-built, by issuing these commands from the src dir. + +make yes-user-package +make machine +or +Make.py -p package -a machine :pre + +To un-install the package and re-build LAMMPS without it: +make no-user-package +make machine +or +Make.py -p ^package -a machine :pre + +"Package" is the name of the package (in this case without the user +prefix) in lower-case letters, e.g. drude or phonon, and "machine" is +the build target, e.g. mpi or serial. + +:line :line USER-ATC package :h4 This package implements a "fix atc" command which can be used in a LAMMPS input script. This fix can be employed to either do concurrent coupling of MD with FE-based physics surrogates or on-the-fly post-processing of atomic information to continuum fields. See the doc page for the fix atc command to get started. At the bottom of the doc page are many links to additional documentation contained in the doc/USER/atc directory. There are example scripts for using this package in examples/USER/atc. This package uses an external library in lib/atc which must be compiled before making LAMMPS. See the lib/atc/README file and the LAMMPS manual for information on building LAMMPS with external libraries. The primary people who created this package are Reese Jones (rjones at sandia.gov), Jeremy Templeton (jatempl at sandia.gov) and Jon Zimmerman (jzimmer at sandia.gov) at Sandia. Contact them directly if you have questions. :line USER-AWPMD package :h4 This package contains a LAMMPS implementation of the Antisymmetrized Wave Packet Molecular Dynamics (AWPMD) method. See the doc page for the pair_style awpmd/cut command to get started. There are example scripts for using this package in examples/USER/awpmd. This package uses an external library in lib/awpmd which must be compiled before making LAMMPS. See the lib/awpmd/README file and the LAMMPS manual for information on building LAMMPS with external libraries. The person who created this package is Ilya Valuev at the JIHT in Russia (valuev at physik.hu-berlin.de). Contact him directly if you have questions. :line USER-CG-CMM package :h4 This package implements 3 commands which can be used in a LAMMPS input script: pair_style lj/sdk pair_style lj/sdk/coul/long angle_style sdk :ul These styles allow coarse grained MD simulations with the parametrization of Shinoda, DeVane, Klein, Mol Sim, 33, 27 (2007) (SDK), with extensions to simulate ionic liquids, electrolytes, lipids and charged amino acids. See the doc pages for these commands for details. There are example scripts for using this package in examples/USER/cg-cmm. This is the second generation implementation reducing the the clutter of the previous version. For many systems with electrostatics, it will be faster to use pair_style hybrid/overlay with lj/sdk and coul/long instead of the combined lj/sdk/coul/long style. since the number of charged atom types is usually small. For any other coulomb interactions this is now required. To exploit this property, the use of the kspace_style pppm/cg is recommended over regular pppm. For all new styles, input file backward compatibility is provided. The old implementation is still available through appending the /old suffix. These will be discontinued and removed after the new implementation has been fully validated. The current version of this package should be considered beta quality. The CG potentials work correctly for "normal" situations, but have not been testing with all kinds of potential parameters and simulation systems. The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions. :line USER-COLVARS package :h4 This package implements the "fix colvars" command which can be used in a LAMMPS input script. This fix allows to use "collective variables" to implement Adaptive Biasing Force, Metadynamics, Steered MD, Umbrella Sampling and Restraints. This code consists of two parts: A portable collective variable module library written and maintained by Giacomo Fiorin (ICMS, Temple University, Philadelphia, PA, USA) and Jerome Henin (LISM, CNRS, Marseille, France). This code is located in the directory lib/colvars and needs to be compiled first. The colvars fix and an interface layer, exchanges information between LAMMPS and the collective variable module. :ul See the doc page of "fix colvars"_fix_colvars.html for more details. There are example scripts for using this package in examples/USER/colvars This is a very new interface that does not yet support all features in the module and will see future optimizations and improvements. The colvars module library is also available in NAMD has been thoroughly used and tested there. Bugs and problems are likely due to the interface layers code. Thus the current version of this package should be considered beta quality. The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions. :line USER-CUDA package :h4 This package provides acceleration of various LAMMPS pair styles, fix styles, compute styles, and long-range Coulombics via PPPM for NVIDIA GPUs. See this section of the manual to get started: "Section_accelerate"_Section_accelerate.html#acc_7 There are example scripts for using this package in examples/USER/cuda. This package uses an external library in lib/cuda which must be compiled before making LAMMPS. See the lib/cuda/README file and the LAMMPS manual for information on building LAMMPS with external libraries. The person who created this package is Christian Trott at the University of Technology Ilmenau, Germany (christian.trott at tu-ilmenau.de). Contact him directly if you have questions. :line USER-DIFFRACTION package :h4 This package contains the commands neeed to calculate x-ray and electron diffraction intensities based on kinematic diffraction theory. See these doc pages and their related commands to get started: "compute xrd"_compute_xrd.html "compute saed"_compute_saed.html "fix saed/vtk"_fix_saed_vtk.html :ul The person who created this package is Shawn P. Coleman (shawn.p.coleman8.ctr at mail.mil) while at the University of Arkansas. Contact him directly if you have questions. :line USER-DRUDE package :h4 This package implements methods for simulating polarizable systems in LAMMPS using thermalized Drude oscillators. See these doc pages and their related commands to get started: "Drude tutorial"_tutorial_drude.html "fix drude"_fix_drude.html "compute temp/drude"_compute_temp_drude.html "fix langevin/drude"_fix_langevin_drude.html "fix drude/transform/..."_fix_drude_transform.html "pair thole"_pair_thole.html :ul There are auxiliary tools for using this package in tools/drude. The person who created this package is Alain Dequidt at Universite Blaise Pascal Clermont-Ferrand (alain.dequidt at univ-bpclermont.fr) Contact him directly if you have questions. Co-authors: Julien Devemy, Agilio Padua. :line USER-EFF package :h4 This package contains a LAMMPS implementation of the electron Force Field (eFF) currently under development at Caltech, as described in A. Jaramillo-Botero, J. Su, Q. An, and W.A. Goddard III, JCC, 2010. The eFF potential was first introduced by Su and Goddard, 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. We classify it as a mixed QM-classical approach rather than a conventional force field method, which introduces QM-based terms (a spin-dependent repulsion term to account for the Pauli exclusion principle and the electron wavefunction kinetic energy associated with the Heisenberg principle) that reduce, along with classical electrostatic terms between nuclei and electrons, to the sum of a set of effective pairwise potentials. 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. The necessary customizations to the LAMMPS core are in place to enable the correct handling of explicit electron properties during minimization and dynamics. See the doc page for the pair_style eff/cut command to get started. There are example scripts for using this package in examples/USER/eff. There are auxiliary tools for using this package in tools/eff. The person who created this package is Andres Jaramillo-Botero at CalTech (ajaramil at wag.caltech.edu). Contact him directly if you have questions. :line USER-FEP package :h4 This package provides methods for performing free energy perturbation simulations with soft-core pair potentials in LAMMPS. See these doc pages and their related commands to get started: "fix adapt/fep"_fix_adapt_fep.html "compute fep"_compute_fep.html "soft pair styles"_pair_lj_soft.html :ul The person who created this package is Agilio Padua at Universite Blaise Pascal Clermont-Ferrand (agilio.padua at univ-bpclermont.fr) Contact him directly if you have questions. :line USER-H5MD package :h4 This package contains a "dump h5md"_dump_h5md.html command for performing a dump of atom properties in HDF5 format. "HDF5 files"_HDF5 are binary, portable and self-describing and can be examined and used by a variety of auxiliary tools. The output HDF5 files are structured in a format called H5MD, which was designed to store molecular data, and can be used and produced by various MD and MD-related codes. The "dump h5md"_doc/dump_h5md.html command gives a citation to a paper describing the format. :link(HDF5,http://www.hdfgroup.org/HDF5/) The person who created this package and the underlying H5MD format is Pierre de Buyl at KU Leuven (see http://pdebuyl.be). Contact him directly if you have questions. :line USER-INTEL package :h4 This package provides options for performing neighbor list and non-bonded force calculations in single, mixed, or double precision and also a capability for accelerating calculations with an Intel(R) Xeon Phi(TM) coprocessor. See this section of the manual to get started: "Section_accelerate"_Section_accelerate.html#acc_9 The person who created this package is W. Michael Brown at Intel (michael.w.brown at intel.com). Contact him directly if you have questions. :line USER-LB package :h4 This package contains a LAMMPS implementation of a background Lattice-Boltzmann fluid, which can be used to model MD particles influenced by hydrodynamic forces. See this doc page and its related commands to get started: "fix lb/fluid"_fix_lb_fluid.html The people who created this package are Frances Mackay (fmackay at uwo.ca) and Colin (cdennist at uwo.ca) Denniston, University of Western Ontario. Contact them directly if you have questions. :line USER-MISC package :h4 The files in this package are a potpourri of (mostly) unrelated features contributed to LAMMPS by users. Each feature is a single pair of files (*.cpp and *.h). More information about each feature can be found by reading its doc page in the LAMMPS doc directory. The doc page which lists all LAMMPS input script commands is as follows: "Section_commands"_Section_commands.html#cmd_5 User-contributed features are listed at the bottom of the fix, compute, pair, etc sections. The list of features and author of each is given in the src/USER-MISC/README file. You should contact the author directly if you have specific questions about the feature or its coding. :line USER-MOLFILE package :h4 This package contains a dump molfile command which uses molfile plugins that are bundled with the "VMD"_http://www.ks.uiuc.edu/Research/vmd molecular visualization and analysis program, to enable LAMMPS to dump its information in formats compatible with various molecular simulation tools. The package only provides the interface code, not the plugins. These can be obtained from a VMD installation which has to match the platform that you are using to compile LAMMPS for. By adding plugins to VMD, support for new file formats can be added to LAMMPS (or VMD or other programs that use them) without having to recompile the application itself. See this doc page to get started: "dump molfile"_dump_molfile.html#acc_5 The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions. :line USER-OMP package :h4 This package provides OpenMP multi-threading support and other optimizations of various LAMMPS pair styles, dihedral styles, and fix styles. See this section of the manual to get started: "Section_accelerate"_Section_accelerate.html#acc_5 The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions. :line USER-PHONON package :h4 This package contains a fix phonon command that calculates dynamical matrices, which can then be used to compute phonon dispersion relations, directly from molecular dynamics simulations. See this doc page to get started: "fix phonon"_fix_phonon.html The person who created this package is Ling-Ti Kong (konglt at sjtu.edu.cn) at Shanghai Jiao Tong University. Contact him directly if you have questions. :line USER-QMMM package :h4 This package provides a fix qmmm command which allows LAMMPS to be used in a QM/MM simulation, currently only in combination with pw.x code from the "Quantum ESPRESSO"_espresso package. :link(espresso,http://www.quantum-espresso.org) The current implementation only supports an ONIOM style mechanical coupling to the Quantum ESPRESSO plane wave DFT package. Electrostatic coupling is in preparation and the interface has been written in a manner that coupling to other QM codes should be possible without changes to LAMMPS itself. See this doc page to get started: "fix qmmm"_fix_qmmm.html as well as the lib/qmmm/README file. The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions. :line USER-QTB package :h4 This package provides a self-consistent quantum treatment of the vibrational modes in a classical molecular dynamics simulation. By coupling the MD simulation to a colored thermostat, it introduces zero point energy into the system, alter the energy power spectrum and the heat capacity towards their quantum nature. This package could be of interest if one wants to model systems at temperatures lower than their classical limits or when temperatures ramp up across the classical limits in the simulation. See these two doc pages to get started: "fix qtb"_fix_qtb.html provides quantum nulcear correction through a colored thermostat and can be used with other time integration schemes like "fix nve"_fix_nve.html or "fix nph"_fix_nh.html. "fix qbmsst"_fix_qbmsst.html enables quantum nuclear correction of a multi-scale shock technique simulation by coupling the quantum thermal bath with the shocked system. The person who created this package is Yuan Shen (sy0302 at stanford.edu) at Stanford University. Contact him directly if you have questions. :line USER-REAXC package :h4 This package 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 library 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 with Fortran memory allocation or linking to a Fortran library. 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, in press (2011). See the doc page for the pair_style reax/c command for details of how to use it in LAMMPS. The person who created this package is Hasan Metin Aktulga (hmaktulga at lbl.gov), while at Purdue University. Contact him directly, or Aidan Thompson at Sandia (athomps at sandia.gov), if you have questions. :line USER-SMD package :h4 This package implements smoothed Mach dynamics (SMD) in LAMMPS. Currently, the package has the following features: * Does liquids via traditional Smooth Particle Hydrodynamics (SPH) * Also solves solids mechanics problems via a state of the art stabilized meshless method with hourglass control. * Can specify hydrostatic interactions independently from material strength models, i.e. pressure and deviatoric stresses are separated. * Many material models available (Johnson-Cook, plasticity with hardening, Mie-Grueneisen, Polynomial EOS). Easy to add new material models. * Rigid boundary conditions (walls) can be loaded as surface geometries from *.STL files. See the file doc/PDF/SMD_LAMMPS_userguide.pdf to get started. There are example scripts for using this package in examples/USER/smd. The person who created this package is Georg Ganzenmuller at the Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if you have questions. USER-SPH package :h4 This package implements smoothed particle hydrodynamics (SPH) in LAMMPS. Currently, the package has the following features: * Tait, ideal gas, Lennard-Jones equation of states, full support for complete (i.e. internal-energy dependent) equations of state * Plain or Monaghans XSPH integration of the equations of motion * Density continuity or density summation to propagate the density field * Commands to set internal energy and density of particles from the input script * Output commands to access internal energy and density for dumping and thermo output See the file doc/PDF/SPH_LAMMPS_userguide.pdf to get started. There are example scripts for using this package in examples/USER/sph. The person who created this package is Georg Ganzenmuller at the Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if you have questions. diff --git a/doc/Section_start.html b/doc/Section_start.html index 6d1e72369..0fc09eaab 100644 --- a/doc/Section_start.html +++ b/doc/Section_start.html @@ -1,1990 +1,1990 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>2. Getting Started — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <link rel="next" title="3. Commands" href="Section_commands.html"/> <link rel="prev" title="1. Introduction" href="Section_intro.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="">2. Getting Started</a><ul> <li class="toctree-l2"><a class="reference internal" href="#what-s-in-the-lammps-distribution">2.1. What’s in the LAMMPS distribution</a></li> <li class="toctree-l2"><a class="reference internal" href="#making-lammps">2.2. Making LAMMPS</a></li> <li class="toctree-l2"><a class="reference internal" href="#making-lammps-with-optional-packages">2.3. Making LAMMPS with optional packages</a></li> -<li class="toctree-l2"><a class="reference internal" href="#building-lammps-via-the-make-py-script">2.4. Building LAMMPS via the Make.py script</a></li> +<li class="toctree-l2"><a class="reference internal" href="#building-lammps-via-the-make-py-tool">2.4. Building LAMMPS via the Make.py tool</a></li> <li class="toctree-l2"><a class="reference internal" href="#building-lammps-as-a-library">2.5. Building LAMMPS as a library</a><ul> <li class="toctree-l3"><a class="reference internal" href="#static-library">2.5.1. <strong>Static library:</strong></a></li> <li class="toctree-l3"><a class="reference internal" href="#shared-library">2.5.2. <strong>Shared library:</strong></a></li> <li class="toctree-l3"><a class="reference internal" href="#additional-requirement-for-using-a-shared-library">2.5.3. <strong>Additional requirement for using a shared library:</strong></a></li> <li class="toctree-l3"><a class="reference internal" href="#calling-the-lammps-library">2.5.4. <strong>Calling the LAMMPS library:</strong></a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="#running-lammps">2.6. Running LAMMPS</a></li> <li class="toctree-l2"><a class="reference internal" href="#command-line-options">2.7. Command-line options</a></li> <li class="toctree-l2"><a class="reference internal" href="#lammps-screen-output">2.8. LAMMPS screen output</a></li> <li class="toctree-l2"><a class="reference internal" href="#tips-for-users-of-previous-lammps-versions">2.9. Tips for users of previous LAMMPS versions</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>2. Getting Started</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> <div class="rst-footer-buttons" style="margin-bottom: 1em" role="navigation" aria-label="footer navigation"> <a href="Section_commands.html" class="btn btn-neutral float-right" title="3. Commands" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="Section_intro.html" class="btn btn-neutral" title="1. Introduction" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="getting-started"> <h1>2. Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h1> <p>This section describes how to build and run LAMMPS, for both new and experienced users.</p> <div class="line-block"> <div class="line">2.1 <a class="reference internal" href="#start-1"><span>What’s in the LAMMPS distribution</span></a></div> <div class="line">2.2 <a class="reference internal" href="#start-2"><span>Making LAMMPS</span></a></div> <div class="line">2.3 <a class="reference internal" href="#start-3"><span>Making LAMMPS with optional packages</span></a></div> <div class="line">2.4 <a class="reference internal" href="#start-4"><span>Building LAMMPS via the Make.py script</span></a></div> <div class="line">2.5 <a class="reference internal" href="#start-5"><span>Building LAMMPS as a library</span></a></div> <div class="line">2.6 <a class="reference internal" href="#start-6"><span>Running LAMMPS</span></a></div> <div class="line">2.7 <a class="reference internal" href="#start-7"><span>Command-line options</span></a></div> <div class="line">2.8 <a class="reference internal" href="#start-8"><span>Screen output</span></a></div> <div class="line">2.9 <a class="reference internal" href="#start-9"><span>Tips for users of previous versions</span></a></div> <div class="line"><br /></div> </div> <div class="section" id="what-s-in-the-lammps-distribution"> <span id="start-1"></span><h2>2.1. What’s in the LAMMPS distribution<a class="headerlink" href="#what-s-in-the-lammps-distribution" title="Permalink to this headline">¶</a></h2> <p>When you download a LAMMPS tarball you will need to unzip and untar the downloaded file with the following commands, after placing the tarball in an appropriate directory.</p> <div class="highlight-python"><div class="highlight"><pre>gunzip lammps*.tar.gz tar xvf lammps*.tar </pre></div> </div> <p>This will create a LAMMPS directory containing two files and several sub-directories:</p> <table border="1" class="docutils"> <colgroup> <col width="21%" /> <col width="79%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td>README</td> <td>text file</td> </tr> <tr class="row-even"><td>LICENSE</td> <td>the GNU General Public License (GPL)</td> </tr> <tr class="row-odd"><td>bench</td> <td>benchmark problems</td> </tr> <tr class="row-even"><td>doc</td> <td>documentation</td> </tr> <tr class="row-odd"><td>examples</td> <td>simple test problems</td> </tr> <tr class="row-even"><td>potentials</td> <td>embedded atom method (EAM) potential files</td> </tr> <tr class="row-odd"><td>src</td> <td>source files</td> </tr> <tr class="row-even"><td>tools</td> <td>pre- and post-processing tools</td> </tr> </tbody> </table> <p>Note that the <a class="reference external" href="download">download page</a> also has links to download Windows exectubles and installers, as well as pre-built executables for a few specific Linux distributions. It also has instructions for how to download/install LAMMPS for Macs (via Homebrew), and to download and update LAMMPS from SVN and Git repositories, which gives you the same files that are in the download tarball.</p> <p>The Windows and Linux executables for serial or parallel only include certain packages and bug-fixes/upgrades listed on <a class="reference external" href="http://lammps.sandia.gov/bug.html">this page</a> up to a certain date, as stated on the download page. If you want an executable with non-included packages or that is more current, then you’ll need to build LAMMPS yourself, as discussed in the next section.</p> <p>Skip to the <a class="reference internal" href="#start-6"><span>Running LAMMPS</span></a> sections for info on how to launch a LAMMPS Windows executable on a Windows box.</p> <hr class="docutils" /> </div> <div class="section" id="making-lammps"> <span id="start-2"></span><h2>2.2. Making LAMMPS<a class="headerlink" href="#making-lammps" title="Permalink to this headline">¶</a></h2> <p>This section has the following sub-sections:</p> <ul class="simple"> <li><a class="reference internal" href="#start-2-1"><span>Read this first</span></a></li> <li><a class="reference internal" href="#start-2-2"><span>Steps to build a LAMMPS executable</span></a></li> <li><a class="reference internal" href="#start-2-3"><span>Common errors that can occur when making LAMMPS</span></a></li> <li><a class="reference internal" href="#start-2-4"><span>Additional build tips</span></a></li> <li><a class="reference internal" href="#start-2-5"><span>Building for a Mac</span></a></li> <li><a class="reference internal" href="#start-2-6"><span>Building for Windows</span></a></li> </ul> <hr class="docutils" /> <p id="start-2-1"><strong>*Read this first:*</strong></p> <p>If you want to avoid building LAMMPS yourself, read the preceeding section about options available for downloading and installing executables. Details are discussed on the <a class="reference external" href="download">download</a> page.</p> <p>Building LAMMPS can be simple or not-so-simple. If all you need are the default packages installed in LAMMPS, and MPI is already installed on your machine, or you just want to run LAMMPS in serial, then you can typically use the Makefile.mpi or Makefile.serial files in src/MAKE by typing one of these lines (from the src dir):</p> <div class="highlight-python"><div class="highlight"><pre>make mpi make serial </pre></div> </div> <p>Note that on a facility supercomputer, there are often “modules” loaded in your environment that provide the compilers and MPI you should use. In this case, the “mpicxx” compile/link command in Makefile.mpi should just work by accessing those modules.</p> <p>It may be the case that one of the other Makefile.machine files in the src/MAKE sub-directories is a better match to your system (type “make” to see a list), you can use it as-is by typing (for example):</p> <div class="highlight-python"><div class="highlight"><pre>make stampede </pre></div> </div> <p>If any of these builds (with an existing Makefile.machine) works on your system, then you’re done!</p> <p>If you want to do one of the following:</p> <ul class="simple"> <li>use optional LAMMPS features that require additional libraries</li> <li>use optional packages that require additional libraries</li> <li>use optional accelerator packages that require special compiler/linker settings</li> <li>run on a specialized platform that has its own compilers, settings, or other libs to use</li> </ul> <p>then building LAMMPS is more complicated. You may need to find where auxiliary libraries exist on your machine or install them if they don’t. You may need to build additional libraries that are part of the LAMMPS package, before building LAMMPS. You may need to edit a Makefile.machine file to make it compatible with your system.</p> <p>Note that there is a Make.py tool in the src directory that automates several of these steps, but you still have to know what you are doing. <a class="reference internal" href="#start-4"><span>Section 2.4</span></a> below describes the tool. It is a convenient way to work with installing/un-installing various packages, the Makefile.machine changes required by some packages, and the auxiliary libraries some of them use.</p> <p>Please read the following sections 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 compilation, linking, and run problems that users have are often 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 post the issue to the <a class="reference external" href="http://lammps.sandia.gov/mail.html">LAMMPS mail list</a>.</p> <p>If you succeed in building LAMMPS on a new kind of machine, for which there isn’t a similar machine Makefile included in the src/MAKE/MACHINES directory, then send it to the developers and we can include it in the LAMMPS distribution.</p> <hr class="docutils" /> <p id="start-2-2"><strong>*Steps to build a LAMMPS executable:*</strong></p> <p><strong>Step 0</strong></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 systems and machines. See the src/MAKE/README file for a quick overview of what files are available and what sub-directories they are in.</p> <p>The src/MAKE dir has a few files that should work as-is on many platforms. The src/MAKE/OPTIONS dir has more that invoke additional compiler, MPI, and other setting options commonly used by LAMMPS, to illustrate their syntax. The src/MAKE/MACHINES dir has many more that have been tweaked or optimized for specific machines. These files are all good starting points if you find you need to change them for your machine. Put any file you edit into the src/MAKE/MINE directory and it will be never be touched by any LAMMPS updates.</p> <p>>From within the src directory, type “make” or “gmake”. You should see a list of available choices from src/MAKE and all of its sub-directories. If one of those has the options you want or is the machine you want, you can type a command like:</p> <div class="highlight-python"><div class="highlight"><pre>make mpi or make serial_icc or gmake mac </pre></div> </div> <p>Note that the corresponding Makefile.machine can exist in src/MAKE or any of its sub-directories. If a file with the same name appears in multiple places (not a good idea), the order they are used is as follows: src/MAKE/MINE, src/MAKE, src/MAKE/OPTIONS, src/MAKE/MACHINES. This gives preference to a file you have created/edited and put in src/MAKE/MINE.</p> <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_mpi or lmp_g++_serial or lmp_mac is produced, then you’re done; it’s your lucky day.</p> <p>Note that by default only a few of LAMMPS optional packages are installed. To build LAMMPS with optional packages, see <a class="reference internal" href="#start-3"><span>this section</span></a> below.</p> <p><strong>Step 1</strong></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 Makefile.* in src/MAKE or one of its sub-directories 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. When it works, put the edited file in src/MAKE/MINE and it will not be altered by any future LAMMPS updates.</p> <p><strong>Step 2</strong></p> <p>Change the first line of 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><strong>Step 3</strong></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 mpicxx 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 Intel icc compiler, which can be downloaded from <a class="reference external" 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. You should not need to do this if you use mpicxx.</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 (<em>.cpp) or header (</em>.h) files are edited. Some compilers do not support dependency file creation, or may use a different switch than -D. GNU g++ and Intel icc 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 <a href="#id1"><span class="problematic" id="id2">*</span></a>.d files will be printed out rapidly. This is not an error; it is the Makefile doing its normal creation of dependencies.</p> <p><strong>Step 4</strong></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 class="simple"> <li>-DLAMMPS_GZIP</li> <li>-DLAMMPS_JPEG</li> <li>-DLAMMPS_PNG</li> <li>-DLAMMPS_FFMPEG</li> <li>-DLAMMPS_MEMALIGN</li> <li>-DLAMMPS_XDR</li> <li>-DLAMMPS_SMALLBIG</li> <li>-DLAMMPS_BIGBIG</li> <li>-DLAMMPS_SMALLSMALL</li> <li>-DLAMMPS_LONGLONG_TO_LONG</li> <li>-DPACK_ARRAY</li> <li>-DPACK_POINTER</li> <li>-DPACK_MEMCPY</li> </ul> <p>The read_data and dump commands will read/write gzipped files if you compile with -DLAMMPS_GZIP. It requires that your machine supports the “popen()” function in the standard runtime library and that a gzip executable can be found by LAMMPS during a run.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">on some clusters with high-speed networks, using the fork() library calls (required by popen()) can interfere with the fast communication library and lead to simulations using compressed output or input to hang or crash. For selected operations, compressed file I/O is also available using a compression library instead, which are provided in the COMPRESS package. From more details about compiling LAMMPS with packages, please see below.</p> </div> <p>If you use -DLAMMPS_JPEG, the <a class="reference internal" href="dump_image.html"><em>dump image</em></a> command will be able to write out JPEG image files. For JPEG files, you must also link LAMMPS with a JPEG library, as described below. If you use -DLAMMPS_PNG, the <a class="reference internal" href="dump.html"><em>dump image</em></a> command will be able to write out PNG image files. For PNG files, you must also link LAMMPS with a PNG library, as described below. If neither of those two defines are used, LAMMPS will only be able to write out uncompressed PPM image files.</p> <p>If you use -DLAMMPS_FFMPEG, the <a class="reference internal" href="dump_image.html"><em>dump movie</em></a> command will be available to support on-the-fly generation of rendered movies the need to store intermediate image files. It requires that your machines supports the “popen” function in the standard runtime library and that an FFmpeg executable can be found by LAMMPS during the run.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">Similar to the note above, this option can conflict with high-speed networks, because it uses popen().</p> </div> <p>Using -DLAMMPS_MEMALIGN=<bytes> enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS. This can help to make more efficient use of vector instructions of modern CPUS, since dynamically allocated memory has to be aligned on larger than default byte boundaries (e.g. 16 bytes instead of 8 bytes on x86 type platforms) for optimal performance.</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 class="reference internal" href="dump.html"><em>dump</em></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 settings refer to use of 4-byte (small) vs 8-byte (big) integers within LAMMPS, as specified in src/lmptype.h. The only reason to use the BIGBIG setting is to enable simulation of huge molecular systems (which store bond topology info) with more than 2 billion atoms, or to track the image flags of moving atoms that wrap around a periodic box more than 512 times. Normally, the only reason to use SMALLSMALL is if your machine does not support 64-bit integers, though you can use SMALLSMALL setting if you are running in serial or on a desktop machine or small cluster where you will never run large systems or for long time (more than 2 billion atoms, more than 2 billion timesteps). See the <a class="reference internal" href="#start-2-4"><span>Additional build tips</span></a> section below for more details on these settings.</p> <p>Note that two packages, USER-ATC and USER-CUDA are not currently compatible with -DLAMMPS_BIGBIG. Also the GPU package requires the lib/gpu library to be compiled with the same setting, or the link will fail.</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 class="reference internal" href="kspace_style.html"><em>kspace_style</em></a> command for info about PPPM. See Step 6 below for info about building LAMMPS with an FFT library.</p> <p><strong>Step 5</strong></p> <p>The 3 MPI variables are used to specify an MPI library to build LAMMPS with. Note that you do not need to set these if you use the MPI compiler mpicxx for your CC and LINK setting in the section above. The MPI wrapper knows where to find the needed files.</p> <p>If you want LAMMPS to run in parallel, you must have an MPI library installed on your platform. If MPI is installed on your system in the usual place (under /usr/local), you also may not need to specify these 3 variables, assuming /usr/local is in your path. 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, before building LAMMPS. Or the parallel machine may have a vendor-provided MPI which the compiler has no trouble finding.</p> <p>Failing this, these 3 variables can be used to 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 MPICH2 or OpenMPI. MPICH can be downloaded from the <a class="reference external" href="http://www.mcs.anl.gov/research/projects/mpich2/">Argonne MPI site</a>. OpenMPI can be downloaded from the <a class="reference external" href="http://www.open-mpi.org">OpenMPI site</a>. Other MPI packages 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 is likely to be faster than a self-installed MPICH or OpenMPI, so find out how to build and link with it. If you use MPICH or OpenMPI, 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 src/MAKE/Makefile.serial 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. Note that if you are building with src/MAKE/Makefile.serial, e.g. by typing “make serial”, then the STUBS library is built for you.</p> <p>To build the STUBS library from the src directory, type “make mpi-stubs”, or from the src/STUBS dir, type “make”. This should create a libmpi_stubs.a file suitable for linking to LAMMPS. If the build fails, you will need to edit the STUBS/Makefile for your platform.</p> <p>The file STUBS/mpi.c 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><strong>Step 6</strong></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 class="reference internal" href="kspace_style.html"><em>kspace_style</em></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 class="reference external" 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 class="reference external" 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 -DFFTW_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 options.</p> <p><strong>Step 7</strong></p> <p>The 3 JPG variables allow you to specify a JPEG and/or PNG library which LAMMPS uses when writing out JPEG or PNG files via the <a class="reference internal" href="dump_image.html"><em>dump image</em></a> command. These can be left blank if you do not use the -DLAMMPS_JPEG or -DLAMMPS_PNG switches discussed above in Step 4, since in that case JPEG/PNG output will be disabled.</p> <p>A standard JPEG library usually goes by the name libjpeg.a or libjpeg.so 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>A standard PNG library usually goes by the name libpng.a or libpng.so and has an associated header file png.h. Whichever PNG 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><strong>Step 8</strong></p> <p>Note that by default only a few of LAMMPS optional packages are installed. To build LAMMPS with optional packages, see <a class="reference internal" href="#start-3"><span>this section</span></a> below, before proceeding to Step 9.</p> <p><strong>Step 9</strong></p> <p>That’s it. Once you have a correct Makefile.foo, and you have pre-built any other needed libraries (e.g. MPI, FFT, etc) all you need to do from the src directory is type something like this:</p> <div class="highlight-python"><div class="highlight"><pre>make foo or gmake foo </pre></div> </div> <p>You should get the executable lmp_foo when the build is complete.</p> <hr class="docutils" /> <p id="start-2-3"><strong>*Errors that can occur when making LAMMPS:*</strong></p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">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> </div> <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> <div class="highlight-python"><div class="highlight"><pre>make makelist make -f Makefile.list linux gmake -f Makefile.list mac </pre></div> </div> <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 class="docutils" /> <p id="start-2-4"><strong>*Additional build tips:*</strong></p> <ol class="arabic simple"> <li>Building LAMMPS for multiple platforms.</li> </ol> <p>You can make LAMMPS for multiple platforms from the same src directory. Each target creates its own object sub-directory called Obj_target where it stores the system-specific <a href="#id3"><span class="problematic" id="id4">*</span></a>.o files.</p> <ol class="arabic simple" start="2"> <li>Cleaning up.</li> </ol> <p>Typing “make clean-all” or “make clean-machine” will delete <a href="#id5"><span class="problematic" id="id6">*</span></a>.o object files created when LAMMPS is built, for either all builds or for a particular machine.</p> <p>(3) Changing the LAMMPS size limits via -DLAMMPS_SMALLBIG or -DLAMMPS_BIGBIG or -DLAMMPS_SMALLSMALL</p> <p>As explained above, any of these 3 settings can be specified on the LMP_INC line in your low-level src/MAKE/Makefile.foo.</p> <p>The default is -DLAMMPS_SMALLBIG which allows for systems with up to 2^63 atoms and 2^63 timesteps (about 9e18). The atom limit is for atomic systems which do not store bond topology info and thus do not require atom IDs. If you use atom IDs for atomic systems (which is the default) or if you use a molecular model, which stores bond topology info and thus requires atom IDs, the limit is 2^31 atoms (about 2 billion). This is because the IDs are stored in 32-bit integers.</p> <p>Likewise, with this setting, the 3 image flags for each atom (see the <a class="reference internal" href="dump.html"><em>dump</em></a> doc page for a discussion) are stored in a 32-bit integer, which means the atoms can only wrap around a periodic box (in each dimension) at most 512 times. If atoms move through the periodic box more than this many times, the image flags will “roll over”, e.g. from 511 to -512, which can cause diagnostics like the mean-squared displacement, as calculated by the <a class="reference internal" href="compute_msd.html"><em>compute msd</em></a> command, to be faulty.</p> <p>To allow for larger atomic systems with atom IDs or larger molecular systems or larger image flags, compile with -DLAMMPS_BIGBIG. This stores atom IDs and image flags in 64-bit integers. This enables atomic or molecular systems with atom IDS of up to 2^63 atoms (about 9e18). And image flags will not “roll over” until they reach 2^20 = 1048576.</p> <p>If your system does not support 8-byte integers, you will need to compile with the -DLAMMPS_SMALLSMALL setting. This will restrict the total number of atoms (for atomic or molecular systems) and timesteps to 2^31 (about 2 billion). Image flags will roll over at 2^9 = 512.</p> <p>Note that in src/lmptype.h there are definitions of all these data types as well as the MPI data types associated with them. The MPI types need to be consistent with the associated C data types, or else LAMMPS will generate a run-time error. As far as we know, the settings defined in src/lmptype.h are portable and work on every current system.</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 2^31 atoms per processor (about 2 billion). This should not normally be a limitation 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 class="docutils" /> <p id="start-2-5"><strong>*Building for a Mac:*</strong></p> <p>OS X is BSD Unix, so it should just work. See the src/MAKE/MACHINES/Makefile.mac and Makefile.mac_mpi files.</p> <hr class="docutils" /> <p id="start-2-6"><strong>*Building for Windows:*</strong></p> <p>The LAMMPS download page has an option to download both a serial and parallel pre-built Windows executable. See the <a class="reference internal" href="#start-6"><span>Running LAMMPS</span></a> section for instructions on running these executables on a Windows box.</p> <p>The pre-built executables hosted on the <a class="reference external" href="http://lammps.sandia.gov/download.html">LAMMPS download page</a> are built with a subset of the available packages; see the download page for the list. These are single executable files. No examples or documentation in included. You will need to download the full source code package to obtain those.</p> <p>As an alternative, you can download “daily builds” (and some older versions) of the installer packages from <a class="reference external" href="http://rpm.lammps.org/windows.html">rpm.lammps.org/windows.html</a>. These executables are built with most optional packages and the download includes documentation, some tools and most examples.</p> <p>If you want a Windows version with specific packages included and excluded, you can build it yourself.</p> <p>One way to do this is install and use cygwin to build LAMMPS with a standard unix style make program, just as you would on a Linux box; see src/MAKE/MACHINES/Makefile.cygwin.</p> -<p>The other way to do this is using Visual Studio and project files. -See the src/WINDOWS directory and its README.txt file for instructions -on both a basic build and a customized build with pacakges you select.</p> <hr class="docutils" /> </div> <div class="section" id="making-lammps-with-optional-packages"> <span id="start-3"></span><h2>2.3. Making LAMMPS with optional packages<a class="headerlink" href="#making-lammps-with-optional-packages" title="Permalink to this headline">¶</a></h2> <p>This section has the following sub-sections:</p> <ul class="simple"> <li><a class="reference internal" href="#start-3-1"><span>Package basics</span></a></li> <li><a class="reference internal" href="#start-3-2"><span>Including/excluding packages</span></a></li> <li><a class="reference internal" href="#start-3-3"><span>Packages that require extra libraries</span></a></li> <li><a class="reference internal" href="#start-3-4"><span>Packages that require Makefile.machine settings</span></a></li> </ul> <p>Note that the following <a class="reference internal" href="#start-4"><span>Section 2.4</span></a> describes the Make.py tool which can be used to install/un-install packages and build the auxiliary libraries which some of them use. It can also auto-edit a Makefile.machine to add settings needed by some packages.</p> <hr class="docutils" /> <p id="start-3-1"><strong>*Package basics:*</strong></p> <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.</p> <p>You can see the list of all packages by typing “make package” from within the src directory of the LAMMPS distribution. This also lists various make commands that can be used to manipulate packages.</p> <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 class="highlight-python"><div class="highlight"><pre><span class="n">lmp_machine</span> <span class="o">-</span><span class="n">h</span> </pre></div> </div> -<p>to run your executable with the optional <a class="reference internal" href="#start-7"><span>-h command-line switch</span></a> for “help”, which will list the styles and commands -known to your executable.</p> +<p>to run your executable with the optional <a class="reference internal" href="#start-7"><span>-h command-line switch</span></a> for “help”, which will simply list the styles and +commands known to your executable, and immediately exit.</p> <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 class="reference internal" href="Section_packages.html"><em>Section_packages</em></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 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>Standard packages, such as molecule or kspace, 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, such as user-atc or user-omp, 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 class="reference internal" href="Section_modify.html#mod-15"><span>this section</span></a> of the documentation.</p> -<p>Some packages (both standard and user) require additional libraries. -See more details below.</p> +package, you may need to contact the contributor directly to get help. +Information on how to submit additions you make to LAMMPS as single +files or either a standard or user-contributed package are given in +<a class="reference internal" href="Section_modify.html#mod-15"><span>this section</span></a> of the documentation.</p> +<p>Some packages (both standard and user) require additional auxiliary +libraries when building LAMMPS. See more details below.</p> <hr class="docutils" /> <p id="start-3-2"><strong>*Including/excluding packages:*</strong></p> -<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> +<p>To use (or not use) a package you must include it (or exclude it) +before building LAMMPS. From the src directory, this is typically as +simple as:</p> <div class="highlight-python"><div class="highlight"><pre>make yes-colloid make g++ </pre></div> </div> <p>or</p> <div class="highlight-python"><div class="highlight"><pre>make no-manybody make g++ </pre></div> </div> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">You should NOT include/exclude packages and build -LAMMPS in a single make command by using multiple targets, e.g. make +LAMMPS in a single make command using multiple targets, e.g. make yes-colloid g++. This is because the make procedure creates a list of source files that will be out-of-date for the build if the package -configuration changes during the same command.</p> +configuration changes within the same command.</p> </div> <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>If you will never run simulations that use the features in a particular packages, there is no reason to include it in your build. 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>When you download a LAMMPS tarball, these packages are pre-installed in the src directory: KSPACE, MANYBODY,MOLECULE. When you download LAMMPS source files from the SVN or Git repositories, no packages are pre-installed.</p> <p>Packages are included or excluded by typing “make yes-name” or “make no-name”, where “name” is the name of the package in lower-case, e.g. name = kspace for the KSPACE package or name = user-atc for the USER-ATC package. You can also type “make yes-standard”, “make no-standard”, “make yes-std”, “make no-std”, “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> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">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> </div> <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” or “make pu” 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” or “make ps” 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 class="docutils" /> <p id="start-3-3"><strong>*Packages that require extra libraries:*</strong></p> <p>A few of the standard and user packages require additional auxiliary -libraries. Most of them are provided with LAMMPS, in which case they -must be compiled first, before LAMMPS is built if you wish to include +libraries. Many of them are provided with LAMMPS, in which case they +must be compiled first, before LAMMPS is built, if you wish to include that package. If you get a LAMMPS build error about a missing library, this is likely the reason. See the <a class="reference internal" href="Section_packages.html"><em>Section_packages</em></a> doc page for a list of packages that have these kinds of auxiliary libraries.</p> <p>The lib directory in the distribution has sub-directories with package -names that correspond to the needed auxiliary libs, e.g. lib/reax. +names that correspond to the needed auxiliary libs, e.g. lib/gpu. Each sub-directory has a README file that gives more details. Code for most of the auxiliary libraries is included in that directory. Examples are the USER-ATC and MEAM packages.</p> <p>A few of the lib sub-directories do not include code, but do include -instructions and sometimes scripts that automate the process of +instructions (and sometimes scripts) that automate the process of downloading the auxiliary library and installing it so LAMMPS can link -to it. Examples are the KIM and VORONOI and USER-MOLFILE and USER-SMD +to it. Examples are the KIM, VORONOI, USER-MOLFILE, and USER-SMD packages.</p> <p>The lib/python directory (for the PYTHON package) contains only a choice of Makefile.lammps.* files. This is because no auxiliary code or libraries are needed, only the Python library and other system libs -that already available on your system. However, the Makefile.lammps -file is needed to tell the LAMMPS build which libs to use and where to -find them.</p> +that should already available on your system. However, the +Makefile.lammps file is needed to tell LAMMPS which libs to use and +where to find them.</p> <p>For libraries with provided code, the sub-directory README file -(e.g. lib/reax/README) has instructions on how to build that library. +(e.g. lib/atc/README) has instructions on how to build that library. Typically this is done by typing something like:</p> <div class="highlight-python"><div class="highlight"><pre>make -f Makefile.g++ </pre></div> </div> <p>If one of the provided Makefiles is not appropriate for your system you will need to edit or add one. Note that all the Makefiles have a setting for EXTRAMAKE at the top that specifies a Makefile.lammps.* file.</p> <p>If the library build is successful, it will produce 2 files in the lib directory:</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">libpackage</span><span class="o">.</span><span class="n">a</span> <span class="n">Makefile</span><span class="o">.</span><span class="n">lammps</span> </pre></div> </div> <p>The Makefile.lammps file will be a copy of the EXTRAMAKE file setting specified in the library Makefile.* you used.</p> <p>Note that you must insure that the settings in Makefile.lammps are appropriate for your system. If they are not, the LAMMPS build will fail.</p> <p>As explained in the lib/package/README files, the settings in Makefile.lammps are used to specify additional system libraries and their locations so that LAMMPS can build with the auxiliary library. -For example, if the MEAM or REAX packages are used, the auxiliary -libraries consist of F90 code, built with a Fortran complier. To link -that library with LAMMPS (a C++ code) via whatever C++ compiler LAMMPS -is built with, typically requires additional Fortran-to-C libraries be +For example, if the MEAM package is used, the auxiliary library +consists of F90 code, built with a Fortran complier. To link that +library with LAMMPS (a C++ code) via whatever C++ compiler LAMMPS is +built with, typically requires additional Fortran-to-C libraries be included in the link. Another example are the BLAS and LAPACK libraries needed to use the USER-ATC or USER-AWPMD packages.</p> <p>For libraries without provided code, the sub-directory README file has information on where to download the library and how to build it, e.g. lib/voronoi/README and lib/smd/README. The README files also describe how you must either (a) create soft links, via the “ln” command, in those directories to point to where you built or installed the packages, or (b) check or edit the Makefile.lammps file in the same directory to provide that information.</p> <p>Some of the sub-directories, e.g. lib/voronoi, also have an install.py script which can be used to automate the process of downloading/building/installing the auxiliary library, and setting the needed soft links. Type “python install.py” for further instructions.</p> <p>As with the sub-directories containing library code, if the soft links or settings in the lib/package/Makefile.lammps files are not correct, the LAMMPS build will typically fail.</p> <hr class="docutils" /> <p id="start-3-4"><strong>*Packages that require Makefile.machine settings*</strong></p> <p>A few packages require specific settings in Makefile.machine, to either build or use the package effectively. These are the USER-INTEL, KOKKOS, USER-OMP, and OPT packages. The details of what flags to add or what variables to define are given on the doc pages that describe each of these accelerator packages in detail:</p> <ul class="simple"> <li><a class="reference internal" href="accelerate_intel.html"><em>USER-INTEL package</em></a></li> <li><a class="reference internal" href="accelerate_kokkos.html"><em>KOKKOS package</em></a></li> <li><a class="reference internal" href="accelerate_omp.html"><em>USER-OMP package</em></a></li> <li><a class="reference internal" href="accelerate_opt.html"><em>OPT package</em></a></li> </ul> <p>Here is a brief summary of what Makefile.machine changes are needed. Note that the Make.py tool, described in the next <a class="reference internal" href="#start-4"><span>Section 2.4</span></a> can automatically add the needed info to an existing machine Makefile, using simple command-line arguments.</p> <p>In src/MAKE/OPTIONS see the following Makefiles for examples of the changes described below:</p> <ul class="simple"> <li>Makefile.intel_cpu</li> <li>Makefile.intel_phi</li> <li>Makefile.kokkos_omp</li> <li>Makefile.kokkos_cuda</li> <li>Makefile.kokkos_phi</li> <li>Makefile.omp</li> </ul> <p>For the USER-INTEL package, you have 2 choices when building. You can build with CPU or Phi support. The latter uses Xeon Phi chips in “offload” mode. Each of these modes requires additional settings in your Makefile.machine for CCFLAGS and LINKFLAGS.</p> <p>For CPU mode (if using an Intel compiler):</p> <ul class="simple"> <li>CCFLAGS: add -fopenmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost, -fno-alias, -ansi-alias, -override-limits</li> <li>LINKFLAGS: add -fopenmp</li> </ul> <p>For Phi mode add the following in addition to the CPU mode flags:</p> <ul class="simple"> <li>CCFLAGS: add -DLMP_INTEL_OFFLOAD and</li> <li>LINKFLAGS: add -offload</li> </ul> <p>And also add this to CCFLAGS:</p> <pre class="literal-block"> -offload-option,mic,compiler,"-fp-model fast=2 -mGLOB_default_function_attrs="gather_scatter_loop_unroll=4"" </pre> <p>For the KOKKOS package, you have 3 choices when building. You can build with OMP or Cuda or Phi support. Phi support uses Xeon Phi chips in “native” mode. This can be done by setting the following variables in your Makefile.machine:</p> <ul class="simple"> <li>for OMP support, set OMP = yes</li> <li>for Cuda support, set OMP = yes and CUDA = yes</li> <li>for Phi support, set OMP = yes and MIC = yes</li> </ul> <p>These can also be set as additional arguments to the make command, e.g.</p> <div class="highlight-python"><div class="highlight"><pre>make g++ OMP=yes MIC=yes </pre></div> </div> <p>Building the KOKKOS package with CUDA support requires a Makefile machine that uses the NVIDIA “nvcc” compiler, as well as an appropriate “arch” setting appropriate to the GPU hardware and NVIDIA software you have on your machine. See src/MAKE/OPTIONS/Makefile.kokkos_cuda for an example of such a machine Makefile.</p> <p>For the USER-OMP package, your Makefile.machine needs additional settings for CCFLAGS and LINKFLAGS.</p> <ul class="simple"> <li>CCFLAGS: add -fopenmp and -restrict</li> <li>LINKFLAGS: add -fopenmp</li> </ul> <p>For the OPT package, your Makefile.machine needs an additional settings for CCFLAGS.</p> <ul class="simple"> <li>CCFLAGS: add -restrict</li> </ul> <hr class="docutils" /> </div> -<div class="section" id="building-lammps-via-the-make-py-script"> -<span id="start-4"></span><h2>2.4. Building LAMMPS via the Make.py script<a class="headerlink" href="#building-lammps-via-the-make-py-script" title="Permalink to this headline">¶</a></h2> +<div class="section" id="building-lammps-via-the-make-py-tool"> +<span id="start-4"></span><h2>2.4. Building LAMMPS via the Make.py tool<a class="headerlink" href="#building-lammps-via-the-make-py-tool" title="Permalink to this headline">¶</a></h2> <p>The src directory includes a Make.py script, written in Python, which can be used to automate various steps of the build process. It is particularly useful for working with the accelerator packages, as well as other packages which require auxiliary libraries to be built.</p> <p>The goal of the Make.py tool is to allow any complex multi-step LAMMPS build to be performed as a single Make.py command. And you can archive the commands, so they can be re-invoked later via the -r (redo) switch. If you find some LAMMPS build procedure that can’t be done in a single Make.py command, let the developers know, and we’ll see if we can augment the tool.</p> <p>You can run Make.py from the src directory by typing either:</p> <div class="highlight-python"><div class="highlight"><pre>Make.py -h python Make.py -h </pre></div> </div> <p>which will give you help info about the tool. For the former to work, you may need to edit the first line of Make.py to point to your local Python. And you may need to insure the script is executable:</p> <div class="highlight-python"><div class="highlight"><pre>chmod +x Make.py </pre></div> </div> <p>Here are examples of build tasks you can perform with Make.py:</p> <table border="1" class="docutils"> <colgroup> <col width="58%" /> <col width="42%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td>Install/uninstall packages</td> <td>Make.py -p no-lib kokkos omp intel</td> </tr> <tr class="row-even"><td>Build specific auxiliary libs</td> <td>Make.py -a lib-atc lib-meam</td> </tr> <tr class="row-odd"><td>Build libs for all installed packages</td> <td>Make.py -p cuda gpu -gpu mode=double arch=31 -a lib-all</td> </tr> <tr class="row-even"><td>Create a Makefile from scratch with compiler and MPI settings</td> <td>Make.py -m none -cc g++ -mpi mpich -a file</td> </tr> <tr class="row-odd"><td>Augment Makefile.serial with settings for installed packages</td> <td>Make.py -p intel -intel cpu -m serial -a file</td> </tr> <tr class="row-even"><td>Add JPG and FFTW support to Makefile.mpi</td> <td>Make.py -m mpi -jpg -fft fftw -a file</td> </tr> <tr class="row-odd"><td>Build LAMMPS with a parallel make using Makefile.mpi</td> <td>Make.py -j 16 -m mpi -a exe</td> </tr> <tr class="row-even"><td>Build LAMMPS and libs it needs using Makefile.serial with accelerator settings</td> <td>Make.py -p gpu intel -intel cpu -a lib-all file serial</td> </tr> </tbody> </table> <p>The bench and examples directories give Make.py commands that can be used to build LAMMPS with the various packages and options needed to run all the benchmark and example input scripts. See these files for more details:</p> <ul class="simple"> <li>bench/README</li> <li>bench/FERMI/README</li> <li>bench/KEPLER/README</li> <li>bench/PHI/README</li> <li>examples/README</li> <li>examples/accelerate/README</li> <li>examples/accelerate/make.list</li> </ul> <p>All of the Make.py options and syntax help can be accessed by using the “-h” switch.</p> <p>E.g. typing “Make.py -h” gives</p> <div class="highlight-python"><div class="highlight"><pre>Syntax: Make.py switch args ... switches can be listed in any order help switch: -h prints help and syntax for all other specified switches switch for actions: -a lib-all, lib-dir, clean, file, exe or machine list one or more actions, in any order machine is a Makefile.machine suffix, must be last if used one-letter switches: -d (dir), -j (jmake), -m (makefile), -o (output), -p (packages), -r (redo), -s (settings), -v (verbose) switches for libs: -atc, -awpmd, -colvars, -cuda -gpu, -meam, -poems, -qmmm, -reax switches for build and makefile options: -intel, -kokkos, -cc, -mpi, -fft, -jpg, -png </pre></div> </div> <p>Using the “-h” switch with other switches and actions gives additional info on all the other specified switches or actions. The “-h” can be anywhere in the command-line and the other switches do not need their arguments. E.g. type “Make.py -h -d -atc -intel” will print:</p> <div class="highlight-python"><div class="highlight"><pre>-d dir dir = LAMMPS home dir if -d not specified, working dir must be lammps/src </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>-atc make=suffix lammps=suffix2 all args are optional and can be in any order make = use Makefile.suffix (def = g++) lammps = use Makefile.lammps.suffix2 (def = EXTRAMAKE in makefile) </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>-intel mode mode = cpu or phi (def = cpu) build Intel package for CPU or Xeon Phi </pre></div> </div> <p>Note that Make.py never overwrites an existing Makefile.machine. Instead, it creates src/MAKE/MINE/Makefile.auto, which you can save or rename if desired. Likewise it creates an executable named src/lmp_auto, which you can rename using the -o switch if desired.</p> <p>The most recently executed Make.py commmand is saved in src/Make.py.last. You can use the “-r” switch (for redo) to re-invoke the last command, or you can save a sequence of one or more Make.py commands to a file and invoke the file of commands using “-r”. You can also label the commands in the file and invoke one or more of them by name.</p> <p>A typical use of Make.py is to start with a valid Makefile.machine for your system, that works for a vanilla LAMMPS build, i.e. when optional packages are not installed. You can then use Make.py to add various settings (FFT, JPG, PNG) to the Makefile.machine as well as change its compiler and MPI options. You can also add additional packages to the build, as well as build the needed supporting libraries.</p> <p>You can also use Make.py to create a new Makefile.machine from scratch, using the “-m none” switch, if you also specify what compiler and MPI options to use, via the “-cc” and “-mpi” switches.</p> <hr class="docutils" /> </div> <div class="section" id="building-lammps-as-a-library"> <span id="start-5"></span><h2>2.5. Building LAMMPS as a library<a class="headerlink" href="#building-lammps-as-a-library" title="Permalink to this headline">¶</a></h2> <p>LAMMPS can be built as either a static or shared library, which can then be called from another application or a scripting language. See <a class="reference internal" href="Section_howto.html#howto-10"><span>this section</span></a> for more info on coupling LAMMPS to other codes. See <a class="reference internal" href="Section_python.html"><em>this section</em></a> for more info on wrapping and running LAMMPS from Python.</p> <div class="section" id="static-library"> <h3>2.5.1. <strong>Static library:</strong><a class="headerlink" href="#static-library" title="Permalink to this headline">¶</a></h3> <p>To build LAMMPS as a static library (<a href="#id7"><span class="problematic" id="id8">*</span></a>.a file on Linux), type</p> <div class="highlight-python"><div class="highlight"><pre>make foo mode=lib </pre></div> </div> <p>where foo is the machine name. This kind of library is typically used to statically link a driver application to LAMMPS, so that you can insure all dependencies are satisfied at compile time. This will use the ARCHIVE and ARFLAGS settings in src/MAKE/Makefile.foo. The build will create the file liblammps_foo.a which another application can link to. It will also create a soft link liblammps.a, which will point to the most recently built static library.</p> </div> <div class="section" id="shared-library"> <h3>2.5.2. <strong>Shared library:</strong><a class="headerlink" href="#shared-library" title="Permalink to this headline">¶</a></h3> <p>To build LAMMPS as a shared library (<a href="#id9"><span class="problematic" id="id10">*</span></a>.so file on Linux), which can be dynamically loaded, e.g. from Python, type</p> <div class="highlight-python"><div class="highlight"><pre>make foo mode=shlib </pre></div> </div> <p>where foo is the machine name. This kind of library is required when wrapping LAMMPS with Python; see <a class="reference internal" href="Section_python.html"><em>Section_python</em></a> for details. This will use the SHFLAGS and SHLIBFLAGS settings in src/MAKE/Makefile.foo and perform the build in the directory Obj_shared_foo. This is so that each file can be compiled with the -fPIC flag which is required for inclusion in a shared library. The build will create the file liblammps_foo.so which another application can link to dyamically. It will also create a soft link liblammps.so, which will point to the most recently built shared library. This is the file the Python wrapper loads by default.</p> <p>Note that for a shared library to be usable by a calling program, all the auxiliary libraries it depends on must also exist as shared libraries. This will be the case for libraries included with LAMMPS, such as the dummy MPI library in src/STUBS or any package libraries in lib/packages, since they are always built as shared libraries using the -fPIC switch. However, if a library like MPI or FFTW does not exist as a shared library, the shared library build will generate an error. This means you will need to install a shared library version of the auxiliary library. The build instructions for the library should tell you how to do this.</p> <p>Here is an example of such errors when the system FFTW or provided lib/colvars library have not been built as shared libraries:</p> <div class="highlight-python"><div class="highlight"><pre>/usr/bin/ld: /usr/local/lib/libfftw3.a(mapflags.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libfftw3.a: could not read symbols: Bad value </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>/usr/bin/ld: ../../lib/colvars/libcolvars.a(colvarmodule.o): relocation R_X86_64_32 against `__pthread_key_create' can not be used when making a shared object; recompile with -fPIC ../../lib/colvars/libcolvars.a: error adding symbols: Bad value </pre></div> </div> <p>As an example, here is how to build and install the <a class="reference external" href="http://www-unix.mcs.anl.gov/mpi">MPICH library</a>, a popular open-source version of MPI, distributed by Argonne National Labs, as a shared library in the default /usr/local/lib location:</p> <div class="highlight-python"><div class="highlight"><pre>./configure --enable-shared make make install </pre></div> </div> <p>You may need to use “sudo make install” in place of the last line if you do not have write privileges for /usr/local/lib. The end result should be the file /usr/local/lib/libmpich.so.</p> </div> <div class="section" id="additional-requirement-for-using-a-shared-library"> <h3>2.5.3. <strong>Additional requirement for using a shared library:</strong><a class="headerlink" href="#additional-requirement-for-using-a-shared-library" title="Permalink to this headline">¶</a></h3> <p>The operating system finds shared libraries to load at run-time using the environment variable LD_LIBRARY_PATH. So you may wish to copy the file src/liblammps.so or src/liblammps_g++.so (for example) to a place the system can find it by default, such as /usr/local/lib, or you may wish to add the LAMMPS src directory to LD_LIBRARY_PATH, so that the current version of the shared library is always available to programs that use it.</p> <p>For the csh or tcsh shells, you would add something like this to your ~/.cshrc file:</p> <div class="highlight-python"><div class="highlight"><pre>setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/home/sjplimp/lammps/src </pre></div> </div> </div> <div class="section" id="calling-the-lammps-library"> <h3>2.5.4. <strong>Calling the LAMMPS library:</strong><a class="headerlink" href="#calling-the-lammps-library" title="Permalink to this headline">¶</a></h3> <p>Either flavor of library (static or shared) allows one or more LAMMPS objects to be instantiated from the calling program.</p> <p>When used from a C++ program, all of LAMMPS is wrapped in a LAMMPS_NS namespace; you can safely use any of its classes and methods from within the calling code, as needed.</p> <p>When used from a C or Fortran program or a scripting language like Python, the library has a simple function-style interface, provided in src/library.cpp and src/library.h.</p> <p>See the sample codes in examples/COUPLE/simple for examples of C++ and C and Fortran codes that invoke LAMMPS thru its library interface. There are other examples as well in the COUPLE directory which are discussed in <a class="reference internal" href="Section_howto.html#howto-10"><span>Section_howto 10</span></a> of the manual. See <a class="reference internal" href="Section_python.html"><em>Section_python</em></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 define the C-style API for using LAMMPS as a library. See <a class="reference internal" href="Section_howto.html#howto-19"><span>Section_howto 19</span></a> of the manual for a description of the interface and how to extend it for your needs.</p> <hr class="docutils" /> </div> </div> <div class="section" id="running-lammps"> <span id="start-6"></span><h2>2.6. Running LAMMPS<a class="headerlink" href="#running-lammps" title="Permalink to this headline">¶</a></h2> <p>By default, LAMMPS runs by reading commands from standard input. Thus if you run the LAMMPS executable by itself, e.g.</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">lmp_linux</span> </pre></div> </div> <p>it will simply wait, expecting commands from the keyboard. Typically you should put commands in an input script and use I/O redirection, e.g.</p> <div class="highlight-python"><div class="highlight"><pre>lmp_linux < in.file </pre></div> </div> <p>For parallel environments this should also work. If it does not, use the ‘-in’ command-line switch, e.g.</p> <div class="highlight-python"><div class="highlight"><pre>lmp_linux -in in.file </pre></div> </div> <p><a class="reference internal" href="Section_commands.html"><em>This section</em></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> <div class="highlight-python"><div class="highlight"><pre>cd src make linux cp lmp_linux ../bench cd ../bench mpirun -np 4 lmp_linux -in in.lj </pre></div> </div> <p>See <a class="reference external" href="http://lammps.sandia.gov/bench.html">this page</a> for timings for this and the other benchmarks on various platforms. Note that some of the example scripts require LAMMPS to be built with one or more of its optional packages.</p> <hr class="docutils" /> <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 class="simple"> <li>Get a command prompt by going to Start->Run... , then typing “cmd”.</li> <li>Move to the directory where you have saved lmp_win_no-mpi.exe (e.g. by typing: cd “Documents”).</li> <li>At the command prompt, type “lmp_win_no-mpi -in in.lj”, replacing in.lj with the name of your LAMMPS input script.</li> </ul> <p>For the MPI version, which allows you to run LAMMPS under Windows on multiple processors, follow these steps:</p> <ul class="simple"> <li>Download and install <a class="reference external" href="http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads">MPICH2</a> for Windows.</li> <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> <li>Get a command prompt by going to Start->Run... , then typing “cmd”.</li> <li>Move to the directory where you have saved lmp_win_mpi.exe (e.g. by typing: cd “Documents”).</li> <li>Then type something like this: “mpiexec -localonly 4 lmp_win_mpi -in in.lj”, replacing in.lj with the name of your LAMMPS input script.</li> <li>Note that you may need to provide smpd with a passphrase (it doesn’t matter what you type).</li> <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. :l Alternatively, you can still use this executable to run on a single processor by typing something like: “lmp_win_mpi -in in.lj”.</li> </ul> <hr class="docutils" /> <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 class="reference internal" href="Section_errors.html"><em>Section_errors</em></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 class="docutils" /> </div> <div class="section" id="command-line-options"> <span id="start-7"></span><h2>2.7. Command-line options<a class="headerlink" href="#command-line-options" title="Permalink to this headline">¶</a></h2> <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 class="simple"> <li>-c or -cuda</li> <li>-e or -echo</li> <li>-h or -help</li> <li>-i or -in</li> <li>-k or -kokkos</li> <li>-l or -log</li> <li>-nc or -nocite</li> <li>-pk or -package</li> <li>-p or -partition</li> <li>-pl or -plog</li> <li>-ps or -pscreen</li> <li>-r or -restart</li> <li>-ro or -reorder</li> <li>-sc or -screen</li> <li>-sf or -suffix</li> <li>-v or -var</li> </ul> <p>For example, lmp_ibm might be launched as follows:</p> <div class="highlight-python"><div class="highlight"><pre>mpirun -np 16 lmp_ibm -v f tmp.out -l my.log -sc none -in in.alloy mpirun -np 16 lmp_ibm -var f tmp.out -log my.log -screen none -in in.alloy </pre></div> </div> <p>Here are the details on the options:</p> <div class="highlight-python"><div class="highlight"><pre>-cuda on/off </pre></div> </div> <p>Explicitly enable or disable CUDA support, as provided by the USER-CUDA package. Even if LAMMPS is built with this package, as described above in <a class="reference internal" href="#start-3"><span>Section 2.3</span></a>, this switch must be set to enable running with the CUDA-enabled styles the package provides. If the switch is not set (the default), LAMMPS will operate as if the USER-CUDA package were not installed; i.e. you can run standard LAMMPS or with the GPU package, for testing or benchmarking purposes.</p> <div class="highlight-python"><div class="highlight"><pre>-echo style </pre></div> </div> <p>Set the style of command echoing. The style can be <em>none</em> or <em>screen</em> or <em>log</em> or <em>both</em>. 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 <em>log</em>. The echo style can also be set by using the <a class="reference internal" href="echo.html"><em>echo</em></a> command in the input script itself.</p> <div class="highlight-python"><div class="highlight"><pre><span class="o">-</span><span class="n">help</span> </pre></div> </div> <p>Print a brief help summary and a list of options compiled into this executable for each LAMMPS style (atom_style, fix, compute, pair_style, bond_style, etc). This can tell you if the command you want to use was included via the appropriate package at compile time. LAMMPS will print the info and immediately exit if this switch is used.</p> <div class="highlight-python"><div class="highlight"><pre>-in file </pre></div> </div> <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 script from standard input, typically from a script via I/O redirection; e.g. lmp_linux < in.run. I/O redirection should also work in parallel, but if it does not (in the unlikely case that an MPI implementation does not support it), then use the -in flag. Note that this is a required switch when running LAMMPS in multi-partition mode, since multiple processors cannot all read from stdin.</p> <div class="highlight-python"><div class="highlight"><pre>-kokkos on/off keyword/value ... </pre></div> </div> <p>Explicitly enable or disable KOKKOS support, as provided by the KOKKOS package. Even if LAMMPS is built with this package, as described above in <a class="reference internal" href="#start-3"><span>Section 2.3</span></a>, this switch must be set to enable running with the KOKKOS-enabled styles the package provides. If the switch is not set (the default), LAMMPS will operate as if the KOKKOS package were not installed; i.e. you can run standard LAMMPS or with the GPU or USER-CUDA or USER-OMP packages, for testing or benchmarking purposes.</p> <p>Additional optional keyword/value pairs can be specified which determine how Kokkos will use the underlying hardware on your platform. These settings apply to each MPI task you launch via the “mpirun” or “mpiexec” command. You may choose to run one or more MPI tasks per physical node. Note that if you are running on a desktop machine, you typically have one physical node. On a cluster or supercomputer there may be dozens or 1000s of physical nodes.</p> <p>Either the full word or an abbreviation can be used for the keywords. Note that the keywords do not use a leading minus sign. I.e. the keyword is “t”, not “-t”. Also note that each of the keywords has a default setting. Example of when to use these options and what settings to use on different platforms is given in <span class="xref std std-ref">Section 5.8</span>.</p> <ul class="simple"> <li>d or device</li> <li>g or gpus</li> <li>t or threads</li> <li>n or numa</li> </ul> <div class="highlight-python"><div class="highlight"><pre>device Nd </pre></div> </div> <p>This option is only relevant if you built LAMMPS with CUDA=yes, you have more than one GPU per node, and if you are running with only one MPI task per node. The Nd setting is the ID of the GPU on the node to run on. By default Nd = 0. If you have multiple GPUs per node, they have consecutive IDs numbered as 0,1,2,etc. This setting allows you to launch multiple independent jobs on the node, each with a single MPI task per node, and assign each job to run on a different GPU.</p> <div class="highlight-python"><div class="highlight"><pre>gpus Ng Ns </pre></div> </div> <p>This option is only relevant if you built LAMMPS with CUDA=yes, you have more than one GPU per node, and you are running with multiple MPI tasks per node (up to one per GPU). The Ng setting is how many GPUs you will use. The Ns setting is optional. If set, it is the ID of a GPU to skip when assigning MPI tasks to GPUs. This may be useful if your desktop system reserves one GPU to drive the screen and the rest are intended for computational work like running LAMMPS. By default Ng = 1 and Ns is not set.</p> <p>Depending on which flavor of MPI you are running, LAMMPS will look for one of these 3 environment variables</p> <div class="highlight-python"><div class="highlight"><pre>SLURM_LOCALID (various MPI variants compiled with SLURM support) MV2_COMM_WORLD_LOCAL_RANK (Mvapich) OMPI_COMM_WORLD_LOCAL_RANK (OpenMPI) </pre></div> </div> <p>which are initialized by the “srun”, “mpirun” or “mpiexec” commands. The environment variable setting for each MPI rank is used to assign a unique GPU ID to the MPI task.</p> <div class="highlight-python"><div class="highlight"><pre>threads Nt </pre></div> </div> <p>This option assigns Nt number of threads to each MPI task for performing work when Kokkos is executing in OpenMP or pthreads mode. The default is Nt = 1, which essentially runs in MPI-only mode. If there are Np MPI tasks per physical node, you generally want Np*Nt = the number of physical cores per node, to use your available hardware optimally. This also sets the number of threads used by the host when LAMMPS is compiled with CUDA=yes.</p> <div class="highlight-python"><div class="highlight"><pre>numa Nm </pre></div> </div> <p>This option is only relevant when using pthreads with hwloc support. In this case Nm defines the number of NUMA regions (typicaly sockets) on a node which will be utilizied by a single MPI rank. By default Nm = 1. If this option is used the total number of worker-threads per MPI rank is threads*numa. Currently it is always almost better to assign at least one MPI rank per NUMA region, and leave numa set to its default value of 1. This is because letting a single process span multiple NUMA regions induces a significant amount of cross NUMA data traffic which is slow.</p> <div class="highlight-python"><div class="highlight"><pre>-log file </pre></div> </div> <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 class="reference internal" href="log.html"><em>log</em></a> command in the input script will override this setting. Option -plog will override the name of the partition log files file.N.</p> <div class="highlight-python"><div class="highlight"><pre><span class="o">-</span><span class="n">nocite</span> </pre></div> </div> <p>Disable writing the log.cite file which is normally written to list references for specific cite-able features used during a LAMMPS run. See the <a class="reference external" href="http://lammps.sandia.gov/cite.html">citation page</a> for more details.</p> <div class="highlight-python"><div class="highlight"><pre>-package style args .... </pre></div> </div> <p>Invoke the <a class="reference internal" href="package.html"><em>package</em></a> command with style and args. The syntax is the same as if the command appeared at the top of the input script. For example “-package gpu 2” or “-pk gpu 2” is the same as <a class="reference internal" href="package.html"><em>package gpu 2</em></a> in the input script. The possible styles and args are documented on the <a class="reference internal" href="package.html"><em>package</em></a> doc page. This switch can be used multiple times, e.g. to set options for the USER-INTEL and USER-OMP packages which can be used together.</p> <p>Along with the “-suffix” command-line switch, this is a convenient mechanism for invoking accelerator packages and their options without having to edit an input script.</p> <div class="highlight-python"><div class="highlight"><pre>-partition 8x2 4 5 ... </pre></div> </div> <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>Running with multiple partitions can e useful for running <a class="reference internal" href="Section_howto.html#howto-5"><span>multi-replica simulations</span></a>, where each replica runs on on one or a few 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.</p> <p>To run multiple independent simulatoins from one input script, using multiple partitions, see <a class="reference internal" href="Section_howto.html#howto-4"><span>Section_howto 4</span></a> of the manual. World- and universe-style <a class="reference internal" href="variable.html"><em>variables</em></a> are useful in this context.</p> <div class="highlight-python"><div class="highlight"><pre>-plog file </pre></div> </div> <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> <div class="highlight-python"><div class="highlight"><pre>-pscreen file </pre></div> </div> <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 class="literal-block"> -restart restartfile <em>remap</em> datafile keyword value ... </pre> <p>Convert the restart file into a data file and immediately exit. This is the same operation as if the following 2-line input script were run:</p> <pre class="literal-block"> read_restart restartfile <em>remap</em> write_data datafile keyword value ... </pre> <p>Note that the specified restartfile and datafile can have wild-card characters (“*”,%”) as described by the <a class="reference internal" href="read_restart.html"><em>read_restart</em></a> and <a class="reference internal" href="write_data.html"><em>write_data</em></a> commands. But a filename such as file.* will need to be enclosed in quotes to avoid shell expansion of the “*” character.</p> <p>Note that following restartfile, the optional flag <em>remap</em> can be used. This has the same effect as adding it to the <a class="reference internal" href="read_restart.html"><em>read_restart</em></a> command, as explained on its doc page. This is only useful if the reading of the restart file triggers an error that atoms have been lost. In that case, use of the remap flag should allow the data file to still be produced.</p> <p>Also note that following datafile, the same optional keyword/value pairs can be listed as used by the <a class="reference internal" href="write_data.html"><em>write_data</em></a> command.</p> <div class="highlight-python"><div class="highlight"><pre>-reorder nth N -reorder custom filename </pre></div> </div> <p>Reorder the processors in the MPI communicator used to instantiate LAMMPS, in one of several ways. The original MPI communicator ranks all P processors from 0 to P-1. The mapping of these ranks to physical processors is done by MPI before LAMMPS begins. It may be useful in some cases to alter the rank order. E.g. to insure that cores within each node are ranked in a desired order. Or when using the <a class="reference internal" href="run_style.html"><em>run_style verlet/split</em></a> command with 2 partitions to insure that a specific Kspace processor (in the 2nd partition) is matched up with a specific set of processors in the 1st partition. See the <a class="reference internal" href="Section_accelerate.html"><em>Section_accelerate</em></a> doc pages for more details.</p> <p>If the keyword <em>nth</em> is used with a setting <em>N</em>, then it means every Nth processor will be moved to the end of the ranking. This is useful when using the <a class="reference internal" href="run_style.html"><em>run_style verlet/split</em></a> command with 2 partitions via the -partition command-line switch. The first set of processors will be in the first partition, the 2nd set in the 2nd partition. The -reorder command-line switch can alter this so that the 1st N procs in the 1st partition and one proc in the 2nd partition will be ordered consecutively, e.g. as the cores on one physical node. This can boost performance. For example, if you use “-reorder nth 4” and “-partition 9 3” and you are running on 12 processors, the processors will be reordered from</p> <div class="highlight-python"><div class="highlight"><pre>0 1 2 3 4 5 6 7 8 9 10 11 </pre></div> </div> <p>to</p> <div class="highlight-python"><div class="highlight"><pre>0 1 2 4 5 6 8 9 10 3 7 11 </pre></div> </div> <p>so that the processors in each partition will be</p> <div class="highlight-python"><div class="highlight"><pre>0 1 2 4 5 6 8 9 10 3 7 11 </pre></div> </div> <p>See the “processors” command for how to insure processors from each partition could then be grouped optimally for quad-core nodes.</p> <p>If the keyword is <em>custom</em>, then a file that specifies a permutation of the processor ranks is also specified. The format of the reorder file is as follows. Any number of initial blank or comment lines (starting with a “#” character) can be present. These should be followed by P lines of the form:</p> <div class="highlight-python"><div class="highlight"><pre>I J </pre></div> </div> <p>where P is the number of processors LAMMPS was launched with. Note that if running in multi-partition mode (see the -partition switch above) P is the total number of processors in all partitions. The I and J values describe a permutation of the P processors. Every I and J should be values from 0 to P-1 inclusive. In the set of P I values, every proc ID should appear exactly once. Ditto for the set of P J values. A single I,J pairing means that the physical processor with rank I in the original MPI communicator will have rank J in the reordered communicator.</p> <p>Note that rank ordering can also be specified by many MPI implementations, either by environment variables that specify how to order physical processors, or by config files that specify what physical processors to assign to each MPI rank. The -reorder switch simply gives you a portable way to do this without relying on MPI itself. See the <a class="reference external" href="processors">processors out</a> command for how to output info on the final assignment of physical processors to the LAMMPS simulation domain.</p> <div class="highlight-python"><div class="highlight"><pre>-screen file </pre></div> </div> <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> <div class="highlight-python"><div class="highlight"><pre>-suffix style args </pre></div> </div> <p>Use variants of various styles if they exist. The specified style can be <em>cuda</em>, <em>gpu</em>, <em>intel</em>, <em>kk</em>, <em>omp</em>, <em>opt</em>, or <em>hybrid</em>. These refer to optional packages that LAMMPS can be built with, as described above in <a class="reference internal" href="#start-3"><span>Section 2.3</span></a>. The “cuda” style corresponds to the USER-CUDA package, the “gpu” style to the GPU package, the “intel” style to the USER-INTEL package, the “kk” style to the KOKKOS package, the “opt” style to the OPT package, and the “omp” style to the USER-OMP package. The hybrid style is the only style that accepts arguments. It allows for two packages to be specified. The first package specified is the default and will be used if it is available. If no style is available for the first package, the style for the second package will be used if available. For example, “-suffix hybrid intel omp” will use styles from the USER-INTEL package if they are installed and available, but styles for the USER-OMP package otherwise.</p> <p>Along with the “-package” command-line switch, this is a convenient mechanism for invoking accelerator packages and their options without having to edit an input script.</p> <p>As an example, all of the packages provide a <a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut</em></a> variant, with style names lj/cut/cuda, lj/cut/gpu, lj/cut/intel, lj/cut/kk, lj/cut/omp, and lj/cut/opt. A variant style can be specified explicitly in your input script, e.g. pair_style lj/cut/gpu. If the -suffix switch is used the specified suffix (cuda,gpu,intel,kk,omp,opt) is automatically appended whenever your input script command creates a new <a class="reference internal" href="atom_style.html"><em>atom</em></a>, <a class="reference internal" href="pair_style.html"><em>pair</em></a>, <a class="reference internal" href="fix.html"><em>fix</em></a>, <a class="reference internal" href="compute.html"><em>compute</em></a>, or <a class="reference internal" href="run_style.html"><em>run</em></a> style. If the variant version does not exist, the standard version is created.</p> <p>For the GPU package, using this command-line switch also invokes the default GPU settings, as if the command “package gpu 1” were used at the top of your input script. These settings can be changed by using the “-package gpu” command-line switch or the <a class="reference internal" href="package.html"><em>package gpu</em></a> command in your script.</p> <p>For the USER-INTEL package, using this command-line switch also invokes the default USER-INTEL settings, as if the command “package intel 1” were used at the top of your input script. These settings can be changed by using the “-package intel” command-line switch or the <a class="reference internal" href="package.html"><em>package intel</em></a> command in your script. If the USER-OMP package is also installed, the hybrid style with “intel omp” arguments can be used to make the omp suffix a second choice, if a requested style is not available in the USER-INTEL package. It will also invoke the default USER-OMP settings, as if the command “package omp 0” were used at the top of your input script. These settings can be changed by using the “-package omp” command-line switch or the <a class="reference internal" href="package.html"><em>package omp</em></a> command in your script.</p> <p>For the KOKKOS package, using this command-line switch also invokes the default KOKKOS settings, as if the command “package kokkos” were used at the top of your input script. These settings can be changed by using the “-package kokkos” command-line switch or the <a class="reference internal" href="package.html"><em>package kokkos</em></a> command in your script.</p> <p>For the OMP package, using this command-line switch also invokes the default OMP settings, as if the command “package omp 0” were used at the top of your input script. These settings can be changed by using the “-package omp” command-line switch or the <a class="reference internal" href="package.html"><em>package omp</em></a> command in your script.</p> <p>The <a class="reference internal" href="suffix.html"><em>suffix</em></a> command can also be used within an input script to set a suffix, or to turn off or back on any suffix setting made via the command line.</p> <div class="highlight-python"><div class="highlight"><pre>-var name value1 value2 ... </pre></div> </div> <p>Specify a variable that will be defined for substitution purposes when the input script is read. This switch can be used multiple times to define multiple variables. “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 class="reference internal" href="variable.html"><em>index-style variable</em></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 class="reference internal" href="variable.html"><em>variable</em></a> command for more info on defining index and other kinds of variables and <a class="reference internal" href="Section_commands.html#cmd-2"><span>this section</span></a> for more info on using variables in input scripts.</p> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Currently, the command-line parser looks for arguments that start with “-” to indicate new switches. Thus you cannot specify multiple variable values if any of they start with a “-”, e.g. a negative numeric value. It is OK if the first value1 starts with a “-”, since it is automatically skipped.</p> </div> <hr class="docutils" /> </div> <div class="section" id="lammps-screen-output"> <span id="start-8"></span><h2>2.8. LAMMPS screen output<a class="headerlink" href="#lammps-screen-output" title="Permalink to this headline">¶</a></h2> <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> <p>Loop time of 2.81192 on 4 procs for 300 steps with 2004 atoms</p> <div class="highlight-python"><div class="highlight"><pre>Performance: 18.436 ns/day 1.302 hours/ns 106.689 timesteps/s 97.0% CPU use with 4 MPI tasks x no OpenMP threads </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>MPI task timings breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- Pair | 1.9808 | 2.0134 | 2.0318 | 1.4 | 71.60 Bond | 0.0021894 | 0.0060319 | 0.010058 | 4.7 | 0.21 Kspace | 0.3207 | 0.3366 | 0.36616 | 3.1 | 11.97 Neigh | 0.28411 | 0.28464 | 0.28516 | 0.1 | 10.12 Comm | 0.075732 | 0.077018 | 0.07883 | 0.4 | 2.74 Output | 0.00030518 | 0.00042665 | 0.00078821 | 1.0 | 0.02 Modify | 0.086606 | 0.086631 | 0.086668 | 0.0 | 3.08 Other | | 0.007178 | | | 0.26 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>Nlocal: 501 ave 508 max 490 min Histogram: 1 0 0 0 0 0 1 1 0 1 Nghost: 6586.25 ave 6628 max 6548 min Histogram: 1 0 1 0 0 0 1 0 0 1 Neighs: 177007 ave 180562 max 170212 min Histogram: 1 0 0 0 0 0 0 1 1 1 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>Total # of neighbors = 708028 Ave neighs/atom = 353.307 Ave special neighs/atom = 2.34032 Neighbor list builds = 26 Dangerous builds = 0 </pre></div> </div> <p>The first section provides a global loop timing summary. The loop time is the total wall time for the section. The <em>Performance</em> line is provided for convenience to help predicting the number of loop continuations required and for comparing performance with other similar MD codes. The CPU use line provides the CPU utilzation per MPI task; it should be close to 100% times the number of OpenMP threads (or 1). Lower numbers correspond to delays due to file I/O or insufficient thread utilization.</p> <p>The MPI task section gives the breakdown of the CPU run time (in seconds) into major categories:</p> <ul class="simple"> <li><em>Pair</em> stands for all non-bonded force computation</li> <li><em>Bond</em> stands for bonded interactions: bonds, angles, dihedrals, impropers</li> <li><em>Kspace</em> stands for reciprocal space interactions: Ewald, PPPM, MSM</li> <li><em>Neigh</em> stands for neighbor list construction</li> <li><em>Comm</em> stands for communicating atoms and their properties</li> <li><em>Output</em> stands for writing dumps and thermo output</li> <li><em>Modify</em> stands for fixes and computes called by them</li> <li><em>Other</em> is the remaining time</li> </ul> <p>For each category, there is a breakdown of the least, average and most amount of wall time a processor spent on this section. Also you have the variation from the average time. Together these numbers allow to gauge the amount of load imbalance in this segment of the calculation. Ideally the difference between minimum, maximum and average is small and thus the variation from the average close to zero. The final column shows the percentage of the total loop time is spent in this section.</p> <p>When using the <a class="reference internal" href="timer.html"><em>timer full</em></a> setting, an additional column is present that also prints the CPU utilization in percent. In addition, when using <em>timer full</em> and the <a class="reference internal" href="package.html"><em>package omp</em></a> command are active, a similar timing summary of time spent in threaded regions to monitor thread utilization and load balance is provided. A new entry is the <em>Reduce</em> section, which lists the time spend in reducing the per-thread data elements to the storage for non-threaded computation. These thread timings are taking from the first MPI rank only and and thus, as the breakdown for MPI tasks can change from MPI rank to MPI rank, this breakdown can be very different for individual ranks. Here is an example output for this section:</p> <p>Thread timings breakdown (MPI rank 0): Total threaded time 0.6846 / 90.6% Section | min time | avg time | max time <a href="#id17"><span class="problematic" id="id18">|%varavg|</span></a> %total ————————————————————— Pair | 0.5127 | 0.5147 | 0.5167 | 0.3 | 75.18 Bond | 0.0043139 | 0.0046779 | 0.0050418 | 0.5 | 0.68 Kspace | 0.070572 | 0.074541 | 0.07851 | 1.5 | 10.89 Neigh | 0.084778 | 0.086969 | 0.089161 | 0.7 | 12.70 Reduce | 0.0036485 | 0.003737 | 0.0038254 | 0.1 | 0.55</p> <p>The third 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 class="reference internal" href="special_bonds.html"><em>special_bonds</em></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 class="reference internal" href="neigh_modify.html"><em>neigh_modify</em></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 class="reference internal" href="minimize.html"><em>minimize</em></a> command, additional information is printed, e.g.</p> <div class="highlight-python"><div class="highlight"><pre>Minimization stats: Stopping criterion = linesearch alpha is zero Energy initial, next-to-last, final = -6372.3765206 -8328.46998942 -8328.46998942 Force two-norm initial, final = 1059.36 5.36874 Force max component initial, final = 58.6026 1.46872 Final line search alpha, max atom move = 2.7842e-10 4.0892e-10 Iterations, force evaluations = 701 1516 </pre></div> </div> <p>The first line prints the criterion that determined the minimization to be completed. The third 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. Then some information about the line search and 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 class="reference internal" href="kspace_style.html"><em>kspace_style</em></a> long-range Coulombics solve was performed during the run (PPPM, Ewald), then additional information is printed, e.g.</p> <div class="highlight-python"><div class="highlight"><pre>FFT time (% of Kspce) = 0.200313 (8.34477) FFT Gflps 3d 1d-only = 2.31074 9.19989 </pre></div> </div> <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 class="docutils" /> </div> <div class="section" id="tips-for-users-of-previous-lammps-versions"> <span id="start-9"></span><h2>2.9. Tips for users of previous LAMMPS versions<a class="headerlink" href="#tips-for-users-of-previous-lammps-versions" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="Section_history.html"><em>Section_history</em></a>. The F90 and F77 versions (2001 and 99) are also freely distributed as open-source codes; check the <a class="reference external" 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 class="reference internal" href="read_data.html"><em>read_data</em></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 class="reference internal" href="read_restart.html"><em>read_restart</em></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 <em>restart2data</em> 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 class="reference internal" href="read_data.html"><em>read_data</em></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> </div> </div> </div> </div> <footer> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <a href="Section_commands.html" class="btn btn-neutral float-right" title="3. Commands" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="Section_intro.html" class="btn btn-neutral" title="1. Introduction" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> </div> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/Section_start.txt b/doc/Section_start.txt index 755906538..744229991 100644 --- a/doc/Section_start.txt +++ b/doc/Section_start.txt @@ -1,1932 +1,1930 @@ "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"_#start_1 2.2 "Making LAMMPS"_#start_2 2.3 "Making LAMMPS with optional packages"_#start_3 2.4 "Building LAMMPS via the Make.py script"_#start_4 2.5 "Building LAMMPS as a library"_#start_5 2.6 "Running LAMMPS"_#start_6 2.7 "Command-line options"_#start_7 2.8 "Screen output"_#start_8 2.9 "Tips for users of previous versions"_#start_9 :all(b) :line :line 2.1 What's in the LAMMPS distribution :h4,link(start_1) When you download a LAMMPS tarball you will need to unzip and untar the downloaded file with the following commands, after placing the tarball 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 doc: documentation examples: simple test problems potentials: embedded atom method (EAM) potential files src: source files tools: pre- and post-processing tools :tb(s=:) Note that the "download page"_download also has links to download Windows exectubles and installers, as well as pre-built executables for a few specific Linux distributions. It also has instructions for how to download/install LAMMPS for Macs (via Homebrew), and to download and update LAMMPS from SVN and Git repositories, which gives you the same files that are in the download tarball. The Windows and Linux 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 an executable with non-included packages or that is more current, then you'll need to build LAMMPS yourself, as discussed in the next section. Skip to the "Running LAMMPS"_#start_6 sections for info on how to launch a LAMMPS Windows executable on a Windows box. :line 2.2 Making LAMMPS :h4,link(start_2) This section has the following sub-sections: "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(start_2_1) If you want to avoid building LAMMPS yourself, read the preceeding section about options available for downloading and installing executables. Details are discussed on the "download"_download page. Building LAMMPS can be simple or not-so-simple. If all you need are the default packages installed in LAMMPS, and MPI is already installed on your machine, or you just want to run LAMMPS in serial, then you can typically use the Makefile.mpi or Makefile.serial files in src/MAKE by typing one of these lines (from the src dir): make mpi make serial :pre Note that on a facility supercomputer, there are often "modules" loaded in your environment that provide the compilers and MPI you should use. In this case, the "mpicxx" compile/link command in Makefile.mpi should just work by accessing those modules. It may be the case that one of the other Makefile.machine files in the src/MAKE sub-directories is a better match to your system (type "make" to see a list), you can use it as-is by typing (for example): make stampede :pre If any of these builds (with an existing Makefile.machine) works on your system, then you're done! If you want to do one of the following: use optional LAMMPS features that require additional libraries use optional packages that require additional libraries use optional accelerator packages that require special compiler/linker settings run on a specialized platform that has its own compilers, settings, or other libs to use :ul then building LAMMPS is more complicated. You may need to find where auxiliary libraries exist on your machine or install them if they don't. You may need to build additional libraries that are part of the LAMMPS package, before building LAMMPS. You may need to edit a Makefile.machine file to make it compatible with your system. Note that there is a Make.py tool in the src directory that automates several of these steps, but you still have to know what you are doing. "Section 2.4"_#start_4 below describes the tool. It is a convenient way to work with installing/un-installing various packages, the Makefile.machine changes required by some packages, and the auxiliary libraries some of them use. Please read the following sections 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 compilation, linking, and run problems that users have are often 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 post the issue to the "LAMMPS mail list"_http://lammps.sandia.gov/mail.html. If you succeed in building LAMMPS on a new kind of machine, for which there isn't a similar machine Makefile included in the src/MAKE/MACHINES directory, then send it to the developers and we can include it in the LAMMPS distribution. :line [{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 systems and machines. See the src/MAKE/README file for a quick overview of what files are available and what sub-directories they are in. The src/MAKE dir has a few files that should work as-is on many platforms. The src/MAKE/OPTIONS dir has more that invoke additional compiler, MPI, and other setting options commonly used by LAMMPS, to illustrate their syntax. The src/MAKE/MACHINES dir has many more that have been tweaked or optimized for specific machines. These files are all good starting points if you find you need to change them for your machine. Put any file you edit into the src/MAKE/MINE directory and it will be never be touched by any LAMMPS updates. >From within the src directory, type "make" or "gmake". You should see a list of available choices from src/MAKE and all of its sub-directories. If one of those has the options you want or is the machine you want, you can type a command like: make mpi or make serial_icc or gmake mac :pre Note that the corresponding Makefile.machine can exist in src/MAKE or any of its sub-directories. If a file with the same name appears in multiple places (not a good idea), the order they are used is as follows: src/MAKE/MINE, src/MAKE, src/MAKE/OPTIONS, src/MAKE/MACHINES. This gives preference to a file you have created/edited and put in src/MAKE/MINE. 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_mpi or lmp_g++_serial or lmp_mac is produced, then you're done; it's your lucky day. Note that by default only a few of LAMMPS optional packages are installed. To build LAMMPS with optional packages, see "this 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 Makefile.* in src/MAKE or one of its sub-directories 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. When it works, put the edited file in src/MAKE/MINE and it will not be altered by any future LAMMPS updates. [Step 2] Change the first line of 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 mpicxx 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 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. You should not need to do this if you use mpicxx. 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++ and Intel icc 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_PNG -DLAMMPS_FFMPEG -DLAMMPS_MEMALIGN -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 machine supports the "popen()" function in the standard runtime library and that a gzip executable can be found by LAMMPS during a run. IMPORTANT NOTE: on some clusters with high-speed networks, using the fork() library calls (required by popen()) can interfere with the fast communication library and lead to simulations using compressed output or input to hang or crash. For selected operations, compressed file I/O is also available using a compression library instead, which are provided in the COMPRESS package. From more details about compiling LAMMPS with packages, please see below. If you use -DLAMMPS_JPEG, the "dump image"_dump_image.html command will be able to write out JPEG image files. For JPEG files, you must also link LAMMPS with a JPEG library, as described below. If you use -DLAMMPS_PNG, the "dump image"_dump.html command will be able to write out PNG image files. For PNG files, you must also link LAMMPS with a PNG library, as described below. If neither of those two defines are used, LAMMPS will only be able to write out uncompressed PPM image files. If you use -DLAMMPS_FFMPEG, the "dump movie"_dump_image.html command will be available to support on-the-fly generation of rendered movies the need to store intermediate image files. It requires that your machines supports the "popen" function in the standard runtime library and that an FFmpeg executable can be found by LAMMPS during the run. IMPORTANT NOTE: Similar to the note above, this option can conflict with high-speed networks, because it uses popen(). Using -DLAMMPS_MEMALIGN=<bytes> enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS. This can help to make more efficient use of vector instructions of modern CPUS, since dynamically allocated memory has to be aligned on larger than default byte boundaries (e.g. 16 bytes instead of 8 bytes on x86 type platforms) for optimal performance. 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 settings refer to use of 4-byte (small) vs 8-byte (big) integers within LAMMPS, as specified in src/lmptype.h. The only reason to use the BIGBIG setting is to enable simulation of huge molecular systems (which store bond topology info) with more than 2 billion atoms, or to track the image flags of moving atoms that wrap around a periodic box more than 512 times. Normally, the only reason to use SMALLSMALL is if your machine does not support 64-bit integers, though you can use SMALLSMALL setting if you are running in serial or on a desktop machine or small cluster where you will never run large systems or for long time (more than 2 billion atoms, more than 2 billion timesteps). See the "Additional build tips"_#start_2_4 section below for more details on these settings. Note that two packages, USER-ATC and USER-CUDA are not currently compatible with -DLAMMPS_BIGBIG. Also the GPU package requires the lib/gpu library to be compiled with the same setting, or the link will fail. 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. Note that you do not need to set these if you use the MPI compiler mpicxx for your CC and LINK setting in the section above. The MPI wrapper knows where to find the needed files. If you want LAMMPS to run in parallel, you must have an MPI library installed on your platform. If MPI is installed on your system in the usual place (under /usr/local), you also may not need to specify these 3 variables, assuming /usr/local is in your path. 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, before building LAMMPS. Or the parallel machine may have a vendor-provided MPI which the compiler has no trouble finding. Failing this, these 3 variables can be used to 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 MPICH2 or OpenMPI. MPICH can be downloaded from the "Argonne MPI site"_http://www.mcs.anl.gov/research/projects/mpich2/. OpenMPI can be downloaded from the "OpenMPI site"_http://www.open-mpi.org. Other MPI packages 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 is likely to be faster than a self-installed MPICH or OpenMPI, so find out how to build and link with it. If you use MPICH or OpenMPI, 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 src/MAKE/Makefile.serial 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. Note that if you are building with src/MAKE/Makefile.serial, e.g. by typing "make serial", then the STUBS library is built for you. To build the STUBS library from the src directory, type "make mpi-stubs", or from the src/STUBS dir, type "make". This should create a libmpi_stubs.a file suitable for linking to LAMMPS. If the build fails, you will need to edit the STUBS/Makefile for your platform. The file STUBS/mpi.c 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 -DFFTW_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 options. [Step 7] The 3 JPG variables allow you to specify a JPEG and/or PNG library which LAMMPS uses when writing out JPEG or PNG files via the "dump image"_dump_image.html command. These can be left blank if you do not use the -DLAMMPS_JPEG or -DLAMMPS_PNG switches discussed above in Step 4, since in that case JPEG/PNG output will be disabled. A standard JPEG library usually goes by the name libjpeg.a or libjpeg.so 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. A standard PNG library usually goes by the name libpng.a or libpng.so and has an associated header file png.h. Whichever PNG 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 packages are installed. To build LAMMPS with optional packages, see "this section"_#start_3 below, before proceeding to Step 9. [Step 9] That's it. Once you have a correct Makefile.foo, and you have pre-built any other needed libraries (e.g. MPI, FFT, etc) 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(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(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_target where it stores the system-specific *.o files. (2) Cleaning up. Typing "make clean-all" or "make clean-machine" will delete *.o object files created when LAMMPS is built, for either all builds or for a particular machine. (3) Changing the LAMMPS size limits via -DLAMMPS_SMALLBIG or -DLAMMPS_BIGBIG or -DLAMMPS_SMALLSMALL As explained above, any of these 3 settings can be specified on the LMP_INC line in your low-level src/MAKE/Makefile.foo. The default is -DLAMMPS_SMALLBIG which allows for systems with up to 2^63 atoms and 2^63 timesteps (about 9e18). The atom limit is for atomic systems which do not store bond topology info and thus do not require atom IDs. If you use atom IDs for atomic systems (which is the default) or if you use a molecular model, which stores bond topology info and thus requires atom IDs, the limit is 2^31 atoms (about 2 billion). This is because the IDs are stored in 32-bit integers. Likewise, with this setting, the 3 image flags for each atom (see the "dump"_dump.html doc page for a discussion) are stored in a 32-bit integer, which means the atoms can only wrap around a periodic box (in each dimension) at most 512 times. If atoms move through the periodic box more than this many times, the image flags will "roll over", e.g. from 511 to -512, which can cause diagnostics like the mean-squared displacement, as calculated by the "compute msd"_compute_msd.html command, to be faulty. To allow for larger atomic systems with atom IDs or larger molecular systems or larger image flags, compile with -DLAMMPS_BIGBIG. This stores atom IDs and image flags in 64-bit integers. This enables atomic or molecular systems with atom IDS of up to 2^63 atoms (about 9e18). And image flags will not "roll over" until they reach 2^20 = 1048576. If your system does not support 8-byte integers, you will need to compile with the -DLAMMPS_SMALLSMALL setting. This will restrict the total number of atoms (for atomic or molecular systems) and timesteps to 2^31 (about 2 billion). Image flags will roll over at 2^9 = 512. Note that in src/lmptype.h there are definitions of all these data types as well as the MPI data types associated with them. The MPI types need to be consistent with the associated C data types, or else LAMMPS will generate a run-time error. As far as we know, the settings defined in src/lmptype.h are portable and work on every current system. In all cases, the size of problem that can be run on a per-processor basis is limited by 4-byte integer storage to 2^31 atoms per processor (about 2 billion). This should not normally be a limitation 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(start_2_5) OS X is BSD Unix, so it should just work. See the src/MAKE/MACHINES/Makefile.mac and Makefile.mac_mpi files. :line [{Building for Windows:}] :link(start_2_6) The LAMMPS download page has an option to download both a serial and parallel pre-built Windows executable. See the "Running LAMMPS"_#start_6 section for instructions on running these executables on a Windows box. The pre-built executables hosted on the "LAMMPS download page"_http://lammps.sandia.gov/download.html are built with a subset of the available packages; see the download page for the list. These are single executable files. No examples or documentation in included. You will need to download the full source code package to obtain those. As an alternative, you can download "daily builds" (and some older versions) of the installer packages from "rpm.lammps.org/windows.html"_http://rpm.lammps.org/windows.html. These executables are built with most optional packages and the download includes documentation, some tools and most examples. If you want a Windows version with specific packages included and excluded, you can build it yourself. One way to do this is install and use cygwin to build LAMMPS with a standard unix style make program, just as you would on a Linux box; see src/MAKE/MACHINES/Makefile.cygwin. -The other way to do this is using Visual Studio and project files. -See the src/WINDOWS directory and its README.txt file for instructions -on both a basic build and a customized build with pacakges you select. - :line 2.3 Making LAMMPS with optional packages :h4,link(start_3) This section has the following sub-sections: "Package basics"_#start_3_1 "Including/excluding packages"_#start_3_2 "Packages that require extra libraries"_#start_3_3 "Packages that require Makefile.machine settings"_#start_3_4 :ul Note that the following "Section 2.4"_#start_4 describes the Make.py tool which can be used to install/un-install packages and build the auxiliary libraries which some of them use. It can also auto-edit a Makefile.machine to add settings needed by some packages. :line [{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" from within the src directory of the LAMMPS distribution. This also lists various make commands that can be used to manipulate packages. 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_7 for "help", which will list the styles and commands -known to your executable. +switch"_#start_7 for "help", which will simply list the styles and +commands known to your executable, and immediately exit. 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 "Section_packages"_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. +Standard packages, such as molecule or kspace, 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 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, such as user-atc or user-omp, 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_15 of the documentation. +package, you may need to contact the contributor directly to get help. +Information on how to submit additions you make to LAMMPS as single +files or either a standard or user-contributed package are given in +"this section"_Section_modify.html#mod_15 of the documentation. -Some packages (both standard and user) require additional libraries. -See more details below. +Some packages (both standard and user) require additional auxiliary +libraries when building LAMMPS. See more details below. :line [{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: +To use (or not use) a package you must include it (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 IMPORTANT NOTE: You should NOT include/exclude packages and build -LAMMPS in a single make command by using multiple targets, e.g. make +LAMMPS in a single make command using multiple targets, e.g. make yes-colloid g++. This is because the make procedure creates a list of source files that will be out-of-date for the build if the package -configuration changes during the same command. +configuration changes within the same command. 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. If you will never run simulations that use the features in a particular packages, there is no reason to include it in your build. 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. When you download a LAMMPS tarball, these packages are pre-installed in the src directory: KSPACE, MANYBODY,MOLECULE. When you download LAMMPS source files from the SVN or Git repositories, no packages are pre-installed. Packages are included or excluded by typing "make yes-name" or "make no-name", where "name" is the name of the package in lower-case, e.g. name = kspace for the KSPACE package or name = user-atc for the USER-ATC package. You can also type "make yes-standard", "make no-standard", "make yes-std", "make no-std", "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" or "make pu" 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" or "make ps" 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 libraries:}] :link(start_3_3) A few of the standard and user packages require additional auxiliary -libraries. Most of them are provided with LAMMPS, in which case they -must be compiled first, before LAMMPS is built if you wish to include +libraries. Many of them are provided with LAMMPS, in which case they +must be compiled first, before LAMMPS is built, if you wish to include that package. If you get a LAMMPS build error about a missing library, this is likely the reason. See the "Section_packages"_Section_packages.html doc page for a list of packages that have these kinds of auxiliary libraries. The lib directory in the distribution has sub-directories with package -names that correspond to the needed auxiliary libs, e.g. lib/reax. +names that correspond to the needed auxiliary libs, e.g. lib/gpu. Each sub-directory has a README file that gives more details. Code for most of the auxiliary libraries is included in that directory. Examples are the USER-ATC and MEAM packages. A few of the lib sub-directories do not include code, but do include -instructions and sometimes scripts that automate the process of +instructions (and sometimes scripts) that automate the process of downloading the auxiliary library and installing it so LAMMPS can link -to it. Examples are the KIM and VORONOI and USER-MOLFILE and USER-SMD +to it. Examples are the KIM, VORONOI, USER-MOLFILE, and USER-SMD packages. The lib/python directory (for the PYTHON package) contains only a choice of Makefile.lammps.* files. This is because no auxiliary code or libraries are needed, only the Python library and other system libs -that already available on your system. However, the Makefile.lammps -file is needed to tell the LAMMPS build which libs to use and where to -find them. +that should already available on your system. However, the +Makefile.lammps file is needed to tell LAMMPS which libs to use and +where to find them. For libraries with provided code, the sub-directory README file -(e.g. lib/reax/README) has instructions on how to build that library. +(e.g. lib/atc/README) has instructions on how to build that library. Typically this is done by typing something like: make -f Makefile.g++ :pre If one of the provided Makefiles is not appropriate for your system you will need to edit or add one. Note that all the Makefiles have a setting for EXTRAMAKE at the top that specifies a Makefile.lammps.* file. If the library build is successful, it will produce 2 files in the lib directory: libpackage.a Makefile.lammps :pre The Makefile.lammps file will be a copy of the EXTRAMAKE file setting specified in the library Makefile.* you used. Note that you must insure that the settings in Makefile.lammps are appropriate for your system. If they are not, the LAMMPS build will fail. As explained in the lib/package/README files, the settings in Makefile.lammps are used to specify additional system libraries and their locations so that LAMMPS can build with the auxiliary library. -For example, if the MEAM package is used, the auxiliary libraries -consist of F90 code, built with a Fortran complier. To link -that library with LAMMPS (a C++ code) via whatever C++ compiler LAMMPS -is built with, typically requires additional Fortran-to-C libraries be +For example, if the MEAM package is used, the auxiliary library +consists of F90 code, built with a Fortran complier. To link that +library with LAMMPS (a C++ code) via whatever C++ compiler LAMMPS is +built with, typically requires additional Fortran-to-C libraries be included in the link. Another example are the BLAS and LAPACK libraries needed to use the USER-ATC or USER-AWPMD packages. For libraries without provided code, the sub-directory README file has information on where to download the library and how to build it, e.g. lib/voronoi/README and lib/smd/README. The README files also describe how you must either (a) create soft links, via the "ln" command, in those directories to point to where you built or installed the packages, or (b) check or edit the Makefile.lammps file in the same directory to provide that information. Some of the sub-directories, e.g. lib/voronoi, also have an install.py script which can be used to automate the process of downloading/building/installing the auxiliary library, and setting the needed soft links. Type "python install.py" for further instructions. As with the sub-directories containing library code, if the soft links or settings in the lib/package/Makefile.lammps files are not correct, the LAMMPS build will typically fail. :line [{Packages that require Makefile.machine settings}] :link(start_3_4) A few packages require specific settings in Makefile.machine, to either build or use the package effectively. These are the USER-INTEL, KOKKOS, USER-OMP, and OPT packages. The details of what flags to add or what variables to define are given on the doc pages that describe each of these accelerator packages in detail: "USER-INTEL package"_accelerate_intel.html "KOKKOS package"_accelerate_kokkos.html "USER-OMP package"_accelerate_omp.html "OPT package"_accelerate_opt.html :ul Here is a brief summary of what Makefile.machine changes are needed. Note that the Make.py tool, described in the next "Section 2.4"_#start_4 can automatically add the needed info to an existing machine Makefile, using simple command-line arguments. In src/MAKE/OPTIONS see the following Makefiles for examples of the changes described below: Makefile.intel_cpu Makefile.intel_phi Makefile.kokkos_omp Makefile.kokkos_cuda Makefile.kokkos_phi Makefile.omp :ul For the USER-INTEL package, you have 2 choices when building. You can build with CPU or Phi support. The latter uses Xeon Phi chips in "offload" mode. Each of these modes requires additional settings in your Makefile.machine for CCFLAGS and LINKFLAGS. For CPU mode (if using an Intel compiler): CCFLAGS: add -fopenmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost, -fno-alias, -ansi-alias, -override-limits LINKFLAGS: add -fopenmp :ul For Phi mode add the following in addition to the CPU mode flags: CCFLAGS: add -DLMP_INTEL_OFFLOAD and LINKFLAGS: add -offload :ul And also add this to CCFLAGS: -offload-option,mic,compiler,"-fp-model fast=2 -mGLOB_default_function_attrs=\"gather_scatter_loop_unroll=4\"" :pre For the KOKKOS package, you have 3 choices when building. You can build with OMP or Cuda or Phi support. Phi support uses Xeon Phi chips in "native" mode. This can be done by setting the following variables in your Makefile.machine: for OMP support, set OMP = yes for Cuda support, set OMP = yes and CUDA = yes for Phi support, set OMP = yes and MIC = yes :ul These can also be set as additional arguments to the make command, e.g. make g++ OMP=yes MIC=yes :pre Building the KOKKOS package with CUDA support requires a Makefile machine that uses the NVIDIA "nvcc" compiler, as well as an appropriate "arch" setting appropriate to the GPU hardware and NVIDIA software you have on your machine. See src/MAKE/OPTIONS/Makefile.kokkos_cuda for an example of such a machine Makefile. For the USER-OMP package, your Makefile.machine needs additional settings for CCFLAGS and LINKFLAGS. CCFLAGS: add -fopenmp and -restrict LINKFLAGS: add -fopenmp :ul For the OPT package, your Makefile.machine needs an additional settings for CCFLAGS. CCFLAGS: add -restrict :ul :line -2.4 Building LAMMPS via the Make.py script :h4,link(start_4) +2.4 Building LAMMPS via the Make.py tool :h4,link(start_4) The src directory includes a Make.py script, written in Python, which can be used to automate various steps of the build process. It is particularly useful for working with the accelerator packages, as well as other packages which require auxiliary libraries to be built. The goal of the Make.py tool is to allow any complex multi-step LAMMPS build to be performed as a single Make.py command. And you can archive the commands, so they can be re-invoked later via the -r (redo) switch. If you find some LAMMPS build procedure that can't be done in a single Make.py command, let the developers know, and we'll see if we can augment the tool. You can run Make.py from the src directory by typing either: Make.py -h python Make.py -h :pre which will give you help info about the tool. For the former to work, you may need to edit the first line of Make.py to point to your local Python. And you may need to insure the script is executable: chmod +x Make.py :pre Here are examples of build tasks you can perform with Make.py: Install/uninstall packages: Make.py -p no-lib kokkos omp intel Build specific auxiliary libs: Make.py -a lib-atc lib-meam Build libs for all installed packages: Make.py -p cuda gpu -gpu mode=double arch=31 -a lib-all Create a Makefile from scratch with compiler and MPI settings: Make.py -m none -cc g++ -mpi mpich -a file Augment Makefile.serial with settings for installed packages: Make.py -p intel -intel cpu -m serial -a file Add JPG and FFTW support to Makefile.mpi: Make.py -m mpi -jpg -fft fftw -a file Build LAMMPS with a parallel make using Makefile.mpi: Make.py -j 16 -m mpi -a exe Build LAMMPS and libs it needs using Makefile.serial with accelerator settings: Make.py -p gpu intel -intel cpu -a lib-all file serial :tb(s=:) The bench and examples directories give Make.py commands that can be used to build LAMMPS with the various packages and options needed to run all the benchmark and example input scripts. See these files for more details: bench/README bench/FERMI/README bench/KEPLER/README bench/PHI/README examples/README examples/accelerate/README examples/accelerate/make.list :ul All of the Make.py options and syntax help can be accessed by using the "-h" switch. E.g. typing "Make.py -h" gives Syntax: Make.py switch args ... switches can be listed in any order help switch: -h prints help and syntax for all other specified switches switch for actions: -a lib-all, lib-dir, clean, file, exe or machine list one or more actions, in any order machine is a Makefile.machine suffix, must be last if used one-letter switches: -d (dir), -j (jmake), -m (makefile), -o (output), -p (packages), -r (redo), -s (settings), -v (verbose) switches for libs: -atc, -awpmd, -colvars, -cuda -gpu, -meam, -poems, -qmmm, -reax switches for build and makefile options: -intel, -kokkos, -cc, -mpi, -fft, -jpg, -png :pre Using the "-h" switch with other switches and actions gives additional info on all the other specified switches or actions. The "-h" can be anywhere in the command-line and the other switches do not need their arguments. E.g. type "Make.py -h -d -atc -intel" will print: -d dir dir = LAMMPS home dir if -d not specified, working dir must be lammps/src :pre -atc make=suffix lammps=suffix2 all args are optional and can be in any order make = use Makefile.suffix (def = g++) lammps = use Makefile.lammps.suffix2 (def = EXTRAMAKE in makefile) :pre -intel mode mode = cpu or phi (def = cpu) build Intel package for CPU or Xeon Phi :pre Note that Make.py never overwrites an existing Makefile.machine. Instead, it creates src/MAKE/MINE/Makefile.auto, which you can save or rename if desired. Likewise it creates an executable named src/lmp_auto, which you can rename using the -o switch if desired. The most recently executed Make.py commmand is saved in src/Make.py.last. You can use the "-r" switch (for redo) to re-invoke the last command, or you can save a sequence of one or more Make.py commands to a file and invoke the file of commands using "-r". You can also label the commands in the file and invoke one or more of them by name. A typical use of Make.py is to start with a valid Makefile.machine for your system, that works for a vanilla LAMMPS build, i.e. when optional packages are not installed. You can then use Make.py to add various settings (FFT, JPG, PNG) to the Makefile.machine as well as change its compiler and MPI options. You can also add additional packages to the build, as well as build the needed supporting libraries. You can also use Make.py to create a new Makefile.machine from scratch, using the "-m none" switch, if you also specify what compiler and MPI options to use, via the "-cc" and "-mpi" switches. :line 2.5 Building LAMMPS as a library :h4,link(start_5) LAMMPS can be built as either a static or shared library, which can then be called from another application or a scripting language. See "this section"_Section_howto.html#howto_10 for more info on coupling LAMMPS to other codes. See "this section"_Section_python.html for more info on wrapping and running LAMMPS from Python. [Static library:] :h5 To build LAMMPS as a static library (*.a file on Linux), type make foo mode=lib :pre where foo is the machine name. This kind of library is typically used to statically link a driver application to LAMMPS, so that you can insure all dependencies are satisfied at compile time. This will use the ARCHIVE and ARFLAGS settings in src/MAKE/Makefile.foo. The build will create the file liblammps_foo.a which another application can link to. It will also create a soft link liblammps.a, which will point to the most recently built static library. [Shared library:] :h5 To build LAMMPS as a shared library (*.so file on Linux), which can be dynamically loaded, e.g. from Python, type make foo mode=shlib :pre where foo is the machine name. This kind of library is required when wrapping LAMMPS with Python; see "Section_python"_Section_python.html for details. This will use the SHFLAGS and SHLIBFLAGS settings in src/MAKE/Makefile.foo and perform the build in the directory Obj_shared_foo. This is so that each file can be compiled with the -fPIC flag which is required for inclusion in a shared library. The build will create the file liblammps_foo.so which another application can link to dyamically. It will also create a soft link liblammps.so, which will point to the most recently built shared library. This is the file the Python wrapper loads by default. Note that for a shared library to be usable by a calling program, all the auxiliary libraries it depends on must also exist as shared libraries. This will be the case for libraries included with LAMMPS, such as the dummy MPI library in src/STUBS or any package libraries in lib/packages, since they are always built as shared libraries using the -fPIC switch. However, if a library like MPI or FFTW does not exist as a shared library, the shared library build will generate an error. This means you will need to install a shared library version of the auxiliary library. The build instructions for the library should tell you how to do this. Here is an example of such errors when the system FFTW or provided lib/colvars library have not been built as shared libraries: /usr/bin/ld: /usr/local/lib/libfftw3.a(mapflags.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libfftw3.a: could not read symbols: Bad value :pre /usr/bin/ld: ../../lib/colvars/libcolvars.a(colvarmodule.o): relocation R_X86_64_32 against `__pthread_key_create' can not be used when making a shared object; recompile with -fPIC ../../lib/colvars/libcolvars.a: error adding symbols: Bad value :pre As an example, here is how to build and install the "MPICH library"_mpich, a popular open-source version of MPI, distributed by Argonne National Labs, as a shared library in the default /usr/local/lib location: :link(mpich,http://www-unix.mcs.anl.gov/mpi) ./configure --enable-shared make make install :pre You may need to use "sudo make install" in place of the last line if you do not have write privileges for /usr/local/lib. The end result should be the file /usr/local/lib/libmpich.so. [Additional requirement for using a shared library:] :h5 The operating system finds shared libraries to load at run-time using the environment variable LD_LIBRARY_PATH. So you may wish to copy the file src/liblammps.so or src/liblammps_g++.so (for example) to a place the system can find it by default, such as /usr/local/lib, or you may wish to add the LAMMPS src directory to LD_LIBRARY_PATH, so that the current version of the shared library is always available to programs that use it. For the csh or tcsh shells, you would add something like this to your ~/.cshrc file: setenv LD_LIBRARY_PATH $\{LD_LIBRARY_PATH\}:/home/sjplimp/lammps/src :pre [Calling the LAMMPS library:] :h5 Either flavor of library (static or shared) allows one or more LAMMPS objects to be instantiated from the calling program. When used from a C++ program, all of LAMMPS is wrapped in a LAMMPS_NS namespace; you can safely use any of its classes and methods from within the calling code, as needed. When used from a C or Fortran program or a scripting language like Python, the library has a simple function-style interface, provided in src/library.cpp and src/library.h. See the sample codes in examples/COUPLE/simple for examples of C++ and C and Fortran codes that invoke LAMMPS thru its library interface. There are other examples as well in the COUPLE directory which are discussed in "Section_howto 10"_Section_howto.html#howto_10 of the manual. See "Section_python"_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 define the C-style API for using LAMMPS as a library. See "Section_howto 19"_Section_howto.html#howto_19 of the manual for a description of the interface and how to extend it for your needs. :line 2.6 Running LAMMPS :h4,link(start_6) By default, LAMMPS runs by reading commands from standard input. Thus if you run the LAMMPS executable by itself, e.g. lmp_linux :pre it will simply wait, expecting commands from the keyboard. Typically you should put commands in an input script and use I/O redirection, e.g. lmp_linux < in.file :pre For parallel environments this should also work. If it does not, use the '-in' command-line switch, e.g. lmp_linux -in in.file :pre "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 in.lj :pre See "this page"_bench for timings for this and the other benchmarks on various platforms. Note that some of the example scripts require LAMMPS to be built with one or more of its optional packages. :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 -localonly 4 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 "Section_errors"_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.7 Command-line options :h4,link(start_7) 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 -h or -help -i or -in -k or -kokkos -l or -log -nc or -nocite -pk or -package -p or -partition -pl or -plog -ps or -pscreen -r or -restart -ro or -reorder -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 in.alloy mpirun -np 16 lmp_ibm -var f tmp.out -log my.log -screen none -in 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. Even if LAMMPS is built with this package, as described above in "Section 2.3"_#start_3, this switch must be set to enable running with the CUDA-enabled styles the package provides. If the switch is not set (the default), LAMMPS will operate as if the USER-CUDA package were not installed; i.e. you can run standard LAMMPS or with the GPU package, for testing or benchmarking purposes. -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. -help :pre Print a brief help summary and a list of options compiled into this executable for each LAMMPS style (atom_style, fix, compute, pair_style, bond_style, etc). This can tell you if the command you want to use was included via the appropriate package at compile time. LAMMPS will print the info and immediately exit if this switch is used. -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 script from standard input, typically from a script via I/O redirection; e.g. lmp_linux < in.run. I/O redirection should also work in parallel, but if it does not (in the unlikely case that an MPI implementation does not support it), then use the -in flag. Note that this is a required switch when running LAMMPS in multi-partition mode, since multiple processors cannot all read from stdin. -kokkos on/off keyword/value ... :pre Explicitly enable or disable KOKKOS support, as provided by the KOKKOS package. Even if LAMMPS is built with this package, as described above in "Section 2.3"_#start_3, this switch must be set to enable running with the KOKKOS-enabled styles the package provides. If the switch is not set (the default), LAMMPS will operate as if the KOKKOS package were not installed; i.e. you can run standard LAMMPS or with the GPU or USER-CUDA or USER-OMP packages, for testing or benchmarking purposes. Additional optional keyword/value pairs can be specified which determine how Kokkos will use the underlying hardware on your platform. These settings apply to each MPI task you launch via the "mpirun" or "mpiexec" command. You may choose to run one or more MPI tasks per physical node. Note that if you are running on a desktop machine, you typically have one physical node. On a cluster or supercomputer there may be dozens or 1000s of physical nodes. Either the full word or an abbreviation can be used for the keywords. Note that the keywords do not use a leading minus sign. I.e. the keyword is "t", not "-t". Also note that each of the keywords has a default setting. Example of when to use these options and what settings to use on different platforms is given in "Section 5.8"_Section_accelerate.html#acc_8. d or device g or gpus t or threads n or numa :ul device Nd :pre This option is only relevant if you built LAMMPS with CUDA=yes, you have more than one GPU per node, and if you are running with only one MPI task per node. The Nd setting is the ID of the GPU on the node to run on. By default Nd = 0. If you have multiple GPUs per node, they have consecutive IDs numbered as 0,1,2,etc. This setting allows you to launch multiple independent jobs on the node, each with a single MPI task per node, and assign each job to run on a different GPU. gpus Ng Ns :pre This option is only relevant if you built LAMMPS with CUDA=yes, you have more than one GPU per node, and you are running with multiple MPI tasks per node (up to one per GPU). The Ng setting is how many GPUs you will use. The Ns setting is optional. If set, it is the ID of a GPU to skip when assigning MPI tasks to GPUs. This may be useful if your desktop system reserves one GPU to drive the screen and the rest are intended for computational work like running LAMMPS. By default Ng = 1 and Ns is not set. Depending on which flavor of MPI you are running, LAMMPS will look for one of these 3 environment variables SLURM_LOCALID (various MPI variants compiled with SLURM support) MV2_COMM_WORLD_LOCAL_RANK (Mvapich) OMPI_COMM_WORLD_LOCAL_RANK (OpenMPI) :pre which are initialized by the "srun", "mpirun" or "mpiexec" commands. The environment variable setting for each MPI rank is used to assign a unique GPU ID to the MPI task. threads Nt :pre This option assigns Nt number of threads to each MPI task for performing work when Kokkos is executing in OpenMP or pthreads mode. The default is Nt = 1, which essentially runs in MPI-only mode. If there are Np MPI tasks per physical node, you generally want Np*Nt = the number of physical cores per node, to use your available hardware optimally. This also sets the number of threads used by the host when LAMMPS is compiled with CUDA=yes. numa Nm :pre This option is only relevant when using pthreads with hwloc support. In this case Nm defines the number of NUMA regions (typicaly sockets) on a node which will be utilizied by a single MPI rank. By default Nm = 1. If this option is used the total number of worker-threads per MPI rank is threads*numa. Currently it is always almost better to assign at least one MPI rank per NUMA region, and leave numa set to its default value of 1. This is because letting a single process span multiple NUMA regions induces a significant amount of cross NUMA data traffic which is slow. -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. -nocite :pre Disable writing the log.cite file which is normally written to list references for specific cite-able features used during a LAMMPS run. See the "citation page"_http://lammps.sandia.gov/cite.html for more details. -package style args .... :pre Invoke the "package"_package.html command with style and args. The syntax is the same as if the command appeared at the top of the input script. For example "-package gpu 2" or "-pk gpu 2" is the same as "package gpu 2"_package.html in the input script. The possible styles and args are documented on the "package"_package.html doc page. This switch can be used multiple times, e.g. to set options for the USER-INTEL and USER-OMP packages which can be used together. Along with the "-suffix" command-line switch, this is a convenient mechanism for invoking accelerator packages and their options without having to edit an input script. -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. Running with multiple partitions can e useful for running "multi-replica simulations"_Section_howto.html#howto_5, where each replica runs on on one or a few 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. To run multiple independent simulatoins from one input script, using multiple partitions, see "Section_howto 4"_Section_howto.html#howto_4 of the manual. World- and universe-style "variables"_variable.html are useful in this context. -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. -restart restartfile {remap} datafile keyword value ... :pre Convert the restart file into a data file and immediately exit. This is the same operation as if the following 2-line input script were run: read_restart restartfile {remap} write_data datafile keyword value ... :pre Note that the specified restartfile and datafile can have wild-card characters ("*",%") as described by the "read_restart"_read_restart.html and "write_data"_write_data.html commands. But a filename such as file.* will need to be enclosed in quotes to avoid shell expansion of the "*" character. Note that following restartfile, the optional flag {remap} can be used. This has the same effect as adding it to the "read_restart"_read_restart.html command, as explained on its doc page. This is only useful if the reading of the restart file triggers an error that atoms have been lost. In that case, use of the remap flag should allow the data file to still be produced. Also note that following datafile, the same optional keyword/value pairs can be listed as used by the "write_data"_write_data.html command. -reorder nth N -reorder custom filename :pre Reorder the processors in the MPI communicator used to instantiate LAMMPS, in one of several ways. The original MPI communicator ranks all P processors from 0 to P-1. The mapping of these ranks to physical processors is done by MPI before LAMMPS begins. It may be useful in some cases to alter the rank order. E.g. to insure that cores within each node are ranked in a desired order. Or when using the "run_style verlet/split"_run_style.html command with 2 partitions to insure that a specific Kspace processor (in the 2nd partition) is matched up with a specific set of processors in the 1st partition. See the "Section_accelerate"_Section_accelerate.html doc pages for more details. If the keyword {nth} is used with a setting {N}, then it means every Nth processor will be moved to the end of the ranking. This is useful when using the "run_style verlet/split"_run_style.html command with 2 partitions via the -partition command-line switch. The first set of processors will be in the first partition, the 2nd set in the 2nd partition. The -reorder command-line switch can alter this so that the 1st N procs in the 1st partition and one proc in the 2nd partition will be ordered consecutively, e.g. as the cores on one physical node. This can boost performance. For example, if you use "-reorder nth 4" and "-partition 9 3" and you are running on 12 processors, the processors will be reordered from 0 1 2 3 4 5 6 7 8 9 10 11 :pre to 0 1 2 4 5 6 8 9 10 3 7 11 :pre so that the processors in each partition will be 0 1 2 4 5 6 8 9 10 3 7 11 :pre See the "processors" command for how to insure processors from each partition could then be grouped optimally for quad-core nodes. If the keyword is {custom}, then a file that specifies a permutation of the processor ranks is also specified. The format of the reorder file is as follows. Any number of initial blank or comment lines (starting with a "#" character) can be present. These should be followed by P lines of the form: I J :pre where P is the number of processors LAMMPS was launched with. Note that if running in multi-partition mode (see the -partition switch above) P is the total number of processors in all partitions. The I and J values describe a permutation of the P processors. Every I and J should be values from 0 to P-1 inclusive. In the set of P I values, every proc ID should appear exactly once. Ditto for the set of P J values. A single I,J pairing means that the physical processor with rank I in the original MPI communicator will have rank J in the reordered communicator. Note that rank ordering can also be specified by many MPI implementations, either by environment variables that specify how to order physical processors, or by config files that specify what physical processors to assign to each MPI rank. The -reorder switch simply gives you a portable way to do this without relying on MPI itself. See the "processors out"_processors command for how to output info on the final assignment of physical processors to the LAMMPS simulation domain. -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 args :pre Use variants of various styles if they exist. The specified style can be {cuda}, {gpu}, {intel}, {kk}, {omp}, {opt}, or {hybrid}. These refer to optional packages that LAMMPS can be built with, as described above in "Section 2.3"_#start_3. The "cuda" style corresponds to the USER-CUDA package, the "gpu" style to the GPU package, the "intel" style to the USER-INTEL package, the "kk" style to the KOKKOS package, the "opt" style to the OPT package, and the "omp" style to the USER-OMP package. The hybrid style is the only style that accepts arguments. It allows for two packages to be specified. The first package specified is the default and will be used if it is available. If no style is available for the first package, the style for the second package will be used if available. For example, "-suffix hybrid intel omp" will use styles from the USER-INTEL package if they are installed and available, but styles for the USER-OMP package otherwise. Along with the "-package" command-line switch, this is a convenient mechanism for invoking accelerator packages and their options without having to edit an input script. As an example, all of the packages provide a "pair_style lj/cut"_pair_lj.html variant, with style names lj/cut/cuda, lj/cut/gpu, lj/cut/intel, lj/cut/kk, lj/cut/omp, and lj/cut/opt. A variant style can be specified explicitly in your input script, e.g. pair_style lj/cut/gpu. If the -suffix switch is used the specified suffix (cuda,gpu,intel,kk,omp,opt) 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. For the GPU package, using this command-line switch also invokes the default GPU settings, as if the command "package gpu 1" were used at the top of your input script. These settings can be changed by using the "-package gpu" command-line switch or the "package gpu"_package.html command in your script. For the USER-INTEL package, using this command-line switch also invokes the default USER-INTEL settings, as if the command "package intel 1" were used at the top of your input script. These settings can be changed by using the "-package intel" command-line switch or the "package intel"_package.html command in your script. If the USER-OMP package is also installed, the hybrid style with "intel omp" arguments can be used to make the omp suffix a second choice, if a requested style is not available in the USER-INTEL package. It will also invoke the default USER-OMP settings, as if the command "package omp 0" were used at the top of your input script. These settings can be changed by using the "-package omp" command-line switch or the "package omp"_package.html command in your script. For the KOKKOS package, using this command-line switch also invokes the default KOKKOS settings, as if the command "package kokkos" were used at the top of your input script. These settings can be changed by using the "-package kokkos" command-line switch or the "package kokkos"_package.html command in your script. For the OMP package, using this command-line switch also invokes the default OMP settings, as if the command "package omp 0" were used at the top of your input script. These settings can be changed by using the "-package omp" command-line switch or the "package omp"_package.html command in your script. The "suffix"_suffix.html command can also be used within an input script to set a suffix, or to turn off or back 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. This switch can be used multiple times to define multiple variables. "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#cmd_2 for more info on using variables in input scripts. NOTE: Currently, the command-line parser looks for arguments that start with "-" to indicate new switches. Thus you cannot specify multiple variable values if any of they start with a "-", e.g. a negative numeric value. It is OK if the first value1 starts with a "-", since it is automatically skipped. :line 2.8 LAMMPS screen output :h4,link(start_8) 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 2.81192 on 4 procs for 300 steps with 2004 atoms Performance: 18.436 ns/day 1.302 hours/ns 106.689 timesteps/s 97.0% CPU use with 4 MPI tasks x no OpenMP threads :pre MPI task timings breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- Pair | 1.9808 | 2.0134 | 2.0318 | 1.4 | 71.60 Bond | 0.0021894 | 0.0060319 | 0.010058 | 4.7 | 0.21 Kspace | 0.3207 | 0.3366 | 0.36616 | 3.1 | 11.97 Neigh | 0.28411 | 0.28464 | 0.28516 | 0.1 | 10.12 Comm | 0.075732 | 0.077018 | 0.07883 | 0.4 | 2.74 Output | 0.00030518 | 0.00042665 | 0.00078821 | 1.0 | 0.02 Modify | 0.086606 | 0.086631 | 0.086668 | 0.0 | 3.08 Other | | 0.007178 | | | 0.26 :pre Nlocal: 501 ave 508 max 490 min Histogram: 1 0 0 0 0 0 1 1 0 1 Nghost: 6586.25 ave 6628 max 6548 min Histogram: 1 0 1 0 0 0 1 0 0 1 Neighs: 177007 ave 180562 max 170212 min Histogram: 1 0 0 0 0 0 0 1 1 1 :pre Total # of neighbors = 708028 Ave neighs/atom = 353.307 Ave special neighs/atom = 2.34032 Neighbor list builds = 26 Dangerous builds = 0 :pre The first section provides a global loop timing summary. The loop time is the total wall time for the section. The {Performance} line is provided for convenience to help predicting the number of loop continuations required and for comparing performance with other similar MD codes. The CPU use line provides the CPU utilzation per MPI task; it should be close to 100% times the number of OpenMP threads (or 1). Lower numbers correspond to delays due to file I/O or insufficient thread utilization. The MPI task section gives the breakdown of the CPU run time (in seconds) into major categories: {Pair} stands for all non-bonded force computation {Bond} stands for bonded interactions: bonds, angles, dihedrals, impropers {Kspace} stands for reciprocal space interactions: Ewald, PPPM, MSM {Neigh} stands for neighbor list construction {Comm} stands for communicating atoms and their properties {Output} stands for writing dumps and thermo output {Modify} stands for fixes and computes called by them {Other} is the remaining time :ul For each category, there is a breakdown of the least, average and most amount of wall time a processor spent on this section. Also you have the variation from the average time. Together these numbers allow to gauge the amount of load imbalance in this segment of the calculation. Ideally the difference between minimum, maximum and average is small and thus the variation from the average close to zero. The final column shows the percentage of the total loop time is spent in this section. When using the "timer full"_timer.html setting, an additional column is present that also prints the CPU utilization in percent. In addition, when using {timer full} and the "package omp"_package.html command are active, a similar timing summary of time spent in threaded regions to monitor thread utilization and load balance is provided. A new entry is the {Reduce} section, which lists the time spend in reducing the per-thread data elements to the storage for non-threaded computation. These thread timings are taking from the first MPI rank only and and thus, as the breakdown for MPI tasks can change from MPI rank to MPI rank, this breakdown can be very different for individual ranks. Here is an example output for this section: Thread timings breakdown (MPI rank 0): Total threaded time 0.6846 / 90.6% Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- Pair | 0.5127 | 0.5147 | 0.5167 | 0.3 | 75.18 Bond | 0.0043139 | 0.0046779 | 0.0050418 | 0.5 | 0.68 Kspace | 0.070572 | 0.074541 | 0.07851 | 1.5 | 10.89 Neigh | 0.084778 | 0.086969 | 0.089161 | 0.7 | 12.70 Reduce | 0.0036485 | 0.003737 | 0.0038254 | 0.1 | 0.55 The third 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: Stopping criterion = linesearch alpha is zero Energy initial, next-to-last, final = -6372.3765206 -8328.46998942 -8328.46998942 Force two-norm initial, final = 1059.36 5.36874 Force max component initial, final = 58.6026 1.46872 Final line search alpha, max atom move = 2.7842e-10 4.0892e-10 Iterations, force evaluations = 701 1516 :pre The first line prints the criterion that determined the minimization to be completed. The third 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. Then some information about the line search and 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.9 Tips for users of previous LAMMPS versions :h4,link(start_9) 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 "Section_history"_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/accelerate_intel.html b/doc/accelerate_intel.html index 16722b968..1977931d9 100644 --- a/doc/accelerate_intel.html +++ b/doc/accelerate_intel.html @@ -1,481 +1,461 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>5.USER-INTEL package — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>5.USER-INTEL package</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <p><a class="reference internal" href="Section_accelerate.html"><em>Return to Section accelerate overview</em></a></p> <div class="section" id="user-intel-package"> <h1>5.USER-INTEL package<a class="headerlink" href="#user-intel-package" title="Permalink to this headline">¶</a></h1> <p>The USER-INTEL package was developed by Mike Brown at Intel -Corporation. It provides a capability to accelerate simulations by -offloading neighbor list and non-bonded force calculations to Intel(R) -Xeon Phi(TM) coprocessors (not native mode like the KOKKOS package). -Additionally, it supports running simulations in single, mixed, or -double precision with vectorization, even if a coprocessor is not -present, i.e. on an Intel(R) CPU. The same C++ code is used for both -cases. When offloading to a coprocessor, the routine is run twice, -once with an offload flag.</p> -<p>The USER-INTEL package can be used in tandem with the USER-OMP -package. This is useful when offloading pair style computations to -coprocessors, so that other styles not supported by the USER-INTEL -package, e.g. bond, angle, dihedral, improper, and long-range -electrostatics, can run simultaneously in threaded mode on the CPU -cores. Since less MPI tasks than CPU cores will typically be invoked -when running with coprocessors, this enables the extra CPU cores to be -used for useful computation.</p> -<p>If LAMMPS is built with both the USER-INTEL and USER-OMP packages -installed, this mode of operation is made easier to use, with the -“-suffix hybrid intel omp” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a> -or the <a class="reference internal" href="suffix.html"><em>suffix hybrid intel omp</em></a> command will both set a -second-choice suffix to “omp” so that styles from the USER-OMP package will be -used if available, after first testing if a style from the USER-INTEL -package is available.</p> -<p>When using the USER-INTEL package, you must choose at build time whether the -binary will support offload to Xeon Phi coprocessors. Binaries supporting -offload can still be run in CPU-only (host-only) mode.</p> -<p>Here is a quick overview of how to use the USER-INTEL package -for CPU-only acceleration:</p> -<ul class="simple"> -<li>specify these CCFLAGS in your src/MAKE/Makefile.machine: -openmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost</li> -<li>specify -openmp with LINKFLAGS in your Makefile.machine</li> -<li>include the USER-INTEL package and (optionally) USER-OMP package and build LAMMPS</li> -<li>specify how many OpenMP threads per MPI task to use</li> -<li>use USER-INTEL and (optionally) USER-OMP styles in your input script</li> -</ul> -<p>Note that many of these settings can only be used with the Intel -compiler, as discussed below.</p> -<p>Using the USER-INTEL package to offload work to the Intel(R) -Xeon Phi(TM) coprocessor is the same except for these additional -steps:</p> -<ul class="simple"> -<li>add the flag -DLMP_INTEL_OFFLOAD to CCFLAGS in your Makefile.machine</li> -<li>add the flag -offload to LINKFLAGS in your Makefile.machine</li> -</ul> -<p>The latter two steps in the first case and the last step in the -coprocessor case can be done using the “-pk intel” and “-sf intel” -<a class="reference internal" href="Section_start.html#start-7"><span>command-line switches</span></a> respectively. Or -the effect of the “-pk” or “-sf” switches can be duplicated by adding -the <a class="reference internal" href="package.html"><em>package intel</em></a> or <a class="reference internal" href="suffix.html"><em>suffix intel</em></a> -commands respectively to your input script.</p> +Corporation. It provides two methods for accelerating simulations, +depending on the hardware you have. The first is acceleration on +Intel(R) CPUs by running in single, mixed, or double precision with +vectorization. The second is acceleration on Intel(R) Xeon Phi(TM) +coprocessors via offloading neighbor list and non-bonded force +calculations to the Phi. The same C++ code is used in both cases. +When offloading to a coprocessor from a CPU, the same routine is run +twice, once on the CPU and once with an offload flag.</p> +<p>Note that the USER-INTEL package supports use of the Phi in “offload” +mode, not “native” mode like the <a class="reference internal" href="accelerate_kokkos.html"><em>KOKKOS package</em></a>.</p> +<p>Also note that the USER-INTEL package can be used in tandem with the +<a class="reference internal" href="accelerate_omp.html"><em>USER-OMP package</em></a>. This is useful when +offloading pair style computations to the Phi, so that other styles +not supported by the USER-INTEL package, e.g. bond, angle, dihedral, +improper, and long-range electrostatics, can run simultaneously in +threaded mode on the CPU cores. Since less MPI tasks than CPU cores +will typically be invoked when running with coprocessors, this enables +the extra CPU cores to be used for useful computation.</p> +<p>As illustrated below, if LAMMPS is built with both the USER-INTEL and +USER-OMP packages, this dual mode of operation is made easier to use, +via the “-suffix hybrid intel omp” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a> or the <a class="reference internal" href="suffix.html"><em>suffix hybrid intel omp</em></a> command. Both set a second-choice suffix to “omp” so +that styles from the USER-INTEL package will be used if available, +with styles from the USER-OMP package as a second choice.</p> +<p>Here is a quick overview of how to use the USER-INTEL package for CPU +acceleration, assuming one or more 16-core nodes. More details +follow.</p> +<div class="highlight-python"><div class="highlight"><pre>use an Intel compiler +use these CCFLAGS settings in Makefile.machine: -fopenmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost, -fno-alias, -ansi-alias, -override-limits +use these LINKFLAGS settings in Makefile.machine: -fopenmp, -xHost +make yes-user-intel yes-user-omp # including user-omp is optional +make mpi # build with the USER-INTEL package, if settings (including compiler) added to Makefile.mpi +make intel_cpu # or Makefile.intel_cpu already has settings, uses Intel MPI wrapper +Make.py -v -p intel omp -intel cpu -a file mpich_icc # or one-line build via Make.py for MPICH +Make.py -v -p intel omp -intel cpu -a file ompi_icc # or for OpenMPI +Make.py -v -p intel omp -intel cpu -a file intel_cpu # or for Intel MPI wrapper +</pre></div> +</div> +<div class="highlight-python"><div class="highlight"><pre>lmp_machine -sf intel -pk intel 0 omp 16 -in in.script # 1 node, 1 MPI task/node, 16 threads/task, no USER-OMP +mpirun -np 32 lmp_machine -sf intel -in in.script # 2 nodess, 16 MPI tasks/node, no threads, no USER-OMP +lmp_machine -sf hybrid intel omp -pk intel 0 omp 16 -pk omp 16 -in in.script # 1 node, 1 MPI task/node, 16 threads/task, with USER-OMP +mpirun -np 32 -ppn 4 lmp_machine -sf hybrid intel omp -pk omp 4 -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task, with USER-OMP +</pre></div> +</div> +<p>Here is a quick overview of how to use the USER-INTEL package for the +same CPUs as above (16 cores/node), with an additional Xeon Phi(TM) +coprocessor per node. More details follow.</p> +<div class="highlight-python"><div class="highlight"><pre>Same as above for building, with these additions/changes: +add the flag -DLMP_INTEL_OFFLOAD to CCFLAGS in Makefile.machine +add the flag -offload to LINKFLAGS in Makefile.machine +for Make.py change "-intel cpu" to "-intel phi", and "file intel_cpu" to "file intel_phi" +</pre></div> +</div> +<div class="highlight-python"><div class="highlight"><pre>mpirun -np 32 lmp_machine -sf intel -pk intel 1 -in in.script # 2 nodes, 16 MPI tasks/node, 240 total threads on coprocessor, no USER-OMP +mpirun -np 16 -ppn 8 lmp_machine -sf intel -pk intel 1 omp 2 -in in.script # 2 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, no USER-OMP +mpirun -np 32 -ppn 8 lmp_machine -sf hybrid intel omp -pk intel 1 omp 2 -pk omp 2 -in in.script # 4 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, with USER-OMP +</pre></div> +</div> <p><strong>Required hardware/software:</strong></p> -<p>To use the offload option, you must have one or more Intel(R) Xeon -Phi(TM) coprocessors and use an Intel(R) C++ compiler.</p> -<p>Optimizations for vectorization have only been tested with the +<p>Your compiler must support the OpenMP interface. Use of an Intel(R) +C++ compiler is recommended, but not required. However, g++ will not +recognize some of the settings listed above, so they cannot be used. +Optimizations for vectorization have only been tested with the Intel(R) compiler. Use of other compilers may not result in -vectorization or give poor performance.</p> -<p>Use of an Intel C++ compiler is recommended, but not required (though -g++ will not recognize some of the settings, so they cannot be used). -The compiler must support the OpenMP interface.</p> +vectorization, or give poor performance.</p> <p>The recommended version of the Intel(R) compiler is 14.0.1.106. -Versions 15.0.1.133 and later are also supported. If using Intel(R) +Versions 15.0.1.133 and later are also supported. If using Intel(R) MPI, versions 15.0.2.044 and later are recommended.</p> +<p>To use the offload option, you must have one or more Intel(R) Xeon +Phi(TM) coprocessors and use an Intel(R) C++ compiler.</p> <p><strong>Building LAMMPS with the USER-INTEL package:</strong></p> -<p>You can choose to build with or without support for offload to a -Intel(R) Xeon Phi(TM) coprocessor. If you build with support for a -coprocessor, the same binary can be used on nodes with and without -coprocessors installed. However, if you do not have coprocessors -on your system, building without offload support will produce a -smaller binary.</p> -<p>You can do either in one line, using the src/Make.py script, described -in <a class="reference internal" href="Section_start.html#start-4"><span>Section 2.4</span></a> of the manual. Type -“Make.py -h” for help. If run from the src directory, these commands -will create src/lmp_intel_cpu and lmp_intel_phi using -src/MAKE/Makefile.mpi as the starting Makefile.machine:</p> -<div class="highlight-python"><div class="highlight"><pre>Make.py -p intel omp -intel cpu -o intel_cpu -cc icc -a file mpi -Make.py -p intel omp -intel phi -o intel_phi -cc icc -a file mpi -</pre></div> -</div> -<p>Note that this assumes that your MPI and its mpicxx wrapper -is using the Intel compiler. If it is not, you should -leave off the “-cc icc” switch.</p> -<p>Or you can follow these steps:</p> -<div class="highlight-python"><div class="highlight"><pre>cd lammps/src -make yes-user-intel -make yes-user-omp (if desired) -make machine -</pre></div> -</div> -<p>Note that if the USER-OMP package is also installed, you can use -styles from both packages, as described below.</p> -<p>The Makefile.machine needs a “-fopenmp” flag for OpenMP support in -both the CCFLAGS and LINKFLAGS variables. You also need to add --DLAMMPS_MEMALIGN=64 and -restrict to CCFLAGS.</p> +<p>The lines above illustrate how to include/build with the USER-INTEL +package, for either CPU or Phi support, in two steps, using the “make” +command. Or how to do it with one command via the src/Make.py script, +described in <a class="reference internal" href="Section_start.html#start-4"><span>Section 2.4</span></a> of the manual. +Type “Make.py -h” for help. Because the mechanism for specifing what +compiler to use (Intel in this case) is different for different MPI +wrappers, 3 versions of the Make.py command are shown.</p> +<p>Note that if you build with support for a Phi coprocessor, the same +binary can be used on nodes with or without coprocessors installed. +However, if you do not have coprocessors on your system, building +without offload support will produce a smaller binary.</p> +<p>If you also build with the USER-OMP package, you can use styles from +both packages, as described below.</p> +<p>Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must +include “-fopenmp”. Likewise, if you use an Intel compiler, the +CCFLAGS setting must include “-restrict”. For Phi support, the +“-DLMP_INTEL_OFFLOAD” (CCFLAGS) and “-offload” (LINKFLAGS) settings +are required. The other settings listed above are optional, but will +typically improve performance. The Make.py command will add all of +these automatically.</p> <p>If you are compiling on the same architecture that will be used for -the runs, adding the flag <em>-xHost</em> to CCFLAGS will enable -vectorization with the Intel(R) compiler. Otherwise, you must -provide the correct compute node architecture to the -x option -(e.g. -xAVX).</p> -<p>In order to build with support for an Intel(R) Xeon Phi(TM) -coprocessor, the flag <em>-offload</em> should be added to the LINKFLAGS line -and the flag -DLMP_INTEL_OFFLOAD should be added to the CCFLAGS line.</p> -<p>Example makefiles Makefile.intel_cpu and Makefile.intel_phi are -included in the src/MAKE/OPTIONS directory with settings that perform -well with the Intel(R) compiler. The latter file has support for -offload to coprocessors; the former does not.</p> -<p><strong>Notes on CPU and core affinity:</strong></p> -<p>Setting core affinity is often used to pin MPI tasks and OpenMP -threads to a core or group of cores so that memory access can be -uniform. Unless disabled at build time, affinity for MPI tasks and -OpenMP threads on the host will be set by default on the host -when using offload to a coprocessor. In this case, it is unnecessary -to use other methods to control affinity (e.g. taskset, numactl, -I_MPI_PIN_DOMAIN, etc.). This can be disabled in an input script -with the <em>no_affinity</em> option to the <a class="reference internal" href="package.html"><em>package intel</em></a> -command or by disabling the option at build time (by adding --DINTEL_OFFLOAD_NOAFFINITY to the CCFLAGS line of your Makefile). -Disabling this option is not recommended, especially when running -on a machine with hyperthreading disabled.</p> -<p><strong>Running with the USER-INTEL package from the command line:</strong></p> +the runs, adding the flag <em>-xHost</em> to CCFLAGS enables vectorization +with the Intel(R) compiler. Otherwise, you must provide the correct +compute node architecture to the -x option (e.g. -xAVX).</p> +<p>Example machines makefiles Makefile.intel_cpu and Makefile.intel_phi +are included in the src/MAKE/OPTIONS directory with settings that +perform well with the Intel(R) compiler. The latter has support for +offload to Phi coprocessors; the former does not.</p> +<p><strong>Run with the USER-INTEL package from the command line:</strong></p> <p>The mpirun or mpiexec command sets the total number of MPI tasks used by LAMMPS (one or multiple per compute node) and the number of MPI tasks used per node. E.g. the mpirun command in MPICH does this via its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode.</p> -<p>If you plan to compute (any portion of) pairwise interactions using -USER-INTEL pair styles on the CPU, or use USER-OMP styles on the CPU, -you need to choose how many OpenMP threads per MPI task to use. Note -that the product of MPI tasks * OpenMP threads/task should not exceed -the physical number of cores (on a node), otherwise performance will -suffer.</p> -<p>If LAMMPS was built with coprocessor support for the USER-INTEL -package, you also need to specify the number of coprocessor/node and -optionally the number of coprocessor threads per MPI task to use. Note that -coprocessor threads (which run on the coprocessor) are totally -independent from OpenMP threads (which run on the CPU). The default -values for the settings that affect coprocessor threads are typically -fine, as discussed below.</p> -<p>Use the “-sf intel” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>, -which will automatically append “intel” to styles that support it. -OpenMP threads per MPI task can be set via the “-pk intel Nphi omp Nt” or -“-pk omp Nt” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switches</span></a>, which -set Nt = # of OpenMP threads per MPI task to use. The “-pk omp” form -is only allowed if LAMMPS was also built with the USER-OMP package.</p> -<p>Use the “-pk intel Nphi” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a> to set Nphi = # of Xeon Phi(TM) -coprocessors/node, if LAMMPS was built with coprocessor support. All -the available coprocessor threads on each Phi will be divided among -MPI tasks, unless the <em>tptask</em> option of the “-pk intel” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a> is used to limit the coprocessor -threads per MPI task. See the <a class="reference internal" href="package.html"><em>package intel</em></a> command -for details.</p> -<div class="highlight-python"><div class="highlight"><pre>CPU-only without USER-OMP (but using Intel vectorization on CPU): -mpirun -np 32 lmp_machine -sf intel -in in.script # 32 MPI tasks on as many nodes as needed (e.g. 2 16-core nodes) -lmp_machine -sf intel -pk intel 0 omp 16 -in in.script # 1 MPI task and 16 threads -</pre></div> -</div> -<div class="highlight-python"><div class="highlight"><pre>CPU-only with USER-OMP (and Intel vectorization on CPU): -lmp_machine -sf hybrid intel omp -pk intel 0 omp 16 -in in.script # 1 MPI task on a 16-core node with 16 threads -mpirun -np 4 lmp_machine -sf hybrid intel omp -pk omp 4 -in in.script # 4 MPI tasks each with 4 threads on a single 16-core node -</pre></div> -</div> -<div class="highlight-python"><div class="highlight"><pre>CPUs + Xeon Phi(TM) coprocessors with or without USER-OMP: -mpirun -np 32 -ppn 16 lmp_machine -sf intel -pk intel 1 -in in.script # 2 nodes with 16 MPI tasks on each, 240 total threads on coprocessor -mpirun -np 16 -ppn 8 lmp_machine -sf intel -pk intel 1 omp 2 -in in.script # 2 nodes, 8 MPI tasks on each node, 2 threads for each task, 240 total threads on coprocessor -mpirun -np 16 -ppn 8 lmp_machine -sf hybrid intel omp -pk intel 1 omp 2 -in in.script # 2 nodes, 8 MPI tasks on each node, 2 threads for each task, 240 total threads on coprocessor, USER-OMP package for some styles -</pre></div> -</div> -<p>Note that if the “-sf intel” switch is used, it also invokes a -default command: <a class="reference internal" href="package.html"><em>package intel 1</em></a>. If the “-sf hybrid intel omp” -switch is used, the default USER-OMP command <a class="reference internal" href="package.html"><em>package omp 0</em></a> is -also invoked. Both set the number of OpenMP threads per MPI task via the -OMP_NUM_THREADS environment variable. The first command sets the number of -Xeon Phi(TM) coprocessors/node to 1 (and the precision mode to “mixed”, as one -of its option defaults). The latter command is not invoked if LAMMPS was not -built with the USER-OMP package. The Nphi = 1 value for the first command is -ignored if LAMMPS was not built with coprocessor support.</p> -<p>Using the “-pk intel” or “-pk omp” switches explicitly allows for -direct setting of the number of OpenMP threads per MPI task, and -additional options for either of the USER-INTEL or USER-OMP packages. -In particular, the “-pk intel” switch sets the number of -coprocessors/node and can limit the number of coprocessor threads per -MPI task. The syntax for these two switches is the same as the -<a class="reference internal" href="package.html"><em>package omp</em></a> and <a class="reference internal" href="package.html"><em>package intel</em></a> commands. -See the <a class="reference internal" href="package.html"><em>package</em></a> command doc page for details, including -the default values used for all its options if these switches are not +<p>If you compute (any portion of) pairwise interactions using USER-INTEL +pair styles on the CPU, or use USER-OMP styles on the CPU, you need to +choose how many OpenMP threads per MPI task to use. If both packages +are used, it must be done for both packages, and the same thread count +value should be used for both. Note that the product of MPI tasks * +threads/task should not exceed the physical number of cores (on a +node), otherwise performance will suffer.</p> +<p>When using the USER-INTEL package for the Phi, you also need to +specify the number of coprocessor/node and optionally the number of +coprocessor threads per MPI task to use. Note that coprocessor +threads (which run on the coprocessor) are totally independent from +OpenMP threads (which run on the CPU). The default values for the +settings that affect coprocessor threads are typically fine, as +discussed below.</p> +<p>As in the lines above, use the “-sf intel” or “-sf hybrid intel omp” +<a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>, which will +automatically append “intel” to styles that support it. In the second +case, “omp” will be appended if an “intel” style does not exist.</p> +<p>Note that if either switch is used, it also invokes a default command: +<a class="reference internal" href="package.html"><em>package intel 1</em></a>. If the “-sf hybrid intel omp” switch +is used, the default USER-OMP command <a class="reference internal" href="package.html"><em>package omp 0</em></a> is +also invoked (if LAMMPS was built with USER-OMP). Both set the number +of OpenMP threads per MPI task via the OMP_NUM_THREADS environment +variable. The first command sets the number of Xeon Phi(TM) +coprocessors/node to 1 (ignored if USER-INTEL is built for CPU-only), +and the precision mode to “mixed” (default value).</p> +<p>You can also use the “-pk intel Nphi” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a> to explicitly set Nphi = # of Xeon +Phi(TM) coprocessors/node, as well as additional options. Nphi should +be >= 1 if LAMMPS was built with coprocessor support, otherswise Nphi += 0 for a CPU-only build. All the available coprocessor threads on +each Phi will be divided among MPI tasks, unless the <em>tptask</em> option +of the “-pk intel” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a> is +used to limit the coprocessor threads per MPI task. See the <a class="reference internal" href="package.html"><em>package intel</em></a> command for details, including the default values +used for all its options if not specified, and how to set the number +of OpenMP threads via the OMP_NUM_THREADS environment variable if +desired.</p> +<p>If LAMMPS was built with the USER-OMP package, you can also use the +“-pk omp Nt” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a> to +explicitly set Nt = # of OpenMP threads per MPI task to use, as well +as additional options. Nt should be the same threads per MPI task as +set for the USER-INTEL package, e.g. via the “-pk intel Nphi omp Nt” +command. Again, see the <a class="reference internal" href="package.html"><em>package omp</em></a> command for +details, including the default values used for all its options if not specified, and how to set the number of OpenMP threads via the OMP_NUM_THREADS environment variable if desired.</p> <p><strong>Or run with the USER-INTEL package by editing an input script:</strong></p> <p>The discussion above for the mpirun/mpiexec command, MPI tasks/node, OpenMP threads per MPI task, and coprocessor threads per MPI task is the same.</p> -<p>Use the <a class="reference internal" href="suffix.html"><em>suffix intel</em></a> command, or you can explicitly add an -“intel” suffix to individual styles in your input script, e.g.</p> +<p>Use the <a class="reference internal" href="suffix.html"><em>suffix intel</em></a> or <a class="reference internal" href="suffix.html"><em>suffix hybrid intel omp</em></a> commands, or you can explicitly add an “intel” or +“omp” suffix to individual styles in your input script, e.g.</p> <div class="highlight-python"><div class="highlight"><pre>pair_style lj/cut/intel 2.5 </pre></div> </div> <p>You must also use the <a class="reference internal" href="package.html"><em>package intel</em></a> command, unless the “-sf intel” or “-pk intel” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switches</span></a> were used. It specifies how many coprocessors/node to use, as well as other OpenMP threading and -coprocessor options. Its doc page explains how to set the number of -OpenMP threads via an environment variable if desired.</p> +coprocessor options. The <a class="reference internal" href="package.html"><em>package</em></a> doc page explains how +to set the number of OpenMP threads via an environment variable if +desired.</p> <p>If LAMMPS was also built with the USER-OMP package, you must also use the <a class="reference internal" href="package.html"><em>package omp</em></a> command to enable that package, unless the “-sf hybrid intel omp” or “-pk omp” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switches</span></a> were used. It specifies how many -OpenMP threads per MPI task to use, as well as other options. Its doc -page explains how to set the number of OpenMP threads via an -environment variable if desired.</p> +OpenMP threads per MPI task to use (should be same as the setting for +the USER-INTEL package), as well as other options. Its doc page +explains how to set the number of OpenMP threads via an environment +variable if desired.</p> <p><strong>Speed-ups to expect:</strong></p> -<p>If LAMMPS was not built with coprocessor support when including the -USER-INTEL package, then acclerated styles will run on the CPU using -vectorization optimizations and the specified precision. This may -give a substantial speed-up for a pair style, particularly if mixed or -single precision is used.</p> +<p>If LAMMPS was not built with coprocessor support (CPU only) when +including the USER-INTEL package, then acclerated styles will run on +the CPU using vectorization optimizations and the specified precision. +This may give a substantial speed-up for a pair style, particularly if +mixed or single precision is used.</p> <p>If LAMMPS was built with coproccesor support, the pair styles will run on one or more Intel(R) Xeon Phi(TM) coprocessors (per node). The performance of a Xeon Phi versus a multi-core CPU is a function of your hardware, which pair style is used, the number of atoms/coprocessor, and the precision used on the coprocessor (double, single, mixed).</p> <p>See the <a class="reference external" href="http://lammps.sandia.gov/bench.html">Benchmark page</a> of the LAMMPS web site for performance of the USER-INTEL package on different hardware.</p> +<div class="admonition warning"> +<p class="first admonition-title">Warning</p> +<p class="last">Setting core affinity is often used to pin MPI tasks +and OpenMP threads to a core or group of cores so that memory access +can be uniform. Unless disabled at build time, affinity for MPI tasks +and OpenMP threads on the host (CPU) will be set by default on the +host when using offload to a coprocessor. In this case, it is +unnecessary to use other methods to control affinity (e.g. taskset, +numactl, I_MPI_PIN_DOMAIN, etc.). This can be disabled in an input +script with the <em>no_affinity</em> option to the <a class="reference internal" href="package.html"><em>package intel</em></a> command or by disabling the option at build time +(by adding -DINTEL_OFFLOAD_NOAFFINITY to the CCFLAGS line of your +Makefile). Disabling this option is not recommended, especially when +running on a machine with hyperthreading disabled.</p> +</div> <p><strong>Guidelines for best performance on an Intel(R) Xeon Phi(TM) coprocessor:</strong></p> <ul class="simple"> <li>The default for the <a class="reference internal" href="package.html"><em>package intel</em></a> command is to have all the MPI tasks on a given compute node use a single Xeon Phi(TM) coprocessor. In general, running with a large number of MPI tasks on each node will perform best with offload. Each MPI task will automatically get affinity to a subset of the hardware threads available on the coprocessor. For example, if your card has 61 cores, with 60 cores available for offload and 4 hardware threads per core (240 total threads), running with 24 MPI tasks per node will cause each MPI task to use a subset of 10 threads on the coprocessor. Fine tuning of the number of threads to use per MPI task or the number of threads to use per core can be accomplished with keyword settings of the <a class="reference internal" href="package.html"><em>package intel</em></a> command.</li> <li>If desired, only a fraction of the pair style computation can be offloaded to the coprocessors. This is accomplished by using the <em>balance</em> keyword in the <a class="reference internal" href="package.html"><em>package intel</em></a> command. A balance of 0 runs all calculations on the CPU. A balance of 1 runs all calculations on the coprocessor. A balance of 0.5 runs half of the calculations on the coprocessor. Setting the balance to -1 (the default) will enable dynamic load balancing that continously adjusts the fraction of offloaded work throughout the simulation. This option typically produces results within 5 to 10 percent of the optimal fixed balance.</li> <li>When using offload with CPU hyperthreading disabled, it may help performance to use fewer MPI tasks and OpenMP threads than available cores. This is due to the fact that additional threads are generated internally to handle the asynchronous offload tasks.</li> <li>If running short benchmark runs with dynamic load balancing, adding a short warm-up run (10-20 steps) will allow the load-balancer to find a near-optimal setting that will carry over to additional runs.</li> <li>If pair computations are being offloaded to an Intel(R) Xeon Phi(TM) coprocessor, a diagnostic line is printed to the screen (not to the log file), during the setup phase of a run, indicating that offload mode is being used and indicating the number of coprocessor threads per MPI task. Additionally, an offload timing summary is printed at the end of each run. When offloading, the frequency for <a class="reference internal" href="atom_modify.html"><em>atom sorting</em></a> is changed to 1 so that the per-atom data is effectively sorted at every rebuild of the neighbor lists.</li> <li>For simulations with long-range electrostatics or bond, angle, dihedral, improper calculations, computation and data transfer to the coprocessor will run concurrently with computations and MPI communications for these calculations on the host CPU. The USER-INTEL package has two modes for deciding which atoms will be handled by the coprocessor. This choice is controlled with the <em>ghost</em> keyword of the <a class="reference internal" href="package.html"><em>package intel</em></a> command. When set to 0, ghost atoms (atoms at the borders between MPI tasks) are not offloaded to the card. This allows for overlap of MPI communication of forces with computation on the coprocessor when the <a class="reference internal" href="newton.html"><em>newton</em></a> setting is “on”. The default is dependent on the style being used, however, better performance may be achieved by setting this option explictly.</li> </ul> <div class="section" id="restrictions"> <h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> <p>When offloading to a coprocessor, <a class="reference internal" href="pair_hybrid.html"><em>hybrid</em></a> styles that require skip lists for neighbor builds cannot be offloaded. Using <a class="reference internal" href="pair_hybrid.html"><em>hybrid/overlay</em></a> is allowed. Only one intel accelerated style may be used with hybrid styles. <a class="reference internal" href="special_bonds.html"><em>Special_bonds</em></a> exclusion lists are not currently supported with offload, however, the same effect can often be accomplished by setting cutoffs for excluded atom types to 0. None of the pair styles in the USER-INTEL package currently support the “inner”, “middle”, “outer” options for rRESPA integration via the <a class="reference internal" href="run_style.html"><em>run_style respa</em></a> command; only the “pair” option is supported.</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/accelerate_intel.txt b/doc/accelerate_intel.txt index b78dbd629..bebcbcfb5 100644 --- a/doc/accelerate_intel.txt +++ b/doc/accelerate_intel.txt @@ -1,343 +1,321 @@ "Previous Section"_Section_packages.html - "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 "Return to Section accelerate overview"_Section_accelerate.html 5.3.3 USER-INTEL package :h4 The USER-INTEL package was developed by Mike Brown at Intel -Corporation. It provides a capability to accelerate simulations by -offloading neighbor list and non-bonded force calculations to Intel(R) -Xeon Phi(TM) coprocessors (not native mode like the KOKKOS package). -Additionally, it supports running simulations in single, mixed, or -double precision with vectorization, even if a coprocessor is not -present, i.e. on an Intel(R) CPU. The same C++ code is used for both -cases. When offloading to a coprocessor, the routine is run twice, -once with an offload flag. - -The USER-INTEL package can be used in tandem with the USER-OMP -package. This is useful when offloading pair style computations to -coprocessors, so that other styles not supported by the USER-INTEL -package, e.g. bond, angle, dihedral, improper, and long-range -electrostatics, can run simultaneously in threaded mode on the CPU -cores. Since less MPI tasks than CPU cores will typically be invoked -when running with coprocessors, this enables the extra CPU cores to be -used for useful computation. - -If LAMMPS is built with both the USER-INTEL and USER-OMP packages -installed, this mode of operation is made easier to use, with the -"-suffix hybrid intel omp" "command-line switch"_Section_start.html#start_7 -or the "suffix hybrid intel omp"_suffix.html command will both set a -second-choice suffix to "omp" so that styles from the USER-OMP package will be -used if available, after first testing if a style from the USER-INTEL -package is available. - -When using the USER-INTEL package, you must choose at build time whether the -binary will support offload to Xeon Phi coprocessors. Binaries supporting -offload can still be run in CPU-only (host-only) mode. - -Here is a quick overview of how to use the USER-INTEL package -for CPU-only acceleration: - -specify these CCFLAGS in your src/MAKE/Makefile.machine: -openmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost -specify -openmp with LINKFLAGS in your Makefile.machine -include the USER-INTEL package and (optionally) USER-OMP package and build LAMMPS -specify how many OpenMP threads per MPI task to use -use USER-INTEL and (optionally) USER-OMP styles in your input script :ul - -Note that many of these settings can only be used with the Intel -compiler, as discussed below. - -Using the USER-INTEL package to offload work to the Intel(R) -Xeon Phi(TM) coprocessor is the same except for these additional -steps: - -add the flag -DLMP_INTEL_OFFLOAD to CCFLAGS in your Makefile.machine -add the flag -offload to LINKFLAGS in your Makefile.machine :ul - -The latter two steps in the first case and the last step in the -coprocessor case can be done using the "-pk intel" and "-sf intel" -"command-line switches"_Section_start.html#start_7 respectively. Or -the effect of the "-pk" or "-sf" switches can be duplicated by adding -the "package intel"_package.html or "suffix intel"_suffix.html -commands respectively to your input script. +Corporation. It provides two methods for accelerating simulations, +depending on the hardware you have. The first is acceleration on +Intel(R) CPUs by running in single, mixed, or double precision with +vectorization. The second is acceleration on Intel(R) Xeon Phi(TM) +coprocessors via offloading neighbor list and non-bonded force +calculations to the Phi. The same C++ code is used in both cases. +When offloading to a coprocessor from a CPU, the same routine is run +twice, once on the CPU and once with an offload flag. + +Note that the USER-INTEL package supports use of the Phi in "offload" +mode, not "native" mode like the "KOKKOS +package"_accelerate_kokkos.html. + +Also note that the USER-INTEL package can be used in tandem with the +"USER-OMP package"_accelerate_omp.html. This is useful when +offloading pair style computations to the Phi, so that other styles +not supported by the USER-INTEL package, e.g. bond, angle, dihedral, +improper, and long-range electrostatics, can run simultaneously in +threaded mode on the CPU cores. Since less MPI tasks than CPU cores +will typically be invoked when running with coprocessors, this enables +the extra CPU cores to be used for useful computation. + +As illustrated below, if LAMMPS is built with both the USER-INTEL and +USER-OMP packages, this dual mode of operation is made easier to use, +via the "-suffix hybrid intel omp" "command-line +switch"_Section_start.html#start_7 or the "suffix hybrid intel +omp"_suffix.html command. Both set a second-choice suffix to "omp" so +that styles from the USER-INTEL package will be used if available, +with styles from the USER-OMP package as a second choice. + +Here is a quick overview of how to use the USER-INTEL package for CPU +acceleration, assuming one or more 16-core nodes. More details +follow. + +use an Intel compiler +use these CCFLAGS settings in Makefile.machine: -fopenmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost, -fno-alias, -ansi-alias, -override-limits +use these LINKFLAGS settings in Makefile.machine: -fopenmp, -xHost +make yes-user-intel yes-user-omp # including user-omp is optional +make mpi # build with the USER-INTEL package, if settings (including compiler) added to Makefile.mpi +make intel_cpu # or Makefile.intel_cpu already has settings, uses Intel MPI wrapper +Make.py -v -p intel omp -intel cpu -a file mpich_icc # or one-line build via Make.py for MPICH +Make.py -v -p intel omp -intel cpu -a file ompi_icc # or for OpenMPI +Make.py -v -p intel omp -intel cpu -a file intel_cpu # or for Intel MPI wrapper :pre + +lmp_machine -sf intel -pk intel 0 omp 16 -in in.script # 1 node, 1 MPI task/node, 16 threads/task, no USER-OMP +mpirun -np 32 lmp_machine -sf intel -in in.script # 2 nodess, 16 MPI tasks/node, no threads, no USER-OMP +lmp_machine -sf hybrid intel omp -pk intel 0 omp 16 -pk omp 16 -in in.script # 1 node, 1 MPI task/node, 16 threads/task, with USER-OMP +mpirun -np 32 -ppn 4 lmp_machine -sf hybrid intel omp -pk omp 4 -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task, with USER-OMP :pre + +Here is a quick overview of how to use the USER-INTEL package for the +same CPUs as above (16 cores/node), with an additional Xeon Phi(TM) +coprocessor per node. More details follow. + +Same as above for building, with these additions/changes: +add the flag -DLMP_INTEL_OFFLOAD to CCFLAGS in Makefile.machine +add the flag -offload to LINKFLAGS in Makefile.machine +for Make.py change "-intel cpu" to "-intel phi", and "file intel_cpu" to "file intel_phi" :pre + +mpirun -np 32 lmp_machine -sf intel -pk intel 1 -in in.script # 2 nodes, 16 MPI tasks/node, 240 total threads on coprocessor, no USER-OMP +mpirun -np 16 -ppn 8 lmp_machine -sf intel -pk intel 1 omp 2 -in in.script # 2 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, no USER-OMP +mpirun -np 32 -ppn 8 lmp_machine -sf hybrid intel omp -pk intel 1 omp 2 -pk omp 2 -in in.script # 4 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, with USER-OMP :pre [Required hardware/software:] -To use the offload option, you must have one or more Intel(R) Xeon -Phi(TM) coprocessors and use an Intel(R) C++ compiler. - +Your compiler must support the OpenMP interface. Use of an Intel(R) +C++ compiler is recommended, but not required. However, g++ will not +recognize some of the settings listed above, so they cannot be used. Optimizations for vectorization have only been tested with the Intel(R) compiler. Use of other compilers may not result in -vectorization or give poor performance. - -Use of an Intel C++ compiler is recommended, but not required (though -g++ will not recognize some of the settings, so they cannot be used). -The compiler must support the OpenMP interface. +vectorization, or give poor performance. The recommended version of the Intel(R) compiler is 14.0.1.106. -Versions 15.0.1.133 and later are also supported. If using Intel(R) +Versions 15.0.1.133 and later are also supported. If using Intel(R) MPI, versions 15.0.2.044 and later are recommended. -[Building LAMMPS with the USER-INTEL package:] - -You can choose to build with or without support for offload to a -Intel(R) Xeon Phi(TM) coprocessor. If you build with support for a -coprocessor, the same binary can be used on nodes with and without -coprocessors installed. However, if you do not have coprocessors -on your system, building without offload support will produce a -smaller binary. - -You can do either in one line, using the src/Make.py script, described -in "Section 2.4"_Section_start.html#start_4 of the manual. Type -"Make.py -h" for help. If run from the src directory, these commands -will create src/lmp_intel_cpu and lmp_intel_phi using -src/MAKE/Makefile.mpi as the starting Makefile.machine: - -Make.py -p intel omp -intel cpu -o intel_cpu -cc icc -a file mpi -Make.py -p intel omp -intel phi -o intel_phi -cc icc -a file mpi :pre - -Note that this assumes that your MPI and its mpicxx wrapper -is using the Intel compiler. If it is not, you should -leave off the "-cc icc" switch. +To use the offload option, you must have one or more Intel(R) Xeon +Phi(TM) coprocessors and use an Intel(R) C++ compiler. -Or you can follow these steps: +[Building LAMMPS with the USER-INTEL package:] -cd lammps/src -make yes-user-intel -make yes-user-omp (if desired) -make machine :pre +The lines above illustrate how to include/build with the USER-INTEL +package, for either CPU or Phi support, in two steps, using the "make" +command. Or how to do it with one command via the src/Make.py script, +described in "Section 2.4"_Section_start.html#start_4 of the manual. +Type "Make.py -h" for help. Because the mechanism for specifing what +compiler to use (Intel in this case) is different for different MPI +wrappers, 3 versions of the Make.py command are shown. + +Note that if you build with support for a Phi coprocessor, the same +binary can be used on nodes with or without coprocessors installed. +However, if you do not have coprocessors on your system, building +without offload support will produce a smaller binary. + +If you also build with the USER-OMP package, you can use styles from +both packages, as described below. + +Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must +include "-fopenmp". Likewise, if you use an Intel compiler, the +CCFLAGS setting must include "-restrict". For Phi support, the +"-DLMP_INTEL_OFFLOAD" (CCFLAGS) and "-offload" (LINKFLAGS) settings +are required. The other settings listed above are optional, but will +typically improve performance. The Make.py command will add all of +these automatically. -Note that if the USER-OMP package is also installed, you can use -styles from both packages, as described below. +If you are compiling on the same architecture that will be used for +the runs, adding the flag {-xHost} to CCFLAGS enables vectorization +with the Intel(R) compiler. Otherwise, you must provide the correct +compute node architecture to the -x option (e.g. -xAVX). -The Makefile.machine needs a "-fopenmp" flag for OpenMP support in -both the CCFLAGS and LINKFLAGS variables. You also need to add --DLAMMPS_MEMALIGN=64 and -restrict to CCFLAGS. +Example machines makefiles Makefile.intel_cpu and Makefile.intel_phi +are included in the src/MAKE/OPTIONS directory with settings that +perform well with the Intel(R) compiler. The latter has support for +offload to Phi coprocessors; the former does not. -If you are compiling on the same architecture that will be used for -the runs, adding the flag {-xHost} to CCFLAGS will enable -vectorization with the Intel(R) compiler. Otherwise, you must -provide the correct compute node architecture to the -x option -(e.g. -xAVX). - -In order to build with support for an Intel(R) Xeon Phi(TM) -coprocessor, the flag {-offload} should be added to the LINKFLAGS line -and the flag -DLMP_INTEL_OFFLOAD should be added to the CCFLAGS line. - -Example makefiles Makefile.intel_cpu and Makefile.intel_phi are -included in the src/MAKE/OPTIONS directory with settings that perform -well with the Intel(R) compiler. The latter file has support for -offload to coprocessors; the former does not. - -[Notes on CPU and core affinity:] - -Setting core affinity is often used to pin MPI tasks and OpenMP -threads to a core or group of cores so that memory access can be -uniform. Unless disabled at build time, affinity for MPI tasks and -OpenMP threads on the host will be set by default on the host -when using offload to a coprocessor. In this case, it is unnecessary -to use other methods to control affinity (e.g. taskset, numactl, -I_MPI_PIN_DOMAIN, etc.). This can be disabled in an input script -with the {no_affinity} option to the "package intel"_package.html -command or by disabling the option at build time (by adding --DINTEL_OFFLOAD_NOAFFINITY to the CCFLAGS line of your Makefile). -Disabling this option is not recommended, especially when running -on a machine with hyperthreading disabled. - -[Running with the USER-INTEL package from the command line:] +[Run with the USER-INTEL package from the command line:] The mpirun or mpiexec command sets the total number of MPI tasks used by LAMMPS (one or multiple per compute node) and the number of MPI tasks used per node. E.g. the mpirun command in MPICH does this via its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. -If you plan to compute (any portion of) pairwise interactions using -USER-INTEL pair styles on the CPU, or use USER-OMP styles on the CPU, -you need to choose how many OpenMP threads per MPI task to use. Note -that the product of MPI tasks * OpenMP threads/task should not exceed -the physical number of cores (on a node), otherwise performance will -suffer. - -If LAMMPS was built with coprocessor support for the USER-INTEL -package, you also need to specify the number of coprocessor/node and -optionally the number of coprocessor threads per MPI task to use. Note that -coprocessor threads (which run on the coprocessor) are totally -independent from OpenMP threads (which run on the CPU). The default -values for the settings that affect coprocessor threads are typically -fine, as discussed below. - -Use the "-sf intel" "command-line switch"_Section_start.html#start_7, -which will automatically append "intel" to styles that support it. -OpenMP threads per MPI task can be set via the "-pk intel Nphi omp Nt" or -"-pk omp Nt" "command-line switches"_Section_start.html#start_7, which -set Nt = # of OpenMP threads per MPI task to use. The "-pk omp" form -is only allowed if LAMMPS was also built with the USER-OMP package. - -Use the "-pk intel Nphi" "command-line -switch"_Section_start.html#start_7 to set Nphi = # of Xeon Phi(TM) -coprocessors/node, if LAMMPS was built with coprocessor support. All -the available coprocessor threads on each Phi will be divided among -MPI tasks, unless the {tptask} option of the "-pk intel" "command-line -switch"_Section_start.html#start_7 is used to limit the coprocessor -threads per MPI task. See the "package intel"_package.html command -for details. - -CPU-only without USER-OMP (but using Intel vectorization on CPU): -mpirun -np 32 lmp_machine -sf intel -in in.script # 32 MPI tasks on as many nodes as needed (e.g. 2 16-core nodes) -lmp_machine -sf intel -pk intel 0 omp 16 -in in.script # 1 MPI task and 16 threads :pre - -CPU-only with USER-OMP (and Intel vectorization on CPU): -lmp_machine -sf hybrid intel omp -pk intel 0 omp 16 -in in.script # 1 MPI task on a 16-core node with 16 threads -mpirun -np 4 lmp_machine -sf hybrid intel omp -pk omp 4 -in in.script # 4 MPI tasks each with 4 threads on a single 16-core node :pre - -CPUs + Xeon Phi(TM) coprocessors with or without USER-OMP: -mpirun -np 32 -ppn 16 lmp_machine -sf intel -pk intel 1 -in in.script # 2 nodes with 16 MPI tasks on each, 240 total threads on coprocessor -mpirun -np 16 -ppn 8 lmp_machine -sf intel -pk intel 1 omp 2 -in in.script # 2 nodes, 8 MPI tasks on each node, 2 threads for each task, 240 total threads on coprocessor -mpirun -np 16 -ppn 8 lmp_machine -sf hybrid intel omp -pk intel 1 omp 2 -in in.script # 2 nodes, 8 MPI tasks on each node, 2 threads for each task, 240 total threads on coprocessor, USER-OMP package for some styles :pre - -Note that if the "-sf intel" switch is used, it also invokes a -default command: "package intel 1"_package.html. If the "-sf hybrid intel omp" -switch is used, the default USER-OMP command "package omp 0"_package.html is -also invoked. Both set the number of OpenMP threads per MPI task via the -OMP_NUM_THREADS environment variable. The first command sets the number of -Xeon Phi(TM) coprocessors/node to 1 (and the precision mode to "mixed", as one -of its option defaults). The latter command is not invoked if LAMMPS was not -built with the USER-OMP package. The Nphi = 1 value for the first command is -ignored if LAMMPS was not built with coprocessor support. - -Using the "-pk intel" or "-pk omp" switches explicitly allows for -direct setting of the number of OpenMP threads per MPI task, and -additional options for either of the USER-INTEL or USER-OMP packages. -In particular, the "-pk intel" switch sets the number of -coprocessors/node and can limit the number of coprocessor threads per -MPI task. The syntax for these two switches is the same as the -"package omp"_package.html and "package intel"_package.html commands. -See the "package"_package.html command doc page for details, including -the default values used for all its options if these switches are not +If you compute (any portion of) pairwise interactions using USER-INTEL +pair styles on the CPU, or use USER-OMP styles on the CPU, you need to +choose how many OpenMP threads per MPI task to use. If both packages +are used, it must be done for both packages, and the same thread count +value should be used for both. Note that the product of MPI tasks * +threads/task should not exceed the physical number of cores (on a +node), otherwise performance will suffer. + +When using the USER-INTEL package for the Phi, you also need to +specify the number of coprocessor/node and optionally the number of +coprocessor threads per MPI task to use. Note that coprocessor +threads (which run on the coprocessor) are totally independent from +OpenMP threads (which run on the CPU). The default values for the +settings that affect coprocessor threads are typically fine, as +discussed below. + +As in the lines above, use the "-sf intel" or "-sf hybrid intel omp" +"command-line switch"_Section_start.html#start_7, which will +automatically append "intel" to styles that support it. In the second +case, "omp" will be appended if an "intel" style does not exist. + +Note that if either switch is used, it also invokes a default command: +"package intel 1"_package.html. If the "-sf hybrid intel omp" switch +is used, the default USER-OMP command "package omp 0"_package.html is +also invoked (if LAMMPS was built with USER-OMP). Both set the number +of OpenMP threads per MPI task via the OMP_NUM_THREADS environment +variable. The first command sets the number of Xeon Phi(TM) +coprocessors/node to 1 (ignored if USER-INTEL is built for CPU-only), +and the precision mode to "mixed" (default value). + +You can also use the "-pk intel Nphi" "command-line +switch"_Section_start.html#start_7 to explicitly set Nphi = # of Xeon +Phi(TM) coprocessors/node, as well as additional options. Nphi should +be >= 1 if LAMMPS was built with coprocessor support, otherswise Nphi += 0 for a CPU-only build. All the available coprocessor threads on +each Phi will be divided among MPI tasks, unless the {tptask} option +of the "-pk intel" "command-line switch"_Section_start.html#start_7 is +used to limit the coprocessor threads per MPI task. See the "package +intel"_package.html command for details, including the default values +used for all its options if not specified, and how to set the number +of OpenMP threads via the OMP_NUM_THREADS environment variable if +desired. + +If LAMMPS was built with the USER-OMP package, you can also use the +"-pk omp Nt" "command-line switch"_Section_start.html#start_7 to +explicitly set Nt = # of OpenMP threads per MPI task to use, as well +as additional options. Nt should be the same threads per MPI task as +set for the USER-INTEL package, e.g. via the "-pk intel Nphi omp Nt" +command. Again, see the "package omp"_package.html command for +details, including the default values used for all its options if not specified, and how to set the number of OpenMP threads via the OMP_NUM_THREADS environment variable if desired. [Or run with the USER-INTEL package by editing an input script:] The discussion above for the mpirun/mpiexec command, MPI tasks/node, OpenMP threads per MPI task, and coprocessor threads per MPI task is the same. -Use the "suffix intel"_suffix.html command, or you can explicitly add an -"intel" suffix to individual styles in your input script, e.g. +Use the "suffix intel"_suffix.html or "suffix hybrid intel +omp"_suffix.html commands, or you can explicitly add an "intel" or +"omp" suffix to individual styles in your input script, e.g. pair_style lj/cut/intel 2.5 :pre You must also use the "package intel"_package.html command, unless the "-sf intel" or "-pk intel" "command-line switches"_Section_start.html#start_7 were used. It specifies how many coprocessors/node to use, as well as other OpenMP threading and -coprocessor options. Its doc page explains how to set the number of -OpenMP threads via an environment variable if desired. +coprocessor options. The "package"_package.html doc page explains how +to set the number of OpenMP threads via an environment variable if +desired. If LAMMPS was also built with the USER-OMP package, you must also use the "package omp"_package.html command to enable that package, unless the "-sf hybrid intel omp" or "-pk omp" "command-line switches"_Section_start.html#start_7 were used. It specifies how many -OpenMP threads per MPI task to use, as well as other options. Its doc -page explains how to set the number of OpenMP threads via an -environment variable if desired. +OpenMP threads per MPI task to use (should be same as the setting for +the USER-INTEL package), as well as other options. Its doc page +explains how to set the number of OpenMP threads via an environment +variable if desired. [Speed-ups to expect:] -If LAMMPS was not built with coprocessor support when including the -USER-INTEL package, then acclerated styles will run on the CPU using -vectorization optimizations and the specified precision. This may -give a substantial speed-up for a pair style, particularly if mixed or -single precision is used. +If LAMMPS was not built with coprocessor support (CPU only) when +including the USER-INTEL package, then acclerated styles will run on +the CPU using vectorization optimizations and the specified precision. +This may give a substantial speed-up for a pair style, particularly if +mixed or single precision is used. If LAMMPS was built with coproccesor support, the pair styles will run on one or more Intel(R) Xeon Phi(TM) coprocessors (per node). The performance of a Xeon Phi versus a multi-core CPU is a function of your hardware, which pair style is used, the number of atoms/coprocessor, and the precision used on the coprocessor (double, single, mixed). See the "Benchmark page"_http://lammps.sandia.gov/bench.html of the LAMMPS web site for performance of the USER-INTEL package on different hardware. +IMPORTANT NOTE: Setting core affinity is often used to pin MPI tasks +and OpenMP threads to a core or group of cores so that memory access +can be uniform. Unless disabled at build time, affinity for MPI tasks +and OpenMP threads on the host (CPU) will be set by default on the +host when using offload to a coprocessor. In this case, it is +unnecessary to use other methods to control affinity (e.g. taskset, +numactl, I_MPI_PIN_DOMAIN, etc.). This can be disabled in an input +script with the {no_affinity} option to the "package +intel"_package.html command or by disabling the option at build time +(by adding -DINTEL_OFFLOAD_NOAFFINITY to the CCFLAGS line of your +Makefile). Disabling this option is not recommended, especially when +running on a machine with hyperthreading disabled. + [Guidelines for best performance on an Intel(R) Xeon Phi(TM) coprocessor:] The default for the "package intel"_package.html command is to have all the MPI tasks on a given compute node use a single Xeon Phi(TM) coprocessor. In general, running with a large number of MPI tasks on each node will perform best with offload. Each MPI task will automatically get affinity to a subset of the hardware threads available on the coprocessor. For example, if your card has 61 cores, with 60 cores available for offload and 4 hardware threads per core (240 total threads), running with 24 MPI tasks per node will cause each MPI task to use a subset of 10 threads on the coprocessor. Fine tuning of the number of threads to use per MPI task or the number of threads to use per core can be accomplished with keyword settings of the "package intel"_package.html command. :ulb,l If desired, only a fraction of the pair style computation can be offloaded to the coprocessors. This is accomplished by using the {balance} keyword in the "package intel"_package.html command. A balance of 0 runs all calculations on the CPU. A balance of 1 runs all calculations on the coprocessor. A balance of 0.5 runs half of the calculations on the coprocessor. Setting the balance to -1 (the default) will enable dynamic load balancing that continously adjusts the fraction of offloaded work throughout the simulation. This option typically produces results within 5 to 10 percent of the optimal fixed balance. :l When using offload with CPU hyperthreading disabled, it may help performance to use fewer MPI tasks and OpenMP threads than available cores. This is due to the fact that additional threads are generated internally to handle the asynchronous offload tasks. :l If running short benchmark runs with dynamic load balancing, adding a short warm-up run (10-20 steps) will allow the load-balancer to find a near-optimal setting that will carry over to additional runs. :l If pair computations are being offloaded to an Intel(R) Xeon Phi(TM) coprocessor, a diagnostic line is printed to the screen (not to the log file), during the setup phase of a run, indicating that offload mode is being used and indicating the number of coprocessor threads per MPI task. Additionally, an offload timing summary is printed at the end of each run. When offloading, the frequency for "atom sorting"_atom_modify.html is changed to 1 so that the per-atom data is effectively sorted at every rebuild of the neighbor lists. :l For simulations with long-range electrostatics or bond, angle, dihedral, improper calculations, computation and data transfer to the coprocessor will run concurrently with computations and MPI communications for these calculations on the host CPU. The USER-INTEL package has two modes for deciding which atoms will be handled by the coprocessor. This choice is controlled with the {ghost} keyword of the "package intel"_package.html command. When set to 0, ghost atoms (atoms at the borders between MPI tasks) are not offloaded to the card. This allows for overlap of MPI communication of forces with computation on the coprocessor when the "newton"_newton.html setting is "on". The default is dependent on the style being used, however, better performance may be achieved by setting this option explictly. :l,ule [Restrictions:] When offloading to a coprocessor, "hybrid"_pair_hybrid.html styles that require skip lists for neighbor builds cannot be offloaded. Using "hybrid/overlay"_pair_hybrid.html is allowed. Only one intel accelerated style may be used with hybrid styles. "Special_bonds"_special_bonds.html exclusion lists are not currently supported with offload, however, the same effect can often be accomplished by setting cutoffs for excluded atom types to 0. None of the pair styles in the USER-INTEL package currently support the "inner", "middle", "outer" options for rRESPA integration via the "run_style respa"_run_style.html command; only the "pair" option is supported. diff --git a/doc/accelerate_kokkos.html b/doc/accelerate_kokkos.html index 31088c43d..23fccc5ca 100644 --- a/doc/accelerate_kokkos.html +++ b/doc/accelerate_kokkos.html @@ -1,620 +1,622 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>5.KOKKOS package — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>5.KOKKOS package</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <p><a class="reference internal" href="Section_accelerate.html"><em>Return to Section accelerate overview</em></a></p> <div class="section" id="kokkos-package"> <h1>5.KOKKOS package<a class="headerlink" href="#kokkos-package" title="Permalink to this headline">¶</a></h1> -<p>The KOKKOS package was developed primaritly by Christian Trott -(Sandia) with contributions of various styles by others, including -Sikandar Mashayak (UIUC), Stan Moore (Sandia), and Ray Shan (Sandia). -The underlying Kokkos library was written -primarily by Carter Edwards, Christian Trott, and Dan Sunderland (all -Sandia).</p> +<p>The KOKKOS package was developed primarily by Christian Trott (Sandia) +with contributions of various styles by others, including Sikandar +Mashayak (UIUC), Stan Moore (Sandia), and Ray Shan (Sandia). The +underlying Kokkos library was written primarily by Carter Edwards, +Christian Trott, and Dan Sunderland (all Sandia).</p> <p>The KOKKOS package contains versions of pair, fix, and atom styles that use data structures and macros provided by the Kokkos library, which is included with LAMMPS in lib/kokkos.</p> <p>The Kokkos library is part of -<a class="reference external" href="http://trilinos.sandia.gov/packages/kokkos">Trilinos</a> and can also -be downloaded from <a class="reference external" href="https://github.com/kokkos/kokkos">Github</a>. Kokkos is a +<a class="reference external" href="http://trilinos.sandia.gov/packages/kokkos">Trilinos</a> and can also be +downloaded from <a class="reference external" href="https://github.com/kokkos/kokkos">Github</a>. Kokkos is a templated C++ library that provides two key abstractions for an application like LAMMPS. First, it allows a single implementation of an application kernel (e.g. a pair style) to run efficiently on different kinds of hardware, such as a GPU, Intel Phi, or many-core -chip.</p> +CPU.</p> <p>The Kokkos library also provides data abstractions to adjust (at compile time) the memory layout of basic data structures like 2d and 3d arrays and allow the transparent utilization of special hardware load and store operations. Such data structures are used in LAMMPS to store atom coordinates or forces or neighbor lists. The layout is chosen to optimize performance on different platforms. Again this functionality is hidden from the developer, and does not affect how the kernel is coded.</p> <p>These abstractions are set at build time, when LAMMPS is compiled with -the KOKKOS package installed. This is done by selecting a “host” and -“device” to build for, compatible with the compute nodes in your -machine (one on a desktop machine or 1000s on a supercomputer).</p> -<p>All Kokkos operations occur within the context of an individual MPI -task running on a single node of the machine. The total number of MPI -tasks used by LAMMPS (one or multiple per compute node) is set in the -usual manner via the mpirun or mpiexec commands, and is independent of -Kokkos.</p> -<p>Kokkos provides support for two different modes of execution per MPI -task. This means that computational tasks (pairwise interactions, -neighbor list builds, time integration, etc) can be parallelized for -one or the other of the two modes. The first mode is called the -“host” and is one or more threads running on one or more physical CPUs -(within the node). Currently, both multi-core CPUs and an Intel Phi -processor (running in native mode, not offload mode like the -USER-INTEL package) are supported. The second mode is called the -“device” and is an accelerator chip of some kind. Currently only an -NVIDIA GPU is supported via Cuda. If your compute node does not have -a GPU, then there is only one mode of execution, i.e. the host and -device are the same.</p> -<p>When using the KOKKOS package, you must choose at build time whether -you are building for OpenMP, GPU, or for using the Xeon Phi in native -mode.</p> -<p>Here is a quick overview of how to use the KOKKOS package:</p> +the KOKKOS package installed. All Kokkos operations occur within the +context of an individual MPI task running on a single node of the +machine. The total number of MPI tasks used by LAMMPS (one or +multiple per compute node) is set in the usual manner via the mpirun +or mpiexec commands, and is independent of Kokkos.</p> +<p>Kokkos currently provides support for 3 modes of execution (per MPI +task). These are OpenMP (for many-core CPUs), Cuda (for NVIDIA GPUs), +and OpenMP (for Intel Phi). Note that the KOKKOS package supports +running on the Phi in native mode, not offload mode like the +USER-INTEL package supports. You choose the mode at build time to +produce an executable compatible with specific hardware.</p> +<p>Here is a quick overview of how to use the KOKKOS package +for CPU acceleration, assuming one or more 16-core nodes. +More details follow.</p> +<p>use a C++11 compatible compiler +make yes-kokkos +make mpi KOKKOS_DEVICES=OpenMP # build with the KOKKOS package +make kokkos_omp # or Makefile.kokkos_omp already has variable set +Make.py -v -p kokkos -kokkos omp -o mpi -a file mpi # or one-line build via Make.py</p> +<div class="highlight-python"><div class="highlight"><pre>mpirun -np 16 lmp_mpi -k on -sf kk -in in.lj # 1 node, 16 MPI tasks/node, no threads +mpirun -np 2 -ppn 1 lmp_mpi -k on t 16 -sf kk -in in.lj # 2 nodes, 1 MPI task/node, 16 threads/task +mpirun -np 2 lmp_mpi -k on t 8 -sf kk -in in.lj # 1 node, 2 MPI tasks/node, 8 threads/task +mpirun -np 32 -ppn 4 lmp_mpi -k on t 4 -sf kk -in in.lj # 8 nodes, 4 MPI tasks/node, 4 threads/task +</pre></div> +</div> <ul class="simple"> <li>specify variables and settings in your Makefile.machine that enable OpenMP, GPU, or Phi support</li> <li>include the KOKKOS package and build LAMMPS</li> <li>enable the KOKKOS package and its hardware options via the “-k on” command-line switch use KOKKOS styles in your input script</li> </ul> -<p>The latter two steps can be done using the “-k on”, “-pk kokkos” and -“-sf kk” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switches</span></a> -respectively. Or the effect of the “-pk” or “-sf” switches can be -duplicated by adding the <a class="reference internal" href="package.html"><em>package kokkos</em></a> or <a class="reference internal" href="suffix.html"><em>suffix kk</em></a> commands respectively to your input script.</p> +<p>Here is a quick overview of how to use the KOKKOS package for GPUs, +assuming one or more nodes, each with 16 cores and a GPU. More +details follow.</p> +<p>discuss use of NVCC, which Makefiles to examine</p> +<p>use a C++11 compatible compiler +KOKKOS_DEVICES = Cuda, OpenMP +KOKKOS_ARCH = Kepler35 +make yes-kokkos +make machine +Make.py -p kokkos -kokkos cuda arch=31 -o kokkos_cuda -a file kokkos_cuda</p> +<div class="highlight-python"><div class="highlight"><pre>mpirun -np 1 lmp_cuda -k on t 6 -sf kk -in in.lj # one MPI task, 6 threads on CPU +mpirun -np 4 -ppn 1 lmp_cuda -k on t 6 -sf kk -in in.lj # ditto on 4 nodes +</pre></div> +</div> +<div class="highlight-python"><div class="highlight"><pre>mpirun -np 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # two MPI tasks, 8 threads per CPU +mpirun -np 32 -ppn 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # ditto on 16 nodes +</pre></div> +</div> +<p>Here is a quick overview of how to use the KOKKOS package +for the Intel Phi:</p> +<div class="highlight-python"><div class="highlight"><pre>use a C++11 compatible compiler +KOKKOS_DEVICES = OpenMP +KOKKOS_ARCH = KNC +make yes-kokkos +make machine +Make.py -p kokkos -kokkos phi -o kokkos_phi -a file mpi +</pre></div> +</div> +<p>host=MIC, Intel Phi with 61 cores (240 threads/phi via 4x hardware threading): +mpirun -np 1 lmp_g++ -k on t 240 -sf kk -in in.lj # 1 MPI task on 1 Phi, 1*240 = 240 +mpirun -np 30 lmp_g++ -k on t 8 -sf kk -in in.lj # 30 MPI tasks on 1 Phi, 30*8 = 240 +mpirun -np 12 lmp_g++ -k on t 20 -sf kk -in in.lj # 12 MPI tasks on 1 Phi, 12*20 = 240 +mpirun -np 96 -ppn 12 lmp_g++ -k on t 20 -sf kk -in in.lj # ditto on 8 Phis</p> <p><strong>Required hardware/software:</strong></p> -<p>The KOKKOS package can be used to build and run LAMMPS on the -following kinds of hardware:</p> -<ul class="simple"> -<li>CPU-only: one MPI task per CPU core (MPI-only, but using KOKKOS styles)</li> -<li>CPU-only: one or a few MPI tasks per node with additional threading via OpenMP</li> -<li>Phi: on one or more Intel Phi coprocessors (per node)</li> -<li>GPU: on the GPUs of a node with additional OpenMP threading on the CPUs</li> -</ul> <p>Kokkos support within LAMMPS must be built with a C++11 compatible compiler. If using gcc, version 4.8.1 or later is required.</p> -<p>Note that Intel Xeon Phi coprocessors are supported in “native” mode, -not “offload” mode like the USER-INTEL package supports.</p> -<p>Only NVIDIA GPUs are currently supported.</p> +<p>To build with Kokkos support for CPUs, your compiler must support the +OpenMP interface. You should have one or more multi-core CPUs so that +multiple threads can be launched by each MPI task running on a CPU.</p> +<p>To build with Kokkos support for NVIDIA GPUs, NVIDIA Cuda software +version 6.5 or later must be installed on your system. See the +discussion for the <a class="reference internal" href="accelerate_cuda.html"><em>USER-CUDA</em></a> and +<a class="reference internal" href="accelerate_gpu.html"><em>GPU</em></a> packages for details of how to check and do +this.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">For good performance of the KOKKOS package on GPUs, you must have Kepler generation GPUs (or later). The Kokkos library exploits texture cache options not supported by Telsa generation GPUs (or older).</p> </div> -<p>To build the KOKKOS package for GPUs, NVIDIA Cuda software version 6.5 or later must be -installed on your system. See the discussion above for the USER-CUDA -and GPU packages for details of how to check and do this.</p> +<p>To build with Kokkos support for Intel Xeon Phi coprocessors, your +sysmte must be configured to use them in “native” mode, not “offload” +mode like the USER-INTEL package supports.</p> <p><strong>Building LAMMPS with the KOKKOS package:</strong></p> -<p>You must choose at build time whether to build for OpenMP, Cuda, or -Phi.</p> +<p>You must choose at build time whether to build for CPUs (OpenMP), +GPUs, or Phi.</p> <p>You can do any of these in one line, using the src/Make.py script, described in <a class="reference internal" href="Section_start.html#start-4"><span>Section 2.4</span></a> of the manual. Type “Make.py -h” for help. If run from the src directory, these commands will create src/lmp_kokkos_omp, lmp_kokkos_cuda, and lmp_kokkos_phi. Note that the OMP and PHI options use src/MAKE/Makefile.mpi as the starting Makefile.machine. The CUDA option uses src/MAKE/OPTIONS/Makefile.kokkos_cuda.</p> -<div class="highlight-python"><div class="highlight"><pre>Make.py -p kokkos -kokkos omp -o kokkos_omp -a file mpi -Make.py -p kokkos -kokkos cuda arch=31 -o kokkos_cuda -a file kokkos_cuda -Make.py -p kokkos -kokkos phi -o kokkos_phi -a file mpi -</pre></div> -</div> +<p>The latter two steps can be done using the “-k on”, “-pk kokkos” and +“-sf kk” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switches</span></a> +respectively. Or the effect of the “-pk” or “-sf” switches can be +duplicated by adding the <a class="reference internal" href="package.html"><em>package kokkos</em></a> or <a class="reference internal" href="suffix.html"><em>suffix kk</em></a> commands respectively to your input script.</p> <p>Or you can follow these steps:</p> <p>CPU-only (run all-MPI or with OpenMP threading):</p> <div class="highlight-python"><div class="highlight"><pre>cd lammps/src make yes-kokkos make g++ KOKKOS_DEVICES=OpenMP </pre></div> </div> <p>Intel Xeon Phi:</p> <div class="highlight-python"><div class="highlight"><pre>cd lammps/src make yes-kokkos make g++ KOKKOS_DEVICES=OpenMP KOKKOS_ARCH=KNC </pre></div> </div> <p>CPUs and GPUs:</p> <div class="highlight-python"><div class="highlight"><pre>cd lammps/src make yes-kokkos make cuda KOKKOS_DEVICES=Cuda </pre></div> </div> <p>These examples set the KOKKOS-specific OMP, MIC, CUDA variables on the make command line which requires a GNU-compatible make command. Try “gmake” if your system’s standard make complains.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">If you build using make line variables and re-build LAMMPS twice with different KOKKOS options and the <em>same</em> target, e.g. g++ in the first two examples above, then you <em>must</em> perform a “make clean-all” or “make clean-machine” before each build. This is to force all the KOKKOS-dependent files to be re-compiled with the new options.</p> </div> <p>You can also hardwire these make variables in the specified machine makefile, e.g. src/MAKE/Makefile.g++ in the first two examples above, with a line like:</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">KOKKOS_ARCH</span> <span class="o">=</span> <span class="n">KNC</span> </pre></div> </div> <p>Note that if you build LAMMPS multiple times in this manner, using different KOKKOS options (defined in different machine makefiles), you do not have to worry about doing a “clean” in between. This is because the targets will be different.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">The 3rd example above for a GPU, uses a different machine makefile, in this case src/MAKE/Makefile.cuda, which is included in the LAMMPS distribution. To build the KOKKOS package for a GPU, this makefile must use the NVIDA “nvcc” compiler. And it must have a KOKKOS_ARCH setting that is appropriate for your NVIDIA hardware and installed software. Typical values for KOKKOS_ARCH are given below, as well as other settings that must be included in the machine makefile, if you create your own.</p> </div> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">Currently, there are no precision options with the KOKKOS package. All compilation and computation is performed in double precision.</p> </div> <p>There are other allowed options when building with the KOKKOS package. As above, they can be set either as variables on the make command line or in Makefile.machine. This is the full list of options, including those discussed above, Each takes a value shown below. The default value is listed, which is set in the lib/kokkos/Makefile.kokkos file.</p> <p>#Default settings specific options #Options: force_uvm,use_ldg,rdc</p> <ul class="simple"> <li>KOKKOS_DEVICES, values = <em>OpenMP</em>, <em>Serial</em>, <em>Pthreads</em>, <em>Cuda</em>, default = <em>OpenMP</em></li> <li>KOKKOS_ARCH, values = <em>KNC</em>, <em>SNB</em>, <em>HSW</em>, <em>Kepler</em>, <em>Kepler30</em>, <em>Kepler32</em>, <em>Kepler35</em>, <em>Kepler37</em>, <em>Maxwell</em>, <em>Maxwell50</em>, <em>Maxwell52</em>, <em>Maxwell53</em>, <em>ARMv8</em>, <em>BGQ</em>, <em>Power7</em>, <em>Power8</em>, default = <em>none</em></li> <li>KOKKOS_DEBUG, values = <em>yes</em>, <em>no</em>, default = <em>no</em></li> <li>KOKKOS_USE_TPLS, values = <em>hwloc</em>, <em>librt</em>, default = <em>none</em></li> <li>KOKKOS_CUDA_OPTIONS, values = <em>force_uvm</em>, <em>use_ldg</em>, <em>rdc</em></li> </ul> <p>KOKKOS_DEVICE sets the parallelization method used for Kokkos code (within LAMMPS). KOKKOS_DEVICES=OpenMP means that OpenMP will be used. KOKKOS_DEVICES=Pthreads means that pthreads will be used. KOKKOS_DEVICES=Cuda means an NVIDIA GPU running CUDA will be used.</p> <p>If KOKKOS_DEVICES=Cuda, then the lo-level Makefile in the src/MAKE directory must use “nvcc” as its compiler, via its CC setting. For best performance its CCFLAGS setting should use -O3 and have a KOKKOS_ARCH setting that matches the compute capability of your NVIDIA hardware and software installation, e.g. KOKKOS_ARCH=Kepler30. Note the minimal required compute capability is 2.0, but this will give signicantly reduced performance compared to Kepler generation GPUs with compute capability 3.x. For the LINK setting, “nvcc” should not be used; instead use g++ or another compiler suitable for linking C++ applications. Often you will want to use your MPI compiler wrapper for this setting (i.e. mpicxx). Finally, the lo-level Makefile must also have a “Compilation rule” for creating <a href="#id1"><span class="problematic" id="id2">*</span></a>.o files from <a href="#id3"><span class="problematic" id="id4">*</span></a>.cu files. See src/Makefile.cuda for an example of a lo-level Makefile with all of these settings.</p> <p>KOKKOS_USE_TPLS=hwloc binds threads to hardware cores, so they do not migrate during a simulation. KOKKOS_USE_TPLS=hwloc should always be used if running with KOKKOS_DEVICES=Pthreads for pthreads. It is not necessary for KOKKOS_DEVICES=OpenMP for OpenMP, because OpenMP provides alternative methods via environment variables for binding threads to hardware cores. More info on binding threads to cores is given in <span class="xref std std-ref">this section</span>.</p> <p>KOKKOS_ARCH=KNC enables compiler switches needed when compling for an Intel Phi processor.</p> <p>KOKKOS_USE_TPLS=librt enables use of a more accurate timer mechanism on most Unix platforms. This library is not available on all platforms.</p> <p>KOKKOS_DEBUG is only useful when developing a Kokkos-enabled style within LAMMPS. KOKKOS_DEBUG=yes enables printing of run-time debugging information that can be useful. It also enables runtime bounds checking on Kokkos data structures.</p> <p>KOKKOS_CUDA_OPTIONS are additional options for CUDA.</p> <p>For more information on Kokkos see the Kokkos programmers’ guide here: /lib/kokkos/doc/Kokkos_PG.pdf.</p> <p><strong>Run with the KOKKOS package from the command line:</strong></p> <p>The mpirun or mpiexec command sets the total number of MPI tasks used by LAMMPS (one or multiple per compute node) and the number of MPI tasks used per node. E.g. the mpirun command in MPICH does this via its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode.</p> <p>When using KOKKOS built with host=OMP, you need to choose how many OpenMP threads per MPI task will be used (via the “-k” command-line switch discussed below). Note that the product of MPI tasks * OpenMP threads/task should not exceed the physical number of cores (on a node), otherwise performance will suffer.</p> <p>When using the KOKKOS package built with device=CUDA, you must use exactly one MPI task per physical GPU.</p> <p>When using the KOKKOS package built with host=MIC for Intel Xeon Phi coprocessor support you need to insure there are one or more MPI tasks per coprocessor, and choose the number of coprocessor threads to use per MPI task (via the “-k” command-line switch discussed below). The product of MPI tasks * coprocessor threads/task should not exceed the maximum number of threads the coproprocessor is designed to run, otherwise performance will suffer. This value is 240 for current generation Xeon Phi(TM) chips, which is 60 physical cores * 4 threads/core. Note that with the KOKKOS package you do not need to specify how many Phi coprocessors there are per node; each coprocessors is simply treated as running some number of MPI tasks.</p> <p>You must use the “-k on” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a> to enable the KOKKOS package. It takes additional arguments for hardware settings appropriate to your system. Those arguments are <a class="reference internal" href="Section_start.html#start-7"><span>documented here</span></a>. The two most commonly used options are:</p> <div class="highlight-python"><div class="highlight"><pre>-k on t Nt g Ng </pre></div> </div> <p>The “t Nt” option applies to host=OMP (even if device=CUDA) and host=MIC. For host=OMP, it specifies how many OpenMP threads per MPI task to use with a node. For host=MIC, it specifies how many Xeon Phi threads per MPI task to use within a node. The default is Nt = 1. Note that for host=OMP this is effectively MPI-only mode which may be fine. But for host=MIC you will typically end up using far less than all the 240 available threads, which could give very poor performance.</p> <p>The “g Ng” option applies to device=CUDA. It specifies how many GPUs per compute node to use. The default is 1, so this only needs to be specified is you have 2 or more GPUs per compute node.</p> <p>The “-k on” switch also issues a “package kokkos” command (with no additional arguments) which sets various KOKKOS options to default values, as discussed on the <a class="reference internal" href="package.html"><em>package</em></a> command doc page.</p> <p>Use the “-sf kk” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>, which will automatically append “kk” to styles that support it. Use the “-pk kokkos” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a> if you wish to change any of the default <a class="reference internal" href="package.html"><em>package kokkos</em></a> optionns set by the “-k on” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>.</p> -<div class="highlight-python"><div class="highlight"><pre>host=OMP, dual hex-core nodes (12 threads/node): -mpirun -np 12 lmp_g++ -in in.lj # MPI-only mode with no Kokkos -mpirun -np 12 lmp_g++ -k on -sf kk -in in.lj # MPI-only mode with Kokkos -mpirun -np 1 lmp_g++ -k on t 12 -sf kk -in in.lj # one MPI task, 12 threads -mpirun -np 2 lmp_g++ -k on t 6 -sf kk -in in.lj # two MPI tasks, 6 threads/task -mpirun -np 32 -ppn 2 lmp_g++ -k on t 6 -sf kk -in in.lj # ditto on 16 nodes -</pre></div> -</div> -<p>host=MIC, Intel Phi with 61 cores (240 threads/phi via 4x hardware threading): -mpirun -np 1 lmp_g++ -k on t 240 -sf kk -in in.lj # 1 MPI task on 1 Phi, 1*240 = 240 -mpirun -np 30 lmp_g++ -k on t 8 -sf kk -in in.lj # 30 MPI tasks on 1 Phi, 30*8 = 240 -mpirun -np 12 lmp_g++ -k on t 20 -sf kk -in in.lj # 12 MPI tasks on 1 Phi, 12*20 = 240 -mpirun -np 96 -ppn 12 lmp_g++ -k on t 20 -sf kk -in in.lj # ditto on 8 Phis</p> -<div class="highlight-python"><div class="highlight"><pre>host=OMP, device=CUDA, node = dual hex-core CPUs and a single GPU: -mpirun -np 1 lmp_cuda -k on t 6 -sf kk -in in.lj # one MPI task, 6 threads on CPU -mpirun -np 4 -ppn 1 lmp_cuda -k on t 6 -sf kk -in in.lj # ditto on 4 nodes -</pre></div> -</div> -<div class="highlight-python"><div class="highlight"><pre>host=OMP, device=CUDA, node = dual 8-core CPUs and 2 GPUs: -mpirun -np 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # two MPI tasks, 8 threads per CPU -mpirun -np 32 -ppn 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # ditto on 16 nodes -</pre></div> -</div> <p>Note that the default for the <a class="reference internal" href="package.html"><em>package kokkos</em></a> command is to use “full” neighbor lists and set the Newton flag to “off” for both pairwise and bonded interactions. This typically gives fastest performance. If the <a class="reference internal" href="newton.html"><em>newton</em></a> command is used in the input script, it can override the Newton flag defaults.</p> <p>However, when running in MPI-only mode with 1 thread per MPI task, it will typically be faster to use “half” neighbor lists and set the Newton flag to “on”, just as is the case for non-accelerated pair styles. You can do this with the “-pk” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>.</p> <p><strong>Or run with the KOKKOS package by editing an input script:</strong></p> <p>The discussion above for the mpirun/mpiexec command and setting appropriate thread and GPU values for host=OMP or host=MIC or device=CUDA are the same.</p> <p>You must still use the “-k on” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a> to enable the KOKKOS package, and specify its additional arguments for hardware options appopriate to your system, as documented above.</p> <p>Use the <a class="reference internal" href="suffix.html"><em>suffix kk</em></a> command, or you can explicitly add a “kk” suffix to individual styles in your input script, e.g.</p> <div class="highlight-python"><div class="highlight"><pre>pair_style lj/cut/kk 2.5 </pre></div> </div> <p>You only need to use the <a class="reference internal" href="package.html"><em>package kokkos</em></a> command if you wish to change any of its option defaults, as set by the “-k on” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>.</p> <p><strong>Speed-ups to expect:</strong></p> <p>The performance of KOKKOS running in different modes is a function of your hardware, which KOKKOS-enable styles are used, and the problem size.</p> <p>Generally speaking, the following rules of thumb apply:</p> <ul class="simple"> <li>When running on CPUs only, with a single thread per MPI task, performance of a KOKKOS style is somewhere between the standard (un-accelerated) styles (MPI-only mode), and those provided by the USER-OMP package. However the difference between all 3 is small (less than 20%).</li> <li>When running on CPUs only, with multiple threads per MPI task, performance of a KOKKOS style is a bit slower than the USER-OMP package.</li> <li>When running on GPUs, KOKKOS is typically faster than the USER-CUDA and GPU packages.</li> <li>When running on Intel Xeon Phi, KOKKOS is not as fast as the USER-INTEL package, which is optimized for that hardware.</li> </ul> <p>See the <a class="reference external" href="http://lammps.sandia.gov/bench.html">Benchmark page</a> of the LAMMPS web site for performance of the KOKKOS package on different hardware.</p> <p><strong>Guidelines for best performance:</strong></p> <p>Here are guidline for using the KOKKOS package on the different hardware configurations listed above.</p> <p>Many of the guidelines use the <a class="reference internal" href="package.html"><em>package kokkos</em></a> command See its doc page for details and default settings. Experimenting with its options can provide a speed-up for specific calculations.</p> <p><strong>Running on a multi-core CPU:</strong></p> <p>If N is the number of physical cores/node, then the number of MPI tasks/node * number of threads/task should not exceed N, and should typically equal N. Note that the default threads/task is 1, as set by the “t” keyword of the “-k” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>. If you do not change this, no additional parallelism (beyond MPI) will be invoked on the host CPU(s).</p> <p>You can compare the performance running in different modes:</p> <ul class="simple"> <li>run with 1 MPI task/node and N threads/task</li> <li>run with N MPI tasks/node and 1 thread/task</li> <li>run with settings in between these extremes</li> </ul> <p>Examples of mpirun commands in these modes are shown above.</p> <p>When using KOKKOS to perform multi-threading, it is important for performance to bind both MPI tasks to physical cores, and threads to physical cores, so they do not migrate during a simulation.</p> <p>If you are not certain MPI tasks are being bound (check the defaults for your MPI installation), binding can be forced with these flags:</p> <div class="highlight-python"><div class="highlight"><pre>OpenMPI 1.8: mpirun -np 2 -bind-to socket -map-by socket ./lmp_openmpi ... Mvapich2 2.0: mpiexec -np 2 -bind-to socket -map-by socket ./lmp_mvapich ... </pre></div> </div> <p>For binding threads with the KOKKOS OMP option, use thread affinity environment variables to force binding. With OpenMP 3.1 (gcc 4.7 or later, intel 12 or later) setting the environment variable OMP_PROC_BIND=true should be sufficient. For binding threads with the KOKKOS pthreads option, compile LAMMPS the KOKKOS HWLOC=yes option, as discussed in <a class="reference internal" href="Section_start.html#start-3-4"><span>Section 2.3.4</span></a> of the manual.</p> <p><strong>Running on GPUs:</strong></p> <p>Insure the -arch setting in the machine makefile you are using, e.g. src/MAKE/Makefile.cuda, is correct for your GPU hardware/software (see <a class="reference internal" href="Section_start.html#start-3-4"><span>this section</span></a> of the manual for details).</p> <p>The -np setting of the mpirun command should set the number of MPI tasks/node to be equal to the # of physical GPUs on the node.</p> <p>Use the “-k” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a> to specify the number of GPUs per node, and the number of threads per MPI task. As above for multi-core CPUs (and no GPU), if N is the number of physical cores/node, then the number of MPI tasks/node * number of threads/task should not exceed N. With one GPU (and one MPI task) it may be faster to use less than all the available cores, by setting threads/task to a smaller value. This is because using all the cores on a dual-socket node will incur extra cost to copy memory from the 2nd socket to the GPU.</p> <p>Examples of mpirun commands that follow these rules are shown above.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">When using a GPU, you will achieve the best performance if your input script does not use any fix or compute styles which are not yet Kokkos-enabled. This allows data to stay on the GPU for multiple timesteps, without being copied back to the host CPU. Invoking a non-Kokkos fix or compute, or performing I/O for <a class="reference internal" href="thermo_style.html"><em>thermo</em></a> or <a class="reference internal" href="dump.html"><em>dump</em></a> output will cause data to be copied back to the CPU.</p> </div> <p>You cannot yet assign multiple MPI tasks to the same GPU with the KOKKOS package. We plan to support this in the future, similar to the GPU package in LAMMPS.</p> <p>You cannot yet use both the host (multi-threaded) and device (GPU) together to compute pairwise interactions with the KOKKOS package. We hope to support this in the future, similar to the GPU package in LAMMPS.</p> <p><strong>Running on an Intel Phi:</strong></p> <p>Kokkos only uses Intel Phi processors in their “native” mode, i.e. not hosted by a CPU.</p> <p>As illustrated above, build LAMMPS with OMP=yes (the default) and MIC=yes. The latter insures code is correctly compiled for the Intel Phi. The OMP setting means OpenMP will be used for parallelization on the Phi, which is currently the best option within Kokkos. In the future, other options may be added.</p> <p>Current-generation Intel Phi chips have either 61 or 57 cores. One core should be excluded for running the OS, leaving 60 or 56 cores. Each core is hyperthreaded, so there are effectively N = 240 (4*60) or N = 224 (4*56) cores to run on.</p> <p>The -np setting of the mpirun command sets the number of MPI tasks/node. The “-k on t Nt” command-line switch sets the number of threads/task as Nt. The product of these 2 values should be N, i.e. 240 or 224. Also, the number of threads/task should be a multiple of 4 so that logical threads from more than one MPI task do not run on the same physical core.</p> <p>Examples of mpirun commands that follow these rules are shown above.</p> <div class="section" id="restrictions"> <h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> <p>As noted above, if using GPUs, the number of MPI tasks per compute node should equal to the number of GPUs per compute node. In the future Kokkos will support assigning multiple MPI tasks to a single GPU.</p> <p>Currently Kokkos does not support AMD GPUs due to limits in the available backend programming models. Specifically, Kokkos requires extensive C++ support from the Kernel language. This is expected to change in the future.</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/accelerate_kokkos.txt b/doc/accelerate_kokkos.txt index dd9143bc6..4ca026f31 100644 --- a/doc/accelerate_kokkos.txt +++ b/doc/accelerate_kokkos.txt @@ -1,504 +1,516 @@ "Previous Section"_Section_packages.html - "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 "Return to Section accelerate overview"_Section_accelerate.html 5.3.4 KOKKOS package :h4 -The KOKKOS package was developed primaritly by Christian Trott -(Sandia) with contributions of various styles by others, including -Sikandar Mashayak (UIUC), Stan Moore (Sandia), and Ray Shan (Sandia). -The underlying Kokkos library was written -primarily by Carter Edwards, Christian Trott, and Dan Sunderland (all -Sandia). +The KOKKOS package was developed primarily by Christian Trott (Sandia) +with contributions of various styles by others, including Sikandar +Mashayak (UIUC), Stan Moore (Sandia), and Ray Shan (Sandia). The +underlying Kokkos library was written primarily by Carter Edwards, +Christian Trott, and Dan Sunderland (all Sandia). The KOKKOS package contains versions of pair, fix, and atom styles that use data structures and macros provided by the Kokkos library, which is included with LAMMPS in lib/kokkos. The Kokkos library is part of -"Trilinos"_http://trilinos.sandia.gov/packages/kokkos and can also -be downloaded from "Github"_https://github.com/kokkos/kokkos. Kokkos is a +"Trilinos"_http://trilinos.sandia.gov/packages/kokkos and can also be +downloaded from "Github"_https://github.com/kokkos/kokkos. Kokkos is a templated C++ library that provides two key abstractions for an application like LAMMPS. First, it allows a single implementation of an application kernel (e.g. a pair style) to run efficiently on different kinds of hardware, such as a GPU, Intel Phi, or many-core -chip. +CPU. The Kokkos library also provides data abstractions to adjust (at compile time) the memory layout of basic data structures like 2d and 3d arrays and allow the transparent utilization of special hardware load and store operations. Such data structures are used in LAMMPS to store atom coordinates or forces or neighbor lists. The layout is chosen to optimize performance on different platforms. Again this functionality is hidden from the developer, and does not affect how the kernel is coded. These abstractions are set at build time, when LAMMPS is compiled with -the KOKKOS package installed. This is done by selecting a "host" and -"device" to build for, compatible with the compute nodes in your -machine (one on a desktop machine or 1000s on a supercomputer). - -All Kokkos operations occur within the context of an individual MPI -task running on a single node of the machine. The total number of MPI -tasks used by LAMMPS (one or multiple per compute node) is set in the -usual manner via the mpirun or mpiexec commands, and is independent of -Kokkos. - -Kokkos provides support for two different modes of execution per MPI -task. This means that computational tasks (pairwise interactions, -neighbor list builds, time integration, etc) can be parallelized for -one or the other of the two modes. The first mode is called the -"host" and is one or more threads running on one or more physical CPUs -(within the node). Currently, both multi-core CPUs and an Intel Phi -processor (running in native mode, not offload mode like the -USER-INTEL package) are supported. The second mode is called the -"device" and is an accelerator chip of some kind. Currently only an -NVIDIA GPU is supported via Cuda. If your compute node does not have -a GPU, then there is only one mode of execution, i.e. the host and -device are the same. - -When using the KOKKOS package, you must choose at build time whether -you are building for OpenMP, GPU, or for using the Xeon Phi in native -mode. - -Here is a quick overview of how to use the KOKKOS package: +the KOKKOS package installed. All Kokkos operations occur within the +context of an individual MPI task running on a single node of the +machine. The total number of MPI tasks used by LAMMPS (one or +multiple per compute node) is set in the usual manner via the mpirun +or mpiexec commands, and is independent of Kokkos. + +Kokkos currently provides support for 3 modes of execution (per MPI +task). These are OpenMP (for many-core CPUs), Cuda (for NVIDIA GPUs), +and OpenMP (for Intel Phi). Note that the KOKKOS package supports +running on the Phi in native mode, not offload mode like the +USER-INTEL package supports. You choose the mode at build time to +produce an executable compatible with specific hardware. + +Here is a quick overview of how to use the KOKKOS package +for CPU acceleration, assuming one or more 16-core nodes. +More details follow. + +use a C++11 compatible compiler +make yes-kokkos +make mpi KOKKOS_DEVICES=OpenMP # build with the KOKKOS package +make kokkos_omp # or Makefile.kokkos_omp already has variable set +Make.py -v -p kokkos -kokkos omp -o mpi -a file mpi # or one-line build via Make.py + +mpirun -np 16 lmp_mpi -k on -sf kk -in in.lj # 1 node, 16 MPI tasks/node, no threads +mpirun -np 2 -ppn 1 lmp_mpi -k on t 16 -sf kk -in in.lj # 2 nodes, 1 MPI task/node, 16 threads/task +mpirun -np 2 lmp_mpi -k on t 8 -sf kk -in in.lj # 1 node, 2 MPI tasks/node, 8 threads/task +mpirun -np 32 -ppn 4 lmp_mpi -k on t 4 -sf kk -in in.lj # 8 nodes, 4 MPI tasks/node, 4 threads/task :pre + + + specify variables and settings in your Makefile.machine that enable OpenMP, GPU, or Phi support include the KOKKOS package and build LAMMPS enable the KOKKOS package and its hardware options via the "-k on" command-line switch use KOKKOS styles in your input script :ul -The latter two steps can be done using the "-k on", "-pk kokkos" and -"-sf kk" "command-line switches"_Section_start.html#start_7 -respectively. Or the effect of the "-pk" or "-sf" switches can be -duplicated by adding the "package kokkos"_package.html or "suffix -kk"_suffix.html commands respectively to your input script. +Here is a quick overview of how to use the KOKKOS package for GPUs, +assuming one or more nodes, each with 16 cores and a GPU. More +details follow. -[Required hardware/software:] +discuss use of NVCC, which Makefiles to examine + +use a C++11 compatible compiler +KOKKOS_DEVICES = Cuda, OpenMP +KOKKOS_ARCH = Kepler35 +make yes-kokkos +make machine +Make.py -p kokkos -kokkos cuda arch=31 -o kokkos_cuda -a file kokkos_cuda + +mpirun -np 1 lmp_cuda -k on t 6 -sf kk -in in.lj # one MPI task, 6 threads on CPU +mpirun -np 4 -ppn 1 lmp_cuda -k on t 6 -sf kk -in in.lj # ditto on 4 nodes :pre + +mpirun -np 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # two MPI tasks, 8 threads per CPU +mpirun -np 32 -ppn 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # ditto on 16 nodes :pre + +Here is a quick overview of how to use the KOKKOS package +for the Intel Phi: + +use a C++11 compatible compiler +KOKKOS_DEVICES = OpenMP +KOKKOS_ARCH = KNC +make yes-kokkos +make machine +Make.py -p kokkos -kokkos phi -o kokkos_phi -a file mpi :pre + +host=MIC, Intel Phi with 61 cores (240 threads/phi via 4x hardware threading): +mpirun -np 1 lmp_g++ -k on t 240 -sf kk -in in.lj # 1 MPI task on 1 Phi, 1*240 = 240 +mpirun -np 30 lmp_g++ -k on t 8 -sf kk -in in.lj # 30 MPI tasks on 1 Phi, 30*8 = 240 +mpirun -np 12 lmp_g++ -k on t 20 -sf kk -in in.lj # 12 MPI tasks on 1 Phi, 12*20 = 240 +mpirun -np 96 -ppn 12 lmp_g++ -k on t 20 -sf kk -in in.lj # ditto on 8 Phis -The KOKKOS package can be used to build and run LAMMPS on the -following kinds of hardware: -CPU-only: one MPI task per CPU core (MPI-only, but using KOKKOS styles) -CPU-only: one or a few MPI tasks per node with additional threading via OpenMP -Phi: on one or more Intel Phi coprocessors (per node) -GPU: on the GPUs of a node with additional OpenMP threading on the CPUs :ul +[Required hardware/software:] Kokkos support within LAMMPS must be built with a C++11 compatible compiler. If using gcc, version 4.8.1 or later is required. -Note that Intel Xeon Phi coprocessors are supported in "native" mode, -not "offload" mode like the USER-INTEL package supports. +To build with Kokkos support for CPUs, your compiler must support the +OpenMP interface. You should have one or more multi-core CPUs so that +multiple threads can be launched by each MPI task running on a CPU. -Only NVIDIA GPUs are currently supported. +To build with Kokkos support for NVIDIA GPUs, NVIDIA Cuda software +version 6.5 or later must be installed on your system. See the +discussion for the "USER-CUDA"_accelerate_cuda.html and +"GPU"_accelerate_gpu.html packages for details of how to check and do +this. IMPORTANT NOTE: For good performance of the KOKKOS package on GPUs, you must have Kepler generation GPUs (or later). The Kokkos library exploits texture cache options not supported by Telsa generation GPUs (or older). -To build the KOKKOS package for GPUs, NVIDIA Cuda software version 6.5 or later must be -installed on your system. See the discussion above for the USER-CUDA -and GPU packages for details of how to check and do this. +To build with Kokkos support for Intel Xeon Phi coprocessors, your +sysmte must be configured to use them in "native" mode, not "offload" +mode like the USER-INTEL package supports. [Building LAMMPS with the KOKKOS package:] -You must choose at build time whether to build for OpenMP, Cuda, or -Phi. +You must choose at build time whether to build for CPUs (OpenMP), +GPUs, or Phi. You can do any of these in one line, using the src/Make.py script, described in "Section 2.4"_Section_start.html#start_4 of the manual. Type "Make.py -h" for help. If run from the src directory, these commands will create src/lmp_kokkos_omp, lmp_kokkos_cuda, and lmp_kokkos_phi. Note that the OMP and PHI options use src/MAKE/Makefile.mpi as the starting Makefile.machine. The CUDA option uses src/MAKE/OPTIONS/Makefile.kokkos_cuda. -Make.py -p kokkos -kokkos omp -o kokkos_omp -a file mpi -Make.py -p kokkos -kokkos cuda arch=31 -o kokkos_cuda -a file kokkos_cuda -Make.py -p kokkos -kokkos phi -o kokkos_phi -a file mpi :pre +The latter two steps can be done using the "-k on", "-pk kokkos" and +"-sf kk" "command-line switches"_Section_start.html#start_7 +respectively. Or the effect of the "-pk" or "-sf" switches can be +duplicated by adding the "package kokkos"_package.html or "suffix +kk"_suffix.html commands respectively to your input script. + Or you can follow these steps: CPU-only (run all-MPI or with OpenMP threading): cd lammps/src make yes-kokkos make g++ KOKKOS_DEVICES=OpenMP :pre Intel Xeon Phi: cd lammps/src make yes-kokkos make g++ KOKKOS_DEVICES=OpenMP KOKKOS_ARCH=KNC :pre CPUs and GPUs: cd lammps/src make yes-kokkos make cuda KOKKOS_DEVICES=Cuda :pre These examples set the KOKKOS-specific OMP, MIC, CUDA variables on the make command line which requires a GNU-compatible make command. Try "gmake" if your system's standard make complains. IMPORTANT NOTE: If you build using make line variables and re-build LAMMPS twice with different KOKKOS options and the *same* target, e.g. g++ in the first two examples above, then you *must* perform a "make clean-all" or "make clean-machine" before each build. This is to force all the KOKKOS-dependent files to be re-compiled with the new options. You can also hardwire these make variables in the specified machine makefile, e.g. src/MAKE/Makefile.g++ in the first two examples above, with a line like: KOKKOS_ARCH = KNC :pre Note that if you build LAMMPS multiple times in this manner, using different KOKKOS options (defined in different machine makefiles), you do not have to worry about doing a "clean" in between. This is because the targets will be different. IMPORTANT NOTE: The 3rd example above for a GPU, uses a different machine makefile, in this case src/MAKE/Makefile.cuda, which is included in the LAMMPS distribution. To build the KOKKOS package for a GPU, this makefile must use the NVIDA "nvcc" compiler. And it must have a KOKKOS_ARCH setting that is appropriate for your NVIDIA hardware and installed software. Typical values for KOKKOS_ARCH are given below, as well as other settings that must be included in the machine makefile, if you create your own. IMPORTANT NOTE: Currently, there are no precision options with the KOKKOS package. All compilation and computation is performed in double precision. There are other allowed options when building with the KOKKOS package. As above, they can be set either as variables on the make command line or in Makefile.machine. This is the full list of options, including those discussed above, Each takes a value shown below. The default value is listed, which is set in the lib/kokkos/Makefile.kokkos file. #Default settings specific options #Options: force_uvm,use_ldg,rdc KOKKOS_DEVICES, values = {OpenMP}, {Serial}, {Pthreads}, {Cuda}, default = {OpenMP} KOKKOS_ARCH, values = {KNC}, {SNB}, {HSW}, {Kepler}, {Kepler30}, {Kepler32}, {Kepler35}, {Kepler37}, {Maxwell}, {Maxwell50}, {Maxwell52}, {Maxwell53}, {ARMv8}, {BGQ}, {Power7}, {Power8}, default = {none} KOKKOS_DEBUG, values = {yes}, {no}, default = {no} KOKKOS_USE_TPLS, values = {hwloc}, {librt}, default = {none} KOKKOS_CUDA_OPTIONS, values = {force_uvm}, {use_ldg}, {rdc} :ul KOKKOS_DEVICE sets the parallelization method used for Kokkos code (within LAMMPS). KOKKOS_DEVICES=OpenMP means that OpenMP will be used. KOKKOS_DEVICES=Pthreads means that pthreads will be used. KOKKOS_DEVICES=Cuda means an NVIDIA GPU running CUDA will be used. If KOKKOS_DEVICES=Cuda, then the lo-level Makefile in the src/MAKE directory must use "nvcc" as its compiler, via its CC setting. For best performance its CCFLAGS setting should use -O3 and have a KOKKOS_ARCH setting that matches the compute capability of your NVIDIA hardware and software installation, e.g. KOKKOS_ARCH=Kepler30. Note the minimal required compute capability is 2.0, but this will give signicantly reduced performance compared to Kepler generation GPUs with compute capability 3.x. For the LINK setting, "nvcc" should not be used; instead use g++ or another compiler suitable for linking C++ applications. Often you will want to use your MPI compiler wrapper for this setting (i.e. mpicxx). Finally, the lo-level Makefile must also have a "Compilation rule" for creating *.o files from *.cu files. See src/Makefile.cuda for an example of a lo-level Makefile with all of these settings. KOKKOS_USE_TPLS=hwloc binds threads to hardware cores, so they do not migrate during a simulation. KOKKOS_USE_TPLS=hwloc should always be used if running with KOKKOS_DEVICES=Pthreads for pthreads. It is not necessary for KOKKOS_DEVICES=OpenMP for OpenMP, because OpenMP provides alternative methods via environment variables for binding threads to hardware cores. More info on binding threads to cores is given in "this section"_Section_accelerate.html#acc_8. KOKKOS_ARCH=KNC enables compiler switches needed when compling for an Intel Phi processor. KOKKOS_USE_TPLS=librt enables use of a more accurate timer mechanism on most Unix platforms. This library is not available on all platforms. KOKKOS_DEBUG is only useful when developing a Kokkos-enabled style within LAMMPS. KOKKOS_DEBUG=yes enables printing of run-time debugging information that can be useful. It also enables runtime bounds checking on Kokkos data structures. KOKKOS_CUDA_OPTIONS are additional options for CUDA. For more information on Kokkos see the Kokkos programmers' guide here: /lib/kokkos/doc/Kokkos_PG.pdf. [Run with the KOKKOS package from the command line:] The mpirun or mpiexec command sets the total number of MPI tasks used by LAMMPS (one or multiple per compute node) and the number of MPI tasks used per node. E.g. the mpirun command in MPICH does this via its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. When using KOKKOS built with host=OMP, you need to choose how many OpenMP threads per MPI task will be used (via the "-k" command-line switch discussed below). Note that the product of MPI tasks * OpenMP threads/task should not exceed the physical number of cores (on a node), otherwise performance will suffer. When using the KOKKOS package built with device=CUDA, you must use exactly one MPI task per physical GPU. When using the KOKKOS package built with host=MIC for Intel Xeon Phi coprocessor support you need to insure there are one or more MPI tasks per coprocessor, and choose the number of coprocessor threads to use per MPI task (via the "-k" command-line switch discussed below). The product of MPI tasks * coprocessor threads/task should not exceed the maximum number of threads the coproprocessor is designed to run, otherwise performance will suffer. This value is 240 for current generation Xeon Phi(TM) chips, which is 60 physical cores * 4 threads/core. Note that with the KOKKOS package you do not need to specify how many Phi coprocessors there are per node; each coprocessors is simply treated as running some number of MPI tasks. You must use the "-k on" "command-line switch"_Section_start.html#start_7 to enable the KOKKOS package. It takes additional arguments for hardware settings appropriate to your system. Those arguments are "documented here"_Section_start.html#start_7. The two most commonly used options are: -k on t Nt g Ng :pre The "t Nt" option applies to host=OMP (even if device=CUDA) and host=MIC. For host=OMP, it specifies how many OpenMP threads per MPI task to use with a node. For host=MIC, it specifies how many Xeon Phi threads per MPI task to use within a node. The default is Nt = 1. Note that for host=OMP this is effectively MPI-only mode which may be fine. But for host=MIC you will typically end up using far less than all the 240 available threads, which could give very poor performance. The "g Ng" option applies to device=CUDA. It specifies how many GPUs per compute node to use. The default is 1, so this only needs to be specified is you have 2 or more GPUs per compute node. The "-k on" switch also issues a "package kokkos" command (with no additional arguments) which sets various KOKKOS options to default values, as discussed on the "package"_package.html command doc page. Use the "-sf kk" "command-line switch"_Section_start.html#start_7, which will automatically append "kk" to styles that support it. Use the "-pk kokkos" "command-line switch"_Section_start.html#start_7 if you wish to change any of the default "package kokkos"_package.html optionns set by the "-k on" "command-line switch"_Section_start.html#start_7. -host=OMP, dual hex-core nodes (12 threads/node): -mpirun -np 12 lmp_g++ -in in.lj # MPI-only mode with no Kokkos -mpirun -np 12 lmp_g++ -k on -sf kk -in in.lj # MPI-only mode with Kokkos -mpirun -np 1 lmp_g++ -k on t 12 -sf kk -in in.lj # one MPI task, 12 threads -mpirun -np 2 lmp_g++ -k on t 6 -sf kk -in in.lj # two MPI tasks, 6 threads/task -mpirun -np 32 -ppn 2 lmp_g++ -k on t 6 -sf kk -in in.lj # ditto on 16 nodes :pre - -host=MIC, Intel Phi with 61 cores (240 threads/phi via 4x hardware threading): -mpirun -np 1 lmp_g++ -k on t 240 -sf kk -in in.lj # 1 MPI task on 1 Phi, 1*240 = 240 -mpirun -np 30 lmp_g++ -k on t 8 -sf kk -in in.lj # 30 MPI tasks on 1 Phi, 30*8 = 240 -mpirun -np 12 lmp_g++ -k on t 20 -sf kk -in in.lj # 12 MPI tasks on 1 Phi, 12*20 = 240 -mpirun -np 96 -ppn 12 lmp_g++ -k on t 20 -sf kk -in in.lj # ditto on 8 Phis - -host=OMP, device=CUDA, node = dual hex-core CPUs and a single GPU: -mpirun -np 1 lmp_cuda -k on t 6 -sf kk -in in.lj # one MPI task, 6 threads on CPU -mpirun -np 4 -ppn 1 lmp_cuda -k on t 6 -sf kk -in in.lj # ditto on 4 nodes :pre -host=OMP, device=CUDA, node = dual 8-core CPUs and 2 GPUs: -mpirun -np 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # two MPI tasks, 8 threads per CPU -mpirun -np 32 -ppn 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # ditto on 16 nodes :pre Note that the default for the "package kokkos"_package.html command is to use "full" neighbor lists and set the Newton flag to "off" for both pairwise and bonded interactions. This typically gives fastest performance. If the "newton"_newton.html command is used in the input script, it can override the Newton flag defaults. However, when running in MPI-only mode with 1 thread per MPI task, it will typically be faster to use "half" neighbor lists and set the Newton flag to "on", just as is the case for non-accelerated pair styles. You can do this with the "-pk" "command-line switch"_Section_start.html#start_7. [Or run with the KOKKOS package by editing an input script:] The discussion above for the mpirun/mpiexec command and setting appropriate thread and GPU values for host=OMP or host=MIC or device=CUDA are the same. You must still use the "-k on" "command-line switch"_Section_start.html#start_7 to enable the KOKKOS package, and specify its additional arguments for hardware options appopriate to your system, as documented above. Use the "suffix kk"_suffix.html command, or you can explicitly add a "kk" suffix to individual styles in your input script, e.g. pair_style lj/cut/kk 2.5 :pre You only need to use the "package kokkos"_package.html command if you wish to change any of its option defaults, as set by the "-k on" "command-line switch"_Section_start.html#start_7. [Speed-ups to expect:] The performance of KOKKOS running in different modes is a function of your hardware, which KOKKOS-enable styles are used, and the problem size. Generally speaking, the following rules of thumb apply: When running on CPUs only, with a single thread per MPI task, performance of a KOKKOS style is somewhere between the standard (un-accelerated) styles (MPI-only mode), and those provided by the USER-OMP package. However the difference between all 3 is small (less than 20%). :ulb,l When running on CPUs only, with multiple threads per MPI task, performance of a KOKKOS style is a bit slower than the USER-OMP package. :l When running on GPUs, KOKKOS is typically faster than the USER-CUDA and GPU packages. :l When running on Intel Xeon Phi, KOKKOS is not as fast as the USER-INTEL package, which is optimized for that hardware. :l,ule See the "Benchmark page"_http://lammps.sandia.gov/bench.html of the LAMMPS web site for performance of the KOKKOS package on different hardware. [Guidelines for best performance:] Here are guidline for using the KOKKOS package on the different hardware configurations listed above. Many of the guidelines use the "package kokkos"_package.html command See its doc page for details and default settings. Experimenting with its options can provide a speed-up for specific calculations. [Running on a multi-core CPU:] If N is the number of physical cores/node, then the number of MPI tasks/node * number of threads/task should not exceed N, and should typically equal N. Note that the default threads/task is 1, as set by the "t" keyword of the "-k" "command-line switch"_Section_start.html#start_7. If you do not change this, no additional parallelism (beyond MPI) will be invoked on the host CPU(s). You can compare the performance running in different modes: run with 1 MPI task/node and N threads/task run with N MPI tasks/node and 1 thread/task run with settings in between these extremes :ul Examples of mpirun commands in these modes are shown above. When using KOKKOS to perform multi-threading, it is important for performance to bind both MPI tasks to physical cores, and threads to physical cores, so they do not migrate during a simulation. If you are not certain MPI tasks are being bound (check the defaults for your MPI installation), binding can be forced with these flags: OpenMPI 1.8: mpirun -np 2 -bind-to socket -map-by socket ./lmp_openmpi ... Mvapich2 2.0: mpiexec -np 2 -bind-to socket -map-by socket ./lmp_mvapich ... :pre For binding threads with the KOKKOS OMP option, use thread affinity environment variables to force binding. With OpenMP 3.1 (gcc 4.7 or later, intel 12 or later) setting the environment variable OMP_PROC_BIND=true should be sufficient. For binding threads with the KOKKOS pthreads option, compile LAMMPS the KOKKOS HWLOC=yes option, as discussed in "Section 2.3.4"_Sections_start.html#start_3_4 of the manual. [Running on GPUs:] Insure the -arch setting in the machine makefile you are using, e.g. src/MAKE/Makefile.cuda, is correct for your GPU hardware/software (see "this section"_Section_start.html#start_3_4 of the manual for details). The -np setting of the mpirun command should set the number of MPI tasks/node to be equal to the # of physical GPUs on the node. Use the "-k" "command-line switch"_Section_commands.html#start_7 to specify the number of GPUs per node, and the number of threads per MPI task. As above for multi-core CPUs (and no GPU), if N is the number of physical cores/node, then the number of MPI tasks/node * number of threads/task should not exceed N. With one GPU (and one MPI task) it may be faster to use less than all the available cores, by setting threads/task to a smaller value. This is because using all the cores on a dual-socket node will incur extra cost to copy memory from the 2nd socket to the GPU. Examples of mpirun commands that follow these rules are shown above. IMPORTANT NOTE: When using a GPU, you will achieve the best performance if your input script does not use any fix or compute styles which are not yet Kokkos-enabled. This allows data to stay on the GPU for multiple timesteps, without being copied back to the host CPU. Invoking a non-Kokkos fix or compute, or performing I/O for "thermo"_thermo_style.html or "dump"_dump.html output will cause data to be copied back to the CPU. You cannot yet assign multiple MPI tasks to the same GPU with the KOKKOS package. We plan to support this in the future, similar to the GPU package in LAMMPS. You cannot yet use both the host (multi-threaded) and device (GPU) together to compute pairwise interactions with the KOKKOS package. We hope to support this in the future, similar to the GPU package in LAMMPS. [Running on an Intel Phi:] Kokkos only uses Intel Phi processors in their "native" mode, i.e. not hosted by a CPU. As illustrated above, build LAMMPS with OMP=yes (the default) and MIC=yes. The latter insures code is correctly compiled for the Intel Phi. The OMP setting means OpenMP will be used for parallelization on the Phi, which is currently the best option within Kokkos. In the future, other options may be added. Current-generation Intel Phi chips have either 61 or 57 cores. One core should be excluded for running the OS, leaving 60 or 56 cores. Each core is hyperthreaded, so there are effectively N = 240 (4*60) or N = 224 (4*56) cores to run on. The -np setting of the mpirun command sets the number of MPI tasks/node. The "-k on t Nt" command-line switch sets the number of threads/task as Nt. The product of these 2 values should be N, i.e. 240 or 224. Also, the number of threads/task should be a multiple of 4 so that logical threads from more than one MPI task do not run on the same physical core. Examples of mpirun commands that follow these rules are shown above. [Restrictions:] As noted above, if using GPUs, the number of MPI tasks per compute node should equal to the number of GPUs per compute node. In the future Kokkos will support assigning multiple MPI tasks to a single GPU. Currently Kokkos does not support AMD GPUs due to limits in the available backend programming models. Specifically, Kokkos requires extensive C++ support from the Kernel language. This is expected to change in the future. diff --git a/doc/accelerate_omp.html b/doc/accelerate_omp.html index 2a78e2f1f..605d44402 100644 --- a/doc/accelerate_omp.html +++ b/doc/accelerate_omp.html @@ -1,355 +1,338 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>5.USER-OMP package — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>5.USER-OMP package</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <p><a class="reference internal" href="Section_accelerate.html"><em>Return to Section accelerate overview</em></a></p> <div class="section" id="user-omp-package"> <h1>5.USER-OMP package<a class="headerlink" href="#user-omp-package" title="Permalink to this headline">¶</a></h1> <p>The USER-OMP package was developed by Axel Kohlmeyer at Temple University. It provides multi-threaded versions of most pair styles, nearly all bonded styles (bond, angle, dihedral, improper), several -Kspace styles, and a few fix styles. The package currently -uses the OpenMP interface for multi-threading.</p> -<p>Here is a quick overview of how to use the USER-OMP package:</p> -<ul class="simple"> -<li>use the -fopenmp flag for compiling and linking in your Makefile.machine</li> -<li>include the USER-OMP package and build LAMMPS</li> -<li>use the mpirun command to set the number of MPI tasks/node</li> -<li>specify how many threads per MPI task to use</li> -<li>use USER-OMP styles in your input script</li> -</ul> -<p>The latter two steps can be done using the “-pk omp” and “-sf omp” -<a class="reference internal" href="Section_start.html#start-7"><span>command-line switches</span></a> respectively. Or -the effect of the “-pk” or “-sf” switches can be duplicated by adding -the <a class="reference internal" href="package.html"><em>package omp</em></a> or <a class="reference internal" href="suffix.html"><em>suffix omp</em></a> commands -respectively to your input script.</p> -<p><strong>Required hardware/software:</strong></p> -<p>Your compiler must support the OpenMP interface. You should have one -or more multi-core CPUs so that multiple threads can be launched by an -MPI task running on a CPU.</p> -<p><strong>Building LAMMPS with the USER-OMP package:</strong></p> -<p>To do this in one line, use the src/Make.py script, described in -<a class="reference internal" href="Section_start.html#start-4"><span>Section 2.4</span></a> of the manual. Type “Make.py --h” for help. If run from the src directory, this command will create -src/lmp_omp using src/MAKE/Makefile.mpi as the starting -Makefile.machine:</p> -<div class="highlight-python"><div class="highlight"><pre>Make.py -p omp -o omp -a file mpi +Kspace styles, and a few fix styles. The package currently uses the +OpenMP interface for multi-threading.</p> +<p>Here is a quick overview of how to use the USER-OMP package, assuming +one or more 16-core nodes. More details follow.</p> +<div class="highlight-python"><div class="highlight"><pre>use -fopenmp with CCFLAGS and LINKFLAGS in Makefile.machine +make yes-user-omp +make mpi # build with USER-OMP package, if settings added to Makefile.mpi +make omp # or Makefile.omp already has settings +Make.py -v -p omp -o mpi -a file mpi # or one-line build via Make.py </pre></div> </div> -<p>Or you can follow these steps:</p> -<div class="highlight-python"><div class="highlight"><pre>cd lammps/src -make yes-user-omp -make machine +<div class="highlight-python"><div class="highlight"><pre>lmp_mpi -sf omp -pk omp 16 < in.script # 1 MPI task, 16 threads +mpirun -np 4 lmp_mpi -sf omp -pk omp 4 -in in.script # 4 MPI tasks, 4 threads/task +mpirun -np 32 -ppn 4 lmp_mpi -sf omp -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task </pre></div> </div> -<p>The CCFLAGS setting in Makefile.machine needs “-fopenmp” to add OpenMP -support. This works for both the GNU and Intel compilers. Without -this flag the USER-OMP styles will still be compiled and work, but -will not support multi-threading. For the Intel compilers the CCFLAGS -setting also needs to include “-restrict”.</p> +<p><strong>Required hardware/software:</strong></p> +<p>Your compiler must support the OpenMP interface. You should have one +or more multi-core CPUs so that multiple threads can be launched by +each MPI task running on a CPU.</p> +<p><strong>Building LAMMPS with the USER-OMP package:</strong></p> +<p>The lines above illustrate how to include/build with the USER-OMP +package in two steps, using the “make” command. Or how to do it with +one command via the src/Make.py script, described in <a class="reference internal" href="Section_start.html#start-4"><span>Section 2.4</span></a> of the manual. Type “Make.py -h” for +help.</p> +<p>Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must +include “-fopenmp”. Likewise, if you use an Intel compiler, the +CCFLAGS setting must include “-restrict”. The Make.py command will +add these automatically.</p> <p><strong>Run with the USER-OMP package from the command line:</strong></p> <p>The mpirun or mpiexec command sets the total number of MPI tasks used by LAMMPS (one or multiple per compute node) and the number of MPI tasks used per node. E.g. the mpirun command in MPICH does this via its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode.</p> -<p>You need to choose how many threads per MPI task will be used by the -USER-OMP package. Note that the product of MPI tasks * threads/task -should not exceed the physical number of cores (on a node), otherwise -performance will suffer.</p> -<p>Use the “-sf omp” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>, -which will automatically append “omp” to styles that support it. Use -the “-pk omp Nt” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>, to -set Nt = # of OpenMP threads per MPI task to use.</p> -<div class="highlight-python"><div class="highlight"><pre>lmp_machine -sf omp -pk omp 16 -in in.script # 1 MPI task on a 16-core node -mpirun -np 4 lmp_machine -sf omp -pk omp 4 -in in.script # 4 MPI tasks each with 4 threads on a single 16-core node -mpirun -np 32 -ppn 4 lmp_machine -sf omp -pk omp 4 -in in.script # ditto on 8 16-core nodes -</pre></div> -</div> -<p>Note that if the “-sf omp” switch is used, it also issues a default -<a class="reference internal" href="package.html"><em>package omp 0</em></a> command, which sets the number of threads -per MPI task via the OMP_NUM_THREADS environment variable.</p> -<p>Using the “-pk” switch explicitly allows for direct setting of the -number of threads and additional options. Its syntax is the same as -the “package omp” command. See the <a class="reference internal" href="package.html"><em>package</em></a> command doc -page for details, including the default values used for all its -options if it is not specified, and how to set the number of threads -via the OMP_NUM_THREADS environment variable if desired.</p> +<p>You need to choose how many OpenMP threads per MPI task will be used +by the USER-OMP package. Note that the product of MPI tasks * +threads/task should not exceed the physical number of cores (on a +node), otherwise performance will suffer.</p> +<p>As in the lines above, use the “-sf omp” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>, which will automatically append +“omp” to styles that support it. The “-sf omp” switch also issues a +default <a class="reference internal" href="package.html"><em>package omp 0</em></a> command, which will set the +number of threads per MPI task via the OMP_NUM_THREADS environment +variable.</p> +<p>You can also use the “-pk omp Nt” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>, to explicitly set Nt = # of OpenMP +threads per MPI task to use, as well as additional options. Its +syntax is the same as the <a class="reference internal" href="package.html"><em>package omp</em></a> command whose doc +page gives details, including the default values used if it is not +specified. It also gives more details on how to set the number of +threads via the OMP_NUM_THREADS environment variable.</p> <p><strong>Or run with the USER-OMP package by editing an input script:</strong></p> <p>The discussion above for the mpirun/mpiexec command, MPI tasks/node, and threads/MPI task is the same.</p> <p>Use the <a class="reference internal" href="suffix.html"><em>suffix omp</em></a> command, or you can explicitly add an “omp” suffix to individual styles in your input script, e.g.</p> <div class="highlight-python"><div class="highlight"><pre>pair_style lj/cut/omp 2.5 </pre></div> </div> <p>You must also use the <a class="reference internal" href="package.html"><em>package omp</em></a> command to enable the -USER-OMP package, unless the “-sf omp” or “-pk omp” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switches</span></a> were used. It specifies how many -threads per MPI task to use, as well as other options. Its doc page -explains how to set the number of threads via an environment variable -if desired.</p> +USER-OMP package. When you do this you also specify how many threads +per MPI task to use. The command doc page explains other options and +how to set the number of threads via the OMP_NUM_THREADS environment +variable.</p> <p><strong>Speed-ups to expect:</strong></p> <p>Depending on which styles are accelerated, you should look for a reduction in the “Pair time”, “Bond time”, “KSpace time”, and “Loop time” values printed at the end of a run.</p> <p>You may see a small performance advantage (5 to 20%) when running a USER-OMP style (in serial or parallel) with a single thread per MPI -task, versus running standard LAMMPS with its standard -(un-accelerated) styles (in serial or all-MPI parallelization with 1 -task/core). This is because many of the USER-OMP styles contain -similar optimizations to those used in the OPT package, as described -above.</p> -<p>With multiple threads/task, the optimal choice of MPI tasks/node and -OpenMP threads/task can vary a lot and should always be tested via -benchmark runs for a specific simulation running on a specific -machine, paying attention to guidelines discussed in the next +task, versus running standard LAMMPS with its standard un-accelerated +styles (in serial or all-MPI parallelization with 1 task/core). This +is because many of the USER-OMP styles contain similar optimizations +to those used in the OPT package, described in <a class="reference internal" href="accelerate_opt.html"><em>Section accelerate 5.3.6</em></a>.</p> +<p>With multiple threads/task, the optimal choice of number of MPI +tasks/node and OpenMP threads/task can vary a lot and should always be +tested via benchmark runs for a specific simulation running on a +specific machine, paying attention to guidelines discussed in the next sub-section.</p> <p>A description of the multi-threading strategy used in the USER-OMP package and some performance examples are <a class="reference external" href="http://sites.google.com/site/akohlmey/software/lammps-icms/lammps-icms-tms2011-talk.pdf?attredirects=0&d=1">presented here</a></p> <p><strong>Guidelines for best performance:</strong></p> <p>For many problems on current generation CPUs, running the USER-OMP package with a single thread/task is faster than running with multiple threads/task. This is because the MPI parallelization in LAMMPS is often more efficient than multi-threading as implemented in the USER-OMP package. The parallel efficiency (in a threaded sense) also varies for different USER-OMP styles.</p> <p>Using multiple threads/task can be more effective under the following circumstances:</p> <ul class="simple"> <li>Individual compute nodes have a significant number of CPU cores but the CPU itself has limited memory bandwidth, e.g. for Intel Xeon 53xx -(Clovertown) and 54xx (Harpertown) quad core processors. Running one +(Clovertown) and 54xx (Harpertown) quad-core processors. Running one MPI task per CPU core will result in significant performance degradation, so that running with 4 or even only 2 MPI tasks per node is faster. Running in hybrid MPI+OpenMP mode will reduce the inter-node communication bandwidth contention in the same way, but offers an additional speedup by utilizing the otherwise idle CPU cores.</li> <li>The interconnect used for MPI communication does not provide sufficient bandwidth for a large number of MPI tasks per node. For example, this applies to running over gigabit ethernet or on Cray XT4 or XT5 series supercomputers. As in the aforementioned case, this effect worsens when using an increasing number of nodes.</li> <li>The system has a spatially inhomogeneous particle density which does not map well to the <a class="reference internal" href="processors.html"><em>domain decomposition scheme</em></a> or <a class="reference internal" href="balance.html"><em>load-balancing</em></a> options that LAMMPS provides. This is because multi-threading achives parallelism over the number of particles, not via their distribution in space.</li> <li>A machine is being used in “capability mode”, i.e. near the point where MPI parallelism is maxed out. For example, this can happen when using the <a class="reference internal" href="kspace_style.html"><em>PPPM solver</em></a> for long-range electrostatics on large numbers of nodes. The scaling of the KSpace calculation (see the <a class="reference internal" href="kspace_style.html"><em>kspace_style</em></a> command) becomes the performance-limiting factor. Using multi-threading allows less MPI tasks to be invoked and can speed-up the long-range solver, while increasing overall performance by parallelizing the pairwise and bonded calculations via OpenMP. Likewise additional speedup can be sometimes be achived by increasing the length of the Coulombic cutoff and thus reducing the work done by the long-range solver. Using the <a class="reference internal" href="run_style.html"><em>run_style verlet/split</em></a> command, which is compatible with the USER-OMP package, is an alternative way to reduce the number of MPI tasks assigned to the KSpace calculation.</li> </ul> <p>Additional performance tips are as follows:</p> <ul class="simple"> <li>The best parallel efficiency from <em>omp</em> styles is typically achieved -when there is at least one MPI task per physical processor, -i.e. socket or die.</li> +when there is at least one MPI task per physical CPU chip, i.e. socket +or die.</li> <li>It is usually most efficient to restrict threading to a single socket, i.e. use one or more MPI task per socket.</li> -<li>Several current MPI implementation by default use a processor affinity -setting that restricts each MPI task to a single CPU core. Using -multi-threading in this mode will force the threads to share that core -and thus is likely to be counterproductive. Instead, binding MPI -tasks to a (multi-core) socket, should solve this issue.</li> +<li>IMPORTANT NOTE: By default, several current MPI implementations use a +processor affinity setting that restricts each MPI task to a single +CPU core. Using multi-threading in this mode will force all threads +to share the one core and thus is likely to be counterproductive. +Instead, binding MPI tasks to a (multi-core) socket, should solve this +issue.</li> </ul> <div class="section" id="restrictions"> <h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> <p>None.</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/accelerate_omp.txt b/doc/accelerate_omp.txt index 9d461f519..7a5bef9d9 100644 --- a/doc/accelerate_omp.txt +++ b/doc/accelerate_omp.txt @@ -1,201 +1,186 @@ "Previous Section"_Section_packages.html - "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 "Return to Section accelerate overview"_Section_accelerate.html 5.3.5 USER-OMP package :h4 The USER-OMP package was developed by Axel Kohlmeyer at Temple University. It provides multi-threaded versions of most pair styles, nearly all bonded styles (bond, angle, dihedral, improper), several -Kspace styles, and a few fix styles. The package currently -uses the OpenMP interface for multi-threading. +Kspace styles, and a few fix styles. The package currently uses the +OpenMP interface for multi-threading. -Here is a quick overview of how to use the USER-OMP package: +Here is a quick overview of how to use the USER-OMP package, assuming +one or more 16-core nodes. More details follow. -use the -fopenmp flag for compiling and linking in your Makefile.machine -include the USER-OMP package and build LAMMPS -use the mpirun command to set the number of MPI tasks/node -specify how many threads per MPI task to use -use USER-OMP styles in your input script :ul +use -fopenmp with CCFLAGS and LINKFLAGS in Makefile.machine +make yes-user-omp +make mpi # build with USER-OMP package, if settings added to Makefile.mpi +make omp # or Makefile.omp already has settings +Make.py -v -p omp -o mpi -a file mpi # or one-line build via Make.py :pre -The latter two steps can be done using the "-pk omp" and "-sf omp" -"command-line switches"_Section_start.html#start_7 respectively. Or -the effect of the "-pk" or "-sf" switches can be duplicated by adding -the "package omp"_package.html or "suffix omp"_suffix.html commands -respectively to your input script. +lmp_mpi -sf omp -pk omp 16 < in.script # 1 MPI task, 16 threads +mpirun -np 4 lmp_mpi -sf omp -pk omp 4 -in in.script # 4 MPI tasks, 4 threads/task +mpirun -np 32 -ppn 4 lmp_mpi -sf omp -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task :pre [Required hardware/software:] Your compiler must support the OpenMP interface. You should have one -or more multi-core CPUs so that multiple threads can be launched by an -MPI task running on a CPU. +or more multi-core CPUs so that multiple threads can be launched by +each MPI task running on a CPU. [Building LAMMPS with the USER-OMP package:] -To do this in one line, use the src/Make.py script, described in -"Section 2.4"_Section_start.html#start_4 of the manual. Type "Make.py --h" for help. If run from the src directory, this command will create -src/lmp_omp using src/MAKE/Makefile.mpi as the starting -Makefile.machine: - -Make.py -p omp -o omp -a file mpi :pre - -Or you can follow these steps: - -cd lammps/src -make yes-user-omp -make machine :pre +The lines above illustrate how to include/build with the USER-OMP +package in two steps, using the "make" command. Or how to do it with +one command via the src/Make.py script, described in "Section +2.4"_Section_start.html#start_4 of the manual. Type "Make.py -h" for +help. -The CCFLAGS setting in Makefile.machine needs "-fopenmp" to add OpenMP -support. This works for both the GNU and Intel compilers. Without -this flag the USER-OMP styles will still be compiled and work, but -will not support multi-threading. For the Intel compilers the CCFLAGS -setting also needs to include "-restrict". +Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must +include "-fopenmp". Likewise, if you use an Intel compiler, the +CCFLAGS setting must include "-restrict". The Make.py command will +add these automatically. [Run with the USER-OMP package from the command line:] The mpirun or mpiexec command sets the total number of MPI tasks used by LAMMPS (one or multiple per compute node) and the number of MPI tasks used per node. E.g. the mpirun command in MPICH does this via its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. -You need to choose how many threads per MPI task will be used by the -USER-OMP package. Note that the product of MPI tasks * threads/task -should not exceed the physical number of cores (on a node), otherwise -performance will suffer. - -Use the "-sf omp" "command-line switch"_Section_start.html#start_7, -which will automatically append "omp" to styles that support it. Use -the "-pk omp Nt" "command-line switch"_Section_start.html#start_7, to -set Nt = # of OpenMP threads per MPI task to use. - -lmp_machine -sf omp -pk omp 16 -in in.script # 1 MPI task on a 16-core node -mpirun -np 4 lmp_machine -sf omp -pk omp 4 -in in.script # 4 MPI tasks each with 4 threads on a single 16-core node -mpirun -np 32 -ppn 4 lmp_machine -sf omp -pk omp 4 -in in.script # ditto on 8 16-core nodes :pre - -Note that if the "-sf omp" switch is used, it also issues a default -"package omp 0"_package.html command, which sets the number of threads -per MPI task via the OMP_NUM_THREADS environment variable. - -Using the "-pk" switch explicitly allows for direct setting of the -number of threads and additional options. Its syntax is the same as -the "package omp" command. See the "package"_package.html command doc -page for details, including the default values used for all its -options if it is not specified, and how to set the number of threads -via the OMP_NUM_THREADS environment variable if desired. +You need to choose how many OpenMP threads per MPI task will be used +by the USER-OMP package. Note that the product of MPI tasks * +threads/task should not exceed the physical number of cores (on a +node), otherwise performance will suffer. + +As in the lines above, use the "-sf omp" "command-line +switch"_Section_start.html#start_7, which will automatically append +"omp" to styles that support it. The "-sf omp" switch also issues a +default "package omp 0"_package.html command, which will set the +number of threads per MPI task via the OMP_NUM_THREADS environment +variable. + +You can also use the "-pk omp Nt" "command-line +switch"_Section_start.html#start_7, to explicitly set Nt = # of OpenMP +threads per MPI task to use, as well as additional options. Its +syntax is the same as the "package omp"_package.html command whose doc +page gives details, including the default values used if it is not +specified. It also gives more details on how to set the number of +threads via the OMP_NUM_THREADS environment variable. [Or run with the USER-OMP package by editing an input script:] The discussion above for the mpirun/mpiexec command, MPI tasks/node, and threads/MPI task is the same. Use the "suffix omp"_suffix.html command, or you can explicitly add an "omp" suffix to individual styles in your input script, e.g. pair_style lj/cut/omp 2.5 :pre You must also use the "package omp"_package.html command to enable the -USER-OMP package, unless the "-sf omp" or "-pk omp" "command-line -switches"_Section_start.html#start_7 were used. It specifies how many -threads per MPI task to use, as well as other options. Its doc page -explains how to set the number of threads via an environment variable -if desired. +USER-OMP package. When you do this you also specify how many threads +per MPI task to use. The command doc page explains other options and +how to set the number of threads via the OMP_NUM_THREADS environment +variable. [Speed-ups to expect:] Depending on which styles are accelerated, you should look for a reduction in the "Pair time", "Bond time", "KSpace time", and "Loop time" values printed at the end of a run. You may see a small performance advantage (5 to 20%) when running a USER-OMP style (in serial or parallel) with a single thread per MPI -task, versus running standard LAMMPS with its standard -(un-accelerated) styles (in serial or all-MPI parallelization with 1 -task/core). This is because many of the USER-OMP styles contain -similar optimizations to those used in the OPT package, as described -above. - -With multiple threads/task, the optimal choice of MPI tasks/node and -OpenMP threads/task can vary a lot and should always be tested via -benchmark runs for a specific simulation running on a specific -machine, paying attention to guidelines discussed in the next +task, versus running standard LAMMPS with its standard un-accelerated +styles (in serial or all-MPI parallelization with 1 task/core). This +is because many of the USER-OMP styles contain similar optimizations +to those used in the OPT package, described in "Section accelerate +5.3.6"_accelerate_opt.html. + +With multiple threads/task, the optimal choice of number of MPI +tasks/node and OpenMP threads/task can vary a lot and should always be +tested via benchmark runs for a specific simulation running on a +specific machine, paying attention to guidelines discussed in the next sub-section. A description of the multi-threading strategy used in the USER-OMP package and some performance examples are "presented here"_http://sites.google.com/site/akohlmey/software/lammps-icms/lammps-icms-tms2011-talk.pdf?attredirects=0&d=1 [Guidelines for best performance:] For many problems on current generation CPUs, running the USER-OMP package with a single thread/task is faster than running with multiple threads/task. This is because the MPI parallelization in LAMMPS is often more efficient than multi-threading as implemented in the USER-OMP package. The parallel efficiency (in a threaded sense) also varies for different USER-OMP styles. Using multiple threads/task can be more effective under the following circumstances: Individual compute nodes have a significant number of CPU cores but the CPU itself has limited memory bandwidth, e.g. for Intel Xeon 53xx -(Clovertown) and 54xx (Harpertown) quad core processors. Running one +(Clovertown) and 54xx (Harpertown) quad-core processors. Running one MPI task per CPU core will result in significant performance degradation, so that running with 4 or even only 2 MPI tasks per node is faster. Running in hybrid MPI+OpenMP mode will reduce the inter-node communication bandwidth contention in the same way, but offers an additional speedup by utilizing the otherwise idle CPU cores. :ulb,l The interconnect used for MPI communication does not provide sufficient bandwidth for a large number of MPI tasks per node. For example, this applies to running over gigabit ethernet or on Cray XT4 or XT5 series supercomputers. As in the aforementioned case, this effect worsens when using an increasing number of nodes. :l The system has a spatially inhomogeneous particle density which does not map well to the "domain decomposition scheme"_processors.html or "load-balancing"_balance.html options that LAMMPS provides. This is because multi-threading achives parallelism over the number of particles, not via their distribution in space. :l A machine is being used in "capability mode", i.e. near the point where MPI parallelism is maxed out. For example, this can happen when using the "PPPM solver"_kspace_style.html for long-range electrostatics on large numbers of nodes. The scaling of the KSpace calculation (see the "kspace_style"_kspace_style.html command) becomes the performance-limiting factor. Using multi-threading allows less MPI tasks to be invoked and can speed-up the long-range solver, while increasing overall performance by parallelizing the pairwise and bonded calculations via OpenMP. Likewise additional speedup can be sometimes be achived by increasing the length of the Coulombic cutoff and thus reducing the work done by the long-range solver. Using the "run_style verlet/split"_run_style.html command, which is compatible with the USER-OMP package, is an alternative way to reduce the number of MPI tasks assigned to the KSpace calculation. :l,ule Additional performance tips are as follows: The best parallel efficiency from {omp} styles is typically achieved -when there is at least one MPI task per physical processor, -i.e. socket or die. :ulb,l +when there is at least one MPI task per physical CPU chip, i.e. socket +or die. :ulb,l It is usually most efficient to restrict threading to a single socket, i.e. use one or more MPI task per socket. :l -Several current MPI implementation by default use a processor affinity -setting that restricts each MPI task to a single CPU core. Using -multi-threading in this mode will force the threads to share that core -and thus is likely to be counterproductive. Instead, binding MPI -tasks to a (multi-core) socket, should solve this issue. :l,ule +IMPORTANT NOTE: By default, several current MPI implementations use a +processor affinity setting that restricts each MPI task to a single +CPU core. Using multi-threading in this mode will force all threads +to share the one core and thus is likely to be counterproductive. +Instead, binding MPI tasks to a (multi-core) socket, should solve this +issue. :l,ule [Restrictions:] None. diff --git a/doc/accelerate_opt.html b/doc/accelerate_opt.html index fc5c77952..09c0da0ff 100644 --- a/doc/accelerate_opt.html +++ b/doc/accelerate_opt.html @@ -1,250 +1,239 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>5.OPT package — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>5.OPT package</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <p><a class="reference internal" href="Section_accelerate.html"><em>Return to Section accelerate overview</em></a></p> <div class="section" id="opt-package"> <h1>5.OPT package<a class="headerlink" href="#opt-package" title="Permalink to this headline">¶</a></h1> <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>Here is a quick overview of how to use the OPT package:</p> -<ul class="simple"> -<li>include the OPT package and build LAMMPS</li> -<li>use OPT pair styles in your input script</li> -</ul> -<p>The last step can be done using the “-sf opt” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>. Or the effect of the “-sf” switch -can be duplicated by adding a <a class="reference internal" href="suffix.html"><em>suffix opt</em></a> command to your -input script.</p> -<p><strong>Required hardware/software:</strong></p> -<p>None.</p> -<p><strong>Building LAMMPS with the OPT package:</strong></p> -<p>Include the package and build LAMMPS:</p> -<p>To do this in one line, use the src/Make.py script, described in -<a class="reference internal" href="Section_start.html#start-4"><span>Section 2.4</span></a> of the manual. Type “Make.py --h” for help. If run from the src directory, this command will create -src/lmp_opt using src/MAKE/Makefile.mpi as the starting -Makefile.machine:</p> -<div class="highlight-python"><div class="highlight"><pre>Make.py -p opt -o opt -a file mpi +<p>Here is a quick overview of how to use the OPT package. More details +follow.</p> +<div class="highlight-python"><div class="highlight"><pre>make yes-opt +make mpi # build with the OPT pacakge +Make.py -v -p opt -o mpi -a file mpi # or one-line build via Make.py </pre></div> </div> -<p>Or you can follow these steps:</p> -<div class="highlight-python"><div class="highlight"><pre>cd lammps/src -make yes-opt -make machine +<div class="highlight-python"><div class="highlight"><pre>lmp_mpi -sf opt -in in.script # run in serial +mpirun -np 4 lmp_mpi -sf opt -in in.script # run in parallel </pre></div> </div> -<p>If you are using Intel compilers, then the CCFLAGS setting in -Makefile.machine needs to include “-restrict”.</p> +<p><strong>Required hardware/software:</strong></p> +<p>None.</p> +<p><strong>Building LAMMPS with the OPT package:</strong></p> +<p>The lines above illustrate how to build LAMMPS with the OPT package in +two steps, using the “make” command. Or how to do it with one command +via the src/Make.py script, described in <a class="reference internal" href="Section_start.html#start-4"><span>Section 2.4</span></a> of the manual. Type “Make.py -h” for +help.</p> +<p>Note that if you use an Intel compiler to build with the OPT package, +the CCFLAGS setting in your Makefile.machine must include “-restrict”. +The Make.py command will add this automatically.</p> <p><strong>Run with the OPT package from the command line:</strong></p> -<p>Use the “-sf opt” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>, -which will automatically append “opt” to styles that support it.</p> -<div class="highlight-python"><div class="highlight"><pre>lmp_machine -sf opt -in in.script -mpirun -np 4 lmp_machine -sf opt -in in.script -</pre></div> -</div> +<p>As in the lines above, use the “-sf opt” <a class="reference internal" href="Section_start.html#start-7"><span>command-line switch</span></a>, which will automatically append +“opt” to styles that support it.</p> <p><strong>Or run with the OPT package by editing an input script:</strong></p> <p>Use the <a class="reference internal" href="suffix.html"><em>suffix opt</em></a> command, or you can explicitly add an “opt” suffix to individual styles in your input script, e.g.</p> <div class="highlight-python"><div class="highlight"><pre>pair_style lj/cut/opt 2.5 </pre></div> </div> <p><strong>Speed-ups to expect:</strong></p> <p>You should see a reduction in the “Pair time” value printed at the end of a run. On most machines for reasonable problem sizes, it will be a 5 to 20% savings.</p> <p><strong>Guidelines for best performance:</strong></p> -<p>None. Just try out an OPT pair style to see how it performs.</p> +<p>Just try out an OPT pair style to see how it performs.</p> <div class="section" id="restrictions"> <h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> <p>None.</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/accelerate_opt.txt b/doc/accelerate_opt.txt index 23e853aec..c2ff97879 100644 --- a/doc/accelerate_opt.txt +++ b/doc/accelerate_opt.txt @@ -1,82 +1,71 @@ "Previous Section"_Section_packages.html - "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 "Return to Section accelerate overview"_Section_accelerate.html 5.3.6 OPT package :h4 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. -Here is a quick overview of how to use the OPT package: +Here is a quick overview of how to use the OPT package. More details +follow. -include the OPT package and build LAMMPS -use OPT pair styles in your input script :ul +make yes-opt +make mpi # build with the OPT pacakge +Make.py -v -p opt -o mpi -a file mpi # or one-line build via Make.py :pre -The last step can be done using the "-sf opt" "command-line -switch"_Section_start.html#start_7. Or the effect of the "-sf" switch -can be duplicated by adding a "suffix opt"_suffix.html command to your -input script. +lmp_mpi -sf opt -in in.script # run in serial +mpirun -np 4 lmp_mpi -sf opt -in in.script # run in parallel :pre [Required hardware/software:] None. [Building LAMMPS with the OPT package:] -Include the package and build LAMMPS: - -To do this in one line, use the src/Make.py script, described in -"Section 2.4"_Section_start.html#start_4 of the manual. Type "Make.py --h" for help. If run from the src directory, this command will create -src/lmp_opt using src/MAKE/Makefile.mpi as the starting -Makefile.machine: +The lines above illustrate how to build LAMMPS with the OPT package in +two steps, using the "make" command. Or how to do it with one command +via the src/Make.py script, described in "Section +2.4"_Section_start.html#start_4 of the manual. Type "Make.py -h" for +help. -Make.py -p opt -o opt -a file mpi :pre - -Or you can follow these steps: - -cd lammps/src -make yes-opt -make machine :pre - -If you are using Intel compilers, then the CCFLAGS setting in -Makefile.machine needs to include "-restrict". +Note that if you use an Intel compiler to build with the OPT package, +the CCFLAGS setting in your Makefile.machine must include "-restrict". +The Make.py command will add this automatically. [Run with the OPT package from the command line:] -Use the "-sf opt" "command-line switch"_Section_start.html#start_7, -which will automatically append "opt" to styles that support it. - -lmp_machine -sf opt -in in.script -mpirun -np 4 lmp_machine -sf opt -in in.script :pre +As in the lines above, use the "-sf opt" "command-line +switch"_Section_start.html#start_7, which will automatically append +"opt" to styles that support it. [Or run with the OPT package by editing an input script:] Use the "suffix opt"_suffix.html command, or you can explicitly add an "opt" suffix to individual styles in your input script, e.g. pair_style lj/cut/opt 2.5 :pre [Speed-ups to expect:] You should see a reduction in the "Pair time" value printed at the end of a run. On most machines for reasonable problem sizes, it will be a 5 to 20% savings. [Guidelines for best performance:] -None. Just try out an OPT pair style to see how it performs. +Just try out an OPT pair style to see how it performs. [Restrictions:] None. diff --git a/doc/compute_temp_cs.html b/doc/compute_temp_cs.html index be1397a6e..22f0ab741 100644 --- a/doc/compute_temp_cs.html +++ b/doc/compute_temp_cs.html @@ -1,288 +1,288 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>compute temp/cs command — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>compute temp/cs command</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="compute-temp-cs-command"> <span id="index-0"></span><h1>compute temp/cs command<a class="headerlink" href="#compute-temp-cs-command" title="Permalink to this headline">¶</a></h1> <div class="section" id="syntax"> <h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><pre>compute ID group-ID temp/cs group1 group2 </pre></div> </div> <ul class="simple"> <li>ID, group-ID are documented in <a class="reference internal" href="compute.html"><em>compute</em></a> command</li> <li>temp/cs = style name of this compute command</li> <li>group1 = group-ID of either cores or shells</li> <li>group2 = group-ID of either shells or cores</li> </ul> </div> <div class="section" id="examples"> <h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><pre>compute oxygen_c-s all temp/cs O_core O_shell compute core_shells all temp/cs cores shells </pre></div> </div> </div> <div class="section" id="description"> <h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2> <p>Define a computation that calculates the temperature of a system based on the center-of-mass velocity of atom pairs that are bonded to each other. This compute is designed to be used with the adiabatic core/shell model of <a class="reference internal" href="#mitchellfinchham"><span>(Mitchell and Finchham)</span></a>. See <a class="reference internal" href="Section_howto.html#howto-25"><span>Section_howto 25</span></a> of the manual for an overview of the model as implemented in LAMMPS. Specifically, this compute enables correct temperature calculation and thermostatting of core/shell pairs where it is desirable for the internal degrees of freedom of the core/shell pairs to not be influenced by a thermostat. A compute of this style can be used by any command that computes a temperature via <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> e.g. <a class="reference internal" href="fix_temp_rescale.html"><em>fix temp/rescale</em></a>, <a class="reference internal" href="fix_nh.html"><em>fix npt</em></a>, etc.</p> <p>Note that this compute does not require all ions to be polarized, hence defined as core/shell pairs. One can mix core/shell pairs and ions without a satellite particle if desired. The compute will consider the non-polarized ions according to the physical system.</p> <p>For this compute, core and shell particles are specified by two respective group IDs, which can be defined using the <a class="reference internal" href="group.html"><em>group</em></a> command. The number of atoms in the two groups must be the same and there should be one bond defined between a pair of atoms in the two groups. Non-polarized ions which might also be included in the treated system should not be included into either of these groups, they are taken into account by the <em>group-ID</em> (2nd argument) of the compute.</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. Note that the velocity of each core or shell atom used in the KE calculation is the velocity of the center-of-mass (COM) of the core/shell pair the atom is part of.</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. Again, the velocity of each core or shell atom is its -COM velocity.</p> +zz, xy, xz, yz. In contrast to the temperature, the velocity of +each core or shell atom is taken individually.</p> <p>The change this fix makes to core/shell atom velocities is essentially computing the temperature after a “bias” has been removed from the velocity of the atoms. This “bias” is the velocity of the atom relative to the COM velocity of the core/shell pair. 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 COM velocity will be performed, and the bias will be added back in. This means the thermostating will effectively be performed on the core/shell pairs, instead of on the individual core and shell atoms. Thermostatting fixes that work in this way include <a class="reference internal" href="fix_nh.html"><em>fix nvt</em></a>, <a class="reference internal" href="fix_temp_rescale.html"><em>fix temp/rescale</em></a>, <a class="reference internal" href="fix_temp_berendsen.html"><em>fix temp/berendsen</em></a>, and <a class="reference internal" href="fix_langevin.html"><em>fix langevin</em></a>.</p> <p>The internal energy of core/shell pairs can be calculated by the <a class="reference internal" href="compute_temp_chunk.html"><em>compute temp/chunk</em></a> command, if chunks are defined as core/shell pairs. See <a class="reference internal" href="Section_howto.html#howto-25"><span>Section_howto 25</span></a> for more discussion on how to do this.</p> <p><strong>Output info:</strong></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.</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 class="reference internal" href="units.html"><em>units</em></a>. The vector values will be in energy <a class="reference internal" href="units.html"><em>units</em></a>.</p> </div> <div class="section" id="restrictions"> <h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> <p>The number of core/shell pairs contributing to the temperature is assumed to be constant for the duration of the run. No fixes should be used which generate new molecules or atoms during a simulation.</p> </div> <div class="section" id="related-commands"> <h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2> <p><a class="reference internal" href="compute_temp.html"><em>compute temp</em></a>, <a class="reference internal" href="compute_temp_chunk.html"><em>compute temp/chunk</em></a></p> <p><strong>Default:</strong> none</p> <hr class="docutils" /> <p id="mitchellfinchham"><strong>(Mitchell and Finchham)</strong> Mitchell, Finchham, J Phys Condensed Matter, 5, 1031-1038 (1993).</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/compute_temp_cs.txt b/doc/compute_temp_cs.txt index f43c7214e..9cdb3a9ba 100644 --- a/doc/compute_temp_cs.txt +++ b/doc/compute_temp_cs.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/cs command :h3 [Syntax:] compute ID group-ID temp/cs group1 group2 :pre ID, group-ID are documented in "compute"_compute.html command temp/cs = style name of this compute command group1 = group-ID of either cores or shells group2 = group-ID of either shells or cores :ul [Examples:] compute oxygen_c-s all temp/cs O_core O_shell compute core_shells all temp/cs cores shells :pre [Description:] Define a computation that calculates the temperature of a system based on the center-of-mass velocity of atom pairs that are bonded to each other. This compute is designed to be used with the adiabatic core/shell model of "(Mitchell and Finchham)"_#MitchellFinchham. See "Section_howto 25"_Section_howto.html#howto_25 of the manual for an overview of the model as implemented in LAMMPS. Specifically, this compute enables correct temperature calculation and thermostatting of core/shell pairs where it is desirable for the internal degrees of freedom of the core/shell pairs to not be influenced by a thermostat. A compute of this style can be used by any command that computes a temperature via "fix_modify"_fix_modify.html e.g. "fix temp/rescale"_fix_temp_rescale.html, "fix npt"_fix_nh.html, etc. Note that this compute does not require all ions to be polarized, hence defined as core/shell pairs. One can mix core/shell pairs and ions without a satellite particle if desired. The compute will consider the non-polarized ions according to the physical system. For this compute, core and shell particles are specified by two respective group IDs, which can be defined using the "group"_group.html command. The number of atoms in the two groups must be the same and there should be one bond defined between a pair of atoms in the two groups. Non-polarized ions which might also be included in the treated system should not be included into either of these groups, they are taken into account by the {group-ID} (2nd argument) of the compute. 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 the velocity of each core or shell atom used in the KE calculation is the velocity of the center-of-mass (COM) of the core/shell pair the atom is part of. 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. Again, the velocity of each core or shell atom is its -COM velocity. +zz, xy, xz, yz. In contrast to the temperature, the velocity of +each core or shell atom is taken individually. The change this fix makes to core/shell atom velocities is essentially computing the temperature after a "bias" has been removed from the velocity of the atoms. This "bias" is the velocity of the atom relative to the COM velocity of the core/shell pair. 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 COM velocity will be performed, and the bias will be added back in. This means the thermostating will effectively be performed on the core/shell pairs, instead of on the individual core and shell atoms. 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. The internal energy of core/shell pairs can be calculated by the "compute temp/chunk"_compute_temp_chunk.html command, if chunks are defined as core/shell pairs. See "Section_howto 25"_Section_howto.html#howto_25 for more discussion on how to do this. [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. 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:] The number of core/shell pairs contributing to the temperature is assumed to be constant for the duration of the run. No fixes should be used which generate new molecules or atoms during a simulation. [Related commands:] "compute temp"_compute_temp.html, "compute temp/chunk"_compute_temp_chunk.html [Default:] none :line :link(MitchellFinchham) [(Mitchell and Finchham)] Mitchell, Finchham, J Phys Condensed Matter, 5, 1031-1038 (1993). diff --git a/doc/doc2/Manual.html.html b/doc/doc2/Manual.html.html index 25313b599..f76689504 100644 --- a/doc/doc2/Manual.html.html +++ b/doc/doc2/Manual.html.html @@ -1,318 +1,318 @@ <HTML> <HTML> <!-- HTML_ONLY --> <HEAD> <TITLE>LAMMPS Users Manual</TITLE> -<META NAME="docnumber" CONTENT="25 Sep 2015 version"> +<META NAME="docnumber" CONTENT="22 Oct 2015 version"> <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> <!-- END_HTML_ONLY --> <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> <P><CENTER><H3>LAMMPS Documentation </H3></CENTER> -<CENTER><H4>25 Sep 2015 version +<CENTER><H4>22 Oct 2015 version </H4></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, and at the top of the first page of the manual (this page). </P> <UL><LI>If you browse the HTML doc pages on the LAMMPS WWW site, they always describe the most current version of LAMMPS. </P> <P><LI>If you browse the HTML doc pages included in your tarball, they describe the version you have. </P> <P><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 every patch. </P> <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://freecode.com/projects/htmldoc">htmldoc</A> </P> <P><!-- RST </P> <P>.. toctree:: :maxdepth: 2 :numbered: // comment </P> <P> Section_intro Section_start Section_commands Section_packages Section_accelerate Section_howto Section_example Section_perf Section_tools Section_modify Section_python Section_errors Section_history </P> <P>Indices and tables ================== </P> <P>* :ref:`genindex` // comment * :ref:`search` // comment </P> <P>END_RST --> </P> <OL><LI><!-- HTML_ONLY --> <A HREF = "Section_intro.html">Introduction</A> <UL> 1.1 <A HREF = "Section_intro.html#intro_1">What is LAMMPS</A> <BR> 1.2 <A HREF = "Section_intro.html#intro_2">LAMMPS features</A> <BR> 1.3 <A HREF = "Section_intro.html#intro_3">LAMMPS non-features</A> <BR> 1.4 <A HREF = "Section_intro.html#intro_4">Open source distribution</A> <BR> 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#start_1">What's in the LAMMPS distribution</A> <BR> 2.2 <A HREF = "Section_start.html#start_2">Making LAMMPS</A> <BR> 2.3 <A HREF = "Section_start.html#start_3">Making LAMMPS with optional packages</A> <BR> 2.4 <A HREF = "Section_start.html#start_4">Building LAMMPS via the Make.py script</A> <BR> 2.5 <A HREF = "Section_start.html#start_5">Building LAMMPS as a library</A> <BR> 2.6 <A HREF = "Section_start.html#start_6">Running LAMMPS</A> <BR> 2.7 <A HREF = "Section_start.html#start_7">Command-line options</A> <BR> 2.8 <A HREF = "Section_start.html#start_8">Screen output</A> <BR> 2.9 <A HREF = "Section_start.html#start_9">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#cmd_1">LAMMPS input script</A> <BR> 3.2 <A HREF = "Section_commands.html#cmd_2">Parsing rules</A> <BR> 3.3 <A HREF = "Section_commands.html#cmd_3">Input script structure</A> <BR> 3.4 <A HREF = "Section_commands.html#cmd_4">Commands listed by category</A> <BR> 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">Accelerating LAMMPS performance</A> <UL> 5.1 <A HREF = "Section_accelerate.html#acc_1">Measuring performance</A> <BR> 5.2 <A HREF = "Section_accelerate.html#acc_2">Algorithms and code options to boost performace</A> <BR> 5.3 <A HREF = "Section_accelerate.html#acc_3">Accelerator packages with optimized styles</A> <BR> <UL> 5.3.1 <A HREF = "accelerate_cuda.html">USER-CUDA package</A> <BR> 5.3.2 <A HREF = "accelerate_gpu.html">GPU package</A> <BR> 5.3.3 <A HREF = "accelerate_intel.html">USER-INTEL package</A> <BR> 5.3.4 <A HREF = "accelerate_kokkos.html">KOKKOS package</A> <BR> 5.3.5 <A HREF = "accelerate_omp.html">USER-OMP package</A> <BR> 5.3.6 <A HREF = "accelerate_opt.html">OPT package</A> <BR></UL> 5.4 <A HREF = "Section_accelerate.html#acc_4">Comparison of various accelerator packages</A> <BR></UL> <LI><A HREF = "Section_howto.html">How-to discussions</A> <UL> 6.1 <A HREF = "Section_howto.html#howto_1">Restarting a simulation</A> <BR> 6.2 <A HREF = "Section_howto.html#howto_2">2d simulations</A> <BR> 6.3 <A HREF = "Section_howto.html#howto_3">CHARMM and AMBER force fields</A> <BR> 6.4 <A HREF = "Section_howto.html#howto_4">Running multiple simulations from one input script</A> <BR> 6.5 <A HREF = "Section_howto.html#howto_5">Multi-replica simulations</A> <BR> 6.6 <A HREF = "Section_howto.html#howto_6">Granular models</A> <BR> 6.7 <A HREF = "Section_howto.html#howto_7">TIP3P water model</A> <BR> 6.8 <A HREF = "Section_howto.html#howto_8">TIP4P water model</A> <BR> 6.9 <A HREF = "Section_howto.html#howto_9">SPC water model</A> <BR> 6.10 <A HREF = "Section_howto.html#howto_10">Coupling LAMMPS to other codes</A> <BR> 6.11 <A HREF = "Section_howto.html#howto_11">Visualizing LAMMPS snapshots</A> <BR> 6.12 <A HREF = "Section_howto.html#howto_12">Triclinic (non-orthogonal) simulation boxes</A> <BR> 6.13 <A HREF = "Section_howto.html#howto_13">NEMD simulations</A> <BR> 6.14 <A HREF = "Section_howto.html#howto_14">Finite-size spherical and aspherical particles</A> <BR> 6.15 <A HREF = "Section_howto.html#howto_15">Output from LAMMPS (thermo, dumps, computes, fixes, variables)</A> <BR> 6.16 <A HREF = "Section_howto.html#howto_16">Thermostatting, barostatting, and compute temperature</A> <BR> 6.17 <A HREF = "Section_howto.html#howto_17">Walls</A> <BR> 6.18 <A HREF = "Section_howto.html#howto_18">Elastic constants</A> <BR> 6.19 <A HREF = "Section_howto.html#howto_19">Library interface to LAMMPS</A> <BR> 6.20 <A HREF = "Section_howto.html#howto_20">Calculating thermal conductivity</A> <BR> 6.21 <A HREF = "Section_howto.html#howto_21">Calculating viscosity</A> <BR> 6.22 <A HREF = "Section_howto.html#howto_22">Calculating a diffusion coefficient</A> <BR> 6.23 <A HREF = "Section_howto.html#howto_23">Using chunks to calculate system properties</A> <BR> 6.24 <A HREF = "Section_howto.html#howto_24">Setting parameters for pppm/disp</A> <BR> 6.25 <A HREF = "Section_howto.html#howto_25">Polarizable models</A> <BR> 6.26 <A HREF = "Section_howto.html#howto_26">Adiabatic core/shell model</A> <BR> 6.27 <A HREF = "Section_howto.html#howto_27">Drude induced dipoles</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> <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> 10.5 <A HREF = "Section_modify.html#mod_5">Dump custom output options</A> <BR> 10.6 <A HREF = "Section_modify.html#mod_6">Fix styles</A> <BR> 10.7 <A HREF = "Section_modify.html#mod_7">Input script commands</A> <BR> 10.8 <A HREF = "Section_modify.html#mod_8">Kspace computations</A> <BR> 10.9 <A HREF = "Section_modify.html#mod_9">Minimization styles</A> <BR> 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">Body styles</A> <BR> 10.13 <A HREF = "Section_modify.html#mod_13">Thermodynamic output options</A> <BR> 10.14 <A HREF = "Section_modify.html#mod_14">Variable options</A> <BR> 10.15 <A HREF = "Section_modify.html#mod_15">Submitting new features for inclusion in LAMMPS</A> <BR></UL> <LI><A HREF = "Section_python.html">Python interface</A> <UL> 11.1 <A HREF = "Section_python.html#py_1">Overview of running LAMMPS from Python</A> <BR> 11.2 <A HREF = "Section_python.html#py_2">Overview of using Python from a LAMMPS script</A> <BR> 11.3 <A HREF = "Section_python.html#py_3">Building LAMMPS as a shared library</A> <BR> 11.4 <A HREF = "Section_python.html#py_4">Installing the Python wrapper into Python</A> <BR> 11.5 <A HREF = "Section_python.html#py_5">Extending Python with MPI to run in parallel</A> <BR> 11.6 <A HREF = "Section_python.html#py_6">Testing the Python-LAMMPS interface</A> <BR> 11.7 <A HREF = "py_7">Using LAMMPS from Python</A> <BR> 11.8 <A HREF = "py_8">Example Python scripts that use LAMMPS</A> <BR></UL> <LI><A HREF = "Section_errors.html">Errors</A> <UL> 12.1 <A HREF = "Section_errors.html#err_1">Common problems</A> <BR> 12.2 <A HREF = "Section_errors.html#err_2">Reporting bugs</A> <BR> 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> 13.1 <A HREF = "Section_history.html#hist_1">Coming attractions</A> <BR> 13.2 <A HREF = "Section_history.html#hist_2">Past versions</A> <BR></UL> </OL> <!-- END_HTML_ONLY --> </BODY> </HTML> </HTML> diff --git a/doc/doc2/Section_accelerate.html b/doc/doc2/Section_accelerate.html index 7a5b054aa..28aaca1ea 100644 --- a/doc/doc2/Section_accelerate.html +++ b/doc/doc2/Section_accelerate.html @@ -1,401 +1,420 @@ <HTML> <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>5. Accelerating LAMMPS performance </H3> <P>This section describes various methods for improving LAMMPS performance for different classes of problems running on different kinds of machines. </P> <P>There are two thrusts to the discussion that follows. The first is using code options that implement alternate algorithms that can speed-up a simulation. The second is to use one of the several accelerator packages provided with LAMMPS that contain code optimized for certain kinds of hardware, including multi-core CPUs, GPUs, and Intel Xeon Phi coprocessors. </P> <UL><LI>5.1 <A HREF = "#acc_1">Measuring performance</A> <LI>5.2 <A HREF = "#acc_2">Algorithms and code options to boost performace</A> <LI>5.3 <A HREF = "#acc_3">Accelerator packages with optimized styles</A> <UL><LI> 5.3.1 <A HREF = "accelerate_cuda.html">USER-CUDA package</A> <LI> 5.3.2 <A HREF = "accelerate_gpu.html">GPU package</A> <LI> 5.3.3 <A HREF = "accelerate_intel.html">USER-INTEL package</A> <LI> 5.3.4 <A HREF = "accelerate_kokkos.html">KOKKOS package</A> <LI> 5.3.5 <A HREF = "accelerate_omp.html">USER-OMP package</A> <LI> 5.3.6 <A HREF = "accelerate_opt.html">OPT package</A> </UL> <LI>5.4 <A HREF = "#acc_4">Comparison of various accelerator packages</A> </UL> <P>The <A HREF = "http://lammps.sandia.gov/bench.html">Benchmark page</A> of the LAMMPS web site gives performance results for the various accelerator packages discussed in Section 5.2, for several of the standard LAMMPS benchmark problems, as a function of problem size and number of compute nodes, on different hardware platforms. </P> <HR> <HR> <H4><A NAME = "acc_1"></A>5.1 Measuring performance </H4> <P>Before trying to make your simulation run faster, you should understand how it currently performs and where the bottlenecks are. </P> <P>The best way to do this is run the your system (actual number of atoms) for a modest number of timesteps (say 100 steps) on several different processor counts, including a single processor if possible. Do this for an equilibrium version of your system, so that the 100-step timings are representative of a much longer run. There is typically no need to run for 1000s of timesteps to get accurate timings; you can simply extrapolate from short runs. </P> <P>For the set of runs, look at the timing data printed to the screen and log file at the end of each LAMMPS run. <A HREF = "Section_start.html#start_8">This section</A> of the manual has an overview. </P> <P>Running on one (or a few processors) should give a good estimate of the serial performance and what portions of the timestep are taking the most time. Running the same problem on a few different processor counts should give an estimate of parallel scalability. I.e. if the simulation runs 16x faster on 16 processors, its 100% parallel efficient; if it runs 8x faster on 16 processors, it's 50% efficient. </P> <P>The most important data to look at in the timing info is the timing breakdown and relative percentages. For example, trying different options for speeding up the long-range solvers will have little impact if they only consume 10% of the run time. If the pairwise time is dominating, you may want to look at GPU or OMP versions of the pair style, as discussed below. Comparing how the percentages change as you increase the processor count gives you a sense of how different operations within the timestep are scaling. Note that if you are running with a Kspace solver, there is additional output on the breakdown of the Kspace time. For PPPM, this includes the fraction spent on FFTs, which can be communication intensive. </P> <P>Another important detail in the timing info are the histograms of atoms counts and neighbor counts. If these vary widely across processors, you have a load-imbalance issue. This often results in inaccurate relative timing data, because processors have to wait when communication occurs for other processors to catch up. Thus the reported times for "Communication" or "Other" may be higher than they really are, due to load-imbalance. If this is an issue, you can uncomment the MPI_Barrier() lines in src/timer.cpp, and recompile LAMMPS, to obtain synchronized timings. </P> <HR> <H4><A NAME = "acc_2"></A>5.2 General strategies </H4> <P>NOTE: this section 5.2 is still a work in progress </P> <P>Here is a list of general ideas for improving simulation performance. Most of them are only applicable to certain models and certain bottlenecks in the current performance, so let the timing data you generate be your guide. It is hard, if not impossible, to predict how much difference these options will make, since it is a function of problem size, number of processors used, and your machine. There is no substitute for identifying performance bottlenecks, and trying out various options. </P> <UL><LI>rRESPA <LI>2-FFT PPPM <LI>Staggered PPPM <LI>single vs double PPPM <LI>partial charge PPPM <LI>verlet/split run style <LI>processor command for proc layout and numa layout <LI>load-balancing: balance and fix balance </UL> <P>2-FFT PPPM, also called <I>analytic differentiation</I> or <I>ad</I> PPPM, uses 2 FFTs instead of the 4 FFTs used by the default <I>ik differentiation</I> PPPM. However, 2-FFT PPPM also requires a slightly larger mesh size to achieve the same accuracy as 4-FFT PPPM. For problems where the FFT cost is the performance bottleneck (typically large problems running on many processors), 2-FFT PPPM may be faster than 4-FFT PPPM. </P> <P>Staggered PPPM performs calculations using two different meshes, one shifted slightly with respect to the other. This can reduce force aliasing errors and increase the accuracy of the method, but also doubles the amount of work required. For high relative accuracy, using staggered PPPM allows one to half the mesh size in each dimension as compared to regular PPPM, which can give around a 4x speedup in the kspace time. However, for low relative accuracy, using staggered PPPM gives little benefit and can be up to 2x slower in the kspace time. For example, the rhodopsin benchmark was run on a single processor, and results for kspace time vs. relative accuracy for the different methods are shown in the figure below. For this system, staggered PPPM (using ik differentiation) becomes useful when using a relative accuracy of slightly greater than 1e-5 and above. </P> <CENTER><IMG SRC = "JPG/rhodo_staggered.jpg"> </CENTER> <P>IMPORTANT NOTE: Using staggered PPPM may not give the same increase in accuracy of energy and pressure as it does in forces, so some caution must be used if energy and/or pressure are quantities of interest, such as when using a barostat. </P> <HR> <H4><A NAME = "acc_3"></A>5.3 Packages with optimized styles </H4> <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. Some require appropriate hardware to be present on your system, e.g. GPUs or Intel Xeon Phi coprocessors. </P> <P>All of these commands are in packages provided with LAMMPS. An overview of packages is give in <A HREF = "Section_packages.html">Section -packages</A>. These are the accelerator packages +packages</A>. +</P> +<P>These are the accelerator packages currently in LAMMPS, either as standard or user packages: </P> <DIV ALIGN=center><TABLE BORDER=1 > <TR><TD ><A HREF = "accelerate_cuda.html">USER-CUDA</A> </TD><TD > for NVIDIA GPUs</TD></TR> <TR><TD ><A HREF = "accelerate_gpu.html">GPU</A> </TD><TD > for NVIDIA GPUs as well as OpenCL support</TD></TR> <TR><TD ><A HREF = "accelerate_intel.html">USER-INTEL</A> </TD><TD > for Intel CPUs and Intel Xeon Phi</TD></TR> <TR><TD ><A HREF = "accelerate_kokkos.html">KOKKOS</A> </TD><TD > for GPUs, Intel Xeon Phi, and OpenMP threading</TD></TR> <TR><TD ><A HREF = "accelerate_omp.html">USER-OMP</A> </TD><TD > for OpenMP threading</TD></TR> <TR><TD ><A HREF = "accelerate_opt.html">OPT</A> </TD><TD > generic CPU optimizations </TD></TR></TABLE></DIV> +<P>Inverting this list, LAMMPS currently has acceleration support for +three kinds of hardware, via the listed packages: +</P> +<DIV ALIGN=center><TABLE BORDER=1 > +<TR><TD >Many-core CPUs </TD><TD > <A HREF = "accelerate_intel.html">USER-INTEL</A>, <A HREF = "accelerate_kokkos.html">KOKKOS</A>, <A HREF = "accelerate_omp.html">USER-OMP</A>, <A HREF = "accelerate_opt.html">OPT</A> packages</TD></TR> +<TR><TD >NVIDIA GPUs </TD><TD > <A HREF = "accelerate_cuda.html">USER-CUDA</A>, <A HREF = "accelerate_gpu.html">GPU</A>, <A HREF = "accelerate_kokkos.html">KOKKOS</A> packages</TD></TR> +<TR><TD >Intel Phi </TD><TD > <A HREF = "accelerate_intel.html">USER-INTEL</A>, <A HREF = "accelerate_kokkos.html">KOKKOS</A> packages +</TD></TR></TABLE></DIV> + +<P>Which package is fastest for your hardware may depend on the size +problem you are running and what commands (accelerated and +non-accelerated) are invoked by your input script. While these doc +pages include performance guidelines, there is no substitute for +trying out the different packages appropriate to your hardware. +</P> <P>Any accelerated style has the same name as the corresponding standard style, except that a suffix is appended. Otherwise, the syntax for the command that uses the style is identical, their functionality is the same, and the numerical results it produces should also be the same, except for precision and round-off effects. </P> <P>For example, all of these styles are accelerated variants of the Lennard-Jones <A HREF = "pair_lj.html">pair_style lj/cut</A>: </P> <UL><LI><A HREF = "pair_lj.html">pair_style lj/cut/cuda</A> <LI><A HREF = "pair_lj.html">pair_style lj/cut/gpu</A> <LI><A HREF = "pair_lj.html">pair_style lj/cut/intel</A> <LI><A HREF = "pair_lj.html">pair_style lj/cut/kk</A> <LI><A HREF = "pair_lj.html">pair_style lj/cut/omp</A> <LI><A HREF = "pair_lj.html">pair_style lj/cut/opt</A> </UL> <P>To see what accelerate styles are currently available, see <A HREF = "Section_commands.html#cmd_5">Section_commands 5</A> of the manual. The doc pages for individual commands (e.g. <A HREF = "pair_lj.html">pair lj/cut</A> or <A HREF = "fix_nve.html">fix nve</A>) also list any accelerated variants available for that style. </P> <P>To use an accelerator package in LAMMPS, and one or more of the styles it provides, follow these general steps. Details vary from package to package and are explained in the individual accelerator doc pages, listed above: </P> <DIV ALIGN=center><TABLE BORDER=1 > <TR><TD >build the accelerator library </TD><TD > only for USER-CUDA and GPU packages </TD></TR> <TR><TD >install the accelerator package </TD><TD > make yes-opt, make yes-user-intel, etc </TD></TR> -<TR><TD >add compile/link flags to Makefile.machine </TD><TD > in src/MAKE, <br> only for USER-INTEL, KOKKOS, USER-OMP packages </TD></TR> +<TR><TD >add compile/link flags to Makefile.machine </TD><TD > in src/MAKE, <br> only for USER-INTEL, KOKKOS, USER-OMP, OPT packages </TD></TR> <TR><TD >re-build LAMMPS </TD><TD > make machine </TD></TR> -<TR><TD >run a LAMMPS simulation </TD><TD > lmp_machine < in.script </TD></TR> +<TR><TD >run a LAMMPS simulation </TD><TD > lmp_machine < in.script <br> mpirun -np 32 lmp_machine -in in.script </TD></TR> <TR><TD >enable the accelerator package </TD><TD > via "-c on" and "-k on" <A HREF = "Section_start.html#start_7">command-line switches</A>, <br> only for USER-CUDA and KOKKOS packages </TD></TR> <TR><TD >set any needed options for the package </TD><TD > via "-pk" <A HREF = "Section_start.html#start_7">command-line switch</A> or <A HREF = "package.html">package</A> command, <br> only if defaults need to be changed </TD></TR> <TR><TD >use accelerated styles in your input script </TD><TD > via "-sf" <A HREF = "Section_start.html#start_7">command-line switch</A> or <A HREF = "suffix.html">suffix</A> command </TD></TR></TABLE></DIV> -<P>The first 4 steps can be done as a single command, using the -src/Make.py tool. The Make.py tool is discussed in <A HREF = "Section_start.html#start_4">Section +<P>Note that the first 4 steps can be done as a single command, using the +src/Make.py tool. This tool is discussed in <A HREF = "Section_start.html#start_4">Section 2.4</A> of the manual, and its use is illustrated in the individual accelerator sections. Typically these steps only need to be done once, to create an executable that uses one or more accelerator packages. </P> <P>The last 4 steps can all be done from the command-line when LAMMPS is launched, without changing your input script, as illustrated in the individual accelerator sections. Or you can add <A HREF = "package.html">package</A> and <A HREF = "suffix.html">suffix</A> commands to your input script. </P> <P>IMPORTANT NOTE: With a few exceptions, you can build a single LAMMPS -executable with all its accelerator packages installed. Note that the -USER-INTEL and KOKKOS packages require you to choose one of their -options when building. I.e. CPU or Phi for USER-INTEL. OpenMP, Cuda, -or Phi for KOKKOS. Here are the exceptions; you cannot build a single -executable with: +executable with all its accelerator packages installed. Note however +that the USER-INTEL and KOKKOS packages require you to choose one of +their hardware options when building for a specific platform. +I.e. CPU or Phi option for the USER-INTEL package. Or the OpenMP, +Cuda, or Phi option for the KOKKOS package. +</P> +<P>These are the exceptions. You cannot build a single executable with: </P> <UL><LI>both the USER-INTEL Phi and KOKKOS Phi options <LI>the USER-INTEL Phi or Kokkos Phi option, and either the USER-CUDA or GPU packages </UL> <P>See the examples/accelerate/README and make.list files for sample Make.py commands that build LAMMPS with any or all of the accelerator packages. As an example, here is a command that builds with all the GPU related packages installed (USER-CUDA, GPU, KOKKOS with Cuda), including settings to build the needed auxiliary USER-CUDA and GPU libraries for Kepler GPUs: </P> <PRE>Make.py -j 16 -p omp gpu cuda kokkos -cc nvcc wrap=mpi -cuda mode=double arch=35 -gpu mode=double arch=35 \ -kokkos cuda arch=35 lib-all file mpi </PRE> <P>The examples/accelerate directory also has input scripts that can be used with all of the accelerator packages. See its README file for details. </P> <P>Likewise, the bench directory has FERMI and KEPLER and PHI sub-directories with Make.py commands and input scripts for using all the accelerator packages on various machines. See the README files in those dirs. </P> <P>As mentioned above, the <A HREF = "http://lammps.sandia.gov/bench.html">Benchmark page</A> of the LAMMPS web site gives performance results for the various accelerator packages for several of the standard LAMMPS benchmark problems, as a function of problem size and number of compute nodes, on different hardware platforms. </P> <P>Here is a brief summary of what the various packages provide. Details are in the individual accelerator sections. </P> <UL><LI>Styles with a "cuda" or "gpu" suffix are part of the USER-CUDA or GPU packages, and can be run on NVIDIA GPUs. The speed-up on a GPU depends on a variety of factors, discussed in the accelerator sections. <LI>Styles with an "intel" suffix are part of the USER-INTEL package. These styles support vectorized single and mixed precision calculations, in addition to full double precision. In extreme cases, this can provide speedups over 3.5x on CPUs. The package also supports acceleration in "offload" mode to Intel(R) Xeon Phi(TM) coprocessors. This can result in additional speedup over 2x depending on the hardware configuration. <LI>Styles with a "kk" suffix are part of the KOKKOS package, and can be run using OpenMP on multicore CPUs, on an NVIDIA GPU, or on an Intel Xeon Phi in "native" mode. The speed-up depends on a variety of factors, as discussed on the KOKKOS accelerator page. <LI>Styles with an "omp" suffix are part of the USER-OMP package and allow a pair-style to be run in multi-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 or when the many MPI tasks would overload the available bandwidth for communication. <LI>Styles with an "opt" suffix are part of the OPT package and typically speed-up the pairwise calculations of your simulation by 5-25% on a CPU. </UL> <P>The individual accelerator package doc pages explain: </P> <UL><LI>what hardware and software the accelerated package requires <LI>how to build LAMMPS with the accelerated package <LI>how to run with the accelerated package either via command-line switches or modifying the input script <LI>speed-ups to expect <LI>guidelines for best performance <LI>restrictions </UL> <HR> <H4><A NAME = "acc_4"></A>5.4 Comparison of various accelerator packages </H4> <P>NOTE: this section still needs to be re-worked with additional KOKKOS and USER-INTEL information. </P> <P>The next section compares and contrasts the various accelerator options, since there are multiple ways to perform OpenMP threading, run on GPUs, and run on Intel Xeon Phi coprocessors. </P> <P>All 3 of these 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 +number of atoms per GPU is smaller. 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 USER-CUDA package does not support acceleration for minimization. <LI>The USER-CUDA package does not support hybrid pair styles. <LI>The USER-CUDA package can order atoms in the neighbor list differently from run to run resulting in a different order for force accumulation. <LI>The USER-CUDA package has a limit on the number of atom types that can be used in a simulation. <LI>The GPU package requires neighbor lists to be built on the CPU when using exclusion lists or a triclinic simulation box. <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> </HTML> diff --git a/doc/doc2/Section_commands.html b/doc/doc2/Section_commands.html index 82f06d539..411376f9d 100644 --- a/doc/doc2/Section_commands.html +++ b/doc/doc2/Section_commands.html @@ -1,668 +1,668 @@ <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_packages.html">Next Section</A> </CENTER> <HR> <H3>3. Commands </H3> <P>This section describes how a LAMMPS input script is formatted and the input script commands used to define a LAMMPS simulation. </P> 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> <HR> <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 = "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, the command is assumed to continue on the next line. The next line is concatenated to the previous line by removing the "&" character and line break. This allows long commands to be continued across two or more lines. See the discussion of triple quotes in (6) for how to continue a command across multiple line without using "&" characters. </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). </P> <P>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". </P> <P>How the variable is converted to a text string depends on what style of variable it is; see the <A HREF = "variable">variable</A> doc page for details. It can be a variable that stores multiple text strings, and return one of them. The returned text string can be multiple "words" (space separated) which will then be interpreted as multiple arguments in the input command. The variable can also store a numeric formula which will be evaluated and its numeric result returned as a string. </P> <P>As a special case, if the $ is followed by parenthesis, then the text inside the parenthesis is treated as an "immediate" variable and evaluated as an <A HREF = "variable.html">equal-style variable</A>. This is a way to use numeric formulas in an input script without having to assign them to variable names. For example, these 3 input script lines: </P> <PRE>variable X equal (xlo+xhi)/2+sqrt(v_area) region 1 block $X 2 INF INF EDGE EDGE variable X delete </PRE> <P>can be replaced by </P> <PRE>region 1 block $((xlo+xhi)/2+sqrt(v_area)) 2 INF INF EDGE EDGE </PRE> <P>so that you do not have to define (or discard) a temporary variable X. </P> <P>Note that neither the curly-bracket or immediate form of variables can contain nested $ characters for other variables to substitute for. Thus you cannot do this: </P> <PRE>variable a equal 2 variable b2 equal 4 print "B2 = ${b$a}" </PRE> <P>Nor can you specify this $($x-1.0) for an immediate variable, but you could use $(v_x-1.0), since the latter is valid syntax for an <A HREF = "variable.html">equal-style variable</A>. </P> <P>See the <A HREF = "variable.html">variable</A> command for more details of how strings are assigned to variables and evaluated, and how they can be used 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 single or double or triple quotes. A long single argument enclosed in single or double quotes can span multiple lines if the "&" character is used, as described above. When the lines are concatenated together (and the "&" characters and line breaks removed), the text will become a single line. If you want multiple lines of an argument to retain their line breaks, the text can be enclosed in triple quotes, in which case "&" characters are not needed. For example: </P> <PRE>print "Volume = $v" print 'Volume = $v' if "${steps} > 1000" then quit variable a string "red green blue & purple orange cyan" print """ System volume = $v System temperature = $t """ </PRE> <P>In each case, the single, double, or triple quotes are removed when the single argument they enclose is stored internally. </P> <P>See the <A HREF = "dump_modify.html">dump modify format</A>, <A HREF = "print.html">print</A>, <A HREF = "if.html">if</A>, and <A HREF = "python.html">python</A> commands for examples. </P> <P>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 single, double, or triple 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 = "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">Section_example</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 = "cmd_4"></A><H4>3.4 Commands listed by category </H4> <P>This section lists all LAMMPS commands, grouped by category. The <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_dump.html">read_dump</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 = "comm_style.html">comm_style</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 = "dump_image.html">dump movie</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_data.html">write_data</A>, <A HREF = "write_dump.html">write_dump</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 = "change_box.html">change_box</A>, <A HREF = "minimize.html">minimize</A>, <A HREF = "neb.html">neb</A> <A HREF = "prd.html">prd</A>, <A HREF = "rerun.html">rerun</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 = "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 = "#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 = "balance.html">balance</A></TD><TD ><A HREF = "bond_coeff.html">bond_coeff</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "bond_style.html">bond_style</A></TD><TD ><A HREF = "boundary.html">boundary</A></TD><TD ><A HREF = "box.html">box</A></TD><TD ><A HREF = "change_box.html">change_box</A></TD><TD ><A HREF = "clear.html">clear</A></TD><TD ><A HREF = "comm_modify.html">comm_modify</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "comm_style.html">comm_style</A></TD><TD ><A HREF = "compute.html">compute</A></TD><TD ><A HREF = "compute_modify.html">compute_modify</A></TD><TD ><A HREF = "create_atoms.html">create_atoms</A></TD><TD ><A HREF = "create_bonds.html">create_bonds</A></TD><TD ><A HREF = "create_box.html">create_box</A></TD></TR> <TR ALIGN="center"><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><TD ><A HREF = "dihedral_style.html">dihedral_style</A></TD><TD ><A HREF = "dimension.html">dimension</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "displace_atoms.html">displace_atoms</A></TD><TD ><A HREF = "dump.html">dump</A></TD><TD ><A HREF = "dump_image.html">dump image</A></TD><TD ><A HREF = "dump_modify.html">dump_modify</A></TD><TD ><A HREF = "dump_image.html">dump movie</A></TD><TD ><A HREF = "echo.html">echo</A></TD></TR> <TR ALIGN="center"><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><TD ><A HREF = "info.html">info</A></TD><TD ><A HREF = "improper_coeff.html">improper_coeff</A></TD></TR> <TR ALIGN="center"><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><TD ><A HREF = "label.html">label</A></TD></TR> <TR ALIGN="center"><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><TD ><A HREF = "min_style.html">min_style</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "molecule.html">molecule</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 = "partition.html">partition</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "prd.html">prd</A></TD><TD ><A HREF = "print.html">print</A></TD><TD ><A HREF = "processors.html">processors</A></TD><TD ><A HREF = "python.html">python</A></TD><TD ><A HREF = "quit.html">quit</A></TD><TD ><A HREF = "read_data.html">read_data</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "read_dump.html">read_dump</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><TD ><A HREF = "rerun.html">rerun</A></TD><TD ><A HREF = "reset_timestep.html">reset_timestep</A></TD></TR> <TR ALIGN="center"><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><TD ><A HREF = "special_bonds.html">special_bonds</A></TD></TR> <TR ALIGN="center"><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><TD ><A HREF = "thermo_style.html">thermo_style</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "timer.html">timer</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_data.html">write_data</A></TD><TD ><A HREF = "write_dump.html">write_dump</A></TD><TD ><A HREF = "write_restart.html">write_restart</A> </TD></TR></TABLE></DIV> <P>These are additional commands in USER packages, which can be used if <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 = "group2ndx.html">group2ndx</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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <A HREF = "Section_accelerate.html">appropriate accelerated package</A>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. </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 (c)</A></TD><TD ><A HREF = "fix_append_atoms.html">append/atoms</A></TD><TD ><A HREF = "fix_atom_swap.html">atom/swap</A></TD><TD ><A HREF = "fix_aveforce.html">aveforce (c)</A></TD><TD ><A HREF = "fix_ave_atom.html">ave/atom</A></TD><TD ><A HREF = "fix_ave_chunk.html">ave/chunk</A></TD><TD ><A HREF = "fix_ave_correlate.html">ave/correlate</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "fix_ave_histo.html">ave/histo</A></TD><TD ><A HREF = "fix_ave_histo.html">ave/histo/weight</A></TD><TD ><A HREF = "fix_ave_spatial.html">ave/spatial</A></TD><TD ><A HREF = "fix_ave_time.html">ave/time</A></TD><TD ><A HREF = "fix_balance.html">balance</A></TD><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></TR> <TR ALIGN="center"><TD ><A HREF = "fix_box_relax.html">box/relax</A></TD><TD ><A HREF = "fix_deform.html">deform (k)</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><TD ><A HREF = "fix_efield.html">efield</A></TD><TD ><A HREF = "fix_enforce2d.html">enforce2d (c)</A></TD><TD ><A HREF = "fix_evaporate.html">evaporate</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "fix_external.html">external</A></TD><TD ><A HREF = "fix_freeze.html">freeze (c)</A></TD><TD ><A HREF = "fix_gcmc.html">gcmc</A></TD><TD ><A HREF = "fix_gld.html">gld</A></TD><TD ><A HREF = "fix_gravity.html">gravity (co)</A></TD><TD ><A HREF = "fix_heat.html">heat</A></TD><TD ><A HREF = "fix_indent.html">indent</A></TD><TD ><A HREF = "fix_langevin.html">langevin (k)</A></TD></TR> <TR ALIGN="center"><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 (ko)</A></TD><TD ><A HREF = "fix_nphug.html">nphug (o)</A></TD><TD ><A HREF = "fix_nph_asphere.html">nph/asphere (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "fix_nph_sphere.html">nph/sphere (o)</A></TD><TD ><A HREF = "fix_nh.html">npt (cko)</A></TD><TD ><A HREF = "fix_npt_asphere.html">npt/asphere (o)</A></TD><TD ><A HREF = "fix_npt_sphere.html">npt/sphere (o)</A></TD><TD ><A HREF = "fix_nve.html">nve (cko)</A></TD><TD ><A HREF = "fix_nve_asphere.html">nve/asphere</A></TD><TD ><A HREF = "fix_nve_asphere_noforce.html">nve/asphere/noforce</A></TD><TD ><A HREF = "fix_nve_body.html">nve/body</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "fix_nve_limit.html">nve/limit</A></TD><TD ><A HREF = "fix_nve_line.html">nve/line</A></TD><TD ><A HREF = "fix_nve_noforce.html">nve/noforce</A></TD><TD ><A HREF = "fix_nve_sphere.html">nve/sphere (o)</A></TD><TD ><A HREF = "fix_nve_tri.html">nve/tri</A></TD><TD ><A HREF = "fix_nh.html">nvt (cko)</A></TD><TD ><A HREF = "fix_nvt_asphere.html">nvt/asphere (o)</A></TD><TD ><A HREF = "fix_nvt_sllod.html">nvt/sllod (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "fix_nvt_sphere.html">nvt/sphere (o)</A></TD><TD ><A HREF = "fix_oneway.html">oneway</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><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></TR> <TR ALIGN="center"><TD ><A HREF = "fix_property_atom.html">property/atom</A></TD><TD ><A HREF = "fix_qeq_comb.html">qeq/comb (o)</A></TD><TD ><A HREF = "fix_qeq.html">qeq/dynamic</A></TD><TD ><A HREF = "fix_qeq.html">qeq/point</A></TD><TD ><A HREF = "fix_qeq.html">qeq/shielded</A></TD><TD ><A HREF = "fix_qeq.html">qeq/slater</A></TD><TD ><A HREF = "fix_reax_bonds.html">reax/bonds</A></TD><TD ><A HREF = "fix_recenter.html">recenter</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "fix_restrain.html">restrain</A></TD><TD ><A HREF = "fix_rigid.html">rigid (o)</A></TD><TD ><A HREF = "fix_rigid.html">rigid/nph (o)</A></TD><TD ><A HREF = "fix_rigid.html">rigid/npt (o)</A></TD><TD ><A HREF = "fix_rigid.html">rigid/nve (o)</A></TD><TD ><A HREF = "fix_rigid.html">rigid/nvt (o)</A></TD><TD ><A HREF = "fix_rigid.html">rigid/small (o)</A></TD><TD ><A HREF = "fix_rigid.html">rigid/small/nph</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "fix_rigid.html">rigid/small/npt</A></TD><TD ><A HREF = "fix_rigid.html">rigid/small/nve</A></TD><TD ><A HREF = "fix_rigid.html">rigid/small/nvt</A></TD><TD ><A HREF = "fix_setforce.html">setforce (c)</A></TD><TD ><A HREF = "fix_shake.html">shake (c)</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 (c)</A></TD><TD ><A HREF = "fix_temp_csvr.html">temp/csld</A></TD><TD ><A HREF = "fix_temp_csvr.html">temp/csvr</A></TD><TD ><A HREF = "fix_temp_rescale.html">temp/rescale (c)</A></TD><TD ><A HREF = "fix_tfmc.html">tfmc</A></TD></TR> <TR ALIGN="center"><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_tune_kspace.html">tune/kspace</A></TD><TD ><A HREF = "fix_vector.html">vector</A></TD><TD ><A HREF = "fix_viscosity.html">viscosity</A></TD><TD ><A HREF = "fix_viscous.html">viscous (c)</A></TD><TD ><A HREF = "fix_wall.html">wall/colloid</A></TD></TR> <TR ALIGN="center"><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/lj1043</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_piston.html">wall/piston</A></TD><TD ><A HREF = "fix_wall_reflect.html">wall/reflect (k)</A></TD><TD ><A HREF = "fix_wall_region.html">wall/region</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "fix_wall_srd.html">wall/srd</A> </TD></TR></TABLE></DIV> <P>These are additional fix styles in USER packages, which can be used if <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_adapt_fep.html">adapt/fep</A></TD><TD ><A HREF = "fix_addtorque.html">addtorque</A></TD><TD ><A HREF = "fix_atc.html">atc</A></TD><TD ><A HREF = "fix_ave_spatial_sphere.html">ave/spatial/sphere</A></TD><TD ><A HREF = "fix_drude.html">drude</A></TD><TD ><A HREF = "fix_drude_transform.html">drude/transform/direct</A></TD></TR> -<TR ALIGN="center"><TD ><A HREF = "fix_drude_transform.html">drude/transform/reverse</A></TD><TD ><A HREF = "fix_colvars.html">colvars</A></TD><TD ><A HREF = "fix_gle.html">gle</A></TD><TD ><A HREF = "fix_imd.html">imd</A></TD><TD ><A HREF = "fix_ipi.html">ipi</A></TD><TD ><A HREF = "fix_langevin_drude.html">langevin/drude</A></TD></TR> -<TR ALIGN="center"><TD ><A HREF = "fix_langevin_eff.html">langevin/eff</A></TD><TD ><A HREF = "fix_lb_fluid.html">lb/fluid</A></TD><TD ><A HREF = "fix_lb_momentum.html">lb/momentum</A></TD><TD ><A HREF = "fix_lb_pc.html">lb/pc</A></TD><TD ><A HREF = "fix_lb_rigid_pc_sphere.html">lb/rigid/pc/sphere</A></TD><TD ><A HREF = "fix_lb_viscous.html">lb/viscous</A></TD></TR> -<TR ALIGN="center"><TD ><A HREF = "fix_meso.html">meso</A></TD><TD ><A HREF = "fix_meso_stationary.html">meso/stationary</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><TD ><A HREF = "fix_nh_eff.html">nvt/eff</A></TD></TR> -<TR ALIGN="center"><TD ><A HREF = "fix_nvt_sllod_eff.html">nvt/sllod/eff</A></TD><TD ><A HREF = "fix_phonon.html">phonon</A></TD><TD ><A HREF = "fix_pimd.html">pimd</A></TD><TD ><A HREF = "fix_qbmsst.html">qbmsst</A></TD><TD ><A HREF = "fix_qeq_reax.html">qeq/reax</A></TD><TD ><A HREF = "fix_qmmm.html">qmmm</A></TD></TR> -<TR ALIGN="center"><TD ><A HREF = "fix_qtb.html">qtb</A></TD><TD ><A HREF = "fix_reax_bonds.html">reax/c/bonds</A></TD><TD ><A HREF = "fix_reaxc_species.html">reax/c/species</A></TD><TD ><A HREF = "fix_saed_vtk.html">saed/vtk</A></TD><TD ><A HREF = "fix_smd.html">smd</A></TD><TD ><A HREF = "fix_smd_adjust_dt.html">smd/adjust/dt</A></TD></TR> -<TR ALIGN="center"><TD ><A HREF = "fix_smd_integrate_tlsph.html">smd/integrate/tlsph</A></TD><TD ><A HREF = "fix_smd_integrate_ulsph.html">smd/integrate/ulsph</A></TD><TD ><A HREF = "fix_smd_move_triangulated_surface.html">smd/move/triangulated/surface</A></TD><TD ><A HREF = "fix_smd_setvel.html">smd/setvel</A></TD><TD ><A HREF = "fix_smd_tlsph_reference_configuration.html">smd/tlsph/reference/configuration</A></TD><TD ><A HREF = "fix_smd_wall_surface.html">smd/wall/surface</A></TD></TR> -<TR ALIGN="center"><TD ><A HREF = "fix_temp_rescale_eff.html">temp/rescale/eff</A></TD><TD ><A HREF = "fix_ti_rs.html">ti/rs</A></TD><TD ><A HREF = "fix_ti_spring.html">ti/spring</A></TD><TD ><A HREF = "fix_ttm.html">ttm/mod</A> +<TR ALIGN="center"><TD ><A HREF = "fix_adapt_fep.html">adapt/fep</A></TD><TD ><A HREF = "fix_addtorque.html">addtorque</A></TD><TD ><A HREF = "fix_atc.html">atc</A></TD><TD ><A HREF = "fix_ave_correlate_long.html">ave/correlate/long</A></TD><TD ><A HREF = "fix_ave_spatial_sphere.html">ave/spatial/sphere</A></TD><TD ><A HREF = "fix_drude.html">drude</A></TD></TR> +<TR ALIGN="center"><TD ><A HREF = "fix_drude_transform.html">drude/transform/direct</A></TD><TD ><A HREF = "fix_drude_transform.html">drude/transform/reverse</A></TD><TD ><A HREF = "fix_colvars.html">colvars</A></TD><TD ><A HREF = "fix_gle.html">gle</A></TD><TD ><A HREF = "fix_imd.html">imd</A></TD><TD ><A HREF = "fix_ipi.html">ipi</A></TD></TR> +<TR ALIGN="center"><TD ><A HREF = "fix_langevin_drude.html">langevin/drude</A></TD><TD ><A HREF = "fix_langevin_eff.html">langevin/eff</A></TD><TD ><A HREF = "fix_lb_fluid.html">lb/fluid</A></TD><TD ><A HREF = "fix_lb_momentum.html">lb/momentum</A></TD><TD ><A HREF = "fix_lb_pc.html">lb/pc</A></TD><TD ><A HREF = "fix_lb_rigid_pc_sphere.html">lb/rigid/pc/sphere</A></TD></TR> +<TR ALIGN="center"><TD ><A HREF = "fix_lb_viscous.html">lb/viscous</A></TD><TD ><A HREF = "fix_meso.html">meso</A></TD><TD ><A HREF = "fix_meso_stationary.html">meso/stationary</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_phonon.html">phonon</A></TD><TD ><A HREF = "fix_pimd.html">pimd</A></TD><TD ><A HREF = "fix_qbmsst.html">qbmsst</A></TD><TD ><A HREF = "fix_qeq_reax.html">qeq/reax</A></TD></TR> +<TR ALIGN="center"><TD ><A HREF = "fix_qmmm.html">qmmm</A></TD><TD ><A HREF = "fix_qtb.html">qtb</A></TD><TD ><A HREF = "fix_reax_bonds.html">reax/c/bonds</A></TD><TD ><A HREF = "fix_reaxc_species.html">reax/c/species</A></TD><TD ><A HREF = "fix_saed_vtk.html">saed/vtk</A></TD><TD ><A HREF = "fix_smd.html">smd</A></TD></TR> +<TR ALIGN="center"><TD ><A HREF = "fix_smd_adjust_dt.html">smd/adjust/dt</A></TD><TD ><A HREF = "fix_smd_integrate_tlsph.html">smd/integrate/tlsph</A></TD><TD ><A HREF = "fix_smd_integrate_ulsph.html">smd/integrate/ulsph</A></TD><TD ><A HREF = "fix_smd_move_triangulated_surface.html">smd/move/triangulated/surface</A></TD><TD ><A HREF = "fix_smd_setvel.html">smd/setvel</A></TD><TD ><A HREF = "fix_smd_tlsph_reference_configuration.html">smd/tlsph/reference/configuration</A></TD></TR> +<TR ALIGN="center"><TD ><A HREF = "fix_smd_wall_surface.html">smd/wall/surface</A></TD><TD ><A HREF = "fix_temp_rescale_eff.html">temp/rescale/eff</A></TD><TD ><A HREF = "fix_ti_rs.html">ti/rs</A></TD><TD ><A HREF = "fix_ti_spring.html">ti/spring</A></TD><TD ><A HREF = "fix_ttm.html">ttm/mod</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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <A HREF = "Section_accelerate.html">appropriate accelerated package</A>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. </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_angmom_chunk.html">angmom/chunk</A></TD><TD ><A HREF = "compute_body_local.html">body/local</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_chunk_atom.html">chunk/atom</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_cluster_atom.html">cluster/atom</A></TD><TD ><A HREF = "compute_cna_atom.html">cna/atom</A></TD><TD ><A HREF = "compute_com.html">com</A></TD><TD ><A HREF = "compute_com_chunk.html">com/chunk</A></TD><TD ><A HREF = "compute_contact_atom.html">contact/atom</A></TD><TD ><A HREF = "compute_coord_atom.html">coord/atom</A></TD></TR> <TR ALIGN="center"><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_dilatation_atom.html">dilatation/atom</A></TD><TD ><A HREF = "compute_displace_atom.html">displace/atom</A></TD><TD ><A HREF = "compute_erotate_asphere.html">erotate/asphere</A></TD><TD ><A HREF = "compute_erotate_rigid.html">erotate/rigid</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_erotate_sphere.html">erotate/sphere</A></TD><TD ><A HREF = "compute_erotate_sphere_atom.html">erotate/sphere/atom</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_chunk.html">gyration/chunk</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_inertia_chunk.html">inertia/chunk</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_ke_rigid.html">ke/rigid</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_msd.html">msd</A></TD><TD ><A HREF = "compute_msd_chunk.html">msd/chunk</A></TD><TD ><A HREF = "compute_msd_nongauss.html">msd/nongauss</A></TD><TD ><A HREF = "compute_omega_chunk.html">omega/chunk</A></TD><TD ><A HREF = "compute_pair.html">pair</A></TD><TD ><A HREF = "compute_pair_local.html">pair/local</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_pe.html">pe (c)</A></TD><TD ><A HREF = "compute_pe_atom.html">pe/atom</A></TD><TD ><A HREF = "compute_plasticity_atom.html">plasticity/atom</A></TD><TD ><A HREF = "compute_pressure.html">pressure (c)</A></TD><TD ><A HREF = "compute_property_atom.html">property/atom</A></TD><TD ><A HREF = "compute_property_local.html">property/local</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_property_chunk.html">property/chunk</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><TD ><A HREF = "compute_sna_atom.html">sna/atom</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_sna_atom.html">snad/atom</A></TD><TD ><A HREF = "compute_sna_atom.html">snav/atom</A></TD><TD ><A HREF = "compute_stress_atom.html">stress/atom</A></TD><TD ><A HREF = "compute_temp.html">temp (ck)</A></TD><TD ><A HREF = "compute_temp_asphere.html">temp/asphere</A></TD><TD ><A HREF = "compute_temp_com.html">temp/com</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_temp_chunk.html">temp/chunk</A></TD><TD ><A HREF = "compute_temp_deform.html">temp/deform</A></TD><TD ><A HREF = "compute_temp_partial.html">temp/partial (c)</A></TD><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></TR> <TR ALIGN="center"><TD ><A HREF = "compute_temp_sphere.html">temp/sphere</A></TD><TD ><A HREF = "compute_ti.html">ti</A></TD><TD ><A HREF = "compute_torque_chunk.html">torque/chunk</A></TD><TD ><A HREF = "compute_vacf.html">vacf</A></TD><TD ><A HREF = "compute_vcm_chunk.html">vcm/chunk</A></TD><TD ><A HREF = "compute_voronoi_atom.html">voronoi/atom</A> </TD></TR></TABLE></DIV> <P>These are additional compute styles in USER packages, which can be used if <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_basal_atom.html">basal/atom</A></TD><TD ><A HREF = "compute_fep.html">fep</A></TD><TD ><A HREF = "compute_tally.html">force/tally</A></TD><TD ><A HREF = "compute_tally.html">heat/flux/tally</A></TD><TD ><A HREF = "compute_ke_eff.html">ke/eff</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_ke_atom_eff.html">ke/atom/eff</A></TD><TD ><A HREF = "compute_meso_e_atom.html">meso_e/atom</A></TD><TD ><A HREF = "compute_meso_rho_atom.html">meso_rho/atom</A></TD><TD ><A HREF = "compute_meso_t_atom.html">meso_t/atom</A></TD><TD ><A HREF = "compute_tally.html">pe/tally</A></TD><TD ><A HREF = "compute_saed.html">saed</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_smd_contact_radius.html">smd/contact/radius</A></TD><TD ><A HREF = "compute_smd_damage.html">smd/damage</A></TD><TD ><A HREF = "compute_smd_hourglass_error.html">smd/hourglass/error</A></TD><TD ><A HREF = "compute_smd_internal_energy.html">smd/internal/energy</A></TD><TD ><A HREF = "compute_smd_plastic_strain.html">smd/plastic/strain</A></TD><TD ><A HREF = "compute_smd_plastic_strain_rate.html">smd/plastic/strain/rate</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_smd_rho.html">smd/rho</A></TD><TD ><A HREF = "compute_smd_tlsph_defgrad.html">smd/tlsph/defgrad</A></TD><TD ><A HREF = "compute_smd_tlsph_dt.html">smd/tlsph/dt</A></TD><TD ><A HREF = "compute_smd_tlsph_num_neighs.html">smd/tlsph/num/neighs</A></TD><TD ><A HREF = "compute_smd_tlsph_shape.html">smd/tlsph/shape</A></TD><TD ><A HREF = "compute_smd_tlsph_strain.html">smd/tlsph/strain</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_smd_tlsph_strain_rate.html">smd/tlsph/strain/rate</A></TD><TD ><A HREF = "compute_smd_tlsph_stress.html">smd/tlsph/stress</A></TD><TD ><A HREF = "compute_smd_triangle_mesh_vertices.html">smd/triangle/mesh/vertices</A></TD><TD ><A HREF = "compute_smd_ulsph_num_neighs.html">smd/ulsph/num/neighs</A></TD><TD ><A HREF = "compute_smd_ulsph_strain.html">smd/ulsph/strain</A></TD><TD ><A HREF = "compute_smd_ulsph_strain_rate.html">smd/ulsph/strain/rate</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "compute_smd_ulsph_stress.html">smd/ulsph/stress</A></TD><TD ><A HREF = "compute_smd_vol.html">smd/vol</A></TD><TD ><A HREF = "compute_tally.html">stress/tally</A></TD><TD ><A HREF = "compute_temp_drude.html">temp/drude</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></TR> <TR ALIGN="center"><TD ><A HREF = "compute_temp_region_eff.html">temp/region/eff</A></TD><TD ><A HREF = "compute_temp_rotate.html">temp/rotate</A></TD><TD ><A HREF = "compute_xrd.html">xrd</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. Many of the styles have accelerated versions, which can be used if LAMMPS is built with the <A HREF = "Section_accelerate.html">appropriate accelerated package</A>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. </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 (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_airebo.html">airebo (o)</A></TD><TD ><A HREF = "pair_beck.html">beck (go)</A></TD><TD ><A HREF = "pair_body.html">body</A></TD><TD ><A HREF = "pair_bop.html">bop</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_born.html">born (go)</A></TD><TD ><A HREF = "pair_born.html">born/coul/long (cgo)</A></TD><TD ><A HREF = "pair_born.html">born/coul/long/cs</A></TD><TD ><A HREF = "pair_born.html">born/coul/msm (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_born.html">born/coul/wolf (go)</A></TD><TD ><A HREF = "pair_brownian.html">brownian (o)</A></TD><TD ><A HREF = "pair_brownian.html">brownian/poly (o)</A></TD><TD ><A HREF = "pair_buck.html">buck (cgko)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_buck.html">buck/coul/cut (cgko)</A></TD><TD ><A HREF = "pair_buck.html">buck/coul/long (cgko)</A></TD><TD ><A HREF = "pair_buck.html">buck/coul/long/cs</A></TD><TD ><A HREF = "pair_buck.html">buck/coul/msm (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_buck_long.html">buck/long/coul/long (o)</A></TD><TD ><A HREF = "pair_colloid.html">colloid (go)</A></TD><TD ><A HREF = "pair_comb.html">comb (o)</A></TD><TD ><A HREF = "pair_comb.html">comb3</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_coul.html">coul/cut (gko)</A></TD><TD ><A HREF = "pair_coul.html">coul/debye (gko)</A></TD><TD ><A HREF = "pair_coul.html">coul/dsf (gko)</A></TD><TD ><A HREF = "pair_coul.html">coul/long (gko)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_coul.html">coul/long/cs</A></TD><TD ><A HREF = "pair_coul.html">coul/msm</A></TD><TD ><A HREF = "pair_coul.html">coul/streitz</A></TD><TD ><A HREF = "pair_coul.html">coul/wolf (ko)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_dpd.html">dpd (o)</A></TD><TD ><A HREF = "pair_dpd.html">dpd/tstat (o)</A></TD><TD ><A HREF = "pair_dsmc.html">dsmc</A></TD><TD ><A HREF = "pair_eam.html">eam (cgkot)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_eam.html">eam/alloy (cgkot)</A></TD><TD ><A HREF = "pair_eam.html">eam/fs (cgkot)</A></TD><TD ><A HREF = "pair_eim.html">eim (o)</A></TD><TD ><A HREF = "pair_gauss.html">gauss (go)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_gayberne.html">gayberne (gio)</A></TD><TD ><A HREF = "pair_gran.html">gran/hertz/history (o)</A></TD><TD ><A HREF = "pair_gran.html">gran/hooke (co)</A></TD><TD ><A HREF = "pair_gran.html">gran/hooke/history (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_hbond_dreiding.html">hbond/dreiding/lj (o)</A></TD><TD ><A HREF = "pair_hbond_dreiding.html">hbond/dreiding/morse (o)</A></TD><TD ><A HREF = "pair_kim.html">kim</A></TD><TD ><A HREF = "pair_lcbop.html">lcbop</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_line_lj.html">line/lj (o)</A></TD><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/charmm (cko)</A></TD><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/charmm/implicit (cko)</A></TD><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/long (cgiko)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/msm</A></TD><TD ><A HREF = "pair_class2.html">lj/class2 (cgko)</A></TD><TD ><A HREF = "pair_class2.html">lj/class2/coul/cut (cko)</A></TD><TD ><A HREF = "pair_class2.html">lj/class2/coul/long (cgko)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_lj_cubic.html">lj/cubic (go)</A></TD><TD ><A HREF = "pair_lj.html">lj/cut (cgikot)</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/cut (cgko)</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/debye (cgko)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_lj.html">lj/cut/coul/dsf (gko)</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/long (cgikot)</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/long/cs</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/coul/msm (go)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_dipole.html">lj/cut/dipole/cut (go)</A></TD><TD ><A HREF = "pair_dipole.html">lj/cut/dipole/long</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/tip4p/cut (o)</A></TD><TD ><A HREF = "pair_lj.html">lj/cut/tip4p/long (ot)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_lj_expand.html">lj/expand (cgko)</A></TD><TD ><A HREF = "pair_gromacs.html">lj/gromacs (cgko)</A></TD><TD ><A HREF = "pair_gromacs.html">lj/gromacs/coul/gromacs (cko)</A></TD><TD ><A HREF = "pair_lj_long.html">lj/long/coul/long (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_dipole.html">lj/long/dipole/long</A></TD><TD ><A HREF = "pair_lj_long.html">lj/long/tip4p/long</A></TD><TD ><A HREF = "pair_lj_smooth.html">lj/smooth (co)</A></TD><TD ><A HREF = "pair_lj_smooth_linear.html">lj/smooth/linear (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_lj96.html">lj96/cut (cgo)</A></TD><TD ><A HREF = "pair_lubricate.html">lubricate (o)</A></TD><TD ><A HREF = "pair_lubricate.html">lubricate/poly (o)</A></TD><TD ><A HREF = "pair_lubricateU.html">lubricateU</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_lubricateU.html">lubricateU/poly</A></TD><TD ><A HREF = "pair_meam.html">meam (o)</A></TD><TD ><A HREF = "pair_mie.html">mie/cut (o)</A></TD><TD ><A HREF = "pair_morse.html">morse (cgot)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_nb3b_harmonic.html">nb3b/harmonic (o)</A></TD><TD ><A HREF = "pair_nm.html">nm/cut (o)</A></TD><TD ><A HREF = "pair_nm.html">nm/cut/coul/cut (o)</A></TD><TD ><A HREF = "pair_nm.html">nm/cut/coul/long (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_peri.html">peri/eps</A></TD><TD ><A HREF = "pair_peri.html">peri/lps (o)</A></TD><TD ><A HREF = "pair_peri.html">peri/pmb (o)</A></TD><TD ><A HREF = "pair_peri.html">peri/ves</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_polymorphic.html">polymorphic</A></TD><TD ><A HREF = "pair_reax.html">reax</A></TD><TD ><A HREF = "pair_airebo.html">rebo (o)</A></TD><TD ><A HREF = "pair_resquared.html">resquared (go)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_snap.html">snap</A></TD><TD ><A HREF = "pair_soft.html">soft (go)</A></TD><TD ><A HREF = "pair_sw.html">sw (cgkio)</A></TD><TD ><A HREF = "pair_table.html">table (gko)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_tersoff.html">tersoff (cgko)</A></TD><TD ><A HREF = "pair_tersoff_mod.html">tersoff/mod (ko)</A></TD><TD ><A HREF = "pair_tersoff_zbl.html">tersoff/zbl (ko)</A></TD><TD ><A HREF = "pair_coul.html">tip4p/cut (o)</A></TD></TR> -<TR ALIGN="center"><TD ><A HREF = "pair_coul.html">tip4p/long (o)</A></TD><TD ><A HREF = "pair_tri_lj.html">tri/lj (o)</A></TD><TD ><A HREF = "pair_yukawa.html">yukawa (go)</A></TD><TD ><A HREF = "pair_yukawa_colloid.html">yukawa/colloid (go)</A></TD></TR> -<TR ALIGN="center"><TD ><A HREF = "pair_zbl.html">zbl (go)</A> +<TR ALIGN="center"><TD ><A HREF = "pair_coul.html">tip4p/long (o)</A></TD><TD ><A HREF = "pair_tri_lj.html">tri/lj (o)</A></TD><TD ><A HREF = "pair_vashishta.html">vashishta (o)</A></TD><TD ><A HREF = "pair_yukawa.html">yukawa (go)</A></TD></TR> +<TR ALIGN="center"><TD ><A HREF = "pair_yukawa_colloid.html">yukawa/colloid (go)</A></TD><TD ><A HREF = "pair_zbl.html">zbl (go)</A> </TD></TR></TABLE></DIV> <P>These are additional pair styles in USER packages, which can be used if <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_lj_soft.html">coul/cut/soft (o)</A></TD><TD ><A HREF = "pair_coul_diel.html">coul/diel (o)</A></TD><TD ><A HREF = "pair_lj_soft.html">coul/long/soft (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_eam.html">eam/cd (o)</A></TD><TD ><A HREF = "pair_edip.html">edip (o)</A></TD><TD ><A HREF = "pair_eff.html">eff/cut</A></TD><TD ><A HREF = "pair_gauss.html">gauss/cut</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_list.html">list</A></TD><TD ><A HREF = "pair_charmm.html">lj/charmm/coul/long/soft (o)</A></TD><TD ><A HREF = "pair_lj_soft.html">lj/cut/coul/cut/soft (o)</A></TD><TD ><A HREF = "pair_lj_soft.html">lj/cut/coul/long/soft (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_dipole.html">lj/cut/dipole/sf (go)</A></TD><TD ><A HREF = "pair_lj_soft.html">lj/cut/soft (o)</A></TD><TD ><A HREF = "pair_lj_soft.html">lj/cut/tip4p/long/soft (o)</A></TD><TD ><A HREF = "pair_sdk.html">lj/sdk (gko)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_sdk.html">lj/sdk/coul/long (go)</A></TD><TD ><A HREF = "pair_sdk.html">lj/sdk/coul/msm (o)</A></TD><TD ><A HREF = "pair_lj_sf.html">lj/sf (o)</A></TD><TD ><A HREF = "pair_meam_spline.html">meam/spline</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_meam_sw_spline.html">meam/sw/spline</A></TD><TD ><A HREF = "pair_quip.html">quip</A></TD><TD ><A HREF = "pair_reax_c.html">reax/c</A></TD><TD ><A HREF = "pair_smd_hertz.html">smd/hertz</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_smd_tlsph.html">smd/tlsph</A></TD><TD ><A HREF = "pair_smd_triangulated_surface.html">smd/triangulated/surface</A></TD><TD ><A HREF = "pair_smd_ulsph.html">smd/ulsph</A></TD><TD ><A HREF = "pair_sph_heatconduction.html">sph/heatconduction</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_sph_idealgas.html">sph/idealgas</A></TD><TD ><A HREF = "pair_sph_lj.html">sph/lj</A></TD><TD ><A HREF = "pair_sph_rhosum.html">sph/rhosum</A></TD><TD ><A HREF = "pair_sph_taitwater.html">sph/taitwater</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_sph_taitwater_morris.html">sph/taitwater/morris</A></TD><TD ><A HREF = "pair_srp.html">srp</A></TD><TD ><A HREF = "pair_tersoff.html">tersoff/table (o)</A></TD><TD ><A HREF = "pair_thole.html">thole</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "pair_lj_soft.html">tip4p/long/soft (o)</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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <A HREF = "Section_accelerate.html">appropriate accelerated package</A>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. </P> <DIV ALIGN=center><TABLE BORDER=1 > <TR ALIGN="center"><TD ><A HREF = "bond_none.html">none</A></TD><TD ><A HREF = "bond_hybrid.html">hybrid</A></TD><TD ><A HREF = "bond_class2.html">class2 (o)</A></TD><TD ><A HREF = "bond_fene.html">fene (ko)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "bond_fene_expand.html">fene/expand (o)</A></TD><TD ><A HREF = "bond_harmonic.html">harmonic (ko)</A></TD><TD ><A HREF = "bond_morse.html">morse (o)</A></TD><TD ><A HREF = "bond_nonlinear.html">nonlinear (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "bond_quartic.html">quartic (o)</A></TD><TD ><A HREF = "bond_table.html">table (o)</A> </TD></TR></TABLE></DIV> <P>These are additional bond styles in USER packages, which can be used if <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 (o)</A></TD><TD ><A HREF = "bond_harmonic_shift_cut.html">harmonic/shift/cut (o)</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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <A HREF = "Section_accelerate.html">appropriate accelerated package</A>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. </P> <DIV ALIGN=center><TABLE BORDER=1 > <TR ALIGN="center"><TD ><A HREF = "angle_none.html">none</A></TD><TD ><A HREF = "angle_hybrid.html">hybrid</A></TD><TD ><A HREF = "angle_charmm.html">charmm (ko)</A></TD><TD ><A HREF = "angle_class2.html">class2 (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "angle_cosine.html">cosine (o)</A></TD><TD ><A HREF = "angle_cosine_delta.html">cosine/delta (o)</A></TD><TD ><A HREF = "angle_cosine_periodic.html">cosine/periodic (o)</A></TD><TD ><A HREF = "angle_cosine_squared.html">cosine/squared (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "angle_harmonic.html">harmonic (ko)</A></TD><TD ><A HREF = "angle_table.html">table (o)</A> </TD></TR></TABLE></DIV> <P>These are additional angle styles in USER packages, which can be used if <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_cosine_shift.html">cosine/shift (o)</A></TD><TD ><A HREF = "angle_cosine_shift_exp.html">cosine/shift/exp (o)</A></TD><TD ><A HREF = "angle_dipole.html">dipole (o)</A></TD><TD ><A HREF = "angle_fourier.html">fourier (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "angle_fourier_simple.html">fourier/simple (o)</A></TD><TD ><A HREF = "angle_quartic.html">quartic (o)</A></TD><TD ><A HREF = "angle_sdk.html">sdk</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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <A HREF = "Section_accelerate.html">appropriate accelerated package</A>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. </P> <DIV ALIGN=center><TABLE BORDER=1 > <TR ALIGN="center"><TD ><A HREF = "dihedral_none.html">none</A></TD><TD ><A HREF = "dihedral_hybrid.html">hybrid</A></TD><TD ><A HREF = "dihedral_charmm.html">charmm (ko)</A></TD><TD ><A HREF = "dihedral_class2.html">class2 (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "dihedral_harmonic.html">harmonic (o)</A></TD><TD ><A HREF = "dihedral_helix.html">helix (o)</A></TD><TD ><A HREF = "dihedral_multi_harmonic.html">multi/harmonic (o)</A></TD><TD ><A HREF = "dihedral_opls.html">opls (ko)</A> </TD></TR></TABLE></DIV> <P>These are additional dihedral styles in USER packages, which can be used if <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 (o)</A></TD><TD ><A HREF = "dihedral_fourier.html">fourier (o)</A></TD><TD ><A HREF = "dihedral_nharmonic.html">nharmonic (o)</A></TD><TD ><A HREF = "dihedral_quadratic.html">quadratic (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "dihedral_table.html">table (o)</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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <A HREF = "Section_accelerate.html">appropriate accelerated package</A>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. </P> <DIV ALIGN=center><TABLE BORDER=1 > <TR ALIGN="center"><TD ><A HREF = "improper_none.html">none</A></TD><TD ><A HREF = "improper_hybrid.html">hybrid</A></TD><TD ><A HREF = "improper_class2.html">class2 (o)</A></TD><TD ><A HREF = "improper_cvff.html">cvff (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "improper_harmonic.html">harmonic (ko)</A></TD><TD ><A HREF = "improper_umbrella.html">umbrella (o)</A> </TD></TR></TABLE></DIV> <P>These are additional improper styles in USER packages, which can be used if <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 = "improper_cossq.html">cossq (o)</A></TD><TD ><A HREF = "improper_fourier.html">fourier (o)</A></TD><TD ><A HREF = "improper_ring.html">ring (o)</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. Some of the styles have accelerated versions, which can be used if LAMMPS is built with the <A HREF = "Section_accelerate.html">appropriate accelerated package</A>. This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. </P> <DIV ALIGN=center><TABLE BORDER=1 > <TR ALIGN="center"><TD ><A HREF = "kspace_style.html">ewald (o)</A></TD><TD ><A HREF = "kspace_style.html">ewald/disp</A></TD><TD ><A HREF = "kspace_style.html">msm (o)</A></TD><TD ><A HREF = "kspace_style.html">msm/cg (o)</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "kspace_style.html">pppm (cgo)</A></TD><TD ><A HREF = "kspace_style.html">pppm/cg (o)</A></TD><TD ><A HREF = "kspace_style.html">pppm/disp</A></TD><TD ><A HREF = "kspace_style.html">pppm/disp/tip4p</A></TD></TR> <TR ALIGN="center"><TD ><A HREF = "kspace_style.html">pppm/tip4p (o)</A> </TD></TR></TABLE></DIV> </HTML> diff --git a/doc/doc2/Section_example.html b/doc/doc2/Section_example.html index 438e23780..e8b392a12 100644 --- a/doc/doc2/Section_example.html +++ b/doc/doc2/Section_example.html @@ -1,126 +1,132 @@ <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>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>For examples that use input data files, many of them were produced by <A HREF = "http://pizza.sandia.gov">Pizza.py</A> or setup tools described in the <A HREF = "Section_tools.html">Additional Tools</A> section of the LAMMPS documentation and provided with the LAMMPS distribution. </P> <P>If you uncomment the <A HREF = "dump.html">dump</A> command in the input script, a text dump file will be produced, which can be animated by various <A HREF = "http://lammps.sandia.gov/viz.html">visualization programs</A>. It can also be animated using the xmovie tool described in the <A HREF = "Section_tools.html">Additional Tools</A> section of the LAMMPS documentation. </P> <P>If you uncomment the <A HREF = "dump.html">dump image</A> command in the input script, and assuming you have built LAMMPS with a JPG library, JPG snapshot images will be produced when the simulation runs. They can be quickly post-processed into a movie using commands described on the <A HREF = "dump_image.html">dump image</A> doc page. </P> <P>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 >balance</TD><TD > dynamic load balancing, 2d system</TD></TR> <TR><TD >body</TD><TD > body particles, 2d system</TD></TR> <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 >cuda</TD><TD > use of the USER-CUDA package for GPU acceleration</TD></TR> <TR><TD >dipole</TD><TD > point dipolar particles, 2d system</TD></TR> <TR><TD >dreiding</TD><TD > methanol via Dreiding FF</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 >gpu</TD><TD > use of the GPU package for GPU acceleration</TD></TR> <TR><TD >hugoniostat</TD><TD > Hugoniostat shock dynamics</TD></TR> <TR><TD >indent</TD><TD > spherical indenter into a 2d solid</TD></TR> <TR><TD >intel</TD><TD > use of the USER-INTEL package for CPU or Intel(R) Xeon Phi(TM) coprocessor</TD></TR> <TR><TD >kim</TD><TD > use of potentials in Knowledge Base for Interatomic Models (KIM)</TD></TR> <TR><TD >line</TD><TD > line segment particles in 2d rigid bodies</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 >nb3b</TD><TD > use of nonbonded 3-body harmonic pair style</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 vacancy diffusion in bulk Si</TD></TR> <TR><TD >qeq</TD><TD > use of the QEQ pacakge for charge equilibration</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 >snap</TD><TD > NVE dynamics for BCC tantalum crystal using SNAP potential</TD></TR> <TR><TD >srd</TD><TD > stochastic rotation dynamics (SRD) particles as solvent</TD></TR> <TR><TD >tad</TD><TD > temperature-accelerated dynamics of vacancy diffusion in bulk Si</TD></TR> <TR><TD >tri</TD><TD > triangular particles in rigid bodies </TD></TR></TABLE></DIV> +<P>vashishta: models using the Vashishta potential +</P> <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 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> <P>If you uncomment the <A HREF = "dump_image.html">dump image</A> line(s) in the input script a series of JPG images will be produced by the run. These can be viewed individually or turned into a movie or animated by tools like ImageMagick or QuickTime or various Windows-based tools. See the <A HREF = "dump_image.html">dump image</A> doc page for more details. E.g. this Imagemagick command would create a GIF file suitable for viewing in a browser. </P> <PRE>% convert -loop 1 *.jpg foo.gif </PRE> <HR> <P>There is also a COUPLE directory with examples of how to use LAMMPS as a library, either by itself or in tandem with another code or library. See the COUPLE/README file to get started. </P> <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. +computing elastic constants at zero temperature, using an Si example. See +the ELASTIC/in.elastic file for more info. +</P> +<P>There is also an ELASTIC_T directory with an example script for +computing elastic constants at finite temperature, using an Si example. See +the ELASTIC_T/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 <A HREF = "Section_start.html">Section_start.html</A> file for more info about user packages. </P> </HTML> diff --git a/doc/doc2/Section_howto.html b/doc/doc2/Section_howto.html index 4991250bc..4aa8cabb6 100644 --- a/doc/doc2/Section_howto.html +++ b/doc/doc2/Section_howto.html @@ -1,2821 +1,2840 @@ <HTML> <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>6. How-to discussions </H3> <P>This section describes how to perform common tasks using LAMMPS. </P> 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">Finite-size 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> 6.22 <A HREF = "#howto_22">Calculating a diffusion coefficient</A><BR> 6.23 <A HREF = "#howto_23">Using chunks to calculate system properties</A><BR> 6.24 <A HREF = "#howto_24">Setting parameters for the kspace_style pppm/disp command</A><BR> 6.25 <A HREF = "#howto_25">Polarizable models</A><BR> 6.26 <A HREF = "#howto_26">Adiabatic core/shell model</A><BR> 6.27 <A HREF = "#howto_27">Drude induced dipoles</A> <BR> <P>The example input scripts included in the LAMMPS distribution and highlighted in <A HREF = "Section_example.html">Section_example</A> also show how to setup and run various kinds of simulations. </P> <HR> <HR> <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 using the <A HREF = "Section_start.html#start_7">-r command-line switch</A> and read by a <A HREF = "read_data.html">read_data</A> command in a new script. </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 as follows: </P> <PRE>lmp_g++ -r 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 = "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 finite-size 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 = "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">Section_tools</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 = "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 clear 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#start_7">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 = "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 <LI><A HREF = "fix_pimd.html">fix pimd</A> for path-integral molecular dynamics (PIMD) </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 commands can only be used if LAMMPS was built with the REPLICA package. See the <A HREF = "Section_start.html#start_3">Making LAMMPS</A> section for more info on packages. </P> <P>PIMD runs different replicas whose individual particles are coupled together by springs to model a system or ring-polymers. </P> <P>This commands can only be used if LAMMPS was built with the USER-MISC 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#start_7">-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#start_7">-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 = "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#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 = "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> O charge = -0.834<BR> H charge = 0.417<BR> 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> K of OH bond = 450<BR> r0 of OH bond = 0.9572<BR> 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 (e.g. 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> O charge = -0.830<BR> H charge = 0.415<BR> LJ epsilon of OO = 0.102<BR> LJ sigma of OO = 3.188<BR> LJ epsilon, sigma of OH, HH = 0.0<BR> K of OH bond = 450<BR> r0 of OH bond = 0.9572<BR> 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 = "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>A TIP4P model is run with LAMMPS using either this command for a cutoff model: </P> <P><A HREF = "pair_lj.html">pair_style lj/cut/tip4p/cut</A> </P> <P>or these two commands for a long-range model: </P> <UL><LI><A HREF = "pair_lj.html">pair_style lj/cut/tip4p/long</A> <LI><A HREF = "kspace_style.html">kspace_style pppm/tip4p</A> </UL> <P>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> O charge = -1.040<BR> H charge = 0.520<BR> r0 of OH bond = 0.9572<BR> theta of HOH angle = 104.52 <BR> OM distance = 0.15<BR> 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> Coulombic cutoff = 8.5 <BR> </P> <P>For the TIP4/Ice model (J Chem Phys, 122, 234511 (2005); http://dx.doi.org/10.1063/1.1931662) these values can be used: </P> <P>O mass = 15.9994<BR> H mass = 1.008<BR> O charge = -1.1794<BR> H charge = 0.5897<BR> r0 of OH bond = 0.9572<BR> theta of HOH angle = 104.52<BR> OM distance = 0.1577<BR> LJ epsilon of O-O = 0.21084<BR> LJ sigma of O-O = 3.1668<BR> LJ epsilon, sigma of OH, HH = 0.0<BR> Coulombic cutoff = 8.5 <BR> </P> <P>For the TIP4P/2005 model (J Chem Phys, 123, 234505 (2005); http://dx.doi.org/10.1063/1.2121687), these values can be used: </P> <P>O mass = 15.9994<BR> H mass = 1.008<BR> O charge = -1.1128<BR> H charge = 0.5564<BR> r0 of OH bond = 0.9572<BR> theta of HOH angle = 104.52<BR> OM distance = 0.1546<BR> LJ epsilon of O-O = 0.1852<BR> LJ sigma of O-O = 3.1589<BR> LJ epsilon, sigma of OH, HH = 0.0<BR> Coulombic cutoff = 8.5 <BR> </P> <P>These are the parameters to use for TIP4P with a long-range Coulombic solver (e.g. Ewald or PPPM in LAMMPS): </P> <P>O mass = 15.9994<BR> H mass = 1.008<BR> O charge = -1.0484<BR> H charge = 0.5242<BR> r0 of OH bond = 0.9572<BR> theta of HOH angle = 104.52<BR> OM distance = 0.1250<BR> 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>Note that the when using the TIP4P pair style, the neighobr list cutoff for Coulomb interactions is effectively extended by a distance 2 * (OM distance), to account for the offset distance of the fictitious charges on O atoms in water molecules. Thus it is typically best in an efficiency sense to use a LJ cutoff >= Coulomb cutoff + 2*(OM distance), to shrink the size of the neighbor list. This leads to slightly larger cost for the long-range calculation, so you can test the trade-off for your model. The OM distance and the LJ and Coulombic cutoffs are set in the <A HREF = "pair_lj.html">pair_style lj/cut/tip4p/long</A> command. </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 = "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> O charge = -0.820<BR> H charge = 0.410<BR> LJ epsilon of OO = 0.1553<BR> LJ sigma of OO = 3.166<BR> LJ epsilon, sigma of OH, HH = 0.0<BR> 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 = "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">Section_modify</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 examples/COUPLE directory of the LAMMPS distribution; see examples/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#start_5">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">Section_python</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#howto_19">Section_howto 19</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 = "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 = "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 simulation 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 performed in triclinic (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. 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 lie on the positive x axis. <B>b</B> must lie in the xy plane, with strictly positive y component. <B>c</B> may have any orientation with strictly positive z component. The requirement that <B>a</B>, <B>b</B>, and <B>c</B> have strictly positive x, y, and z components, respectively, ensures that <B>a</B>, <B>b</B>, and <B>c</B> form a complete right-handed basis. These restrictions impose no loss of generality, since it is possible to rotate/invert any set of 3 crystal basis vectors so that they conform to the restrictions. </P> <P>For example, assume that the 3 vectors <B>A</B>,<B>B</B>,<B>C</B> are the edge vectors of a general parallelepiped, where there is no restriction on <B>A</B>,<B>B</B>,<B>C</B> other than they form a complete right-handed basis i.e. <B>A</B> x <B>B</B> . <B>C</B> > 0. The equivalent LAMMPS <B>a</B>,<B>b</B>,<B>c</B> are a linear rotation of <B>A</B>, <B>B</B>, and <B>C</B> and can be computed as follows: </P> <CENTER><IMG SRC = "Eqs/transform.jpg"> </CENTER> <P>where A = |<B>A</B>| indicates the scalar length of <B>A</B>. The ^ hat symbol indicates the corresponding unit vector. <I>beta</I> and <I>gamma</I> are angles between the vectors described below. Note that by construction, <B>a</B>, <B>b</B>, and <B>c</B> have strictly positive x, y, and z components, respectively. If it should happen that <B>A</B>, <B>B</B>, and <B>C</B> form a left-handed basis, then the above equations are not valid for <B>c</B>. In this case, it is necessary to first apply an inversion. This can be achieved by interchanging two basis vectors or by changing the sign of one of them. </P> <P>For consistency, the same rotation/inversion applied to the basis vectors must also be applied to atom positions, velocities, and any other vector quantities. This can be conveniently achieved by first converting to fractional coordinates in the old basis and then converting to distance coordinates in the new basis. The transformation is given by the following equation: </P> <CENTER><IMG SRC = "Eqs/rotate.jpg"> </CENTER> <P>where <I>V</I> is the volume of the box, <B>X</B> is the original vector quantity and <B>x</B> is the vector in the LAMMPS basis. </P> <P>There is no requirement that a triclinic box be periodic in any dimension, though it typically should be in at least the 2nd dimension of the tilt (y in xy) if you want to enforce a shift in periodic boundary conditions across that boundary. Some commands that work with triclinic boxes, e.g. the <A HREF = "fix_deform.html">fix deform</A> and <A HREF = "fix_nh.html">fix npt</A> commands, require periodicity or non-shrink-wrap boundary conditions in specific dimensions. See the command doc pages for details. </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), LAMMPS normally requires that 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). This is required both when the simulation box is created, e.g. via the <A HREF = "create_box.html">create_box</A> or <A HREF = "read_data.html">read_data</A> commands, as well as when the box shape changes dynamically during a simulation, e.g. via the <A HREF = "fix_deform.html">fix deform</A> or <A HREF = "fix_nh.html">fix npt</A> commands. </P> <P>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. If the box tilt exceeds this limit during a dynamics run (e.g. via the <A HREF = "fix_deform.html">fix deform</A> command), then the box is "flipped" to an equivalent shape with a tilt factor within the bounds, so the run can continue. See the <A HREF = "fix_deform.html">fix deform</A> doc page for further details. </P> <P>One exception to this rule is if the 1st dimension in the tilt factor (x for xy) is non-periodic. In that case, the limits on the tilt factor are not enforced, since flipping the box in that dimension does not change the atom positions due to non-periodicity. In this mode, if you tilt the system to extreme angles, the simulation will simply become inefficient, due to the highly skewed simulation box. </P> <P>The limitation on not creating a simulation box with a tilt factor skewing the box more than half the distance of the parallel box length can be overridden via the <A HREF = "box.html">box</A> command. Setting the <I>tilt</I> keyword to <I>large</I> allows any tilt factors to be specified. </P> <P>Box flips that may occur using the <A HREF = "fix_deform.html">fix deform</A> or <A HREF = "fix_nh.html">fix npt</A> commands can be turned off using the <I>flip no</I> option with either of the commands. </P> <P>Note that if a simulation box has a large tilt factor, LAMMPS will run less efficiently, due to the large volume of communication needed to acquire ghost atoms around a processor's irregular-shaped sub-domain. For extreme values of tilt, LAMMPS may also lose atoms and generate an error. </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 = "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 flipped 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 = "howto_14"></A><H4>6.14 Finite-size spherical and aspherical particles </H4> <P>Typical MD models treat atoms or particles as point masses. Sometimes it is desirable to have a model with finite-size particles such as spheroids or ellipsoids or generalized aspherical bodies. The difference is that such particles have a moment of inertia, rotational energy, and angular momentum. Rotation is induced by torque coming 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 finite-size particles </UL> <P>Example input scripts for these kinds of models are in the body, colloid, dipole, ellipse, line, peri, pour, and tri directories of the <A HREF = "Section_example.html">examples directory</A> in the LAMMPS distribution. </P> <H5>Atom styles </H5> <P>There are several <A HREF = "atom_style.html">atom styles</A> that allow for definition of finite-size particles: sphere, dipole, ellipsoid, line, tri, peri, and body. </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 dipole style does not actually define finite-size 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 finite-size (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>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 line style defines line segment particles with two end points and a mass (or density). They can be used in 2d simulations, and they can be joined together to form rigid bodies which represent arbitrary polygons. </P> <P>The tri style defines triangular particles with three corner points and a mass (or density). They can be used in 3d simulations, and they can be joined together to form rigid bodies which represent arbitrary particles with a triangulated surface. </P> <P>The peri style is used with <A HREF = "pair_peri.html">Peridynamic models</A> and defines particles as having a volume, that is used internally in the <A HREF = "pair_peri.html">pair_style peri</A> potentials. </P> <P>The body style allows for definition of particles which can represent complex entities, such as surface meshes of discrete points, collections of sub-particles, deformable objects, etc. The body style is discussed in more detail on the <A HREF = "body.html">body</A> doc page. </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. </P> <P>For example, in the ellipsoid style, 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. In the line or tri style, if the lineflag or triflag is specified as 0, then it will be a point particle. </P> <P>Some of the pair styles used to compute pairwise interactions between finite-size particles also compute the correct interaction with point particles as well, e.g. the interaction between a point particle and a finite-size particle or between two point particles. If necessary, <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>, atom styles sphere and ellipsoid still use 3d particles, rather than as circular disks or ellipses. This means they have the same moment of inertia as the 3d object. When temperature is computed, 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 finite-size 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_brownian.html">pair_style brownian</A> <LI><A HREF = "pair_lubricate.html">pair_style lubricate</A> <LI><A HREF = "pair_line_lj.html">pair_style line/lj</A> <LI><A HREF = "pair_tri_lj.html">pair_style tri/lj</A> <LI><A HREF = "pair_body.html">pair_style body</A> </UL> <P>The granular pair styles are used with spherical particles. The dipole pair style is used with the dipole atom style, which could be applied to spherical or ellipsoidal particles. The GayBerne and REsquared potentials require ellipsoidal particles, though they will also work if the 3 shape parameters are the same (a sphere). The Brownian and lubrication potentials are used with spherical particles. The line, tri, and body potentials are used with line segment, triangular, and body particles respectively. </P> <H5>Time integration </H5> <P>There are several fixes that perform time integration on finite-size 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 ellipsoidal 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. The <A HREF = "fix_langevin">fix langevin</A> command can also be used with its <I>omgea</I> or <I>angmom</I> options to thermostat the rotational degrees of freedom for spherical or ellipsoidal particles. Other thermostatting fixes only operate on the translational kinetic energy of finite-size particles. </P> <P>These fixes perform constant NVE time integration on line segment, triangular, and body particles: </P> <UL><LI><A HREF = "fix_nve_line.html">fix nve/line</A> <LI><A HREF = "fix_nve_tri.html">fix nve/tri</A> <LI><A HREF = "fix_nve_body.html">fix nve/body</A> </UL> <P>Note that for mixtures of point and finite-size particles, these integration fixes can only be used with <A HREF = "group.html">groups</A> which contain finite-size particles. </P> <H5>Computes, thermodynamics, and dump output </H5> <P>There are several computes that calculate the temperature or rotational energy of spherical or ellipsoidal particles: </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 finite-size 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>These commands can be used to output various attributes of finite-size particles: </P> <UL><LI><A HREF = "dump.html">dump custom</A> <LI><A HREF = "compute_property_atom.html">compute property/atom</A> <LI><A HREF = "dump.html">dump local</A> <LI><A HREF = "compute_body_local.html">compute body/local</A> </UL> <P>Attributes include the dipole moment, the angular velocity, the angular momentum, the quaternion, the torque, the end-point and corner-point coordinates (for line and tri particles), and sub-particle attributes of body particles. </P> <H5>Rigid bodies composed of finite-size 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 finite-size particles (spheres or ellipsoids or line segments or triangles), 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 spheroids, even if the two particles have the same mass. Finite-size 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> <P>Also note that body particles cannot be modeled with the <A HREF = "fix_rigid.html">fix rigid</A> command. Body particles are treated by LAMMPS as single particles, though they can store internal state, such as a list of sub-particles. Individual body partices are typically treated as rigid bodies, and their motion integrated with a command like <A HREF = "fix_nve_body.html">fix nve/body</A>. Interactions between pairs of body particles are computed via a command like <A HREF = "pair_body.html">pair_style body</A>. </P> <HR> <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> <P>Note that thermodynamic output values can be "extensive" or "intensive". The former scale with the number of atoms in the system (e.g. total energy), the latter do not (e.g. temperature). The setting for <A HREF = "thermo_modify.html">thermo_modify norm</A> determines whether extensive quantities are normalized or not. Computes and fixes produce either extensive or intensive values; see their individual doc pages for details. <A HREF = "variable.html">Equal-style variables</A> produce only intensive values; you can include a division by "natoms" in the formula if desired, to make an extensive calculation produce an intensive result. </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>Several 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_correlate.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> <H5><A NAME = "fixoutput"></A>Fixes that process output quantities </H5> <P>The <A HREF = "fix_vector.html">fix vector</A> command can create global vectors as output from global scalars as input, accumulating them one element at a time. </P> <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 = "fix_vector.html">fix vector</A></TD><TD > global scalars</TD><TD > global vector</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 = "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 directly (e.g. 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 finite-size particles that includes rotational degrees of freedom. They both allow for velocity biases indirectly, via an optional extra argument, another temperature compute that subtracts a velocity bias. This allows the translational velocity of 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. Several thermostatting fixes are available: Nose-Hoover (nvt), Berendsen, CSVR, 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_temp_csvr.html">fix temp/csvr</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 = "#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 which has two effects. First, the current calculated temperature, which is compared to the requested target temperature, is caluclated with the velocity bias removed. Second, the thermostat adjusts only the thermal temperature component of the particle's velocities, which are the velocities with the bias removed. The removed bias is then added back to the adjusted 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>. Of you could thermostat only the thermal temperature of a streaming flow of particles without affecting the streaming velocity, by using <A HREF = "compute_temp_profile.html">compute temp/profile</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 = "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 = "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 simulation box in one of the six directions using the <A HREF = "change_box.html">change_box</A> command 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 = "howto_19"></A><H4>6.19 Library interface to LAMMPS </H4> <P>As described in <A HREF = "Section_start.html#start_5">Section_start 5</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 5 basic functions: </P> <PRE>void lammps_open(int, char **, MPI_Comm, void **) void lammps_close(void *) int lammps_version(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 = "Section_start.html#start_7">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_version() function can be used to determined the specific version of the underlying LAMMPS code. This is particularly useful when loading LAMMPS as a shared library via dlopen(). The code using the library interface can than use this information to adapt to changes to the LAMMPS command syntax between versions. The returned LAMMPS version code is an integer (e.g. 2 Sep 2015 results in 20150902) that grows with every new LAMMPS version. </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_set_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 "set_variable" function can set an existing string-style variable to a new value, so that subsequent LAMMPS commands can access the 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 examples/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 = "howto_20"></A><H4>6.20 Calculating thermal conductivity </H4> <P>The thermal conductivity kappa of a material can be measured in at least 4 ways using various options in LAMMPS. See the examples/KAPPA directory for scripts that implement the 4 methods discussed here for a simple Lennard-Jones fluid model. Also, see <A HREF = "Section_howto.html#howto_21">this section</A> of the manual for an analogous discussion for viscosity. </P> <P>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#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. </P> <P>Alternatively, as a second method, the <A HREF = "fix_heat.html">fix heat</A> command can used in place of thermostats on each of two regions to add/subtract specified amounts of energy to both regions. In both cases, the resulting temperatures of the two regions can be monitored with the "compute temp/region" command and the temperature profile of the intermediate region 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. </P> <P>The third 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 fourth 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 = "howto_21"></A><H4>6.21 Calculating viscosity </H4> <P>The shear viscosity eta of a fluid can be measured in at least 4 ways using various options in LAMMPS. See the examples/VISCOSITY directory for scripts that implement the 4 methods discussed here for a simple Lennard-Jones fluid model. Also, see <A HREF = "Section_howto.html#howto_20">this section</A> of the manual for an analogous discussion for thermal conductivity. </P> <P>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. Alternatively, as a second method, one or more moving walls can be used to shear the fluid in between them, again with some kind of thermostat that modifies only the thermal (non-shearing) components of velocity to prevent the fluid from heating up. </P> <P>In both cases, 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. 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#howto_13">this section</A> of the manual for details on NEMD simulations. </P> <P>The third 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 fourth 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])*${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/</B> @ $T K, ${ndens} /A^3" </PRE> <HR> <A NAME = "howto_22"></A><H4>6.22 Calculating a diffusion coefficient </H4> <P>The diffusion coefficient D of a material can be measured in at least 2 ways using various options in LAMMPS. See the examples/DIFFUSE directory for scripts that implement the 2 methods discussed here for a simple Lennard-Jones fluid model. </P> <P>The first method is to measure the mean-squared displacement (MSD) of the system, via the <A HREF = "compute_msd.html">compute msd</A> command. The slope of the MSD versus time is proportional to the diffusion coefficient. The instantaneous MSD values can be accumulated in a vector via the <A HREF = "fix_vector.html">fix vector</A> command, and a line fit to the vector to compute its slope via the <A HREF = "variable.html">variable slope</A> function, and thus extract D. </P> <P>The second method is to measure the velocity auto-correlation function (VACF) of the system, via the <A HREF = "compute_vacf.html">compute vacf</A> command. The time-integral of the VACF is proportional to the diffusion coefficient. The instantaneous VACF values can be accumulated in a vector via the <A HREF = "fix_vector.html">fix vector</A> command, and time integrated via the <A HREF = "variable.html">variable trap</A> function, and thus extract D. </P> <HR> <A NAME = "howto_23"></A><H4>6.23 Using chunks to calculate system properties </H4> <P>In LAMMS, "chunks" are collections of atoms, as defined by the <A HREF = "compute_chunk_atom.html">compute chunk/atom</A> command, which assigns each atom to a chunk ID (or to no chunk at all). The number of chunks and the assignment of chunk IDs to atoms can be static or change over time. Examples of "chunks" are molecules or spatial bins or atoms with similar values (e.g. coordination number or potential energy). </P> <P>The per-atom chunk IDs can be used as input to two other kinds of commands, to calculate various properties of a system: </P> <UL><LI><A HREF = "fix_ave_chunk.html">fix ave/chunk</A> <LI>any of the <A HREF = "compute.html">compute */chunk</A> commands </UL> <P>Here, each of the 3 kinds of chunk-related commands is briefly overviewed. Then some examples are given of how to compute different properties with chunk commands. </P> <H5>Compute chunk/atom command: </H5> <P>This compute can assign atoms to chunks of various styles. Only atoms in the specified group and optional specified region are assigned to a chunk. Here are some possible chunk definitions: </P> <DIV ALIGN=center><TABLE BORDER=1 > <TR><TD >atoms in same molecule </TD><TD > chunk ID = molecule ID </TD></TR> <TR><TD >atoms of same atom type </TD><TD > chunk ID = atom type </TD></TR> <TR><TD >all atoms with same atom property (charge, radius, etc) </TD><TD > chunk ID = output of compute property/atom </TD></TR> <TR><TD >atoms in same cluster </TD><TD > chunk ID = output of <A HREF = "compute_cluster_atom.html">compute cluster/atom</A> command </TD></TR> <TR><TD >atoms in same spatial bin </TD><TD > chunk ID = bin ID </TD></TR> <TR><TD >atoms in same rigid body </TD><TD > chunk ID = molecule ID used to define rigid bodies </TD></TR> <TR><TD >atoms with similar potential energy </TD><TD > chunk ID = output of <A HREF = "compute_pe_atom.html">compute pe/atom</A> </TD></TR> <TR><TD >atoms with same local defect structure </TD><TD > chunk ID = output of <A HREF = "compute_centro_atom.html">compute centro/atom</A> or <A HREF = "compute_coord_atom.html">compute coord/atom</A> command </TD></TR></TABLE></DIV> <P>Note that chunk IDs are integer values, so for atom properties or computes that produce a floating point value, they will be truncated to an integer. You could also use the compute in a variable that scales the floating point value to spread it across multiple intergers. </P> <P>Spatial bins can be of various kinds, e.g. 1d bins = slabs, 2d bins = pencils, 3d bins = boxes, spherical bins, cylindrical bins. </P> <P>This compute also calculates the number of chunks <I>Nchunk</I>, which is used by other commands to tally per-chunk data. <I>Nchunk</I> can be a static value or change over time (e.g. the number of clusters). The chunk ID for an individual atom can also be static (e.g. a molecule ID), or dynamic (e.g. what spatial bin an atom is in as it moves). </P> <P>Note that this compute allows the per-atom output of other <A HREF = "compute.html">computes</A>, <A HREF = "fix.html">fixes</A>, and <A HREF = "variable.html">variables</A> to be used to define chunk IDs for each atom. This means you can write your own compute or fix to output a per-atom quantity to use as chunk ID. See <A HREF = "Section_modify.html">Section_modify</A> of the documentation for how to do this. You can also define a <A HREF = "variable.html">per-atom variable</A> in the input script that uses a formula to generate a chunk ID for each atom. </P> <H5>Fix ave/chunk command: </H5> <P>This fix takes the ID of a <A HREF = "compute_chunk_atom.html">compute chunk/atom</A> command as input. For each chunk, it then sums one or more specified per-atom values over the atoms in each chunk. The per-atom values can be any atom property, such as velocity, force, charge, potential energy, kinetic energy, stress, etc. Additional keywords are defined for per-chunk properties like density and temperature. More generally any per-atom value generated by other <A HREF = "compute.html">computes</A>, <A HREF = "fix.html">fixes</A>, and <A HREF = "variable.html">per-atom variables</A>, can be summed over atoms in each chunk. </P> <P>Similar to other averaging fixes, this fix allows the summed per-chunk values to be time-averaged in various ways, and output to a file. The fix produces a global array as output with one row of values per chunk. </P> <H5>Compute */chunk commands: </H5> <P>Currently the following computes operate on chunks of atoms to produce per-chunk values. </P> <UL><LI><A HREF = "compute_com_chunk.html">compute com/chunk</A> <LI><A HREF = "compute_gyration_chunk.html">compute gyration/chunk</A> <LI><A HREF = "compute_inertia_chunk.html">compute inertia/chunk</A> <LI><A HREF = "compute_msd_chunk.html">compute msd/chunk</A> <LI><A HREF = "compute_property_chunk.html">compute property/chunk</A> <LI><A HREF = "compute_temp_chunk.html">compute temp/chunk</A> <LI><A HREF = "compute_vcm_chunk.html">compute torque/chunk</A> <LI><A HREF = "compute_vcm_chunk.html">compute vcm/chunk</A> </UL> <P>They each take the ID of a <A HREF = "compute_chunk_atom.html">compute chunk/atom</A> command as input. As their names indicate, they calculate the center-of-mass, radius of gyration, moments of inertia, mean-squared displacement, temperature, torque, and velocity of center-of-mass for each chunk of atoms. The <A HREF = "compute_property_chunk.html">compute property/chunk</A> command can tally the count of atoms in each chunk and extract other per-chunk properties. </P> <P>The reason these various calculations are not part of the <A HREF = "fix_ave_chunk.html">fix ave/chunk command</A>, is that each requires a more complicated operation than simply summing and averaging over per-atom values in each chunk. For example, many of them require calculation of a center of mass, which requires summing mass*position over the atoms and then dividing by summed mass. </P> <P>All of these computes produce a global vector or global array as output, wih one or more values per chunk. They can be used in various ways: </P> <UL><LI>As input to the <A HREF = "fix_ave_time.html">fix ave/time</A> command, which can write the values to a file and optionally time average them. <LI>As input to the <A HREF = "fix_ave_histo.html">fix ave/histo</A> command to histogram values across chunks. E.g. a histogram of cluster sizes or molecule diffusion rates. <LI>As input to special functions of <A HREF = "variable.html">equal-style variables</A>, like sum() and max(). E.g. to find the largest cluster or fastest diffusing molecule. </UL> <H5>Example calculations with chunks </H5> <P>Here are eaxmples using chunk commands to calculate various properties: </P> <P>(1) Average velocity in each of 1000 2d spatial bins: </P> <PRE>compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.01 units reduced fix 1 all ave/chunk 100 10 1000 cc1 vx vy file tmp.out </PRE> <P>(2) Temperature in each spatial bin, after subtracting a flow velocity: </P> <PRE>compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.1 units reduced compute vbias all temp/profile 1 0 0 y 10 fix 1 all ave/chunk 100 10 1000 cc1 temp bias vbias file tmp.out </PRE> <P>(3) Center of mass of each molecule: </P> <PRE>compute cc1 all chunk/atom molecule compute myChunk all com/chunk cc1 fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector </PRE> <P>(4) Total force on each molecule and ave/max across all molecules: </P> <PRE>compute cc1 all chunk/atom molecule fix 1 all ave/chunk 1000 1 1000 cc1 fx fy fz file tmp.out variable xave equal ave(f_1<B>2</B>) variable xmax equal max(f_1<B>2</B>) thermo 1000 thermo_style custom step temp v_xave v_xmax </PRE> <P>(5) Histogram of cluster sizes: </P> <PRE>compute cluster all cluster/atom 1.0 compute cc1 all chunk/atom c_cluster compress yes compute size all property/chunk cc1 count fix 1 all ave/histo 100 1 100 0 20 20 c_size mode vector ave running beyond ignore file tmp.histo </PRE> <HR> <A NAME = "howto_24"></A><H4>6.24 Setting parameters for the <A HREF = "kspace_style.html">kspace_style pppm/disp</A> command </H4> <P>The PPPM method computes interactions by splitting the pair potential into two parts, one of which is computed in a normal pairwise fashion, the so-called real-space part, and one of which is computed using the Fourier transform, the so called reciprocal-space or kspace part. For both parts, the potential is not computed exactly but is approximated. Thus, there is an error in both parts of the computation, the real-space and the kspace error. The just mentioned facts are true both for the PPPM for Coulomb as well as dispersion interactions. The deciding difference - and also the reason why the parameters for pppm/disp have to be selected with more care - is the impact of the errors on the results: The kspace error of the PPPM for Coulomb and dispersion interaction and the real-space error of the PPPM for Coulomb interaction have the character of noise. In contrast, the real-space error of the PPPM for dispersion has a clear physical interpretation: the underprediction of cohesion. As a consequence, the real-space error has a much stronger effect than the kspace error on simulation results for pppm/disp. Parameters must thus be chosen in a way that this error is much smaller than the kspace error. </P> <P>When using pppm/disp and not making any specifications on the PPPM parameters via the kspace modify command, parameters will be tuned such that the real-space error and the kspace error are equal. This will result in simulations that are either inaccurate or slow, both of which is not desirable. For selecting parameters for the pppm/disp that provide fast and accurate simulations, there are two approaches, which both have their up- and downsides. </P> <P>The first approach is to set desired real-space an kspace accuracies via the <I>kspace_modify force/disp/real</I> and <I>kspace_modify force/disp/kspace</I> commands. Note that the accuracies have to be specified in force units and are thus dependend on the chosen unit settings. For real units, 0.0001 and 0.002 seem to provide reasonable accurate and efficient computations for the real-space and kspace accuracies. 0.002 and 0.05 work well for most systems using lj units. PPPM parameters will be generated based on the desired accuracies. The upside of this approach is that it usually provides a good set of parameters and will work for both the <I>kspace_modify diff ad</I> and <I>kspace_modify diff ik</I> options. The downside of the method is that setting the PPPM parameters will take some time during the initialization of the simulation. </P> <P>The second approach is to set the parameters for the pppm/disp explicitly using the <I>kspace_modify mesh/disp</I>, <I>kspace_modify order/disp</I>, and <I>kspace_modify gewald/disp</I> commands. This approach requires a more experienced user who understands well the impact of the choice of parameters on the simulation accuracy and performance. This approach provides a fast initialization of the simulation. However, it is sensitive to errors: A combination of parameters that will perform well for one system might result in far-from-optimal conditions for other simulations. For example, parametes that provide accurate and fast computations for all-atomistic force fields can provide insufficient accuracy or united-atomistic force fields (which is related to that the latter typically have larger dispersion coefficients). </P> <P>To avoid inaccurate or inefficient simulations, the pppm/disp stops simulations with an error message if no action is taken to control the PPPM parameters. If the automatic parameter generation is desired and real-space and kspace accuracies are desired to be equal, this error message can be suppressed using the <I>kspace_modify disp/auto yes</I> command. </P> <P>A reasonable approach that combines the upsides of both methods is to make the first run using the <I>kspace_modify force/disp/real</I> and <I>kspace_modify force/disp/kspace</I> commands, write down the PPPM parameters from the outut, and specify these parameters using the second approach in subsequent runs (which have the same composition, force field, and approximately the same volume). </P> <P>Concerning the performance of the pppm/disp there are two more things to consider. The first is that when using the pppm/disp, the cutoff parameter does no longer affect the accuracy of the simulation (subject to that gewald/disp is adjusted when changing the cutoff). The performance can thus be increased by examining different values for the cutoff parameter. A lower bound for the cutoff is only set by the truncation error of the repulsive term of pair potentials. </P> <P>The second is that the mixing rule of the pair style has an impact on the computation time when using the pppm/disp. Fastest computations are achieved when using the geometric mixing rule. Using the arithmetic mixing rule substantially increases the computational cost. The computational overhead can be reduced using the <I>kspace_modify mix/disp geom</I> and <I>kspace_modify splittol</I> commands. The first command simply enforces geometric mixing of the dispersion coeffiecients in kspace computations. This introduces some error in the computations but will also significantly speed-up the simulations. The second keyword sets the accuracy with which the dispersion coefficients are approximated using a matrix factorization approach. This may result in better accuracy then using the first command, but will usually also not provide an equally good increase of efficiency. </P> <P>Finally, pppm/disp can also be used when no mixing rules apply. This can be achieved using the <I>kspace_modify mix/disp none</I> command. Note that the code does not check automatically whether any mixing rule is fulfilled. If mixing rules do not apply, the user will have to specify this command explicitly. </P> <HR> <A NAME = "howto_25"></A><H4>6.25 Polarizable models </H4> <P>In polarizable force fields the charge distributions in molecules and materials respond to their electrostatic environements. Polarizable systems can be simulated in LAMMPS using three methods: </P> <UL><LI>the fluctuating charge method, implemented in the <A HREF = "fix_qeq.html">QEQ</A> package, <LI>the adiabatic core-shell method, implemented in the <A HREF = "#howto_26">CORESHELL</A> package, <LI>the thermalized Drude dipole method, implemented in the <A HREF = "#howto_27">USER-DRUDE</A> package. </UL> <P>The fluctuating charge method calculates instantaneous charges on interacting atoms based on the electronegativity equalization principle. It is implemented in the <A HREF = "fix_qeq.html">fix qeq</A> which is available in several variants. It is a relatively efficient technique since no additional particles are introduced. This method allows for charge transfer between molecules or atom groups. However, because the charges are located at the interaction sites, off-plane components of polarization cannot be represented in planar molecules or atom groups. </P> <P>The two other methods share the same basic idea: polarizable atoms are split into one core atom and one satellite particle (called shell or Drude particle) attached to it by a harmonic spring. Both atoms bear a charge and they represent collectively an induced electric dipole. These techniques are computationally more expensive than the QEq method because of additional particles and bonds. These two charge-on-spring methods differ in certain features, with the core-shell model being normally used for ionic/crystalline materials, whereas the so-called Drude model is normally used for molecular systems and fluid states. </P> <P>The core-shell model is applicable to crystalline materials where the high symmetry around each site leads to stable trajectories of the core-shell pairs. However, bonded atoms in molecules can be so close that a core would interact too strongly or even capture the Drude particle of a neighbor. The Drude dipole model is relatively more complex in order to remediate this and other issues. Specifically, the Drude model includes specific thermostating of the core-Drude pairs and short-range damping of the induced dipoles. </P> <P>The three polarization methods can be implemented through a self-consistent calculation of charges or induced dipoles at each timestep. In the fluctuating charge scheme this is done by the matrix inversion method in <A HREF = "fix_qeq.html">fix qeq/point</A>, but for core-shell or Drude-dipoles the relaxed-dipoles technique would require an slow iterative procedure. These self-consistent solutions yield accurate trajectories since the additional degrees of freedom representing polarization are massless. An alternative is to attribute a mass to the additional degrees of freedom and perform time integration using an extended Lagrangian technique. For the fluctuating charge scheme this is done by <A HREF = "fix_qeq.html">fix qeq/dynamic</A>, and for the charge-on-spring models by the methods outlined in the next two sections. The assignment of masses to the additional degrees of freedom can lead to unphysical trajectories if care is not exerted in choosing the parameters of the poarizable models and the simulation conditions. </P> <P>In the core-shell model the vibration of the shells is kept faster than the ionic vibrations to mimic the fast response of the polarizable electrons. But in molecular systems thermalizing the core-Drude pairs at temperatures comparable to the rest of the simulation leads to several problems (kinetic energy transfer, too short a timestep, etc.) In order to avoid these problems the relative motion of the Drude particles with respect to their cores is kept "cold" so the vibration of the core-Drude pairs is very slow, approaching the self-consistent regime. In both models the temperature is regulated using the velocities of the center of mass of core+shell (or Drude) pairs, but in the Drude model the actual relative core-Drude particle motion is thermostated separately as well. </P> <HR> <A NAME = "howto_26"></A><H4>6.26 Adiabatic core/shell model </H4> <P>The adiabatic core-shell model by <A HREF = "#MitchellFinchham">Mitchell and Finchham</A> is a simple method for adding polarizability to a system. In order to mimic the electron shell of an ion, a satellite particle is attached to it. This way the ions are split into a core and a shell where the latter is meant to react to the electrostatic environment inducing polarizability. </P> <P>Technically, shells are attached to the cores by a spring force f = k*r where k is a parametrized spring constant and r is the distance between the core and the shell. The charges of the core and the shell -add up to the ion charge, thus q(ion) = q(core) + q(shell). In a +add up to the ion charge, thus q(ion) = q(core) + q(shell). This +setup introduces the ion polarizability (alpha) given by +alpha = q(shell)^2 / k. In a similar fashion the mass of the ion is distributed on the core and the shell with the core having the larger mass. </P> <P>To run this model in LAMMPS, <A HREF = "atom_style.html">atom_style</A> <I>full</I> can be used since atom charge and bonds are needed. Each kind of core/shell pair requires two atom types and a bond type. The core and shell of a core/shell pair should be bonded to each other with a harmonic bond that provides the spring force. For example, a data file for NaCl, as found in examples/coreshell, has this format: </P> <PRE>432 atoms # core and shell atoms 216 bonds # number of core/shell springs </PRE> <PRE>4 atom types # 2 cores and 2 shells for Na and Cl 2 bond types </PRE> <PRE>0.0 24.09597 xlo xhi 0.0 24.09597 ylo yhi 0.0 24.09597 zlo zhi </PRE> <PRE>Masses # core/shell mass ratio = 0.1 </PRE> <PRE>1 20.690784 # Na core 2 31.90500 # Cl core 3 2.298976 # Na shell 4 3.54500 # Cl shell </PRE> <PRE>Atoms </PRE> <PRE>1 1 2 1.5005 0.00000000 0.00000000 0.00000000 # core of core/shell pair 1 2 1 4 -2.5005 0.00000000 0.00000000 0.00000000 # shell of core/shell pair 1 3 2 1 1.5056 4.01599500 4.01599500 4.01599500 # core of core/shell pair 2 4 2 3 -0.5056 4.01599500 4.01599500 4.01599500 # shell of core/shell pair 2 (...) </PRE> <PRE>Bonds # Bond topology for spring forces </PRE> <PRE>1 2 1 2 # spring for core/shell pair 1 2 2 3 4 # spring for core/shell pair 2 (...) </PRE> <P>Non-Coulombic (e.g. Lennard-Jones) pairwise interactions are only defined between the shells. Coulombic interactions are defined between all cores and shells. If desired, additional bonds can be -specified between cores. +specified between cores. </P> <P>The <A HREF = "special_bonds.html">special_bonds</A> command should be used to turn-off the Coulombic interaction within core/shell pairs, since that interaction is set by the bond spring. This is done using the <A HREF = "special_bonds.html">special_bonds</A> command with a 1-2 weight = 0.0, which is the default value. It needs to be considered whether one has to adjust the <A HREF = "special_bonds.html">special_bonds</A> weighting according to the molecular topology since the interactions of the shells are bypassed over an extra bond. </P> <P>Note that this core/shell implementation does not require all ions to be polarized. One can mix core/shell pairs and ions without a satellite particle if desired. </P> <P>Since the core/shell model permits distances of r = 0.0 between the core and shell, a pair style with a "cs" suffix needs to be used to -implement a valid long-rangeCoulombic correction. Several such pair +implement a valid long-range Coulombic correction. Several such pair styles are provided in the CORESHELL package. See <A HREF = "pair_cs.html">this doc page</A> for details. All of the core/shell enabled pair styles require the use of a long-range Coulombic solver, as specified by the <A HREF = "kspace_style.html">kspace_style</A> command. Either the PPPM or Ewald solvers can be used. </P> <P>For the NaCL example problem, these pair style and bond style settings are used: </P> <PRE>pair_style born/coul/long/cs 20.0 20.0 pair_coeff * * 0.0 1.000 0.00 0.00 0.00 pair_coeff 3 3 487.0 0.23768 0.00 1.05 0.50 #Na-Na pair_coeff 3 4 145134.0 0.23768 0.00 6.99 8.70 #Na-Cl pair_coeff 4 4 405774.0 0.23768 0.00 72.40 145.40 #Cl-Cl </PRE> <PRE>bond_style harmonic bond_coeff 1 63.014 0.0 bond_coeff 2 25.724 0.0 </PRE> <P>When running dynamics with the adiabatic core/shell model, the following issues should be considered. Since the relative motion of the core and shell particles corresponds to the polarization, typical -thermostats can alter the polarization behaviour, meaining the shell -will not react freely to its electrostatic environment. Therefore +thermostats can alter the polarization behaviour, meaning the shell +will not react freely to its electrostatic environment. This is +critical during the equilibration of the system. Therefore it's typically desirable to decouple the relative motion of the core/shell pair, which is an imaginary degree of freedom, from the real physical system. To do that, the <A HREF = "compute_temp_cs.html">compute temp/cs</A> command can be used, in conjunction with any of the thermostat fixes, such as <A HREF = "fix_nh.html">fix nvt</A> or <A HREF = "fix_langevin">fix langevin</A>. This compute uses the center-of-mass velocity of the core/shell pairs to calculate a temperature, and insures that velocity is what is rescaled for thermostatting purposes. This compute also works for a system with both core/shell pairs and non-polarized ions (ions without an attached satellite particle). The <A HREF = "compute_temp_cs.html">compute temp/cs</A> command requires input of two groups, one for the core atoms, another for the shell atoms. Non-polarized ions which might also be included in the treated system should not be included into either of these groups, they are taken into account by the <I>group-ID</I> (2nd argument) of the compute. The groups can be defined using the <A HREF = "group.html">group <I>type</I></A> command. Note that to perform thermostatting using this definition of temperature, the <A HREF = "fix_modify.html">fix modify temp</A> command should be -used to assign the comptue to the thermostat fix. Likewise the +used to assign the compute to the thermostat fix. Likewise the <A HREF = "thermo_modify.html">thermo_modify temp</A> command can be used to make -this temperature be output for the overall system. +this temperature be output for the overall system. </P> <P>For the NaCl example, this can be done as follows: </P> <PRE>group cores type 1 2 group shells type 3 4 compute CSequ all temp/cs cores shells fix thermoberendsen all temp/berendsen 1427 1427 0.4 # thermostat for the true physical system fix thermostatequ all nve # integrator as needed for the berendsen thermostat fix_modify thermoberendsen temp CSequ thermo_modify temp CSequ # output of center-of-mass derived temperature </PRE> +<P>If <A HREF = "compute_temp_cs.html">compute temp/cs</A> is used, the decoupled +relative motion of the core and the shell should in theory be +stable. However numerical fluctuation can introduce a small +momentum to the system, which is noticable over long trajectories. +Therefore it is recomendable to use the <A HREF = "fix_momentum.html">fix +momentum</A> command in combination with <A HREF = "compute_temp_cs.html">compute +temp/cs</A> when equilibrating the system to +prevent any drift. +</P> <P>When intializing the velocities of a system with core/shell pairs, it is also desirable to not introduce energy into the relative motion of the core/shell particles, but only assign a center-of-mass velocity to the pairs. This can be done by using the <I>bias</I> keyword of the <A HREF = "velocity.html">velocity create</A> command and assigning the <A HREF = "compute_temp_cs.html">compute temp/cs</A> command to the <I>temp</I> keyword of the <A HREF = "velocity.html">velocity</A> commmand, e.g. </P> <PRE>velocity all create 1427 134 bias yes temp CSequ velocity all scale 1427 temp CSequ </PRE> <P>It is important to note that the polarizability of the core/shell pairs is based on their relative motion. Therefore the choice of spring force and mass ratio need to ensure much faster relative motion of the 2 atoms within the core/shell pair than their center-of-mass velocity. This allow the shells to effectively react instantaneously to the electrostatic environment. This fast movement also limits the timestep size that can be used. </P> -<P>Additionally, the mass mismatch of the core and shell particles means -that only a small amount of energy is transfered to the decoupled -imaginary degrees of freedom. However, this transfer will typically -lead to a a small drift in total energy over time. This internal -energy can be monitored using the <A HREF = "compute_chunk_atom.html">compute -chunk/atom</A> and <A HREF = "compute_temp_chunk.html">compute +<P>The primary literature of the adiabatic core/shell model suggests that +the fast relative motion of the core/shell pairs only allows negligible +energy transfer to the environment. Therefore it is not intended to +decouple the core/shell degree of freedom from the physical system +during production runs. In other words, the <A HREF = "compute_temp_cs.html">compute +temp/cs</A> command should not be used during +production runs and is only required during equilibration. This way one +is consistent with literature (based on the code packages DL_POLY or +GULP for instance). +</P> +<P>The mentioned energy transfer will typically lead to a a small drift +in total energy over time. This internal energy can be monitored +using the <A HREF = "compute_chunk_atom.html">compute chunk/atom</A> and <A HREF = "compute_temp_chunk.html">compute temp/chunk</A> commands. The internal kinetic energies of each core/shell pair can then be summed using the sum() special function of the <A HREF = "variable.html">variable</A> command. Or they can be time/averaged and output using the <A HREF = "fix_ave_time.html">fix ave/time</A> command. To use these commands, each core/shell pair must be defined as a "chunk". If each core/shell pair is defined as its own molecule, the molecule ID can be used to define the chunks. If cores are bonded to each other to form larger molecules, the chunks can be identified by the <A HREF = "fix_property_atom.html">fix property/atom</A> via assigning a core/shell ID to each atom using a special field in the data file read by the <A HREF = "read_data.html">read_data</A> command. This field can then be accessed by the <A HREF = "compute_property_atom.html">compute property/atom</A> command, to use as input to the <A HREF = "compute_chunk_atom.html">compute chunk/atom</A> command to define the core/shell pairs as chunks. </P> <P>For example, </P> <PRE>fix csinfo all property/atom i_CSID # property/atom command read_data NaCl_CS_x0.1_prop.data fix csinfo NULL CS-Info # atom property added in the data-file compute prop all property/atom i_CSID compute cs_chunk all chunk/atom c_prop compute cstherm all temp/chunk cs_chunk temp internal com yes cdof 3.0 # note the chosen degrees of freedom for the core/shell pairs fix ave_chunk all ave/time 10 1 10 c_cstherm file chunk.dump mode vector </PRE> <P>The additional section in the date file would be formatted like this: </P> <PRE>CS-Info # header of additional section </PRE> <PRE>1 1 # column 1 = atom ID, column 2 = core/shell ID 2 1 3 2 4 2 5 3 6 3 7 4 8 4 (...) </PRE> <HR> <A NAME = "howto_27"></A><H4>6.27 Drude induced dipoles </H4> <P>The thermalized Drude model, similarly to the <A HREF = "#howto_26">core-shell</A> model, representes induced dipoles by a pair of charges (the core atom and the Drude particle) connected by a harmonic spring. The Drude model has a number of features aimed at its use in molecular systems (<A HREF = "#Lamoureux">Lamoureux and Roux</A>): </P> <UL><LI>Thermostating of the additional degrees of freedom associated with the induced dipoles at very low temperature, in terms of the reduced coordinates of the Drude particles with respect to their cores. This makes the trajectory close to that of relaxed induced dipoles. <LI>Consistent definition of 1-2 to 1-4 neighbors. A core-Drude particle pair represents a single (polarizable) atom, so the special screening factors in a covalent structure should be the same for the core and the Drude particle. Drude particles have to inherit the 1-2, 1-3, 1-4 special neighbor relations from their respective cores. <LI>Stabilization of the interactions between induced dipoles. Drude dipoles on covalently bonded atoms interact too strongly due to the short distances, so an atom may capture the Drude particle of a neighbor, or the induced dipoles within the same molecule may align too much. To avoid this, damping at short range can be done by Thole functions (for which there are physical grounds). This Thole damping is applied to the point charges composing the induced dipole (the charge of the Drude particle and the opposite charge on the core, not to the total charge of the core atom). </UL> <P>A detailed tutorial covering the usage of Drude induced dipoles in LAMMPS is <A HREF = "tutorial_drude.html">available here</A>. </P> <P>As with the core-shell model, the cores and Drude particles should appear in the data file as standard atoms. The same holds for the springs between them, which are described by standard harmonic bonds. The nature of the atoms (core, Drude particle or non-polarizable) is specified via the <A HREF = "fix_drude.html">fix drude</A> command. The special list of neighbors is automatically refactored to account for the equivalence of core and Drude particles as regards special 1-2 to 1-4 screening. It may be necessary to use the <I>extra</I> keyword of the <A HREF = "special_bonds.html">special_bonds</A> command. If using <A HREF = "fix_shake.html">fix shake</A>, make sure no Drude particle is in this fix group. </P> <P>There are two ways to thermostat the Drude particles at a low temperature: use either <A HREF = "fix_langevin_drude.html">fix langevin/drude</A> for a Langevin thermostat, or <A HREF = "fix_drude_transform.html">fix drude/transform/*</A> for a Nose-Hoover thermostat. The former requires use of the command <A HREF = "comm_modify.html">comm_modify vel yes</A>. The latter requires two separate integration fixes like <I>nvt</I> or <I>npt</I>. The correct temperatures of the reduced degrees of freedom can be calculated using the <A HREF = "compute_temp_drude.html">compute temp/drude</A>. This requires also to use the command <I>comm_modify vel yes</I>. </P> <P>Short-range damping of the induced dipole interactions can be achieved using Thole functions through the the <A HREF = "pair_thole.html">pair style thole</A> in <A HREF = "pair_hybrid.html">pair_style hybrid/overlay</A> with a Coulomb pair style. It may be useful to use <I>coul/long/cs</I> or similar from the CORESHELL package if the core and Drude particle come too close, which can cause numerical issues. </P> <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> <A NAME = "MitchellFinchham"></A> <P><B>(Mitchell and Finchham)</B> Mitchell, Finchham, J Phys Condensed Matter, 5, 1031-1038 (1993). </P> <A NAME = "Lamoureux"></A> <P><B>(Lamoureux and Roux)</B> G. Lamoureux, B. Roux, J. Chem. Phys 119, 3025 (2003) </P> </HTML> diff --git a/doc/doc2/Section_packages.html b/doc/doc2/Section_packages.html index 9452fd107..16186a05d 100644 --- a/doc/doc2/Section_packages.html +++ b/doc/doc2/Section_packages.html @@ -1,721 +1,821 @@ <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_accelerate.html">Next Section</A> </CENTER> <HR> <H3>4. Packages </H3> <P>This section gives a quick overview of the add-on packages that extend LAMMPS functionality. </P> 4.1 <A HREF = "#pkg_1">Standard packages</A><BR> 4.2 <A HREF = "#pkg_2">User packages</A> <BR> <P>LAMMPS includes many optional packages, which 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" from within the src directory of the LAMMPS distribution. </P> <P>See <A HREF = "Section_start.html#start_3">Section_start 3</A> of the manual for details on how to include/exclude specific packages as part of the LAMMPS build process, and for more details about the differences -between standard packages and user packages in LAMMPS. -</P> -<P>Below, the packages currently availabe in LAMMPS are listed. For -standard packages, just a one-line description is given. For user -packages, more details are provided. +between standard packages and user packages. +</P> +<P>Unless otherwise noted below, every package is independent of all the +others. I.e. any package can be included or excluded in a LAMMPS +build, independent of all other packages. However, note that some +packages include commands derived from commands in other packages. If +the other package is not installed, the derived command from the new +package will also not be installed when you include the new one. +E.g. the pair lj/cut/coul/long/omp command from the USER-OMP package +will not be installed as part of the USER-OMP package if the KSPACE +package is not also installed, since it contains the pair +lj/cut/coul/long command. If you later install the KSPACE pacakge and +the USER-OMP package is already installed, both the pair +lj/cut/coul/long and lj/cut/coul/long/omp commands will be installed. +</P> +<P>The two tables below list currently available packages in LAMMPS, with +a one-line descriptions of each. The sections below give a few more +details, including instructions for building LAMMPS with the package, +either via the make command or the Make.py tool described in <A HREF = "Section_start.html#start_4">Section +2.4</A>. </P> <HR> <HR> <H4><A NAME = "pkg_1"></A>4.1 Standard packages </H4> -<P>The current list of standard packages is as follows: +<P>The current list of standard packages is as follows. </P> <DIV ALIGN=center><TABLE BORDER=1 > <TR ALIGN="center"><TD >Package</TD><TD > Description</TD><TD > Author(s)</TD><TD > Doc page</TD><TD > Example</TD><TD > Library</TD></TR> <TR ALIGN="center"><TD >ASPHERE</TD><TD > aspherical particles</TD><TD > -</TD><TD > <A HREF = "Section_howto.html#howto_14">Section_howto 6.14</A></TD><TD > ellipse</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >BODY</TD><TD > body-style particles</TD><TD > -</TD><TD > <A HREF = "body.html">body</A></TD><TD > body</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >CLASS2</TD><TD > class 2 force fields</TD><TD > -</TD><TD > <A HREF = "pair_class2.html">pair_style lj/class2</A></TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >COLLOID</TD><TD > colloidal particles</TD><TD > -</TD><TD > <A HREF = "atom_style.html">atom_style colloid</A></TD><TD > colloid</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >COMPRESS</TD><TD > I/O compression</TD><TD > Axel Kohlmeyer (Temple U)</TD><TD > <A HREF = "dump.html">dump */gz</A></TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >CORESHELL</TD><TD > adiabatic core/shell model</TD><TD > Hendrik Heenen (Technical U of Munich)</TD><TD > <A HREF = "Section_howto.html#howto_25">Section_howto 6.25</A></TD><TD > coreshell</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >DIPOLE</TD><TD > point dipole particles</TD><TD > -</TD><TD > <A HREF = "pair_dipole.html">pair_style dipole/cut</A></TD><TD > dipole</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >FLD</TD><TD > Fast Lubrication Dynamics</TD><TD > Kumar & Bybee & Higdon (1)</TD><TD > <A HREF = "pair_lubricateU.html">pair_style lubricateU</A></TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >GPU</TD><TD > GPU-enabled styles</TD><TD > Mike Brown (ORNL)</TD><TD > <A HREF = "accelerate_gpu.html">Section accelerate</A></TD><TD > gpu</TD><TD > lib/gpu</TD></TR> <TR ALIGN="center"><TD >GRANULAR</TD><TD > granular systems</TD><TD > -</TD><TD > <A HREF = "Section_howto.html#howto_6">Section_howto 6.6</A></TD><TD > pour</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >KIM</TD><TD > openKIM potentials</TD><TD > Smirichinski & Elliot & Tadmor (3)</TD><TD > <A HREF = "pair_kim.html">pair_style kim</A></TD><TD > kim</TD><TD > KIM</TD></TR> <TR ALIGN="center"><TD >KOKKOS</TD><TD > Kokkos-enabled styles</TD><TD > Trott & Edwards (4)</TD><TD > <A HREF = "accelerate_kokkos.html">Section_accelerate</A></TD><TD > kokkos</TD><TD > lib/kokkos</TD></TR> <TR ALIGN="center"><TD >KSPACE</TD><TD > long-range Coulombic solvers</TD><TD > -</TD><TD > <A HREF = "kspace_style.html">kspace_style</A></TD><TD > peptide</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >MANYBODY</TD><TD > many-body potentials</TD><TD > -</TD><TD > <A HREF = "pair_tersoff.html">pair_style tersoff</A></TD><TD > shear</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >MEAM</TD><TD > modified EAM potential</TD><TD > Greg Wagner (Sandia)</TD><TD > <A HREF = "pair_meam.html">pair_style meam</A></TD><TD > meam</TD><TD > lib/meam</TD></TR> <TR ALIGN="center"><TD >MC</TD><TD > Monte Carlo options</TD><TD > -</TD><TD > <A HREF = "fix_gcmc.html">fix gcmc</A></TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >MOLECULE</TD><TD > molecular system force fields</TD><TD > -</TD><TD > <A HREF = "Section_howto.html#howto_3">Section_howto 6.3</A></TD><TD > peptide</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >OPT</TD><TD > optimized pair styles</TD><TD > Fischer & Richie & Natoli (2)</TD><TD > <A HREF = "accelerate_opt.html">Section accelerate</A></TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >PERI</TD><TD > Peridynamics models</TD><TD > Mike Parks (Sandia)</TD><TD > <A HREF = "pair_peri.html">pair_style peri</A></TD><TD > peri</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >POEMS</TD><TD > coupled rigid body motion</TD><TD > Rudra Mukherjee (JPL)</TD><TD > <A HREF = "fix_poems.html">fix poems</A></TD><TD > rigid</TD><TD > lib/poems</TD></TR> <TR ALIGN="center"><TD >PYTHON</TD><TD > embed Python code in an input script</TD><TD > -</TD><TD > <A HREF = "python.html">python</A></TD><TD > python</TD><TD > lib/python</TD></TR> <TR ALIGN="center"><TD >REAX</TD><TD > ReaxFF potential</TD><TD > Aidan Thompson (Sandia)</TD><TD > <A HREF = "pair_reax.html">pair_style reax</A></TD><TD > reax</TD><TD > lib/reax</TD></TR> <TR ALIGN="center"><TD >REPLICA</TD><TD > multi-replica methods</TD><TD > -</TD><TD > <A HREF = "Section_howto.html#howto_5">Section_howto 6.5</A></TD><TD > tad</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >RIGID</TD><TD > rigid bodies</TD><TD > -</TD><TD > <A HREF = "fix_rigid.html">fix rigid</A></TD><TD > rigid</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >SHOCK</TD><TD > shock loading methods</TD><TD > -</TD><TD > <A HREF = "fix_msst.html">fix msst</A></TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >SNAP</TD><TD > quantum-fit potential</TD><TD > Aidan Thompson (Sandia)</TD><TD > <A HREF = "pair_snap.html">pair snap</A></TD><TD > snap</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >SRD</TD><TD > stochastic rotation dynamics</TD><TD > -</TD><TD > <A HREF = "fix_srd.html">fix srd</A></TD><TD > srd</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >VORONOI</TD><TD > Voronoi tesselations</TD><TD > Daniel Schwen (LANL)</TD><TD > <A HREF = "compute_voronoi_atom.html">compute voronoi/atom</A></TD><TD > -</TD><TD > Voro++</TD></TR> <TR ALIGN="center"><TD >XTC</TD><TD > dumps in XTC format</TD><TD > -</TD><TD > <A HREF = "dump.html">dump</A></TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD > </TD></TR></TABLE></DIV> <P>The "Authors" column lists a name(s) if a specific person is responible for creating and maintaining the package. +More details on +multiple authors are give below. </P> <P>(1) The FLD package was created by Amit Kumar and Michael Bybee from Jonathan Higdon's group at UIUC. </P> <P>(2) The OPT package was created by James Fischer (High Performance Technologies), David Richie, and Vincent Natoli (Stone Ridge Technolgy). </P> <P>(3) The KIM package was created by Valeriu Smirichinski, Ryan Elliott, and Ellad Tadmor (U Minn). </P> <P>(4) The KOKKOS package was created primarily by Christian Trott (Sandia). It uses the Kokkos library which was developed by Carter Edwards, Christian, and collaborators at Sandia. </P> <P>The "Doc page" column links to either a portion of the <A HREF = "Section_howto.html">Section_howto</A> of the manual, or an input script command implemented as part of the package. </P> <P>The "Example" column is a sub-directory in the examples directory of the distribution which has an input script that uses the package. E.g. "peptide" refers to the examples/peptide directory. </P> <P>The "Library" column lists an external library which must be built first and which LAMMPS links to when it is built. If it is listed as lib/package, then the code for the library is under the lib directory of the LAMMPS distribution. See the lib/package/README file for info on how to build the library. If it is not listed as lib/package, then it is a third-party library not included in the LAMMPS distribution. See the src/package/README or src/package/Makefile.lammps file for info on where to download the library. <A HREF = "Section_start.html#start_3_3">Section start</A> of the manual also gives details on how to build LAMMPS with both kinds of auxiliary libraries. </P> +<P>Except where explained below, all of these packages can be installed, +and LAMMPS re-built, by issuing these commands from the src dir. +</P> +<PRE>make yes-package +make machine +or +Make.py -p package -a machine +</PRE> +<P>To un-install the package and re-build LAMMPS without it: +</P> +<PRE>make no-package +make machine +or +Make.py -p ^package -a machine +</PRE> +<P>"Package" is the name of the package in lower-case letters, +e.g. asphere or rigid, and "machine" is the build target, e.g. mpi or +serial. +</P> +<HR> + +<HR> + +<H4>Build instructions for COMPRESS package +</H4> +<HR> + +<H4>Build instructions for GPU package +</H4> +<HR> + +<H4>Build instructions for KIM package +</H4> +<HR> + +<H4>Build instructions for KOKKOS package +</H4> +<HR> + +<H4>Build instructions for KSPACE package +</H4> +<HR> + +<H4>Build instructions for MEAM package +</H4> +<HR> + +<H4>Build instructions for POEMS package +</H4> +<HR> + +<H4>Build instructions for PYTHON package +</H4> +<HR> + +<H4>Build instructions for REAX package +</H4> +<HR> + +<H4>Build instructions for VORONOI package +</H4> +<HR> + +<H4>Build instructions for XTC package +</H4> <HR> <HR> <H4><A NAME = "pkg_2"></A>4.2 User packages </H4> <P>The current list of user-contributed packages is as follows: </P> <DIV ALIGN=center><TABLE BORDER=1 > <TR ALIGN="center"><TD >Package</TD><TD > Description</TD><TD > Author(s)</TD><TD > Doc page</TD><TD > Example</TD><TD > Pic/movie</TD><TD > Library</TD></TR> <TR ALIGN="center"><TD >USER-ATC</TD><TD > atom-to-continuum coupling</TD><TD > Jones & Templeton & Zimmerman (1)</TD><TD > <A HREF = "fix_atc.html">fix atc</A></TD><TD > USER/atc</TD><TD > <A HREF = "http://lammps.sandia.gov/pictures.html#atc">atc</A></TD><TD > lib/atc</TD></TR> <TR ALIGN="center"><TD >USER-AWPMD</TD><TD > wave-packet MD</TD><TD > Ilya Valuev (JIHT)</TD><TD > <A HREF = "pair_awpmd.html">pair_style awpmd/cut</A></TD><TD > USER/awpmd</TD><TD > -</TD><TD > lib/awpmd</TD></TR> <TR ALIGN="center"><TD >USER-CG-CMM</TD><TD > coarse-graining model</TD><TD > Axel Kohlmeyer (Temple U)</TD><TD > <A HREF = "pair_sdk.html">pair_style lj/sdk</A></TD><TD > USER/cg-cmm</TD><TD > <A HREF = "http://lammps.sandia.gov/pictures.html#cg">cg</A></TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-COLVARS</TD><TD > collective variables</TD><TD > Fiorin & Henin & Kohlmeyer (2)</TD><TD > <A HREF = "fix_colvars.html">fix colvars</A></TD><TD > USER/colvars</TD><TD > <A HREF = "colvars">colvars</A></TD><TD > lib/colvars</TD></TR> <TR ALIGN="center"><TD >USER-CUDA</TD><TD > NVIDIA GPU styles</TD><TD > Christian Trott (U Tech Ilmenau)</TD><TD > <A HREF = "accelerate_cuda.html">Section accelerate</A></TD><TD > USER/cuda</TD><TD > -</TD><TD > lib/cuda</TD></TR> <TR ALIGN="center"><TD >USER-DIFFRACTION</TD><TD > virutal x-ray and electron diffraction</TD><TD > Shawn Coleman (ARL)</TD><TD ><A HREF = "compute_xrd.html">compute xrd</A></TD><TD > USER/diffraction</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-DRUDE</TD><TD > Drude oscillators</TD><TD > Dequidt & Devemy & Padua (3)</TD><TD > <A HREF = "tutorial_drude.html">tutorial</A></TD><TD > USER/drude</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-EFF</TD><TD > electron force field</TD><TD > Andres Jaramillo-Botero (Caltech)</TD><TD > <A HREF = "pair_eff.html">pair_style eff/cut</A></TD><TD > USER/eff</TD><TD > <A HREF = "http://lammps.sandia.gov/movies.html#eff">eff</A></TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-FEP</TD><TD > free energy perturbation</TD><TD > Agilio Padua (U Blaise Pascal Clermont-Ferrand)</TD><TD > <A HREF = "compute_fep.html">compute fep</A></TD><TD > USER/fep</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-H5MD</TD><TD > dump output via HDF5</TD><TD > Pierre de Buyl (KU Leuven)</TD><TD > <A HREF = "dump_h5md.html">dump h5md</A></TD><TD > -</TD><TD > -</TD><TD > lib/h5md</TD></TR> <TR ALIGN="center"><TD >USER-INTEL</TD><TD > Vectorized CPU and Intel(R) coprocessor styles</TD><TD > W. Michael Brown (Intel)</TD><TD > <A HREF = "accelerate_intel.html">Section accelerate</A></TD><TD > examples/intel</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-LB</TD><TD > Lattice Boltzmann fluid</TD><TD > Colin Denniston (U Western Ontario)</TD><TD > <A HREF = "fix_lb_fluid.html">fix lb/fluid</A></TD><TD > USER/lb</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-MISC</TD><TD > single-file contributions</TD><TD > USER-MISC/README</TD><TD > USER-MISC/README</TD><TD > -</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-MOLFILE</TD><TD > <A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD</A> molfile plug-ins</TD><TD > Axel Kohlmeyer (Temple U)</TD><TD > <A HREF = "dump_molfile.html">dump molfile</A></TD><TD > -</TD><TD > -</TD><TD > VMD-MOLFILE</TD></TR> <TR ALIGN="center"><TD >USER-OMP</TD><TD > OpenMP threaded styles</TD><TD > Axel Kohlmeyer (Temple U)</TD><TD > <A HREF = "accelerate_omp.html">Section accelerate</A></TD><TD > -</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-PHONON</TD><TD > phonon dynamical matrix</TD><TD > Ling-Ti Kong (Shanghai Jiao Tong U)</TD><TD > <A HREF = "fix_phonon.html">fix phonon</A></TD><TD > USER/phonon</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-QMMM</TD><TD > QM/MM coupling</TD><TD > Axel Kohlmeyer (Temple U)</TD><TD > <A HREF = "fix_qmmm.html">fix qmmm</A></TD><TD > USER/qmmm</TD><TD > -</TD><TD > lib/qmmm</TD></TR> <TR ALIGN="center"><TD >USER-QTB</TD><TD > quantum nuclear effects</TD><TD > Yuan Shen (Stanford)</TD><TD > <A HREF = "fix_qtb.html">fix qtb</A> <A HREF = "fix_qbmsst.html">fix_qbmsst</A></TD><TD > qtb</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-QUIP</TD><TD > QUIP/libatoms interface</TD><TD > Albert Bartok-Partay (U Cambridge)</TD><TD > <A HREF = "pair_quip.html">pair_style quip</A></TD><TD > USER/quip</TD><TD > -</TD><TD > lib/quip</TD></TR> <TR ALIGN="center"><TD >USER-REAXC</TD><TD > C version of ReaxFF</TD><TD > Metin Aktulga (LBNL)</TD><TD > <A HREF = "pair_reax_c.html">pair_style reaxc</A></TD><TD > reax</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-SMD</TD><TD > smoothed Mach dynamics</TD><TD > Georg Ganzenmuller (EMI)</TD><TD > <A HREF = "PDF/SMD_LAMMPS_userguide.pdf">userguide.pdf</A></TD><TD > USER/smd</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-SPH</TD><TD > smoothed particle hydrodynamics</TD><TD > Georg Ganzenmuller (EMI)</TD><TD > <A HREF = "PDF/SPH_LAMMPS_userguide.pdf">userguide.pdf</A></TD><TD > USER/sph</TD><TD > <A HREF = "http://lammps.sandia.gov/movies.html#sph">sph</A></TD><TD > -</TD></TR> <TR ALIGN="center"><TD >USER-TALLY</TD><TD > Pairwise tallied computes</TD><TD > Axel Kohlmeyer (Temple U)</TD><TD > <A HREF = "compute_tally.html">compute <...>/tally</A></TD><TD > USER/tally</TD><TD > -</TD><TD > -</TD></TR> <TR ALIGN="center"><TD > </TD></TR></TABLE></DIV> <P>The "Authors" column lists a name(s) if a specific person is responible for creating and maintaining the package. </P> -<P>If the Library is not listed as lib/package, then it is a third-party -library not included in the LAMMPS distribution. See the -src/package/Makefile.lammps file for info on where to download the -library from. -</P> -<P>(2) The ATC package was created by Reese Jones, Jeremy Templeton, and +<P>(1) The ATC package was created by Reese Jones, Jeremy Templeton, and Jon Zimmerman (Sandia). </P> <P>(2) The COLVARS package was created by Axel Kohlmeyer (Temple U) using the colvars module library written by Giacomo Fiorin (Temple U) and Jerome Henin (LISM, Marseille, France). </P> <P>(3) The DRUDE package was created by Alain Dequidt (U Blaise Pascal Clermont-Ferrand) and co-authors Julien Devemy (CNRS) and Agilio Padua (U Blaise Pascal). </P> +<P>If the Library is not listed as lib/package, then it is a third-party +library not included in the LAMMPS distribution. See the +src/package/Makefile.lammps file for info on where to download the +library from. +</P> <P>The "Doc page" column links to either a portion of the <A HREF = "Section_howto.html">Section_howto</A> of the manual, or an input script command implemented as part of the package, or to additional -documentation provided witht he package. +documentation provided within the package. </P> <P>The "Example" column is a sub-directory in the examples directory of the distribution which has an input script that uses the package. E.g. "peptide" refers to the examples/peptide directory. USER/cuda refers to the examples/USER/cuda directory. </P> <P>The "Library" column lists an external library which must be built first and which LAMMPS links to when it is built. If it is listed as lib/package, then the code for the library is under the lib directory of the LAMMPS distribution. See the lib/package/README file for info on how to build the library. If it is not listed as lib/package, then it is a third-party library not included in the LAMMPS distribution. See the src/package/Makefile.lammps file for info on where to download the library. <A HREF = "Section_start.html#start_3_3">Section start</A> of the manual also gives details on how to build LAMMPS with both kinds of auxiliary libraries. </P> -<P>More details on each package, from the USER-*/README file is given -below. +<P>Except where explained below, all of these packages can be installed, +and LAMMPS re-built, by issuing these commands from the src dir. +</P> +<PRE>make yes-user-package +make machine +or +Make.py -p package -a machine +</PRE> +<P>To un-install the package and re-build LAMMPS without it: +</P> +<PRE>make no-user-package +make machine +or +Make.py -p ^package -a machine +</PRE> +<P>"Package" is the name of the package (in this case without the user +prefix) in lower-case letters, e.g. drude or phonon, and "machine" is +the build target, e.g. mpi or serial. </P> <HR> +<HR> + <H4>USER-ATC package </H4> <P>This package implements a "fix atc" command which can be used in a LAMMPS input script. This fix can be employed to either do concurrent coupling of MD with FE-based physics surrogates or on-the-fly post-processing of atomic information to continuum fields. </P> <P>See the doc page for the fix atc command to get started. At the bottom of the doc page are many links to additional documentation contained in the doc/USER/atc directory. </P> <P>There are example scripts for using this package in examples/USER/atc. </P> <P>This package uses an external library in lib/atc which must be compiled before making LAMMPS. See the lib/atc/README file and the LAMMPS manual for information on building LAMMPS with external libraries. </P> <P>The primary people who created this package are Reese Jones (rjones at sandia.gov), Jeremy Templeton (jatempl at sandia.gov) and Jon Zimmerman (jzimmer at sandia.gov) at Sandia. Contact them directly if you have questions. </P> <HR> <H4>USER-AWPMD package </H4> <P>This package contains a LAMMPS implementation of the Antisymmetrized Wave Packet Molecular Dynamics (AWPMD) method. </P> <P>See the doc page for the pair_style awpmd/cut command to get started. </P> <P>There are example scripts for using this package in examples/USER/awpmd. </P> <P>This package uses an external library in lib/awpmd which must be compiled before making LAMMPS. See the lib/awpmd/README file and the LAMMPS manual for information on building LAMMPS with external libraries. </P> <P>The person who created this package is Ilya Valuev at the JIHT in Russia (valuev at physik.hu-berlin.de). Contact him directly if you have questions. </P> <HR> <H4>USER-CG-CMM package </H4> <P>This package implements 3 commands which can be used in a LAMMPS input script: </P> <UL><LI>pair_style lj/sdk <LI>pair_style lj/sdk/coul/long <LI>angle_style sdk </UL> <P>These styles allow coarse grained MD simulations with the parametrization of Shinoda, DeVane, Klein, Mol Sim, 33, 27 (2007) (SDK), with extensions to simulate ionic liquids, electrolytes, lipids and charged amino acids. </P> <P>See the doc pages for these commands for details. </P> <P>There are example scripts for using this package in examples/USER/cg-cmm. </P> <P>This is the second generation implementation reducing the the clutter of the previous version. For many systems with electrostatics, it will be faster to use pair_style hybrid/overlay with lj/sdk and coul/long instead of the combined lj/sdk/coul/long style. since the number of charged atom types is usually small. For any other coulomb interactions this is now required. To exploit this property, the use of the kspace_style pppm/cg is recommended over regular pppm. For all new styles, input file backward compatibility is provided. The old implementation is still available through appending the /old suffix. These will be discontinued and removed after the new implementation has been fully validated. </P> <P>The current version of this package should be considered beta quality. The CG potentials work correctly for "normal" situations, but have not been testing with all kinds of potential parameters and simulation systems. </P> <P>The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions. </P> <HR> <H4>USER-COLVARS package </H4> <P>This package implements the "fix colvars" command which can be used in a LAMMPS input script. </P> <P>This fix allows to use "collective variables" to implement Adaptive Biasing Force, Metadynamics, Steered MD, Umbrella Sampling and Restraints. This code consists of two parts: </P> <UL><LI>A portable collective variable module library written and maintained <LI>by Giacomo Fiorin (ICMS, Temple University, Philadelphia, PA, USA) and <LI>Jerome Henin (LISM, CNRS, Marseille, France). This code is located in <LI>the directory lib/colvars and needs to be compiled first. The colvars <LI>fix and an interface layer, exchanges information between LAMMPS and <LI>the collective variable module. </UL> <P>See the doc page of <A HREF = "fix_colvars.html">fix colvars</A> for more details. </P> <P>There are example scripts for using this package in examples/USER/colvars </P> <P>This is a very new interface that does not yet support all features in the module and will see future optimizations and improvements. The colvars module library is also available in NAMD has been thoroughly used and tested there. Bugs and problems are likely due to the interface layers code. Thus the current version of this package should be considered beta quality. </P> <P>The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions. </P> <HR> <H4>USER-CUDA package </H4> <P>This package provides acceleration of various LAMMPS pair styles, fix styles, compute styles, and long-range Coulombics via PPPM for NVIDIA GPUs. </P> <P>See this section of the manual to get started: </P> <P><A HREF = "Section_accelerate.html#acc_7">Section_accelerate</A> </P> <P>There are example scripts for using this package in examples/USER/cuda. </P> <P>This package uses an external library in lib/cuda which must be compiled before making LAMMPS. See the lib/cuda/README file and the LAMMPS manual for information on building LAMMPS with external libraries. </P> <P>The person who created this package is Christian Trott at the University of Technology Ilmenau, Germany (christian.trott at tu-ilmenau.de). Contact him directly if you have questions. </P> <HR> <H4>USER-DIFFRACTION package </H4> <P>This package contains the commands neeed to calculate x-ray and electron diffraction intensities based on kinematic diffraction theory. </P> <P>See these doc pages and their related commands to get started: </P> <UL><LI><A HREF = "compute_xrd.html">compute xrd</A> <LI><A HREF = "compute_saed.html">compute saed</A> <LI><A HREF = "fix_saed_vtk.html">fix saed/vtk</A> </UL> <P>The person who created this package is Shawn P. Coleman (shawn.p.coleman8.ctr at mail.mil) while at the University of Arkansas. Contact him directly if you have questions. </P> <HR> <H4>USER-DRUDE package </H4> <P>This package implements methods for simulating polarizable systems in LAMMPS using thermalized Drude oscillators. </P> <P>See these doc pages and their related commands to get started: </P> <UL><LI><A HREF = "tutorial_drude.html">Drude tutorial</A> <LI><A HREF = "fix_drude.html">fix drude</A> <LI><A HREF = "compute_temp_drude.html">compute temp/drude</A> <LI><A HREF = "fix_langevin_drude.html">fix langevin/drude</A> <LI><A HREF = "fix_drude_transform.html">fix drude/transform/...</A> <LI><A HREF = "pair_thole.html">pair thole</A> </UL> <P>There are auxiliary tools for using this package in tools/drude. </P> <P>The person who created this package is Alain Dequidt at Universite Blaise Pascal Clermont-Ferrand (alain.dequidt at univ-bpclermont.fr) Contact him directly if you have questions. Co-authors: Julien Devemy, Agilio Padua. </P> <HR> <H4>USER-EFF package </H4> <P>This package contains a LAMMPS implementation of the electron Force Field (eFF) currently under development at Caltech, as described in A. Jaramillo-Botero, J. Su, Q. An, and W.A. Goddard III, JCC, 2010. The eFF potential was first introduced by Su and Goddard, 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. We classify it as a mixed QM-classical approach rather than a conventional force field method, which introduces QM-based terms (a spin-dependent repulsion term to account for the Pauli exclusion principle and the electron wavefunction kinetic energy associated with the Heisenberg principle) that reduce, along with classical electrostatic terms between nuclei and electrons, to the sum of a set of effective pairwise potentials. 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. </P> <P>The necessary customizations to the LAMMPS core are in place to enable the correct handling of explicit electron properties during minimization and dynamics. </P> <P>See the doc page for the pair_style eff/cut command to get started. </P> <P>There are example scripts for using this package in examples/USER/eff. </P> <P>There are auxiliary tools for using this package in tools/eff. </P> <P>The person who created this package is Andres Jaramillo-Botero at CalTech (ajaramil at wag.caltech.edu). Contact him directly if you have questions. </P> <HR> <H4>USER-FEP package </H4> <P>This package provides methods for performing free energy perturbation simulations with soft-core pair potentials in LAMMPS. </P> <P>See these doc pages and their related commands to get started: </P> <UL><LI><A HREF = "fix_adapt_fep.html">fix adapt/fep</A> <LI><A HREF = "compute_fep.html">compute fep</A> <LI><A HREF = "pair_lj_soft.html">soft pair styles</A> </UL> <P>The person who created this package is Agilio Padua at Universite Blaise Pascal Clermont-Ferrand (agilio.padua at univ-bpclermont.fr) Contact him directly if you have questions. </P> <HR> <H4>USER-H5MD package </H4> <P>This package contains a <A HREF = "dump_h5md.html">dump h5md</A> command for performing a dump of atom properties in HDF5 format. <A HREF = "http://www.hdfgroup.org/HDF5/">HDF5 files</A> are binary, portable and self-describing and can be examined and used by a variety of auxiliary tools. The output HDF5 files are structured in a format called H5MD, which was designed to store molecular data, and can be used and produced by various MD and MD-related codes. The <A HREF = "doc/dump_h5md.html">dump h5md</A> command gives a citation to a paper describing the format. </P> <P>The person who created this package and the underlying H5MD format is Pierre de Buyl at KU Leuven (see http://pdebuyl.be). Contact him directly if you have questions. </P> <HR> <H4>USER-INTEL package </H4> <P>This package provides options for performing neighbor list and non-bonded force calculations in single, mixed, or double precision and also a capability for accelerating calculations with an Intel(R) Xeon Phi(TM) coprocessor. </P> <P>See this section of the manual to get started: </P> <P><A HREF = "Section_accelerate.html#acc_9">Section_accelerate</A> </P> <P>The person who created this package is W. Michael Brown at Intel (michael.w.brown at intel.com). Contact him directly if you have questions. </P> <HR> <H4>USER-LB package </H4> <P>This package contains a LAMMPS implementation of a background Lattice-Boltzmann fluid, which can be used to model MD particles influenced by hydrodynamic forces. </P> <P>See this doc page and its related commands to get started: </P> <P><A HREF = "fix_lb_fluid.html">fix lb/fluid</A> </P> <P>The people who created this package are Frances Mackay (fmackay at uwo.ca) and Colin (cdennist at uwo.ca) Denniston, University of Western Ontario. Contact them directly if you have questions. </P> <HR> <H4>USER-MISC package </H4> <P>The files in this package are a potpourri of (mostly) unrelated features contributed to LAMMPS by users. Each feature is a single pair of files (*.cpp and *.h). </P> <P>More information about each feature can be found by reading its doc page in the LAMMPS doc directory. The doc page which lists all LAMMPS input script commands is as follows: </P> <P><A HREF = "Section_commands.html#cmd_5">Section_commands</A> </P> <P>User-contributed features are listed at the bottom of the fix, compute, pair, etc sections. </P> <P>The list of features and author of each is given in the src/USER-MISC/README file. </P> <P>You should contact the author directly if you have specific questions about the feature or its coding. </P> <HR> <H4>USER-MOLFILE package </H4> <P>This package contains a dump molfile command which uses molfile plugins that are bundled with the <A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD</A> molecular visualization and analysis program, to enable LAMMPS to dump its information in formats compatible with various molecular simulation tools. </P> <P>The package only provides the interface code, not the plugins. These can be obtained from a VMD installation which has to match the platform that you are using to compile LAMMPS for. By adding plugins to VMD, support for new file formats can be added to LAMMPS (or VMD or other programs that use them) without having to recompile the application itself. </P> <P>See this doc page to get started: </P> <P><A HREF = "dump_molfile.html#acc_5">dump molfile</A> </P> <P>The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions. </P> <HR> <H4>USER-OMP package </H4> <P>This package provides OpenMP multi-threading support and other optimizations of various LAMMPS pair styles, dihedral styles, and fix styles. </P> <P>See this section of the manual to get started: </P> <P><A HREF = "Section_accelerate.html#acc_5">Section_accelerate</A> </P> <P>The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions. </P> <HR> <H4>USER-PHONON package </H4> <P>This package contains a fix phonon command that calculates dynamical matrices, which can then be used to compute phonon dispersion relations, directly from molecular dynamics simulations. </P> <P>See this doc page to get started: </P> <P><A HREF = "fix_phonon.html">fix phonon</A> </P> <P>The person who created this package is Ling-Ti Kong (konglt at sjtu.edu.cn) at Shanghai Jiao Tong University. Contact him directly if you have questions. </P> <HR> <H4>USER-QMMM package </H4> <P>This package provides a fix qmmm command which allows LAMMPS to be used in a QM/MM simulation, currently only in combination with pw.x code from the <A HREF = "http://www.quantum-espresso.org">Quantum ESPRESSO</A> package. </P> <P>The current implementation only supports an ONIOM style mechanical coupling to the Quantum ESPRESSO plane wave DFT package. Electrostatic coupling is in preparation and the interface has been written in a manner that coupling to other QM codes should be possible without changes to LAMMPS itself. </P> <P>See this doc page to get started: </P> <P><A HREF = "fix_qmmm.html">fix qmmm</A> </P> <P>as well as the lib/qmmm/README file. </P> <P>The person who created this package is Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact him directly if you have questions. </P> <HR> <H4>USER-QTB package </H4> <P>This package provides a self-consistent quantum treatment of the vibrational modes in a classical molecular dynamics simulation. By coupling the MD simulation to a colored thermostat, it introduces zero point energy into the system, alter the energy power spectrum and the heat capacity towards their quantum nature. This package could be of interest if one wants to model systems at temperatures lower than their classical limits or when temperatures ramp up across the classical limits in the simulation. </P> <P>See these two doc pages to get started: </P> <P><A HREF = "fix_qtb.html">fix qtb</A> provides quantum nulcear correction through a colored thermostat and can be used with other time integration schemes like <A HREF = "fix_nve.html">fix nve</A> or <A HREF = "fix_nh.html">fix nph</A>. </P> <P><A HREF = "fix_qbmsst.html">fix qbmsst</A> enables quantum nuclear correction of a multi-scale shock technique simulation by coupling the quantum thermal bath with the shocked system. </P> <P>The person who created this package is Yuan Shen (sy0302 at stanford.edu) at Stanford University. Contact him directly if you have questions. </P> <HR> <H4>USER-REAXC package </H4> <P>This package 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. </P> <P>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 library was originally authored by Adri van Duin. </P> <P>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 with Fortran memory allocation or linking to a Fortran library. </P> <P>For technical details about this implemention of ReaxFF, see this paper: </P> <P>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, in press (2011). </P> <P>See the doc page for the pair_style reax/c command for details of how to use it in LAMMPS. </P> <P>The person who created this package is Hasan Metin Aktulga (hmaktulga at lbl.gov), while at Purdue University. Contact him directly, or Aidan Thompson at Sandia (athomps at sandia.gov), if you have questions. </P> <HR> <H4>USER-SMD package </H4> <P>This package implements smoothed Mach dynamics (SMD) in LAMMPS. Currently, the package has the following features: </P> <P>* Does liquids via traditional Smooth Particle Hydrodynamics (SPH) </P> <P>* Also solves solids mechanics problems via a state of the art stabilized meshless method with hourglass control. </P> <P>* Can specify hydrostatic interactions independently from material strength models, i.e. pressure and deviatoric stresses are separated. </P> <P>* Many material models available (Johnson-Cook, plasticity with hardening, Mie-Grueneisen, Polynomial EOS). Easy to add new material models. </P> <P>* Rigid boundary conditions (walls) can be loaded as surface geometries from *.STL files. </P> <P>See the file doc/PDF/SMD_LAMMPS_userguide.pdf to get started. </P> <P>There are example scripts for using this package in examples/USER/smd. </P> <P>The person who created this package is Georg Ganzenmuller at the Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if you have questions. </P> <H4>USER-SPH package </H4> <P>This package implements smoothed particle hydrodynamics (SPH) in LAMMPS. Currently, the package has the following features: </P> <P>* Tait, ideal gas, Lennard-Jones equation of states, full support for complete (i.e. internal-energy dependent) equations of state </P> <P>* Plain or Monaghans XSPH integration of the equations of motion </P> <P>* Density continuity or density summation to propagate the density field </P> <P>* Commands to set internal energy and density of particles from the input script </P> <P>* Output commands to access internal energy and density for dumping and thermo output </P> <P>See the file doc/PDF/SPH_LAMMPS_userguide.pdf to get started. </P> <P>There are example scripts for using this package in examples/USER/sph. </P> <P>The person who created this package is Georg Ganzenmuller at the Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if you have questions. </P> </HTML> diff --git a/doc/doc2/Section_start.html b/doc/doc2/Section_start.html index 021793821..33d64e0f6 100644 --- a/doc/doc2/Section_start.html +++ b/doc/doc2/Section_start.html @@ -1,1942 +1,1940 @@ <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 = "#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 via the Make.py script</A><BR> 2.5 <A HREF = "#start_5">Building LAMMPS as a library</A><BR> 2.6 <A HREF = "#start_6">Running LAMMPS</A><BR> 2.7 <A HREF = "#start_7">Command-line options</A><BR> 2.8 <A HREF = "#start_8">Screen output</A><BR> 2.9 <A HREF = "#start_9">Tips for users of previous versions</A> <BR> <HR> <HR> <H4><A NAME = "start_1"></A>2.1 What's in the LAMMPS distribution </H4> <P>When you download a LAMMPS tarball you will need to unzip and untar the downloaded file with the following commands, after placing the tarball 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 >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>Note that the <A HREF = "download">download page</A> also has links to download Windows exectubles and installers, as well as pre-built executables for a few specific Linux distributions. It also has instructions for how to download/install LAMMPS for Macs (via Homebrew), and to download and update LAMMPS from SVN and Git repositories, which gives you the same files that are in the download tarball. </P> <P>The Windows and Linux 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 an executable with non-included packages or that is more current, then you'll need to build LAMMPS yourself, as discussed in the next section. </P> <P>Skip to the <A HREF = "#start_6">Running LAMMPS</A> sections for info on how to launch a LAMMPS Windows executable on a Windows box. </P> <HR> <H4><A NAME = "start_2"></A>2.2 Making LAMMPS </H4> <P>This section has the following sub-sections: </P> <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 = "start_2_1"></A><B><I>Read this first:</I></B> <P>If you want to avoid building LAMMPS yourself, read the preceeding section about options available for downloading and installing executables. Details are discussed on the <A HREF = "download">download</A> page. </P> <P>Building LAMMPS can be simple or not-so-simple. If all you need are the default packages installed in LAMMPS, and MPI is already installed on your machine, or you just want to run LAMMPS in serial, then you can typically use the Makefile.mpi or Makefile.serial files in src/MAKE by typing one of these lines (from the src dir): </P> <PRE>make mpi make serial </PRE> <P>Note that on a facility supercomputer, there are often "modules" loaded in your environment that provide the compilers and MPI you should use. In this case, the "mpicxx" compile/link command in Makefile.mpi should just work by accessing those modules. </P> <P>It may be the case that one of the other Makefile.machine files in the src/MAKE sub-directories is a better match to your system (type "make" to see a list), you can use it as-is by typing (for example): </P> <PRE>make stampede </PRE> <P>If any of these builds (with an existing Makefile.machine) works on your system, then you're done! </P> <P>If you want to do one of the following: </P> <UL><LI>use optional LAMMPS features that require additional libraries <LI>use optional packages that require additional libraries <LI>use optional accelerator packages that require special compiler/linker settings <LI>run on a specialized platform that has its own compilers, settings, or other libs to use </UL> <P>then building LAMMPS is more complicated. You may need to find where auxiliary libraries exist on your machine or install them if they don't. You may need to build additional libraries that are part of the LAMMPS package, before building LAMMPS. You may need to edit a Makefile.machine file to make it compatible with your system. </P> <P>Note that there is a Make.py tool in the src directory that automates several of these steps, but you still have to know what you are doing. <A HREF = "#start_4">Section 2.4</A> below describes the tool. It is a convenient way to work with installing/un-installing various packages, the Makefile.machine changes required by some packages, and the auxiliary libraries some of them use. </P> <P>Please read the following sections 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 compilation, linking, and run problems that users have are often 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 post the issue to the <A HREF = "http://lammps.sandia.gov/mail.html">LAMMPS mail list</A>. </P> <P>If you succeed in building LAMMPS on a new kind of machine, for which there isn't a similar machine Makefile included in the src/MAKE/MACHINES directory, then send it to the developers and we can include it in the LAMMPS distribution. </P> <HR> <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 systems and machines. See the src/MAKE/README file for a quick overview of what files are available and what sub-directories they are in. </P> <P>The src/MAKE dir has a few files that should work as-is on many platforms. The src/MAKE/OPTIONS dir has more that invoke additional compiler, MPI, and other setting options commonly used by LAMMPS, to illustrate their syntax. The src/MAKE/MACHINES dir has many more that have been tweaked or optimized for specific machines. These files are all good starting points if you find you need to change them for your machine. Put any file you edit into the src/MAKE/MINE directory and it will be never be touched by any LAMMPS updates. </P> <P>>From within the src directory, type "make" or "gmake". You should see a list of available choices from src/MAKE and all of its sub-directories. If one of those has the options you want or is the machine you want, you can type a command like: </P> <PRE>make mpi or make serial_icc or gmake mac </PRE> <P>Note that the corresponding Makefile.machine can exist in src/MAKE or any of its sub-directories. If a file with the same name appears in multiple places (not a good idea), the order they are used is as follows: src/MAKE/MINE, src/MAKE, src/MAKE/OPTIONS, src/MAKE/MACHINES. This gives preference to a file you have created/edited and put in src/MAKE/MINE. </P> <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_mpi or lmp_g++_serial or lmp_mac is produced, then you're done; it's your lucky day. </P> <P>Note that by default only a few of LAMMPS optional packages are 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 Makefile.* in src/MAKE or one of its sub-directories 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. When it works, put the edited file in src/MAKE/MINE and it will not be altered by any future LAMMPS updates. </P> <P><B>Step 2</B> </P> <P>Change the first line of 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 mpicxx 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 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. You should not need to do this if you use mpicxx. </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++ and Intel icc 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_PNG <LI>-DLAMMPS_FFMPEG <LI>-DLAMMPS_MEMALIGN <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 machine supports the "popen()" function in the standard runtime library and that a gzip executable can be found by LAMMPS during a run. </P> <P>IMPORTANT NOTE: on some clusters with high-speed networks, using the fork() library calls (required by popen()) can interfere with the fast communication library and lead to simulations using compressed output or input to hang or crash. For selected operations, compressed file I/O is also available using a compression library instead, which are provided in the COMPRESS package. From more details about compiling LAMMPS with packages, please see below. </P> <P>If you use -DLAMMPS_JPEG, the <A HREF = "dump_image.html">dump image</A> command will be able to write out JPEG image files. For JPEG files, you must also link LAMMPS with a JPEG library, as described below. If you use -DLAMMPS_PNG, the <A HREF = "dump.html">dump image</A> command will be able to write out PNG image files. For PNG files, you must also link LAMMPS with a PNG library, as described below. If neither of those two defines are used, LAMMPS will only be able to write out uncompressed PPM image files. </P> <P>If you use -DLAMMPS_FFMPEG, the <A HREF = "dump_image.html">dump movie</A> command will be available to support on-the-fly generation of rendered movies the need to store intermediate image files. It requires that your machines supports the "popen" function in the standard runtime library and that an FFmpeg executable can be found by LAMMPS during the run. </P> <P>IMPORTANT NOTE: Similar to the note above, this option can conflict with high-speed networks, because it uses popen(). </P> <P>Using -DLAMMPS_MEMALIGN=<bytes> enables the use of the posix_memalign() call instead of malloc() when large chunks or memory are allocated by LAMMPS. This can help to make more efficient use of vector instructions of modern CPUS, since dynamically allocated memory has to be aligned on larger than default byte boundaries (e.g. 16 bytes instead of 8 bytes on x86 type platforms) for optimal performance. </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 settings refer to use of 4-byte (small) vs 8-byte (big) integers within LAMMPS, as specified in src/lmptype.h. The only reason to use the BIGBIG setting is to enable simulation of huge molecular systems (which store bond topology info) with more than 2 billion atoms, or to track the image flags of moving atoms that wrap around a periodic box more than 512 times. Normally, the only reason to use SMALLSMALL is if your machine does not support 64-bit integers, though you can use SMALLSMALL setting if you are running in serial or on a desktop machine or small cluster where you will never run large systems or for long time (more than 2 billion atoms, more than 2 billion timesteps). See the <A HREF = "#start_2_4">Additional build tips</A> section below for more details on these settings. </P> <P>Note that two packages, USER-ATC and USER-CUDA are not currently compatible with -DLAMMPS_BIGBIG. Also the GPU package requires the lib/gpu library to be compiled with the same setting, or the link will fail. </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. Note that you do not need to set these if you use the MPI compiler mpicxx for your CC and LINK setting in the section above. The MPI wrapper knows where to find the needed files. </P> <P>If you want LAMMPS to run in parallel, you must have an MPI library installed on your platform. If MPI is installed on your system in the usual place (under /usr/local), you also may not need to specify these 3 variables, assuming /usr/local is in your path. 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, before building LAMMPS. Or the parallel machine may have a vendor-provided MPI which the compiler has no trouble finding. </P> <P>Failing this, these 3 variables can be used to 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 MPICH2 or OpenMPI. MPICH can be downloaded from the <A HREF = "http://www.mcs.anl.gov/research/projects/mpich2/">Argonne MPI site</A>. OpenMPI can be downloaded from the <A HREF = "http://www.open-mpi.org">OpenMPI site</A>. Other MPI packages 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 is likely to be faster than a self-installed MPICH or OpenMPI, so find out how to build and link with it. If you use MPICH or OpenMPI, 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 src/MAKE/Makefile.serial 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. Note that if you are building with src/MAKE/Makefile.serial, e.g. by typing "make serial", then the STUBS library is built for you. </P> <P>To build the STUBS library from the src directory, type "make mpi-stubs", or from the src/STUBS dir, type "make". This should create a libmpi_stubs.a file suitable for linking to LAMMPS. If the build fails, you will need to edit the STUBS/Makefile for your platform. </P> <P>The file STUBS/mpi.c 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 -DFFTW_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 options. </P> <P><B>Step 7</B> </P> <P>The 3 JPG variables allow you to specify a JPEG and/or PNG library which LAMMPS uses when writing out JPEG or PNG 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 or -DLAMMPS_PNG switches discussed above in Step 4, since in that case JPEG/PNG output will be disabled. </P> <P>A standard JPEG library usually goes by the name libjpeg.a or libjpeg.so 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>A standard PNG library usually goes by the name libpng.a or libpng.so and has an associated header file png.h. Whichever PNG 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 packages are 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, and you have pre-built any other needed libraries (e.g. MPI, FFT, etc) 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 = "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 = "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_target where it stores the system-specific *.o files. </P> <P>(2) Cleaning up. </P> <P>Typing "make clean-all" or "make clean-machine" will delete *.o object files created when LAMMPS is built, for either all builds or for a particular machine. </P> <P>(3) Changing the LAMMPS size limits via -DLAMMPS_SMALLBIG or -DLAMMPS_BIGBIG or -DLAMMPS_SMALLSMALL </P> <P>As explained above, any of these 3 settings can be specified on the LMP_INC line in your low-level src/MAKE/Makefile.foo. </P> <P>The default is -DLAMMPS_SMALLBIG which allows for systems with up to 2^63 atoms and 2^63 timesteps (about 9e18). The atom limit is for atomic systems which do not store bond topology info and thus do not require atom IDs. If you use atom IDs for atomic systems (which is the default) or if you use a molecular model, which stores bond topology info and thus requires atom IDs, the limit is 2^31 atoms (about 2 billion). This is because the IDs are stored in 32-bit integers. </P> <P>Likewise, with this setting, the 3 image flags for each atom (see the <A HREF = "dump.html">dump</A> doc page for a discussion) are stored in a 32-bit integer, which means the atoms can only wrap around a periodic box (in each dimension) at most 512 times. If atoms move through the periodic box more than this many times, the image flags will "roll over", e.g. from 511 to -512, which can cause diagnostics like the mean-squared displacement, as calculated by the <A HREF = "compute_msd.html">compute msd</A> command, to be faulty. </P> <P>To allow for larger atomic systems with atom IDs or larger molecular systems or larger image flags, compile with -DLAMMPS_BIGBIG. This stores atom IDs and image flags in 64-bit integers. This enables atomic or molecular systems with atom IDS of up to 2^63 atoms (about 9e18). And image flags will not "roll over" until they reach 2^20 = 1048576. </P> <P>If your system does not support 8-byte integers, you will need to compile with the -DLAMMPS_SMALLSMALL setting. This will restrict the total number of atoms (for atomic or molecular systems) and timesteps to 2^31 (about 2 billion). Image flags will roll over at 2^9 = 512. </P> <P>Note that in src/lmptype.h there are definitions of all these data types as well as the MPI data types associated with them. The MPI types need to be consistent with the associated C data types, or else LAMMPS will generate a run-time error. As far as we know, the settings defined in src/lmptype.h are portable and work on every current system. </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 2^31 atoms per processor (about 2 billion). This should not normally be a limitation 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 = "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 src/MAKE/MACHINES/Makefile.mac and Makefile.mac_mpi files. </P> <HR> <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 executable. See the <A HREF = "#start_6">Running LAMMPS</A> section for instructions on running these executables on a Windows box. </P> <P>The pre-built executables hosted on the <A HREF = "http://lammps.sandia.gov/download.html">LAMMPS download page</A> are built with a subset of the available packages; see the download page for the list. These are single executable files. No examples or documentation in included. You will need to download the full source code package to obtain those. </P> <P>As an alternative, you can download "daily builds" (and some older versions) of the installer packages from <A HREF = "http://rpm.lammps.org/windows.html">rpm.lammps.org/windows.html</A>. These executables are built with most optional packages and the download includes documentation, some tools and most examples. </P> <P>If you want a Windows version with specific packages included and excluded, you can build it yourself. </P> <P>One way to do this is install and use cygwin to build LAMMPS with a standard unix style make program, just as you would on a Linux box; see src/MAKE/MACHINES/Makefile.cygwin. </P> -<P>The other way to do this is using Visual Studio and project files. -See the src/WINDOWS directory and its README.txt file for instructions -on both a basic build and a customized build with pacakges you select. -</P> <HR> <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 = "#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">Packages that require Makefile.machine settings</A> </UL> <P>Note that the following <A HREF = "#start_4">Section 2.4</A> describes the Make.py tool which can be used to install/un-install packages and build the auxiliary libraries which some of them use. It can also auto-edit a Makefile.machine to add settings needed by some packages. </P> <HR> <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. </P> <P>You can see the list of all packages by typing "make package" from within the src directory of the LAMMPS distribution. This also lists various make commands that can be used to manipulate packages. </P> <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> <PRE>lmp_machine -h </PRE> <P>to run your executable with the optional <A HREF = "#start_7">-h command-line -switch</A> for "help", which will list the styles and commands -known to your executable. +switch</A> for "help", which will simply list the styles and +commands known to your executable, and immediately exit. </P> <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">Section_packages</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>Standard packages, such as molecule or kspace, 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 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>User packages, such as user-atc or user-omp, 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_15">this -section</A> of the documentation. +package, you may need to contact the contributor directly to get help. +Information on how to submit additions you make to LAMMPS as single +files or either a standard or user-contributed package are given in +<A HREF = "Section_modify.html#mod_15">this section</A> of the documentation. </P> -<P>Some packages (both standard and user) require additional libraries. -See more details below. +<P>Some packages (both standard and user) require additional auxiliary +libraries when building LAMMPS. See more details below. </P> <HR> <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>To use (or not use) a package you must include it (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>IMPORTANT NOTE: You should NOT include/exclude packages and build -LAMMPS in a single make command by using multiple targets, e.g. make +LAMMPS in a single make command using multiple targets, e.g. make yes-colloid g++. This is because the make procedure creates a list of source files that will be out-of-date for the build if the package -configuration changes during the same command. +configuration changes within the same command. </P> <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>If you will never run simulations that use the features in a particular packages, there is no reason to include it in your build. 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>When you download a LAMMPS tarball, these packages are pre-installed in the src directory: KSPACE, MANYBODY,MOLECULE. When you download LAMMPS source files from the SVN or Git repositories, no packages are pre-installed. </P> <P>Packages are included or excluded by typing "make yes-name" or "make no-name", where "name" is the name of the package in lower-case, e.g. name = kspace for the KSPACE package or name = user-atc for the USER-ATC package. You can also type "make yes-standard", "make no-standard", "make yes-std", "make no-std", "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" or "make pu" 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" or "make ps" 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 = "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. Most of them are provided with LAMMPS, in which case they -must be compiled first, before LAMMPS is built if you wish to include +libraries. Many of them are provided with LAMMPS, in which case they +must be compiled first, before LAMMPS is built, if you wish to include that package. If you get a LAMMPS build error about a missing library, this is likely the reason. See the <A HREF = "Section_packages.html">Section_packages</A> doc page for a list of packages that have these kinds of auxiliary libraries. </P> <P>The lib directory in the distribution has sub-directories with package -names that correspond to the needed auxiliary libs, e.g. lib/reax. +names that correspond to the needed auxiliary libs, e.g. lib/gpu. Each sub-directory has a README file that gives more details. Code for most of the auxiliary libraries is included in that directory. Examples are the USER-ATC and MEAM packages. </P> <P>A few of the lib sub-directories do not include code, but do include -instructions and sometimes scripts that automate the process of +instructions (and sometimes scripts) that automate the process of downloading the auxiliary library and installing it so LAMMPS can link -to it. Examples are the KIM and VORONOI and USER-MOLFILE and USER-SMD +to it. Examples are the KIM, VORONOI, USER-MOLFILE, and USER-SMD packages. </P> <P>The lib/python directory (for the PYTHON package) contains only a choice of Makefile.lammps.* files. This is because no auxiliary code or libraries are needed, only the Python library and other system libs -that already available on your system. However, the Makefile.lammps -file is needed to tell the LAMMPS build which libs to use and where to -find them. +that should already available on your system. However, the +Makefile.lammps file is needed to tell LAMMPS which libs to use and +where to find them. </P> <P>For libraries with provided code, the sub-directory README file -(e.g. lib/reax/README) has instructions on how to build that library. +(e.g. lib/atc/README) has instructions on how to build that library. Typically this is done by typing something like: </P> <PRE>make -f Makefile.g++ </PRE> <P>If one of the provided Makefiles is not appropriate for your system you will need to edit or add one. Note that all the Makefiles have a setting for EXTRAMAKE at the top that specifies a Makefile.lammps.* file. </P> <P>If the library build is successful, it will produce 2 files in the lib directory: </P> <PRE>libpackage.a Makefile.lammps </PRE> <P>The Makefile.lammps file will be a copy of the EXTRAMAKE file setting specified in the library Makefile.* you used. </P> <P>Note that you must insure that the settings in Makefile.lammps are appropriate for your system. If they are not, the LAMMPS build will fail. </P> <P>As explained in the lib/package/README files, the settings in Makefile.lammps are used to specify additional system libraries and their locations so that LAMMPS can build with the auxiliary library. -For example, if the MEAM or REAX packages are used, the auxiliary -libraries consist of F90 code, built with a Fortran complier. To link -that library with LAMMPS (a C++ code) via whatever C++ compiler LAMMPS -is built with, typically requires additional Fortran-to-C libraries be +For example, if the MEAM package is used, the auxiliary library +consists of F90 code, built with a Fortran complier. To link that +library with LAMMPS (a C++ code) via whatever C++ compiler LAMMPS is +built with, typically requires additional Fortran-to-C libraries be included in the link. Another example are the BLAS and LAPACK libraries needed to use the USER-ATC or USER-AWPMD packages. </P> <P>For libraries without provided code, the sub-directory README file has information on where to download the library and how to build it, e.g. lib/voronoi/README and lib/smd/README. The README files also describe how you must either (a) create soft links, via the "ln" command, in those directories to point to where you built or installed the packages, or (b) check or edit the Makefile.lammps file in the same directory to provide that information. </P> <P>Some of the sub-directories, e.g. lib/voronoi, also have an install.py script which can be used to automate the process of downloading/building/installing the auxiliary library, and setting the needed soft links. Type "python install.py" for further instructions. </P> <P>As with the sub-directories containing library code, if the soft links or settings in the lib/package/Makefile.lammps files are not correct, the LAMMPS build will typically fail. </P> <HR> <A NAME = "start_3_4"></A><B><I>Packages that require Makefile.machine settings</I></B> <P>A few packages require specific settings in Makefile.machine, to either build or use the package effectively. These are the USER-INTEL, KOKKOS, USER-OMP, and OPT packages. The details of what flags to add or what variables to define are given on the doc pages that describe each of these accelerator packages in detail: </P> <UL><LI><A HREF = "accelerate_intel.html">USER-INTEL package</A> <LI><A HREF = "accelerate_kokkos.html">KOKKOS package</A> <LI><A HREF = "accelerate_omp.html">USER-OMP package</A> <LI><A HREF = "accelerate_opt.html">OPT package</A> </UL> <P>Here is a brief summary of what Makefile.machine changes are needed. Note that the Make.py tool, described in the next <A HREF = "#start_4">Section 2.4</A> can automatically add the needed info to an existing machine Makefile, using simple command-line arguments. </P> <P>In src/MAKE/OPTIONS see the following Makefiles for examples of the changes described below: </P> <UL><LI>Makefile.intel_cpu <LI>Makefile.intel_phi <LI>Makefile.kokkos_omp <LI>Makefile.kokkos_cuda <LI>Makefile.kokkos_phi <LI>Makefile.omp </UL> <P>For the USER-INTEL package, you have 2 choices when building. You can build with CPU or Phi support. The latter uses Xeon Phi chips in "offload" mode. Each of these modes requires additional settings in your Makefile.machine for CCFLAGS and LINKFLAGS. </P> <P>For CPU mode (if using an Intel compiler): </P> <UL><LI>CCFLAGS: add -fopenmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost, -fno-alias, -ansi-alias, -override-limits <LI>LINKFLAGS: add -fopenmp </UL> <P>For Phi mode add the following in addition to the CPU mode flags: </P> <UL><LI>CCFLAGS: add -DLMP_INTEL_OFFLOAD and <LI>LINKFLAGS: add -offload </UL> <P>And also add this to CCFLAGS: </P> <PRE>-offload-option,mic,compiler,"-fp-model fast=2 -mGLOB_default_function_attrs=\"gather_scatter_loop_unroll=4\"" </PRE> <P>For the KOKKOS package, you have 3 choices when building. You can build with OMP or Cuda or Phi support. Phi support uses Xeon Phi chips in "native" mode. This can be done by setting the following variables in your Makefile.machine: </P> <UL><LI>for OMP support, set OMP = yes <LI>for Cuda support, set OMP = yes and CUDA = yes <LI>for Phi support, set OMP = yes and MIC = yes </UL> <P>These can also be set as additional arguments to the make command, e.g. </P> <PRE>make g++ OMP=yes MIC=yes </PRE> <P>Building the KOKKOS package with CUDA support requires a Makefile machine that uses the NVIDIA "nvcc" compiler, as well as an appropriate "arch" setting appropriate to the GPU hardware and NVIDIA software you have on your machine. See src/MAKE/OPTIONS/Makefile.kokkos_cuda for an example of such a machine Makefile. </P> <P>For the USER-OMP package, your Makefile.machine needs additional settings for CCFLAGS and LINKFLAGS. </P> <UL><LI>CCFLAGS: add -fopenmp and -restrict <LI>LINKFLAGS: add -fopenmp </UL> <P>For the OPT package, your Makefile.machine needs an additional settings for CCFLAGS. </P> <UL><LI>CCFLAGS: add -restrict </UL> <HR> -<H4><A NAME = "start_4"></A>2.4 Building LAMMPS via the Make.py script +<H4><A NAME = "start_4"></A>2.4 Building LAMMPS via the Make.py tool </H4> <P>The src directory includes a Make.py script, written in Python, which can be used to automate various steps of the build process. It is particularly useful for working with the accelerator packages, as well as other packages which require auxiliary libraries to be built. </P> <P>The goal of the Make.py tool is to allow any complex multi-step LAMMPS build to be performed as a single Make.py command. And you can archive the commands, so they can be re-invoked later via the -r (redo) switch. If you find some LAMMPS build procedure that can't be done in a single Make.py command, let the developers know, and we'll see if we can augment the tool. </P> <P>You can run Make.py from the src directory by typing either: </P> <PRE>Make.py -h python Make.py -h </PRE> <P>which will give you help info about the tool. For the former to work, you may need to edit the first line of Make.py to point to your local Python. And you may need to insure the script is executable: </P> <PRE>chmod +x Make.py </PRE> <P>Here are examples of build tasks you can perform with Make.py: </P> <DIV ALIGN=center><TABLE BORDER=1 > <TR><TD >Install/uninstall packages</TD><TD > Make.py -p no-lib kokkos omp intel</TD></TR> <TR><TD >Build specific auxiliary libs</TD><TD > Make.py -a lib-atc lib-meam</TD></TR> <TR><TD >Build libs for all installed packages</TD><TD > Make.py -p cuda gpu -gpu mode=double arch=31 -a lib-all</TD></TR> <TR><TD >Create a Makefile from scratch with compiler and MPI settings</TD><TD > Make.py -m none -cc g++ -mpi mpich -a file</TD></TR> <TR><TD >Augment Makefile.serial with settings for installed packages</TD><TD > Make.py -p intel -intel cpu -m serial -a file</TD></TR> <TR><TD >Add JPG and FFTW support to Makefile.mpi</TD><TD > Make.py -m mpi -jpg -fft fftw -a file</TD></TR> <TR><TD >Build LAMMPS with a parallel make using Makefile.mpi</TD><TD > Make.py -j 16 -m mpi -a exe</TD></TR> <TR><TD >Build LAMMPS and libs it needs using Makefile.serial with accelerator settings</TD><TD > Make.py -p gpu intel -intel cpu -a lib-all file serial </TD></TR></TABLE></DIV> <P>The bench and examples directories give Make.py commands that can be used to build LAMMPS with the various packages and options needed to run all the benchmark and example input scripts. See these files for more details: </P> <UL><LI>bench/README <LI>bench/FERMI/README <LI>bench/KEPLER/README <LI>bench/PHI/README <LI>examples/README <LI>examples/accelerate/README <LI>examples/accelerate/make.list </UL> <P>All of the Make.py options and syntax help can be accessed by using the "-h" switch. </P> <P>E.g. typing "Make.py -h" gives </P> <PRE>Syntax: Make.py switch args ... switches can be listed in any order help switch: -h prints help and syntax for all other specified switches switch for actions: -a lib-all, lib-dir, clean, file, exe or machine list one or more actions, in any order machine is a Makefile.machine suffix, must be last if used one-letter switches: -d (dir), -j (jmake), -m (makefile), -o (output), -p (packages), -r (redo), -s (settings), -v (verbose) switches for libs: -atc, -awpmd, -colvars, -cuda -gpu, -meam, -poems, -qmmm, -reax switches for build and makefile options: -intel, -kokkos, -cc, -mpi, -fft, -jpg, -png </PRE> <P>Using the "-h" switch with other switches and actions gives additional info on all the other specified switches or actions. The "-h" can be anywhere in the command-line and the other switches do not need their arguments. E.g. type "Make.py -h -d -atc -intel" will print: </P> <PRE>-d dir dir = LAMMPS home dir if -d not specified, working dir must be lammps/src </PRE> <PRE>-atc make=suffix lammps=suffix2 all args are optional and can be in any order make = use Makefile.suffix (def = g++) lammps = use Makefile.lammps.suffix2 (def = EXTRAMAKE in makefile) </PRE> <PRE>-intel mode mode = cpu or phi (def = cpu) build Intel package for CPU or Xeon Phi </PRE> <P>Note that Make.py never overwrites an existing Makefile.machine. Instead, it creates src/MAKE/MINE/Makefile.auto, which you can save or rename if desired. Likewise it creates an executable named src/lmp_auto, which you can rename using the -o switch if desired. </P> <P>The most recently executed Make.py commmand is saved in src/Make.py.last. You can use the "-r" switch (for redo) to re-invoke the last command, or you can save a sequence of one or more Make.py commands to a file and invoke the file of commands using "-r". You can also label the commands in the file and invoke one or more of them by name. </P> <P>A typical use of Make.py is to start with a valid Makefile.machine for your system, that works for a vanilla LAMMPS build, i.e. when optional packages are not installed. You can then use Make.py to add various settings (FFT, JPG, PNG) to the Makefile.machine as well as change its compiler and MPI options. You can also add additional packages to the build, as well as build the needed supporting libraries. </P> <P>You can also use Make.py to create a new Makefile.machine from scratch, using the "-m none" switch, if you also specify what compiler and MPI options to use, via the "-cc" and "-mpi" switches. </P> <HR> <H4><A NAME = "start_5"></A>2.5 Building LAMMPS as a library </H4> <P>LAMMPS can be built as either a static or shared library, which can then be called from 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. See <A HREF = "Section_python.html">this section</A> for more info on wrapping and running LAMMPS from Python. </P> <H5><B>Static library:</B> </H5> <P>To build LAMMPS as a static library (*.a file on Linux), type </P> <PRE>make foo mode=lib </PRE> <P>where foo is the machine name. This kind of library is typically used to statically link a driver application to LAMMPS, so that you can insure all dependencies are satisfied at compile time. This will use the ARCHIVE and ARFLAGS settings in src/MAKE/Makefile.foo. The build will create the file liblammps_foo.a which another application can link to. It will also create a soft link liblammps.a, which will point to the most recently built static library. </P> <H5><B>Shared library:</B> </H5> <P>To build LAMMPS as a shared library (*.so file on Linux), which can be dynamically loaded, e.g. from Python, type </P> <PRE>make foo mode=shlib </PRE> <P>where foo is the machine name. This kind of library is required when wrapping LAMMPS with Python; see <A HREF = "Section_python.html">Section_python</A> for details. This will use the SHFLAGS and SHLIBFLAGS settings in src/MAKE/Makefile.foo and perform the build in the directory Obj_shared_foo. This is so that each file can be compiled with the -fPIC flag which is required for inclusion in a shared library. The build will create the file liblammps_foo.so which another application can link to dyamically. It will also create a soft link liblammps.so, which will point to the most recently built shared library. This is the file the Python wrapper loads by default. </P> <P>Note that for a shared library to be usable by a calling program, all the auxiliary libraries it depends on must also exist as shared libraries. This will be the case for libraries included with LAMMPS, such as the dummy MPI library in src/STUBS or any package libraries in lib/packages, since they are always built as shared libraries using the -fPIC switch. However, if a library like MPI or FFTW does not exist as a shared library, the shared library build will generate an error. This means you will need to install a shared library version of the auxiliary library. The build instructions for the library should tell you how to do this. </P> <P>Here is an example of such errors when the system FFTW or provided lib/colvars library have not been built as shared libraries: </P> <PRE>/usr/bin/ld: /usr/local/lib/libfftw3.a(mapflags.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libfftw3.a: could not read symbols: Bad value </PRE> <PRE>/usr/bin/ld: ../../lib/colvars/libcolvars.a(colvarmodule.o): relocation R_X86_64_32 against `__pthread_key_create' can not be used when making a shared object; recompile with -fPIC ../../lib/colvars/libcolvars.a: error adding symbols: Bad value </PRE> <P>As an example, here is how to build and install the <A HREF = "http://www-unix.mcs.anl.gov/mpi">MPICH library</A>, a popular open-source version of MPI, distributed by Argonne National Labs, as a shared library in the default /usr/local/lib location: </P> <PRE>./configure --enable-shared make make install </PRE> <P>You may need to use "sudo make install" in place of the last line if you do not have write privileges for /usr/local/lib. The end result should be the file /usr/local/lib/libmpich.so. </P> <H5><B>Additional requirement for using a shared library:</B> </H5> <P>The operating system finds shared libraries to load at run-time using the environment variable LD_LIBRARY_PATH. So you may wish to copy the file src/liblammps.so or src/liblammps_g++.so (for example) to a place the system can find it by default, such as /usr/local/lib, or you may wish to add the LAMMPS src directory to LD_LIBRARY_PATH, so that the current version of the shared library is always available to programs that use it. </P> <P>For the csh or tcsh shells, you would add something like this to your ~/.cshrc file: </P> <PRE>setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/home/sjplimp/lammps/src </PRE> <H5><B>Calling the LAMMPS library:</B> </H5> <P>Either flavor of library (static or shared) allows one or more LAMMPS objects to be instantiated from the calling program. </P> <P>When used from a C++ program, all of LAMMPS is wrapped in a LAMMPS_NS namespace; you can safely use any of its classes and methods from within the calling code, as needed. </P> <P>When used from a C or Fortran program or a scripting language like Python, the library has a simple function-style interface, provided in src/library.cpp and src/library.h. </P> <P>See the sample codes in examples/COUPLE/simple for examples of C++ and C and Fortran 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#howto_10">Section_howto 10</A> of the manual. See <A HREF = "Section_python.html">Section_python</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 define the C-style API for using LAMMPS as a library. See <A HREF = "Section_howto.html#howto_19">Section_howto 19</A> of the manual for a description of the interface and how to extend it for your needs. </P> <HR> <H4><A NAME = "start_6"></A>2.6 Running LAMMPS </H4> <P>By default, LAMMPS runs by reading commands from standard input. Thus if you run the LAMMPS executable by itself, e.g. </P> <PRE>lmp_linux </PRE> <P>it will simply wait, expecting commands from the keyboard. Typically you should put commands in an input script and use I/O redirection, e.g. </P> <PRE>lmp_linux < in.file </PRE> <P>For parallel environments this should also work. If it does not, use the '-in' command-line switch, e.g. </P> <PRE>lmp_linux -in in.file </PRE> <P><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 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. Note that some of the example scripts require LAMMPS to be built with one or more of its optional packages. </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 -localonly 4 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. :l 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">Section_errors</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 = "start_7"></A>2.7 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>-h or -help <LI>-i or -in <LI>-k or -kokkos <LI>-l or -log <LI>-nc or -nocite <LI>-pk or -package <LI>-p or -partition <LI>-pl or -plog <LI>-ps or -pscreen <LI>-r or -restart <LI>-ro or -reorder <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 in.alloy mpirun -np 16 lmp_ibm -var f tmp.out -log my.log -screen none -in 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. Even if LAMMPS is built with this package, as described above in <A HREF = "#start_3">Section 2.3</A>, this switch must be set to enable running with the CUDA-enabled styles the package provides. If the switch is not set (the default), LAMMPS will operate as if the USER-CUDA package were not installed; i.e. you can run standard LAMMPS or with the GPU package, for testing or benchmarking purposes. </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>-help </PRE> <P>Print a brief help summary and a list of options compiled into this executable for each LAMMPS style (atom_style, fix, compute, pair_style, bond_style, etc). This can tell you if the command you want to use was included via the appropriate package at compile time. LAMMPS will print the info and immediately exit if this switch is used. </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 script from standard input, typically from a script via I/O redirection; e.g. lmp_linux < in.run. I/O redirection should also work in parallel, but if it does not (in the unlikely case that an MPI implementation does not support it), then use the -in flag. Note that this is a required switch when running LAMMPS in multi-partition mode, since multiple processors cannot all read from stdin. </P> <PRE>-kokkos on/off keyword/value ... </PRE> <P>Explicitly enable or disable KOKKOS support, as provided by the KOKKOS package. Even if LAMMPS is built with this package, as described above in <A HREF = "#start_3">Section 2.3</A>, this switch must be set to enable running with the KOKKOS-enabled styles the package provides. If the switch is not set (the default), LAMMPS will operate as if the KOKKOS package were not installed; i.e. you can run standard LAMMPS or with the GPU or USER-CUDA or USER-OMP packages, for testing or benchmarking purposes. </P> <P>Additional optional keyword/value pairs can be specified which determine how Kokkos will use the underlying hardware on your platform. These settings apply to each MPI task you launch via the "mpirun" or "mpiexec" command. You may choose to run one or more MPI tasks per physical node. Note that if you are running on a desktop machine, you typically have one physical node. On a cluster or supercomputer there may be dozens or 1000s of physical nodes. </P> <P>Either the full word or an abbreviation can be used for the keywords. Note that the keywords do not use a leading minus sign. I.e. the keyword is "t", not "-t". Also note that each of the keywords has a default setting. Example of when to use these options and what settings to use on different platforms is given in <A HREF = "Section_accelerate.html#acc_8">Section 5.8</A>. </P> <UL><LI>d or device <LI>g or gpus <LI>t or threads <LI>n or numa </UL> <PRE>device Nd </PRE> <P>This option is only relevant if you built LAMMPS with CUDA=yes, you have more than one GPU per node, and if you are running with only one MPI task per node. The Nd setting is the ID of the GPU on the node to run on. By default Nd = 0. If you have multiple GPUs per node, they have consecutive IDs numbered as 0,1,2,etc. This setting allows you to launch multiple independent jobs on the node, each with a single MPI task per node, and assign each job to run on a different GPU. </P> <PRE>gpus Ng Ns </PRE> <P>This option is only relevant if you built LAMMPS with CUDA=yes, you have more than one GPU per node, and you are running with multiple MPI tasks per node (up to one per GPU). The Ng setting is how many GPUs you will use. The Ns setting is optional. If set, it is the ID of a GPU to skip when assigning MPI tasks to GPUs. This may be useful if your desktop system reserves one GPU to drive the screen and the rest are intended for computational work like running LAMMPS. By default Ng = 1 and Ns is not set. </P> <P>Depending on which flavor of MPI you are running, LAMMPS will look for one of these 3 environment variables </P> <PRE>SLURM_LOCALID (various MPI variants compiled with SLURM support) MV2_COMM_WORLD_LOCAL_RANK (Mvapich) OMPI_COMM_WORLD_LOCAL_RANK (OpenMPI) </PRE> <P>which are initialized by the "srun", "mpirun" or "mpiexec" commands. The environment variable setting for each MPI rank is used to assign a unique GPU ID to the MPI task. </P> <PRE>threads Nt </PRE> <P>This option assigns Nt number of threads to each MPI task for performing work when Kokkos is executing in OpenMP or pthreads mode. The default is Nt = 1, which essentially runs in MPI-only mode. If there are Np MPI tasks per physical node, you generally want Np*Nt = the number of physical cores per node, to use your available hardware optimally. This also sets the number of threads used by the host when LAMMPS is compiled with CUDA=yes. </P> <PRE>numa Nm </PRE> <P>This option is only relevant when using pthreads with hwloc support. In this case Nm defines the number of NUMA regions (typicaly sockets) on a node which will be utilizied by a single MPI rank. By default Nm = 1. If this option is used the total number of worker-threads per MPI rank is threads*numa. Currently it is always almost better to assign at least one MPI rank per NUMA region, and leave numa set to its default value of 1. This is because letting a single process span multiple NUMA regions induces a significant amount of cross NUMA data traffic which is slow. </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>-nocite </PRE> <P>Disable writing the log.cite file which is normally written to list references for specific cite-able features used during a LAMMPS run. See the <A HREF = "http://lammps.sandia.gov/cite.html">citation page</A> for more details. </P> <PRE>-package style args .... </PRE> <P>Invoke the <A HREF = "package.html">package</A> command with style and args. The syntax is the same as if the command appeared at the top of the input script. For example "-package gpu 2" or "-pk gpu 2" is the same as <A HREF = "package.html">package gpu 2</A> in the input script. The possible styles and args are documented on the <A HREF = "package.html">package</A> doc page. This switch can be used multiple times, e.g. to set options for the USER-INTEL and USER-OMP packages which can be used together. </P> <P>Along with the "-suffix" command-line switch, this is a convenient mechanism for invoking accelerator packages and their options without having to edit an input script. </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>Running with multiple partitions can e useful for running <A HREF = "Section_howto.html#howto_5">multi-replica simulations</A>, where each replica runs on on one or a few 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. </P> <P>To run multiple independent simulatoins from one input script, using multiple partitions, see <A HREF = "Section_howto.html#howto_4">Section_howto 4</A> of the manual. World- and universe-style <A HREF = "variable.html">variables</A> are useful in this context. </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>-restart restartfile <I>remap</I> datafile keyword value ... </PRE> <P>Convert the restart file into a data file and immediately exit. This is the same operation as if the following 2-line input script were run: </P> <PRE>read_restart restartfile <I>remap</I> write_data datafile keyword value ... </PRE> <P>Note that the specified restartfile and datafile can have wild-card characters ("*",%") as described by the <A HREF = "read_restart.html">read_restart</A> and <A HREF = "write_data.html">write_data</A> commands. But a filename such as file.* will need to be enclosed in quotes to avoid shell expansion of the "*" character. </P> <P>Note that following restartfile, the optional flag <I>remap</I> can be used. This has the same effect as adding it to the <A HREF = "read_restart.html">read_restart</A> command, as explained on its doc page. This is only useful if the reading of the restart file triggers an error that atoms have been lost. In that case, use of the remap flag should allow the data file to still be produced. </P> <P>Also note that following datafile, the same optional keyword/value pairs can be listed as used by the <A HREF = "write_data.html">write_data</A> command. </P> <PRE>-reorder nth N -reorder custom filename </PRE> <P>Reorder the processors in the MPI communicator used to instantiate LAMMPS, in one of several ways. The original MPI communicator ranks all P processors from 0 to P-1. The mapping of these ranks to physical processors is done by MPI before LAMMPS begins. It may be useful in some cases to alter the rank order. E.g. to insure that cores within each node are ranked in a desired order. Or when using the <A HREF = "run_style.html">run_style verlet/split</A> command with 2 partitions to insure that a specific Kspace processor (in the 2nd partition) is matched up with a specific set of processors in the 1st partition. See the <A HREF = "Section_accelerate.html">Section_accelerate</A> doc pages for more details. </P> <P>If the keyword <I>nth</I> is used with a setting <I>N</I>, then it means every Nth processor will be moved to the end of the ranking. This is useful when using the <A HREF = "run_style.html">run_style verlet/split</A> command with 2 partitions via the -partition command-line switch. The first set of processors will be in the first partition, the 2nd set in the 2nd partition. The -reorder command-line switch can alter this so that the 1st N procs in the 1st partition and one proc in the 2nd partition will be ordered consecutively, e.g. as the cores on one physical node. This can boost performance. For example, if you use "-reorder nth 4" and "-partition 9 3" and you are running on 12 processors, the processors will be reordered from </P> <PRE>0 1 2 3 4 5 6 7 8 9 10 11 </PRE> <P>to </P> <PRE>0 1 2 4 5 6 8 9 10 3 7 11 </PRE> <P>so that the processors in each partition will be </P> <PRE>0 1 2 4 5 6 8 9 10 3 7 11 </PRE> <P>See the "processors" command for how to insure processors from each partition could then be grouped optimally for quad-core nodes. </P> <P>If the keyword is <I>custom</I>, then a file that specifies a permutation of the processor ranks is also specified. The format of the reorder file is as follows. Any number of initial blank or comment lines (starting with a "#" character) can be present. These should be followed by P lines of the form: </P> <PRE>I J </PRE> <P>where P is the number of processors LAMMPS was launched with. Note that if running in multi-partition mode (see the -partition switch above) P is the total number of processors in all partitions. The I and J values describe a permutation of the P processors. Every I and J should be values from 0 to P-1 inclusive. In the set of P I values, every proc ID should appear exactly once. Ditto for the set of P J values. A single I,J pairing means that the physical processor with rank I in the original MPI communicator will have rank J in the reordered communicator. </P> <P>Note that rank ordering can also be specified by many MPI implementations, either by environment variables that specify how to order physical processors, or by config files that specify what physical processors to assign to each MPI rank. The -reorder switch simply gives you a portable way to do this without relying on MPI itself. See the <A HREF = "processors">processors out</A> command for how to output info on the final assignment of physical processors to the LAMMPS simulation domain. </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 args </PRE> <P>Use variants of various styles if they exist. The specified style can be <I>cuda</I>, <I>gpu</I>, <I>intel</I>, <I>kk</I>, <I>omp</I>, <I>opt</I>, or <I>hybrid</I>. These refer to optional packages that LAMMPS can be built with, as described above in <A HREF = "#start_3">Section 2.3</A>. The "cuda" style corresponds to the USER-CUDA package, the "gpu" style to the GPU package, the "intel" style to the USER-INTEL package, the "kk" style to the KOKKOS package, the "opt" style to the OPT package, and the "omp" style to the USER-OMP package. The hybrid style is the only style that accepts arguments. It allows for two packages to be specified. The first package specified is the default and will be used if it is available. If no style is available for the first package, the style for the second package will be used if available. For example, "-suffix hybrid intel omp" will use styles from the USER-INTEL package if they are installed and available, but styles for the USER-OMP package otherwise. </P> <P>Along with the "-package" command-line switch, this is a convenient mechanism for invoking accelerator packages and their options without having to edit an input script. </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/cuda, lj/cut/gpu, lj/cut/intel, lj/cut/kk, lj/cut/omp, and lj/cut/opt. A variant style can be specified explicitly in your input script, e.g. pair_style lj/cut/gpu. If the -suffix switch is used the specified suffix (cuda,gpu,intel,kk,omp,opt) 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>For the GPU package, using this command-line switch also invokes the default GPU settings, as if the command "package gpu 1" were used at the top of your input script. These settings can be changed by using the "-package gpu" command-line switch or the <A HREF = "package.html">package gpu</A> command in your script. </P> <P>For the USER-INTEL package, using this command-line switch also invokes the default USER-INTEL settings, as if the command "package intel 1" were used at the top of your input script. These settings can be changed by using the "-package intel" command-line switch or the <A HREF = "package.html">package intel</A> command in your script. If the USER-OMP package is also installed, the hybrid style with "intel omp" arguments can be used to make the omp suffix a second choice, if a requested style is not available in the USER-INTEL package. It will also invoke the default USER-OMP settings, as if the command "package omp 0" were used at the top of your input script. These settings can be changed by using the "-package omp" command-line switch or the <A HREF = "package.html">package omp</A> command in your script. </P> <P>For the KOKKOS package, using this command-line switch also invokes the default KOKKOS settings, as if the command "package kokkos" were used at the top of your input script. These settings can be changed by using the "-package kokkos" command-line switch or the <A HREF = "package.html">package kokkos</A> command in your script. </P> <P>For the OMP package, using this command-line switch also invokes the default OMP settings, as if the command "package omp 0" were used at the top of your input script. These settings can be changed by using the "-package omp" command-line switch or the <A HREF = "package.html">package omp</A> command in your script. </P> <P>The <A HREF = "suffix.html">suffix</A> command can also be used within an input script to set a suffix, or to turn off or back 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. This switch can be used multiple times to define multiple variables. "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#cmd_2">this section</A> for more info on using variables in input scripts. </P> <P>NOTE: Currently, the command-line parser looks for arguments that start with "-" to indicate new switches. Thus you cannot specify multiple variable values if any of they start with a "-", e.g. a negative numeric value. It is OK if the first value1 starts with a "-", since it is automatically skipped. </P> <HR> <H4><A NAME = "start_8"></A>2.8 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> <P>Loop time of 2.81192 on 4 procs for 300 steps with 2004 atoms </P> <PRE>Performance: 18.436 ns/day 1.302 hours/ns 106.689 timesteps/s 97.0% CPU use with 4 MPI tasks x no OpenMP threads </PRE> <PRE>MPI task timings breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- Pair | 1.9808 | 2.0134 | 2.0318 | 1.4 | 71.60 Bond | 0.0021894 | 0.0060319 | 0.010058 | 4.7 | 0.21 Kspace | 0.3207 | 0.3366 | 0.36616 | 3.1 | 11.97 Neigh | 0.28411 | 0.28464 | 0.28516 | 0.1 | 10.12 Comm | 0.075732 | 0.077018 | 0.07883 | 0.4 | 2.74 Output | 0.00030518 | 0.00042665 | 0.00078821 | 1.0 | 0.02 Modify | 0.086606 | 0.086631 | 0.086668 | 0.0 | 3.08 Other | | 0.007178 | | | 0.26 </PRE> <PRE>Nlocal: 501 ave 508 max 490 min Histogram: 1 0 0 0 0 0 1 1 0 1 Nghost: 6586.25 ave 6628 max 6548 min Histogram: 1 0 1 0 0 0 1 0 0 1 Neighs: 177007 ave 180562 max 170212 min Histogram: 1 0 0 0 0 0 0 1 1 1 </PRE> <PRE>Total # of neighbors = 708028 Ave neighs/atom = 353.307 Ave special neighs/atom = 2.34032 Neighbor list builds = 26 Dangerous builds = 0 </PRE> <P>The first section provides a global loop timing summary. The loop time is the total wall time for the section. The <I>Performance</I> line is provided for convenience to help predicting the number of loop continuations required and for comparing performance with other similar MD codes. The CPU use line provides the CPU utilzation per MPI task; it should be close to 100% times the number of OpenMP threads (or 1). Lower numbers correspond to delays due to file I/O or insufficient thread utilization. </P> <P>The MPI task section gives the breakdown of the CPU run time (in seconds) into major categories: </P> <UL><LI><I>Pair</I> stands for all non-bonded force computation <LI><I>Bond</I> stands for bonded interactions: bonds, angles, dihedrals, impropers <LI><I>Kspace</I> stands for reciprocal space interactions: Ewald, PPPM, MSM <LI><I>Neigh</I> stands for neighbor list construction <LI><I>Comm</I> stands for communicating atoms and their properties <LI><I>Output</I> stands for writing dumps and thermo output <LI><I>Modify</I> stands for fixes and computes called by them <LI><I>Other</I> is the remaining time </UL> <P>For each category, there is a breakdown of the least, average and most amount of wall time a processor spent on this section. Also you have the variation from the average time. Together these numbers allow to gauge the amount of load imbalance in this segment of the calculation. Ideally the difference between minimum, maximum and average is small and thus the variation from the average close to zero. The final column shows the percentage of the total loop time is spent in this section. </P> <P>When using the <A HREF = "timer.html">timer full</A> setting, an additional column is present that also prints the CPU utilization in percent. In addition, when using <I>timer full</I> and the <A HREF = "package.html">package omp</A> command are active, a similar timing summary of time spent in threaded regions to monitor thread utilization and load balance is provided. A new entry is the <I>Reduce</I> section, which lists the time spend in reducing the per-thread data elements to the storage for non-threaded computation. These thread timings are taking from the first MPI rank only and and thus, as the breakdown for MPI tasks can change from MPI rank to MPI rank, this breakdown can be very different for individual ranks. Here is an example output for this section: </P> <P>Thread timings breakdown (MPI rank 0): Total threaded time 0.6846 / 90.6% Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- Pair | 0.5127 | 0.5147 | 0.5167 | 0.3 | 75.18 Bond | 0.0043139 | 0.0046779 | 0.0050418 | 0.5 | 0.68 Kspace | 0.070572 | 0.074541 | 0.07851 | 1.5 | 10.89 Neigh | 0.084778 | 0.086969 | 0.089161 | 0.7 | 12.70 Reduce | 0.0036485 | 0.003737 | 0.0038254 | 0.1 | 0.55 </P> <P>The third 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: Stopping criterion = linesearch alpha is zero Energy initial, next-to-last, final = -6372.3765206 -8328.46998942 -8328.46998942 Force two-norm initial, final = 1059.36 5.36874 Force max component initial, final = 58.6026 1.46872 Final line search alpha, max atom move = 2.7842e-10 4.0892e-10 Iterations, force evaluations = 701 1516 </PRE> <P>The first line prints the criterion that determined the minimization to be completed. The third 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. Then some information about the line search and 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 = "start_9"></A>2.9 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">Section_history</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/doc2/accelerate_intel.html b/doc/doc2/accelerate_intel.html index aa1a7f938..63c739f92 100644 --- a/doc/doc2/accelerate_intel.html +++ b/doc/doc2/accelerate_intel.html @@ -1,348 +1,326 @@ <HTML> <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> </CENTER> <HR> <P><A HREF = "Section_accelerate.html">Return to Section accelerate overview</A> </P> <H4>5.3.3 USER-INTEL package </H4> <P>The USER-INTEL package was developed by Mike Brown at Intel -Corporation. It provides a capability to accelerate simulations by -offloading neighbor list and non-bonded force calculations to Intel(R) -Xeon Phi(TM) coprocessors (not native mode like the KOKKOS package). -Additionally, it supports running simulations in single, mixed, or -double precision with vectorization, even if a coprocessor is not -present, i.e. on an Intel(R) CPU. The same C++ code is used for both -cases. When offloading to a coprocessor, the routine is run twice, -once with an offload flag. -</P> -<P>The USER-INTEL package can be used in tandem with the USER-OMP -package. This is useful when offloading pair style computations to -coprocessors, so that other styles not supported by the USER-INTEL -package, e.g. bond, angle, dihedral, improper, and long-range -electrostatics, can run simultaneously in threaded mode on the CPU -cores. Since less MPI tasks than CPU cores will typically be invoked -when running with coprocessors, this enables the extra CPU cores to be -used for useful computation. -</P> -<P>If LAMMPS is built with both the USER-INTEL and USER-OMP packages -installed, this mode of operation is made easier to use, with the -"-suffix hybrid intel omp" <A HREF = "Section_start.html#start_7">command-line switch</A> -or the <A HREF = "suffix.html">suffix hybrid intel omp</A> command will both set a -second-choice suffix to "omp" so that styles from the USER-OMP package will be -used if available, after first testing if a style from the USER-INTEL -package is available. -</P> -<P>When using the USER-INTEL package, you must choose at build time whether the -binary will support offload to Xeon Phi coprocessors. Binaries supporting -offload can still be run in CPU-only (host-only) mode. -</P> -<P>Here is a quick overview of how to use the USER-INTEL package -for CPU-only acceleration: -</P> -<UL><LI>specify these CCFLAGS in your src/MAKE/Makefile.machine: -openmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost -<LI>specify -openmp with LINKFLAGS in your Makefile.machine -<LI>include the USER-INTEL package and (optionally) USER-OMP package and build LAMMPS -<LI>specify how many OpenMP threads per MPI task to use -<LI>use USER-INTEL and (optionally) USER-OMP styles in your input script -</UL> -<P>Note that many of these settings can only be used with the Intel -compiler, as discussed below. -</P> -<P>Using the USER-INTEL package to offload work to the Intel(R) -Xeon Phi(TM) coprocessor is the same except for these additional -steps: -</P> -<UL><LI>add the flag -DLMP_INTEL_OFFLOAD to CCFLAGS in your Makefile.machine -<LI>add the flag -offload to LINKFLAGS in your Makefile.machine -</UL> -<P>The latter two steps in the first case and the last step in the -coprocessor case can be done using the "-pk intel" and "-sf intel" -<A HREF = "Section_start.html#start_7">command-line switches</A> respectively. Or -the effect of the "-pk" or "-sf" switches can be duplicated by adding -the <A HREF = "package.html">package intel</A> or <A HREF = "suffix.html">suffix intel</A> -commands respectively to your input script. -</P> +Corporation. It provides two methods for accelerating simulations, +depending on the hardware you have. The first is acceleration on +Intel(R) CPUs by running in single, mixed, or double precision with +vectorization. The second is acceleration on Intel(R) Xeon Phi(TM) +coprocessors via offloading neighbor list and non-bonded force +calculations to the Phi. The same C++ code is used in both cases. +When offloading to a coprocessor from a CPU, the same routine is run +twice, once on the CPU and once with an offload flag. +</P> +<P>Note that the USER-INTEL package supports use of the Phi in "offload" +mode, not "native" mode like the <A HREF = "accelerate_kokkos.html">KOKKOS +package</A>. +</P> +<P>Also note that the USER-INTEL package can be used in tandem with the +<A HREF = "accelerate_omp.html">USER-OMP package</A>. This is useful when +offloading pair style computations to the Phi, so that other styles +not supported by the USER-INTEL package, e.g. bond, angle, dihedral, +improper, and long-range electrostatics, can run simultaneously in +threaded mode on the CPU cores. Since less MPI tasks than CPU cores +will typically be invoked when running with coprocessors, this enables +the extra CPU cores to be used for useful computation. +</P> +<P>As illustrated below, if LAMMPS is built with both the USER-INTEL and +USER-OMP packages, this dual mode of operation is made easier to use, +via the "-suffix hybrid intel omp" <A HREF = "Section_start.html#start_7">command-line +switch</A> or the <A HREF = "suffix.html">suffix hybrid intel +omp</A> command. Both set a second-choice suffix to "omp" so +that styles from the USER-INTEL package will be used if available, +with styles from the USER-OMP package as a second choice. +</P> +<P>Here is a quick overview of how to use the USER-INTEL package for CPU +acceleration, assuming one or more 16-core nodes. More details +follow. +</P> +<PRE>use an Intel compiler +use these CCFLAGS settings in Makefile.machine: -fopenmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost, -fno-alias, -ansi-alias, -override-limits +use these LINKFLAGS settings in Makefile.machine: -fopenmp, -xHost +make yes-user-intel yes-user-omp # including user-omp is optional +make mpi # build with the USER-INTEL package, if settings (including compiler) added to Makefile.mpi +make intel_cpu # or Makefile.intel_cpu already has settings, uses Intel MPI wrapper +Make.py -v -p intel omp -intel cpu -a file mpich_icc # or one-line build via Make.py for MPICH +Make.py -v -p intel omp -intel cpu -a file ompi_icc # or for OpenMPI +Make.py -v -p intel omp -intel cpu -a file intel_cpu # or for Intel MPI wrapper +</PRE> +<PRE>lmp_machine -sf intel -pk intel 0 omp 16 -in in.script # 1 node, 1 MPI task/node, 16 threads/task, no USER-OMP +mpirun -np 32 lmp_machine -sf intel -in in.script # 2 nodess, 16 MPI tasks/node, no threads, no USER-OMP +lmp_machine -sf hybrid intel omp -pk intel 0 omp 16 -pk omp 16 -in in.script # 1 node, 1 MPI task/node, 16 threads/task, with USER-OMP +mpirun -np 32 -ppn 4 lmp_machine -sf hybrid intel omp -pk omp 4 -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task, with USER-OMP +</PRE> +<P>Here is a quick overview of how to use the USER-INTEL package for the +same CPUs as above (16 cores/node), with an additional Xeon Phi(TM) +coprocessor per node. More details follow. +</P> +<PRE>Same as above for building, with these additions/changes: +add the flag -DLMP_INTEL_OFFLOAD to CCFLAGS in Makefile.machine +add the flag -offload to LINKFLAGS in Makefile.machine +for Make.py change "-intel cpu" to "-intel phi", and "file intel_cpu" to "file intel_phi" +</PRE> +<PRE>mpirun -np 32 lmp_machine -sf intel -pk intel 1 -in in.script # 2 nodes, 16 MPI tasks/node, 240 total threads on coprocessor, no USER-OMP +mpirun -np 16 -ppn 8 lmp_machine -sf intel -pk intel 1 omp 2 -in in.script # 2 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, no USER-OMP +mpirun -np 32 -ppn 8 lmp_machine -sf hybrid intel omp -pk intel 1 omp 2 -pk omp 2 -in in.script # 4 nodes, 8 MPI tasks/node, 2 threads/task, 240 total threads on coprocessor, with USER-OMP +</PRE> <P><B>Required hardware/software:</B> </P> -<P>To use the offload option, you must have one or more Intel(R) Xeon -Phi(TM) coprocessors and use an Intel(R) C++ compiler. -</P> -<P>Optimizations for vectorization have only been tested with the +<P>Your compiler must support the OpenMP interface. Use of an Intel(R) +C++ compiler is recommended, but not required. However, g++ will not +recognize some of the settings listed above, so they cannot be used. +Optimizations for vectorization have only been tested with the Intel(R) compiler. Use of other compilers may not result in -vectorization or give poor performance. -</P> -<P>Use of an Intel C++ compiler is recommended, but not required (though -g++ will not recognize some of the settings, so they cannot be used). -The compiler must support the OpenMP interface. +vectorization, or give poor performance. </P> <P>The recommended version of the Intel(R) compiler is 14.0.1.106. -Versions 15.0.1.133 and later are also supported. If using Intel(R) +Versions 15.0.1.133 and later are also supported. If using Intel(R) MPI, versions 15.0.2.044 and later are recommended. </P> +<P>To use the offload option, you must have one or more Intel(R) Xeon +Phi(TM) coprocessors and use an Intel(R) C++ compiler. +</P> <P><B>Building LAMMPS with the USER-INTEL package:</B> </P> -<P>You can choose to build with or without support for offload to a -Intel(R) Xeon Phi(TM) coprocessor. If you build with support for a -coprocessor, the same binary can be used on nodes with and without -coprocessors installed. However, if you do not have coprocessors -on your system, building without offload support will produce a -smaller binary. -</P> -<P>You can do either in one line, using the src/Make.py script, described -in <A HREF = "Section_start.html#start_4">Section 2.4</A> of the manual. Type -"Make.py -h" for help. If run from the src directory, these commands -will create src/lmp_intel_cpu and lmp_intel_phi using -src/MAKE/Makefile.mpi as the starting Makefile.machine: -</P> -<PRE>Make.py -p intel omp -intel cpu -o intel_cpu -cc icc -a file mpi -Make.py -p intel omp -intel phi -o intel_phi -cc icc -a file mpi -</PRE> -<P>Note that this assumes that your MPI and its mpicxx wrapper -is using the Intel compiler. If it is not, you should -leave off the "-cc icc" switch. +<P>The lines above illustrate how to include/build with the USER-INTEL +package, for either CPU or Phi support, in two steps, using the "make" +command. Or how to do it with one command via the src/Make.py script, +described in <A HREF = "Section_start.html#start_4">Section 2.4</A> of the manual. +Type "Make.py -h" for help. Because the mechanism for specifing what +compiler to use (Intel in this case) is different for different MPI +wrappers, 3 versions of the Make.py command are shown. +</P> +<P>Note that if you build with support for a Phi coprocessor, the same +binary can be used on nodes with or without coprocessors installed. +However, if you do not have coprocessors on your system, building +without offload support will produce a smaller binary. +</P> +<P>If you also build with the USER-OMP package, you can use styles from +both packages, as described below. +</P> +<P>Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must +include "-fopenmp". Likewise, if you use an Intel compiler, the +CCFLAGS setting must include "-restrict". For Phi support, the +"-DLMP_INTEL_OFFLOAD" (CCFLAGS) and "-offload" (LINKFLAGS) settings +are required. The other settings listed above are optional, but will +typically improve performance. The Make.py command will add all of +these automatically. </P> -<P>Or you can follow these steps: +<P>If you are compiling on the same architecture that will be used for +the runs, adding the flag <I>-xHost</I> to CCFLAGS enables vectorization +with the Intel(R) compiler. Otherwise, you must provide the correct +compute node architecture to the -x option (e.g. -xAVX). </P> -<PRE>cd lammps/src -make yes-user-intel -make yes-user-omp (if desired) -make machine -</PRE> -<P>Note that if the USER-OMP package is also installed, you can use -styles from both packages, as described below. +<P>Example machines makefiles Makefile.intel_cpu and Makefile.intel_phi +are included in the src/MAKE/OPTIONS directory with settings that +perform well with the Intel(R) compiler. The latter has support for +offload to Phi coprocessors; the former does not. </P> -<P>The Makefile.machine needs a "-fopenmp" flag for OpenMP support in -both the CCFLAGS and LINKFLAGS variables. You also need to add --DLAMMPS_MEMALIGN=64 and -restrict to CCFLAGS. -</P> -<P>If you are compiling on the same architecture that will be used for -the runs, adding the flag <I>-xHost</I> to CCFLAGS will enable -vectorization with the Intel(R) compiler. Otherwise, you must -provide the correct compute node architecture to the -x option -(e.g. -xAVX). -</P> -<P>In order to build with support for an Intel(R) Xeon Phi(TM) -coprocessor, the flag <I>-offload</I> should be added to the LINKFLAGS line -and the flag -DLMP_INTEL_OFFLOAD should be added to the CCFLAGS line. -</P> -<P>Example makefiles Makefile.intel_cpu and Makefile.intel_phi are -included in the src/MAKE/OPTIONS directory with settings that perform -well with the Intel(R) compiler. The latter file has support for -offload to coprocessors; the former does not. -</P> -<P><B>Notes on CPU and core affinity:</B> -</P> -<P>Setting core affinity is often used to pin MPI tasks and OpenMP -threads to a core or group of cores so that memory access can be -uniform. Unless disabled at build time, affinity for MPI tasks and -OpenMP threads on the host will be set by default on the host -when using offload to a coprocessor. In this case, it is unnecessary -to use other methods to control affinity (e.g. taskset, numactl, -I_MPI_PIN_DOMAIN, etc.). This can be disabled in an input script -with the <I>no_affinity</I> option to the <A HREF = "package.html">package intel</A> -command or by disabling the option at build time (by adding --DINTEL_OFFLOAD_NOAFFINITY to the CCFLAGS line of your Makefile). -Disabling this option is not recommended, especially when running -on a machine with hyperthreading disabled. -</P> -<P><B>Running with the USER-INTEL package from the command line:</B> +<P><B>Run with the USER-INTEL package from the command line:</B> </P> <P>The mpirun or mpiexec command sets the total number of MPI tasks used by LAMMPS (one or multiple per compute node) and the number of MPI tasks used per node. E.g. the mpirun command in MPICH does this via its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. </P> -<P>If you plan to compute (any portion of) pairwise interactions using -USER-INTEL pair styles on the CPU, or use USER-OMP styles on the CPU, -you need to choose how many OpenMP threads per MPI task to use. Note -that the product of MPI tasks * OpenMP threads/task should not exceed -the physical number of cores (on a node), otherwise performance will -suffer. -</P> -<P>If LAMMPS was built with coprocessor support for the USER-INTEL -package, you also need to specify the number of coprocessor/node and -optionally the number of coprocessor threads per MPI task to use. Note that -coprocessor threads (which run on the coprocessor) are totally -independent from OpenMP threads (which run on the CPU). The default -values for the settings that affect coprocessor threads are typically -fine, as discussed below. -</P> -<P>Use the "-sf intel" <A HREF = "Section_start.html#start_7">command-line switch</A>, -which will automatically append "intel" to styles that support it. -OpenMP threads per MPI task can be set via the "-pk intel Nphi omp Nt" or -"-pk omp Nt" <A HREF = "Section_start.html#start_7">command-line switches</A>, which -set Nt = # of OpenMP threads per MPI task to use. The "-pk omp" form -is only allowed if LAMMPS was also built with the USER-OMP package. -</P> -<P>Use the "-pk intel Nphi" <A HREF = "Section_start.html#start_7">command-line -switch</A> to set Nphi = # of Xeon Phi(TM) -coprocessors/node, if LAMMPS was built with coprocessor support. All -the available coprocessor threads on each Phi will be divided among -MPI tasks, unless the <I>tptask</I> option of the "-pk intel" <A HREF = "Section_start.html#start_7">command-line -switch</A> is used to limit the coprocessor -threads per MPI task. See the <A HREF = "package.html">package intel</A> command -for details. -</P> -<PRE>CPU-only without USER-OMP (but using Intel vectorization on CPU): -mpirun -np 32 lmp_machine -sf intel -in in.script # 32 MPI tasks on as many nodes as needed (e.g. 2 16-core nodes) -lmp_machine -sf intel -pk intel 0 omp 16 -in in.script # 1 MPI task and 16 threads -</PRE> -<PRE>CPU-only with USER-OMP (and Intel vectorization on CPU): -lmp_machine -sf hybrid intel omp -pk intel 0 omp 16 -in in.script # 1 MPI task on a 16-core node with 16 threads -mpirun -np 4 lmp_machine -sf hybrid intel omp -pk omp 4 -in in.script # 4 MPI tasks each with 4 threads on a single 16-core node -</PRE> -<PRE>CPUs + Xeon Phi(TM) coprocessors with or without USER-OMP: -mpirun -np 32 -ppn 16 lmp_machine -sf intel -pk intel 1 -in in.script # 2 nodes with 16 MPI tasks on each, 240 total threads on coprocessor -mpirun -np 16 -ppn 8 lmp_machine -sf intel -pk intel 1 omp 2 -in in.script # 2 nodes, 8 MPI tasks on each node, 2 threads for each task, 240 total threads on coprocessor -mpirun -np 16 -ppn 8 lmp_machine -sf hybrid intel omp -pk intel 1 omp 2 -in in.script # 2 nodes, 8 MPI tasks on each node, 2 threads for each task, 240 total threads on coprocessor, USER-OMP package for some styles -</PRE> -<P>Note that if the "-sf intel" switch is used, it also invokes a -default command: <A HREF = "package.html">package intel 1</A>. If the "-sf hybrid intel omp" -switch is used, the default USER-OMP command <A HREF = "package.html">package omp 0</A> is -also invoked. Both set the number of OpenMP threads per MPI task via the -OMP_NUM_THREADS environment variable. The first command sets the number of -Xeon Phi(TM) coprocessors/node to 1 (and the precision mode to "mixed", as one -of its option defaults). The latter command is not invoked if LAMMPS was not -built with the USER-OMP package. The Nphi = 1 value for the first command is -ignored if LAMMPS was not built with coprocessor support. -</P> -<P>Using the "-pk intel" or "-pk omp" switches explicitly allows for -direct setting of the number of OpenMP threads per MPI task, and -additional options for either of the USER-INTEL or USER-OMP packages. -In particular, the "-pk intel" switch sets the number of -coprocessors/node and can limit the number of coprocessor threads per -MPI task. The syntax for these two switches is the same as the -<A HREF = "package.html">package omp</A> and <A HREF = "package.html">package intel</A> commands. -See the <A HREF = "package.html">package</A> command doc page for details, including -the default values used for all its options if these switches are not +<P>If you compute (any portion of) pairwise interactions using USER-INTEL +pair styles on the CPU, or use USER-OMP styles on the CPU, you need to +choose how many OpenMP threads per MPI task to use. If both packages +are used, it must be done for both packages, and the same thread count +value should be used for both. Note that the product of MPI tasks * +threads/task should not exceed the physical number of cores (on a +node), otherwise performance will suffer. +</P> +<P>When using the USER-INTEL package for the Phi, you also need to +specify the number of coprocessor/node and optionally the number of +coprocessor threads per MPI task to use. Note that coprocessor +threads (which run on the coprocessor) are totally independent from +OpenMP threads (which run on the CPU). The default values for the +settings that affect coprocessor threads are typically fine, as +discussed below. +</P> +<P>As in the lines above, use the "-sf intel" or "-sf hybrid intel omp" +<A HREF = "Section_start.html#start_7">command-line switch</A>, which will +automatically append "intel" to styles that support it. In the second +case, "omp" will be appended if an "intel" style does not exist. +</P> +<P>Note that if either switch is used, it also invokes a default command: +<A HREF = "package.html">package intel 1</A>. If the "-sf hybrid intel omp" switch +is used, the default USER-OMP command <A HREF = "package.html">package omp 0</A> is +also invoked (if LAMMPS was built with USER-OMP). Both set the number +of OpenMP threads per MPI task via the OMP_NUM_THREADS environment +variable. The first command sets the number of Xeon Phi(TM) +coprocessors/node to 1 (ignored if USER-INTEL is built for CPU-only), +and the precision mode to "mixed" (default value). +</P> +<P>You can also use the "-pk intel Nphi" <A HREF = "Section_start.html#start_7">command-line +switch</A> to explicitly set Nphi = # of Xeon +Phi(TM) coprocessors/node, as well as additional options. Nphi should +be >= 1 if LAMMPS was built with coprocessor support, otherswise Nphi += 0 for a CPU-only build. All the available coprocessor threads on +each Phi will be divided among MPI tasks, unless the <I>tptask</I> option +of the "-pk intel" <A HREF = "Section_start.html#start_7">command-line switch</A> is +used to limit the coprocessor threads per MPI task. See the <A HREF = "package.html">package +intel</A> command for details, including the default values +used for all its options if not specified, and how to set the number +of OpenMP threads via the OMP_NUM_THREADS environment variable if +desired. +</P> +<P>If LAMMPS was built with the USER-OMP package, you can also use the +"-pk omp Nt" <A HREF = "Section_start.html#start_7">command-line switch</A> to +explicitly set Nt = # of OpenMP threads per MPI task to use, as well +as additional options. Nt should be the same threads per MPI task as +set for the USER-INTEL package, e.g. via the "-pk intel Nphi omp Nt" +command. Again, see the <A HREF = "package.html">package omp</A> command for +details, including the default values used for all its options if not specified, and how to set the number of OpenMP threads via the OMP_NUM_THREADS environment variable if desired. </P> <P><B>Or run with the USER-INTEL package by editing an input script:</B> </P> <P>The discussion above for the mpirun/mpiexec command, MPI tasks/node, OpenMP threads per MPI task, and coprocessor threads per MPI task is the same. </P> -<P>Use the <A HREF = "suffix.html">suffix intel</A> command, or you can explicitly add an -"intel" suffix to individual styles in your input script, e.g. +<P>Use the <A HREF = "suffix.html">suffix intel</A> or <A HREF = "suffix.html">suffix hybrid intel +omp</A> commands, or you can explicitly add an "intel" or +"omp" suffix to individual styles in your input script, e.g. </P> <PRE>pair_style lj/cut/intel 2.5 </PRE> <P>You must also use the <A HREF = "package.html">package intel</A> command, unless the "-sf intel" or "-pk intel" <A HREF = "Section_start.html#start_7">command-line switches</A> were used. It specifies how many coprocessors/node to use, as well as other OpenMP threading and -coprocessor options. Its doc page explains how to set the number of -OpenMP threads via an environment variable if desired. +coprocessor options. The <A HREF = "package.html">package</A> doc page explains how +to set the number of OpenMP threads via an environment variable if +desired. </P> <P>If LAMMPS was also built with the USER-OMP package, you must also use the <A HREF = "package.html">package omp</A> command to enable that package, unless the "-sf hybrid intel omp" or "-pk omp" <A HREF = "Section_start.html#start_7">command-line switches</A> were used. It specifies how many -OpenMP threads per MPI task to use, as well as other options. Its doc -page explains how to set the number of OpenMP threads via an -environment variable if desired. +OpenMP threads per MPI task to use (should be same as the setting for +the USER-INTEL package), as well as other options. Its doc page +explains how to set the number of OpenMP threads via an environment +variable if desired. </P> <P><B>Speed-ups to expect:</B> </P> -<P>If LAMMPS was not built with coprocessor support when including the -USER-INTEL package, then acclerated styles will run on the CPU using -vectorization optimizations and the specified precision. This may -give a substantial speed-up for a pair style, particularly if mixed or -single precision is used. +<P>If LAMMPS was not built with coprocessor support (CPU only) when +including the USER-INTEL package, then acclerated styles will run on +the CPU using vectorization optimizations and the specified precision. +This may give a substantial speed-up for a pair style, particularly if +mixed or single precision is used. </P> <P>If LAMMPS was built with coproccesor support, the pair styles will run on one or more Intel(R) Xeon Phi(TM) coprocessors (per node). The performance of a Xeon Phi versus a multi-core CPU is a function of your hardware, which pair style is used, the number of atoms/coprocessor, and the precision used on the coprocessor (double, single, mixed). </P> <P>See the <A HREF = "http://lammps.sandia.gov/bench.html">Benchmark page</A> of the LAMMPS web site for performance of the USER-INTEL package on different hardware. </P> +<P>IMPORTANT NOTE: Setting core affinity is often used to pin MPI tasks +and OpenMP threads to a core or group of cores so that memory access +can be uniform. Unless disabled at build time, affinity for MPI tasks +and OpenMP threads on the host (CPU) will be set by default on the +host when using offload to a coprocessor. In this case, it is +unnecessary to use other methods to control affinity (e.g. taskset, +numactl, I_MPI_PIN_DOMAIN, etc.). This can be disabled in an input +script with the <I>no_affinity</I> option to the <A HREF = "package.html">package +intel</A> command or by disabling the option at build time +(by adding -DINTEL_OFFLOAD_NOAFFINITY to the CCFLAGS line of your +Makefile). Disabling this option is not recommended, especially when +running on a machine with hyperthreading disabled. +</P> <P><B>Guidelines for best performance on an Intel(R) Xeon Phi(TM) coprocessor:</B> </P> <UL><LI>The default for the <A HREF = "package.html">package intel</A> command is to have all the MPI tasks on a given compute node use a single Xeon Phi(TM) coprocessor. In general, running with a large number of MPI tasks on each node will perform best with offload. Each MPI task will automatically get affinity to a subset of the hardware threads available on the coprocessor. For example, if your card has 61 cores, with 60 cores available for offload and 4 hardware threads per core (240 total threads), running with 24 MPI tasks per node will cause each MPI task to use a subset of 10 threads on the coprocessor. Fine tuning of the number of threads to use per MPI task or the number of threads to use per core can be accomplished with keyword settings of the <A HREF = "package.html">package intel</A> command. <LI>If desired, only a fraction of the pair style computation can be offloaded to the coprocessors. This is accomplished by using the <I>balance</I> keyword in the <A HREF = "package.html">package intel</A> command. A balance of 0 runs all calculations on the CPU. A balance of 1 runs all calculations on the coprocessor. A balance of 0.5 runs half of the calculations on the coprocessor. Setting the balance to -1 (the default) will enable dynamic load balancing that continously adjusts the fraction of offloaded work throughout the simulation. This option typically produces results within 5 to 10 percent of the optimal fixed balance. <LI>When using offload with CPU hyperthreading disabled, it may help performance to use fewer MPI tasks and OpenMP threads than available cores. This is due to the fact that additional threads are generated internally to handle the asynchronous offload tasks. <LI>If running short benchmark runs with dynamic load balancing, adding a short warm-up run (10-20 steps) will allow the load-balancer to find a near-optimal setting that will carry over to additional runs. <LI>If pair computations are being offloaded to an Intel(R) Xeon Phi(TM) coprocessor, a diagnostic line is printed to the screen (not to the log file), during the setup phase of a run, indicating that offload mode is being used and indicating the number of coprocessor threads per MPI task. Additionally, an offload timing summary is printed at the end of each run. When offloading, the frequency for <A HREF = "atom_modify.html">atom sorting</A> is changed to 1 so that the per-atom data is effectively sorted at every rebuild of the neighbor lists. <LI>For simulations with long-range electrostatics or bond, angle, dihedral, improper calculations, computation and data transfer to the coprocessor will run concurrently with computations and MPI communications for these calculations on the host CPU. The USER-INTEL package has two modes for deciding which atoms will be handled by the coprocessor. This choice is controlled with the <I>ghost</I> keyword of the <A HREF = "package.html">package intel</A> command. When set to 0, ghost atoms (atoms at the borders between MPI tasks) are not offloaded to the card. This allows for overlap of MPI communication of forces with computation on the coprocessor when the <A HREF = "newton.html">newton</A> setting is "on". The default is dependent on the style being used, however, better performance may be achieved by setting this option explictly. </UL> <P><B>Restrictions:</B> </P> <P>When offloading to a coprocessor, <A HREF = "pair_hybrid.html">hybrid</A> styles that require skip lists for neighbor builds cannot be offloaded. Using <A HREF = "pair_hybrid.html">hybrid/overlay</A> is allowed. Only one intel accelerated style may be used with hybrid styles. <A HREF = "special_bonds.html">Special_bonds</A> exclusion lists are not currently supported with offload, however, the same effect can often be accomplished by setting cutoffs for excluded atom types to 0. None of the pair styles in the USER-INTEL package currently support the "inner", "middle", "outer" options for rRESPA integration via the <A HREF = "run_style.html">run_style respa</A> command; only the "pair" option is supported. </P> </HTML> diff --git a/doc/doc2/accelerate_kokkos.html b/doc/doc2/accelerate_kokkos.html index 2a425e842..79240c2bc 100644 --- a/doc/doc2/accelerate_kokkos.html +++ b/doc/doc2/accelerate_kokkos.html @@ -1,509 +1,514 @@ <HTML> <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> </CENTER> <HR> <P><A HREF = "Section_accelerate.html">Return to Section accelerate overview</A> </P> <H4>5.3.4 KOKKOS package </H4> -<P>The KOKKOS package was developed primaritly by Christian Trott -(Sandia) with contributions of various styles by others, including -Sikandar Mashayak (UIUC), Stan Moore (Sandia), and Ray Shan (Sandia). -The underlying Kokkos library was written -primarily by Carter Edwards, Christian Trott, and Dan Sunderland (all -Sandia). +<P>The KOKKOS package was developed primarily by Christian Trott (Sandia) +with contributions of various styles by others, including Sikandar +Mashayak (UIUC), Stan Moore (Sandia), and Ray Shan (Sandia). The +underlying Kokkos library was written primarily by Carter Edwards, +Christian Trott, and Dan Sunderland (all Sandia). </P> <P>The KOKKOS package contains versions of pair, fix, and atom styles that use data structures and macros provided by the Kokkos library, which is included with LAMMPS in lib/kokkos. </P> <P>The Kokkos library is part of -<A HREF = "http://trilinos.sandia.gov/packages/kokkos">Trilinos</A> and can also -be downloaded from <A HREF = "https://github.com/kokkos/kokkos">Github</A>. Kokkos is a +<A HREF = "http://trilinos.sandia.gov/packages/kokkos">Trilinos</A> and can also be +downloaded from <A HREF = "https://github.com/kokkos/kokkos">Github</A>. Kokkos is a templated C++ library that provides two key abstractions for an application like LAMMPS. First, it allows a single implementation of an application kernel (e.g. a pair style) to run efficiently on different kinds of hardware, such as a GPU, Intel Phi, or many-core -chip. +CPU. </P> <P>The Kokkos library also provides data abstractions to adjust (at compile time) the memory layout of basic data structures like 2d and 3d arrays and allow the transparent utilization of special hardware load and store operations. Such data structures are used in LAMMPS to store atom coordinates or forces or neighbor lists. The layout is chosen to optimize performance on different platforms. Again this functionality is hidden from the developer, and does not affect how the kernel is coded. </P> <P>These abstractions are set at build time, when LAMMPS is compiled with -the KOKKOS package installed. This is done by selecting a "host" and -"device" to build for, compatible with the compute nodes in your -machine (one on a desktop machine or 1000s on a supercomputer). -</P> -<P>All Kokkos operations occur within the context of an individual MPI -task running on a single node of the machine. The total number of MPI -tasks used by LAMMPS (one or multiple per compute node) is set in the -usual manner via the mpirun or mpiexec commands, and is independent of -Kokkos. -</P> -<P>Kokkos provides support for two different modes of execution per MPI -task. This means that computational tasks (pairwise interactions, -neighbor list builds, time integration, etc) can be parallelized for -one or the other of the two modes. The first mode is called the -"host" and is one or more threads running on one or more physical CPUs -(within the node). Currently, both multi-core CPUs and an Intel Phi -processor (running in native mode, not offload mode like the -USER-INTEL package) are supported. The second mode is called the -"device" and is an accelerator chip of some kind. Currently only an -NVIDIA GPU is supported via Cuda. If your compute node does not have -a GPU, then there is only one mode of execution, i.e. the host and -device are the same. -</P> -<P>When using the KOKKOS package, you must choose at build time whether -you are building for OpenMP, GPU, or for using the Xeon Phi in native -mode. -</P> -<P>Here is a quick overview of how to use the KOKKOS package: -</P> +the KOKKOS package installed. All Kokkos operations occur within the +context of an individual MPI task running on a single node of the +machine. The total number of MPI tasks used by LAMMPS (one or +multiple per compute node) is set in the usual manner via the mpirun +or mpiexec commands, and is independent of Kokkos. +</P> +<P>Kokkos currently provides support for 3 modes of execution (per MPI +task). These are OpenMP (for many-core CPUs), Cuda (for NVIDIA GPUs), +and OpenMP (for Intel Phi). Note that the KOKKOS package supports +running on the Phi in native mode, not offload mode like the +USER-INTEL package supports. You choose the mode at build time to +produce an executable compatible with specific hardware. +</P> +<P>Here is a quick overview of how to use the KOKKOS package +for CPU acceleration, assuming one or more 16-core nodes. +More details follow. +</P> +<P>use a C++11 compatible compiler +make yes-kokkos +make mpi KOKKOS_DEVICES=OpenMP # build with the KOKKOS package +make kokkos_omp # or Makefile.kokkos_omp already has variable set +Make.py -v -p kokkos -kokkos omp -o mpi -a file mpi # or one-line build via Make.py +</P> +<PRE>mpirun -np 16 lmp_mpi -k on -sf kk -in in.lj # 1 node, 16 MPI tasks/node, no threads +mpirun -np 2 -ppn 1 lmp_mpi -k on t 16 -sf kk -in in.lj # 2 nodes, 1 MPI task/node, 16 threads/task +mpirun -np 2 lmp_mpi -k on t 8 -sf kk -in in.lj # 1 node, 2 MPI tasks/node, 8 threads/task +mpirun -np 32 -ppn 4 lmp_mpi -k on t 4 -sf kk -in in.lj # 8 nodes, 4 MPI tasks/node, 4 threads/task +</PRE> <UL><LI>specify variables and settings in your Makefile.machine that enable OpenMP, GPU, or Phi support <LI>include the KOKKOS package and build LAMMPS <LI>enable the KOKKOS package and its hardware options via the "-k on" command-line switch use KOKKOS styles in your input script </UL> -<P>The latter two steps can be done using the "-k on", "-pk kokkos" and -"-sf kk" <A HREF = "Section_start.html#start_7">command-line switches</A> -respectively. Or the effect of the "-pk" or "-sf" switches can be -duplicated by adding the <A HREF = "package.html">package kokkos</A> or <A HREF = "suffix.html">suffix -kk</A> commands respectively to your input script. +<P>Here is a quick overview of how to use the KOKKOS package for GPUs, +assuming one or more nodes, each with 16 cores and a GPU. More +details follow. </P> -<P><B>Required hardware/software:</B> +<P>discuss use of NVCC, which Makefiles to examine </P> -<P>The KOKKOS package can be used to build and run LAMMPS on the -following kinds of hardware: +<P>use a C++11 compatible compiler +KOKKOS_DEVICES = Cuda, OpenMP +KOKKOS_ARCH = Kepler35 +make yes-kokkos +make machine +Make.py -p kokkos -kokkos cuda arch=31 -o kokkos_cuda -a file kokkos_cuda +</P> +<PRE>mpirun -np 1 lmp_cuda -k on t 6 -sf kk -in in.lj # one MPI task, 6 threads on CPU +mpirun -np 4 -ppn 1 lmp_cuda -k on t 6 -sf kk -in in.lj # ditto on 4 nodes +</PRE> +<PRE>mpirun -np 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # two MPI tasks, 8 threads per CPU +mpirun -np 32 -ppn 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # ditto on 16 nodes +</PRE> +<P>Here is a quick overview of how to use the KOKKOS package +for the Intel Phi: +</P> +<PRE>use a C++11 compatible compiler +KOKKOS_DEVICES = OpenMP +KOKKOS_ARCH = KNC +make yes-kokkos +make machine +Make.py -p kokkos -kokkos phi -o kokkos_phi -a file mpi +</PRE> +<P>host=MIC, Intel Phi with 61 cores (240 threads/phi via 4x hardware threading): +mpirun -np 1 lmp_g++ -k on t 240 -sf kk -in in.lj # 1 MPI task on 1 Phi, 1*240 = 240 +mpirun -np 30 lmp_g++ -k on t 8 -sf kk -in in.lj # 30 MPI tasks on 1 Phi, 30*8 = 240 +mpirun -np 12 lmp_g++ -k on t 20 -sf kk -in in.lj # 12 MPI tasks on 1 Phi, 12*20 = 240 +mpirun -np 96 -ppn 12 lmp_g++ -k on t 20 -sf kk -in in.lj # ditto on 8 Phis +</P> +<P><B>Required hardware/software:</B> </P> -<UL><LI>CPU-only: one MPI task per CPU core (MPI-only, but using KOKKOS styles) -<LI>CPU-only: one or a few MPI tasks per node with additional threading via OpenMP -<LI>Phi: on one or more Intel Phi coprocessors (per node) -<LI>GPU: on the GPUs of a node with additional OpenMP threading on the CPUs -</UL> <P>Kokkos support within LAMMPS must be built with a C++11 compatible compiler. If using gcc, version 4.8.1 or later is required. </P> -<P>Note that Intel Xeon Phi coprocessors are supported in "native" mode, -not "offload" mode like the USER-INTEL package supports. +<P>To build with Kokkos support for CPUs, your compiler must support the +OpenMP interface. You should have one or more multi-core CPUs so that +multiple threads can be launched by each MPI task running on a CPU. </P> -<P>Only NVIDIA GPUs are currently supported. +<P>To build with Kokkos support for NVIDIA GPUs, NVIDIA Cuda software +version 6.5 or later must be installed on your system. See the +discussion for the <A HREF = "accelerate_cuda.html">USER-CUDA</A> and +<A HREF = "accelerate_gpu.html">GPU</A> packages for details of how to check and do +this. </P> <P>IMPORTANT NOTE: For good performance of the KOKKOS package on GPUs, you must have Kepler generation GPUs (or later). The Kokkos library exploits texture cache options not supported by Telsa generation GPUs (or older). </P> -<P>To build the KOKKOS package for GPUs, NVIDIA Cuda software version 6.5 or later must be -installed on your system. See the discussion above for the USER-CUDA -and GPU packages for details of how to check and do this. +<P>To build with Kokkos support for Intel Xeon Phi coprocessors, your +sysmte must be configured to use them in "native" mode, not "offload" +mode like the USER-INTEL package supports. </P> <P><B>Building LAMMPS with the KOKKOS package:</B> </P> -<P>You must choose at build time whether to build for OpenMP, Cuda, or -Phi. +<P>You must choose at build time whether to build for CPUs (OpenMP), +GPUs, or Phi. </P> <P>You can do any of these in one line, using the src/Make.py script, described in <A HREF = "Section_start.html#start_4">Section 2.4</A> of the manual. Type "Make.py -h" for help. If run from the src directory, these commands will create src/lmp_kokkos_omp, lmp_kokkos_cuda, and lmp_kokkos_phi. Note that the OMP and PHI options use src/MAKE/Makefile.mpi as the starting Makefile.machine. The CUDA option uses src/MAKE/OPTIONS/Makefile.kokkos_cuda. </P> -<PRE>Make.py -p kokkos -kokkos omp -o kokkos_omp -a file mpi -Make.py -p kokkos -kokkos cuda arch=31 -o kokkos_cuda -a file kokkos_cuda -Make.py -p kokkos -kokkos phi -o kokkos_phi -a file mpi -</PRE> +<P>The latter two steps can be done using the "-k on", "-pk kokkos" and +"-sf kk" <A HREF = "Section_start.html#start_7">command-line switches</A> +respectively. Or the effect of the "-pk" or "-sf" switches can be +duplicated by adding the <A HREF = "package.html">package kokkos</A> or <A HREF = "suffix.html">suffix +kk</A> commands respectively to your input script. +</P> <P>Or you can follow these steps: </P> <P>CPU-only (run all-MPI or with OpenMP threading): </P> <PRE>cd lammps/src make yes-kokkos make g++ KOKKOS_DEVICES=OpenMP </PRE> <P>Intel Xeon Phi: </P> <PRE>cd lammps/src make yes-kokkos make g++ KOKKOS_DEVICES=OpenMP KOKKOS_ARCH=KNC </PRE> <P>CPUs and GPUs: </P> <PRE>cd lammps/src make yes-kokkos make cuda KOKKOS_DEVICES=Cuda </PRE> <P>These examples set the KOKKOS-specific OMP, MIC, CUDA variables on the make command line which requires a GNU-compatible make command. Try "gmake" if your system's standard make complains. </P> <P>IMPORTANT NOTE: If you build using make line variables and re-build LAMMPS twice with different KOKKOS options and the *same* target, e.g. g++ in the first two examples above, then you *must* perform a "make clean-all" or "make clean-machine" before each build. This is to force all the KOKKOS-dependent files to be re-compiled with the new options. </P> <P>You can also hardwire these make variables in the specified machine makefile, e.g. src/MAKE/Makefile.g++ in the first two examples above, with a line like: </P> <PRE>KOKKOS_ARCH = KNC </PRE> <P>Note that if you build LAMMPS multiple times in this manner, using different KOKKOS options (defined in different machine makefiles), you do not have to worry about doing a "clean" in between. This is because the targets will be different. </P> <P>IMPORTANT NOTE: The 3rd example above for a GPU, uses a different machine makefile, in this case src/MAKE/Makefile.cuda, which is included in the LAMMPS distribution. To build the KOKKOS package for a GPU, this makefile must use the NVIDA "nvcc" compiler. And it must have a KOKKOS_ARCH setting that is appropriate for your NVIDIA hardware and installed software. Typical values for KOKKOS_ARCH are given below, as well as other settings that must be included in the machine makefile, if you create your own. </P> <P>IMPORTANT NOTE: Currently, there are no precision options with the KOKKOS package. All compilation and computation is performed in double precision. </P> <P>There are other allowed options when building with the KOKKOS package. As above, they can be set either as variables on the make command line or in Makefile.machine. This is the full list of options, including those discussed above, Each takes a value shown below. The default value is listed, which is set in the lib/kokkos/Makefile.kokkos file. </P> <P>#Default settings specific options #Options: force_uvm,use_ldg,rdc </P> <UL><LI>KOKKOS_DEVICES, values = <I>OpenMP</I>, <I>Serial</I>, <I>Pthreads</I>, <I>Cuda</I>, default = <I>OpenMP</I> <LI>KOKKOS_ARCH, values = <I>KNC</I>, <I>SNB</I>, <I>HSW</I>, <I>Kepler</I>, <I>Kepler30</I>, <I>Kepler32</I>, <I>Kepler35</I>, <I>Kepler37</I>, <I>Maxwell</I>, <I>Maxwell50</I>, <I>Maxwell52</I>, <I>Maxwell53</I>, <I>ARMv8</I>, <I>BGQ</I>, <I>Power7</I>, <I>Power8</I>, default = <I>none</I> <LI>KOKKOS_DEBUG, values = <I>yes</I>, <I>no</I>, default = <I>no</I> <LI>KOKKOS_USE_TPLS, values = <I>hwloc</I>, <I>librt</I>, default = <I>none</I> <LI>KOKKOS_CUDA_OPTIONS, values = <I>force_uvm</I>, <I>use_ldg</I>, <I>rdc</I> </UL> <P>KOKKOS_DEVICE sets the parallelization method used for Kokkos code (within LAMMPS). KOKKOS_DEVICES=OpenMP means that OpenMP will be used. KOKKOS_DEVICES=Pthreads means that pthreads will be used. KOKKOS_DEVICES=Cuda means an NVIDIA GPU running CUDA will be used. </P> <P>If KOKKOS_DEVICES=Cuda, then the lo-level Makefile in the src/MAKE directory must use "nvcc" as its compiler, via its CC setting. For best performance its CCFLAGS setting should use -O3 and have a KOKKOS_ARCH setting that matches the compute capability of your NVIDIA hardware and software installation, e.g. KOKKOS_ARCH=Kepler30. Note the minimal required compute capability is 2.0, but this will give signicantly reduced performance compared to Kepler generation GPUs with compute capability 3.x. For the LINK setting, "nvcc" should not be used; instead use g++ or another compiler suitable for linking C++ applications. Often you will want to use your MPI compiler wrapper for this setting (i.e. mpicxx). Finally, the lo-level Makefile must also have a "Compilation rule" for creating *.o files from *.cu files. See src/Makefile.cuda for an example of a lo-level Makefile with all of these settings. </P> <P>KOKKOS_USE_TPLS=hwloc binds threads to hardware cores, so they do not migrate during a simulation. KOKKOS_USE_TPLS=hwloc should always be used if running with KOKKOS_DEVICES=Pthreads for pthreads. It is not necessary for KOKKOS_DEVICES=OpenMP for OpenMP, because OpenMP provides alternative methods via environment variables for binding threads to hardware cores. More info on binding threads to cores is given in <A HREF = "Section_accelerate.html#acc_8">this section</A>. </P> <P>KOKKOS_ARCH=KNC enables compiler switches needed when compling for an Intel Phi processor. </P> <P>KOKKOS_USE_TPLS=librt enables use of a more accurate timer mechanism on most Unix platforms. This library is not available on all platforms. </P> <P>KOKKOS_DEBUG is only useful when developing a Kokkos-enabled style within LAMMPS. KOKKOS_DEBUG=yes enables printing of run-time debugging information that can be useful. It also enables runtime bounds checking on Kokkos data structures. </P> <P>KOKKOS_CUDA_OPTIONS are additional options for CUDA. </P> <P>For more information on Kokkos see the Kokkos programmers' guide here: /lib/kokkos/doc/Kokkos_PG.pdf. </P> <P><B>Run with the KOKKOS package from the command line:</B> </P> <P>The mpirun or mpiexec command sets the total number of MPI tasks used by LAMMPS (one or multiple per compute node) and the number of MPI tasks used per node. E.g. the mpirun command in MPICH does this via its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. </P> <P>When using KOKKOS built with host=OMP, you need to choose how many OpenMP threads per MPI task will be used (via the "-k" command-line switch discussed below). Note that the product of MPI tasks * OpenMP threads/task should not exceed the physical number of cores (on a node), otherwise performance will suffer. </P> <P>When using the KOKKOS package built with device=CUDA, you must use exactly one MPI task per physical GPU. </P> <P>When using the KOKKOS package built with host=MIC for Intel Xeon Phi coprocessor support you need to insure there are one or more MPI tasks per coprocessor, and choose the number of coprocessor threads to use per MPI task (via the "-k" command-line switch discussed below). The product of MPI tasks * coprocessor threads/task should not exceed the maximum number of threads the coproprocessor is designed to run, otherwise performance will suffer. This value is 240 for current generation Xeon Phi(TM) chips, which is 60 physical cores * 4 threads/core. Note that with the KOKKOS package you do not need to specify how many Phi coprocessors there are per node; each coprocessors is simply treated as running some number of MPI tasks. </P> <P>You must use the "-k on" <A HREF = "Section_start.html#start_7">command-line switch</A> to enable the KOKKOS package. It takes additional arguments for hardware settings appropriate to your system. Those arguments are <A HREF = "Section_start.html#start_7">documented here</A>. The two most commonly used options are: </P> <PRE>-k on t Nt g Ng </PRE> <P>The "t Nt" option applies to host=OMP (even if device=CUDA) and host=MIC. For host=OMP, it specifies how many OpenMP threads per MPI task to use with a node. For host=MIC, it specifies how many Xeon Phi threads per MPI task to use within a node. The default is Nt = 1. Note that for host=OMP this is effectively MPI-only mode which may be fine. But for host=MIC you will typically end up using far less than all the 240 available threads, which could give very poor performance. </P> <P>The "g Ng" option applies to device=CUDA. It specifies how many GPUs per compute node to use. The default is 1, so this only needs to be specified is you have 2 or more GPUs per compute node. </P> <P>The "-k on" switch also issues a "package kokkos" command (with no additional arguments) which sets various KOKKOS options to default values, as discussed on the <A HREF = "package.html">package</A> command doc page. </P> <P>Use the "-sf kk" <A HREF = "Section_start.html#start_7">command-line switch</A>, which will automatically append "kk" to styles that support it. Use the "-pk kokkos" <A HREF = "Section_start.html#start_7">command-line switch</A> if you wish to change any of the default <A HREF = "package.html">package kokkos</A> optionns set by the "-k on" <A HREF = "Section_start.html#start_7">command-line switch</A>. </P> -<PRE>host=OMP, dual hex-core nodes (12 threads/node): -mpirun -np 12 lmp_g++ -in in.lj # MPI-only mode with no Kokkos -mpirun -np 12 lmp_g++ -k on -sf kk -in in.lj # MPI-only mode with Kokkos -mpirun -np 1 lmp_g++ -k on t 12 -sf kk -in in.lj # one MPI task, 12 threads -mpirun -np 2 lmp_g++ -k on t 6 -sf kk -in in.lj # two MPI tasks, 6 threads/task -mpirun -np 32 -ppn 2 lmp_g++ -k on t 6 -sf kk -in in.lj # ditto on 16 nodes -</PRE> -<P>host=MIC, Intel Phi with 61 cores (240 threads/phi via 4x hardware threading): -mpirun -np 1 lmp_g++ -k on t 240 -sf kk -in in.lj # 1 MPI task on 1 Phi, 1*240 = 240 -mpirun -np 30 lmp_g++ -k on t 8 -sf kk -in in.lj # 30 MPI tasks on 1 Phi, 30*8 = 240 -mpirun -np 12 lmp_g++ -k on t 20 -sf kk -in in.lj # 12 MPI tasks on 1 Phi, 12*20 = 240 -mpirun -np 96 -ppn 12 lmp_g++ -k on t 20 -sf kk -in in.lj # ditto on 8 Phis -</P> -<PRE>host=OMP, device=CUDA, node = dual hex-core CPUs and a single GPU: -mpirun -np 1 lmp_cuda -k on t 6 -sf kk -in in.lj # one MPI task, 6 threads on CPU -mpirun -np 4 -ppn 1 lmp_cuda -k on t 6 -sf kk -in in.lj # ditto on 4 nodes -</PRE> -<PRE>host=OMP, device=CUDA, node = dual 8-core CPUs and 2 GPUs: -mpirun -np 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # two MPI tasks, 8 threads per CPU -mpirun -np 32 -ppn 2 lmp_cuda -k on t 8 g 2 -sf kk -in in.lj # ditto on 16 nodes -</PRE> <P>Note that the default for the <A HREF = "package.html">package kokkos</A> command is to use "full" neighbor lists and set the Newton flag to "off" for both pairwise and bonded interactions. This typically gives fastest performance. If the <A HREF = "newton.html">newton</A> command is used in the input script, it can override the Newton flag defaults. </P> <P>However, when running in MPI-only mode with 1 thread per MPI task, it will typically be faster to use "half" neighbor lists and set the Newton flag to "on", just as is the case for non-accelerated pair styles. You can do this with the "-pk" <A HREF = "Section_start.html#start_7">command-line switch</A>. </P> <P><B>Or run with the KOKKOS package by editing an input script:</B> </P> <P>The discussion above for the mpirun/mpiexec command and setting appropriate thread and GPU values for host=OMP or host=MIC or device=CUDA are the same. </P> <P>You must still use the "-k on" <A HREF = "Section_start.html#start_7">command-line switch</A> to enable the KOKKOS package, and specify its additional arguments for hardware options appopriate to your system, as documented above. </P> <P>Use the <A HREF = "suffix.html">suffix kk</A> command, or you can explicitly add a "kk" suffix to individual styles in your input script, e.g. </P> <PRE>pair_style lj/cut/kk 2.5 </PRE> <P>You only need to use the <A HREF = "package.html">package kokkos</A> command if you wish to change any of its option defaults, as set by the "-k on" <A HREF = "Section_start.html#start_7">command-line switch</A>. </P> <P><B>Speed-ups to expect:</B> </P> <P>The performance of KOKKOS running in different modes is a function of your hardware, which KOKKOS-enable styles are used, and the problem size. </P> <P>Generally speaking, the following rules of thumb apply: </P> <UL><LI>When running on CPUs only, with a single thread per MPI task, performance of a KOKKOS style is somewhere between the standard (un-accelerated) styles (MPI-only mode), and those provided by the USER-OMP package. However the difference between all 3 is small (less than 20%). <LI>When running on CPUs only, with multiple threads per MPI task, performance of a KOKKOS style is a bit slower than the USER-OMP package. <LI>When running on GPUs, KOKKOS is typically faster than the USER-CUDA and GPU packages. <LI>When running on Intel Xeon Phi, KOKKOS is not as fast as the USER-INTEL package, which is optimized for that hardware. </UL> <P>See the <A HREF = "http://lammps.sandia.gov/bench.html">Benchmark page</A> of the LAMMPS web site for performance of the KOKKOS package on different hardware. </P> <P><B>Guidelines for best performance:</B> </P> <P>Here are guidline for using the KOKKOS package on the different hardware configurations listed above. </P> <P>Many of the guidelines use the <A HREF = "package.html">package kokkos</A> command See its doc page for details and default settings. Experimenting with its options can provide a speed-up for specific calculations. </P> <P><B>Running on a multi-core CPU:</B> </P> <P>If N is the number of physical cores/node, then the number of MPI tasks/node * number of threads/task should not exceed N, and should typically equal N. Note that the default threads/task is 1, as set by the "t" keyword of the "-k" <A HREF = "Section_start.html#start_7">command-line switch</A>. If you do not change this, no additional parallelism (beyond MPI) will be invoked on the host CPU(s). </P> <P>You can compare the performance running in different modes: </P> <UL><LI>run with 1 MPI task/node and N threads/task <LI>run with N MPI tasks/node and 1 thread/task <LI>run with settings in between these extremes </UL> <P>Examples of mpirun commands in these modes are shown above. </P> <P>When using KOKKOS to perform multi-threading, it is important for performance to bind both MPI tasks to physical cores, and threads to physical cores, so they do not migrate during a simulation. </P> <P>If you are not certain MPI tasks are being bound (check the defaults for your MPI installation), binding can be forced with these flags: </P> <PRE>OpenMPI 1.8: mpirun -np 2 -bind-to socket -map-by socket ./lmp_openmpi ... Mvapich2 2.0: mpiexec -np 2 -bind-to socket -map-by socket ./lmp_mvapich ... </PRE> <P>For binding threads with the KOKKOS OMP option, use thread affinity environment variables to force binding. With OpenMP 3.1 (gcc 4.7 or later, intel 12 or later) setting the environment variable OMP_PROC_BIND=true should be sufficient. For binding threads with the KOKKOS pthreads option, compile LAMMPS the KOKKOS HWLOC=yes option, as discussed in <A HREF = "Sections_start.html#start_3_4">Section 2.3.4</A> of the manual. </P> <P><B>Running on GPUs:</B> </P> <P>Insure the -arch setting in the machine makefile you are using, e.g. src/MAKE/Makefile.cuda, is correct for your GPU hardware/software (see <A HREF = "Section_start.html#start_3_4">this section</A> of the manual for details). </P> <P>The -np setting of the mpirun command should set the number of MPI tasks/node to be equal to the # of physical GPUs on the node. </P> <P>Use the "-k" <A HREF = "Section_commands.html#start_7">command-line switch</A> to specify the number of GPUs per node, and the number of threads per MPI task. As above for multi-core CPUs (and no GPU), if N is the number of physical cores/node, then the number of MPI tasks/node * number of threads/task should not exceed N. With one GPU (and one MPI task) it may be faster to use less than all the available cores, by setting threads/task to a smaller value. This is because using all the cores on a dual-socket node will incur extra cost to copy memory from the 2nd socket to the GPU. </P> <P>Examples of mpirun commands that follow these rules are shown above. </P> <P>IMPORTANT NOTE: When using a GPU, you will achieve the best performance if your input script does not use any fix or compute styles which are not yet Kokkos-enabled. This allows data to stay on the GPU for multiple timesteps, without being copied back to the host CPU. Invoking a non-Kokkos fix or compute, or performing I/O for <A HREF = "thermo_style.html">thermo</A> or <A HREF = "dump.html">dump</A> output will cause data to be copied back to the CPU. </P> <P>You cannot yet assign multiple MPI tasks to the same GPU with the KOKKOS package. We plan to support this in the future, similar to the GPU package in LAMMPS. </P> <P>You cannot yet use both the host (multi-threaded) and device (GPU) together to compute pairwise interactions with the KOKKOS package. We hope to support this in the future, similar to the GPU package in LAMMPS. </P> <P><B>Running on an Intel Phi:</B> </P> <P>Kokkos only uses Intel Phi processors in their "native" mode, i.e. not hosted by a CPU. </P> <P>As illustrated above, build LAMMPS with OMP=yes (the default) and MIC=yes. The latter insures code is correctly compiled for the Intel Phi. The OMP setting means OpenMP will be used for parallelization on the Phi, which is currently the best option within Kokkos. In the future, other options may be added. </P> <P>Current-generation Intel Phi chips have either 61 or 57 cores. One core should be excluded for running the OS, leaving 60 or 56 cores. Each core is hyperthreaded, so there are effectively N = 240 (4*60) or N = 224 (4*56) cores to run on. </P> <P>The -np setting of the mpirun command sets the number of MPI tasks/node. The "-k on t Nt" command-line switch sets the number of threads/task as Nt. The product of these 2 values should be N, i.e. 240 or 224. Also, the number of threads/task should be a multiple of 4 so that logical threads from more than one MPI task do not run on the same physical core. </P> <P>Examples of mpirun commands that follow these rules are shown above. </P> <P><B>Restrictions:</B> </P> <P>As noted above, if using GPUs, the number of MPI tasks per compute node should equal to the number of GPUs per compute node. In the future Kokkos will support assigning multiple MPI tasks to a single GPU. </P> <P>Currently Kokkos does not support AMD GPUs due to limits in the available backend programming models. Specifically, Kokkos requires extensive C++ support from the Kernel language. This is expected to change in the future. </P> </HTML> diff --git a/doc/doc2/accelerate_omp.html b/doc/doc2/accelerate_omp.html index 9514c4ec5..c898c3d11 100644 --- a/doc/doc2/accelerate_omp.html +++ b/doc/doc2/accelerate_omp.html @@ -1,206 +1,191 @@ <HTML> <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> </CENTER> <HR> <P><A HREF = "Section_accelerate.html">Return to Section accelerate overview</A> </P> <H4>5.3.5 USER-OMP package </H4> <P>The USER-OMP package was developed by Axel Kohlmeyer at Temple University. It provides multi-threaded versions of most pair styles, nearly all bonded styles (bond, angle, dihedral, improper), several -Kspace styles, and a few fix styles. The package currently -uses the OpenMP interface for multi-threading. +Kspace styles, and a few fix styles. The package currently uses the +OpenMP interface for multi-threading. </P> -<P>Here is a quick overview of how to use the USER-OMP package: -</P> -<UL><LI>use the -fopenmp flag for compiling and linking in your Makefile.machine -<LI>include the USER-OMP package and build LAMMPS -<LI>use the mpirun command to set the number of MPI tasks/node -<LI>specify how many threads per MPI task to use -<LI>use USER-OMP styles in your input script -</UL> -<P>The latter two steps can be done using the "-pk omp" and "-sf omp" -<A HREF = "Section_start.html#start_7">command-line switches</A> respectively. Or -the effect of the "-pk" or "-sf" switches can be duplicated by adding -the <A HREF = "package.html">package omp</A> or <A HREF = "suffix.html">suffix omp</A> commands -respectively to your input script. +<P>Here is a quick overview of how to use the USER-OMP package, assuming +one or more 16-core nodes. More details follow. </P> +<PRE>use -fopenmp with CCFLAGS and LINKFLAGS in Makefile.machine +make yes-user-omp +make mpi # build with USER-OMP package, if settings added to Makefile.mpi +make omp # or Makefile.omp already has settings +Make.py -v -p omp -o mpi -a file mpi # or one-line build via Make.py +</PRE> +<PRE>lmp_mpi -sf omp -pk omp 16 < in.script # 1 MPI task, 16 threads +mpirun -np 4 lmp_mpi -sf omp -pk omp 4 -in in.script # 4 MPI tasks, 4 threads/task +mpirun -np 32 -ppn 4 lmp_mpi -sf omp -pk omp 4 -in in.script # 8 nodes, 4 MPI tasks/node, 4 threads/task +</PRE> <P><B>Required hardware/software:</B> </P> <P>Your compiler must support the OpenMP interface. You should have one -or more multi-core CPUs so that multiple threads can be launched by an -MPI task running on a CPU. +or more multi-core CPUs so that multiple threads can be launched by +each MPI task running on a CPU. </P> <P><B>Building LAMMPS with the USER-OMP package:</B> </P> -<P>To do this in one line, use the src/Make.py script, described in -<A HREF = "Section_start.html#start_4">Section 2.4</A> of the manual. Type "Make.py --h" for help. If run from the src directory, this command will create -src/lmp_omp using src/MAKE/Makefile.mpi as the starting -Makefile.machine: +<P>The lines above illustrate how to include/build with the USER-OMP +package in two steps, using the "make" command. Or how to do it with +one command via the src/Make.py script, described in <A HREF = "Section_start.html#start_4">Section +2.4</A> of the manual. Type "Make.py -h" for +help. </P> -<PRE>Make.py -p omp -o omp -a file mpi -</PRE> -<P>Or you can follow these steps: -</P> -<PRE>cd lammps/src -make yes-user-omp -make machine -</PRE> -<P>The CCFLAGS setting in Makefile.machine needs "-fopenmp" to add OpenMP -support. This works for both the GNU and Intel compilers. Without -this flag the USER-OMP styles will still be compiled and work, but -will not support multi-threading. For the Intel compilers the CCFLAGS -setting also needs to include "-restrict". +<P>Note that the CCFLAGS and LINKFLAGS settings in Makefile.machine must +include "-fopenmp". Likewise, if you use an Intel compiler, the +CCFLAGS setting must include "-restrict". The Make.py command will +add these automatically. </P> <P><B>Run with the USER-OMP package from the command line:</B> </P> <P>The mpirun or mpiexec command sets the total number of MPI tasks used by LAMMPS (one or multiple per compute node) and the number of MPI tasks used per node. E.g. the mpirun command in MPICH does this via its -np and -ppn switches. Ditto for OpenMPI via -np and -npernode. </P> -<P>You need to choose how many threads per MPI task will be used by the -USER-OMP package. Note that the product of MPI tasks * threads/task -should not exceed the physical number of cores (on a node), otherwise -performance will suffer. -</P> -<P>Use the "-sf omp" <A HREF = "Section_start.html#start_7">command-line switch</A>, -which will automatically append "omp" to styles that support it. Use -the "-pk omp Nt" <A HREF = "Section_start.html#start_7">command-line switch</A>, to -set Nt = # of OpenMP threads per MPI task to use. -</P> -<PRE>lmp_machine -sf omp -pk omp 16 -in in.script # 1 MPI task on a 16-core node -mpirun -np 4 lmp_machine -sf omp -pk omp 4 -in in.script # 4 MPI tasks each with 4 threads on a single 16-core node -mpirun -np 32 -ppn 4 lmp_machine -sf omp -pk omp 4 -in in.script # ditto on 8 16-core nodes -</PRE> -<P>Note that if the "-sf omp" switch is used, it also issues a default -<A HREF = "package.html">package omp 0</A> command, which sets the number of threads -per MPI task via the OMP_NUM_THREADS environment variable. -</P> -<P>Using the "-pk" switch explicitly allows for direct setting of the -number of threads and additional options. Its syntax is the same as -the "package omp" command. See the <A HREF = "package.html">package</A> command doc -page for details, including the default values used for all its -options if it is not specified, and how to set the number of threads -via the OMP_NUM_THREADS environment variable if desired. +<P>You need to choose how many OpenMP threads per MPI task will be used +by the USER-OMP package. Note that the product of MPI tasks * +threads/task should not exceed the physical number of cores (on a +node), otherwise performance will suffer. +</P> +<P>As in the lines above, use the "-sf omp" <A HREF = "Section_start.html#start_7">command-line +switch</A>, which will automatically append +"omp" to styles that support it. The "-sf omp" switch also issues a +default <A HREF = "package.html">package omp 0</A> command, which will set the +number of threads per MPI task via the OMP_NUM_THREADS environment +variable. +</P> +<P>You can also use the "-pk omp Nt" <A HREF = "Section_start.html#start_7">command-line +switch</A>, to explicitly set Nt = # of OpenMP +threads per MPI task to use, as well as additional options. Its +syntax is the same as the <A HREF = "package.html">package omp</A> command whose doc +page gives details, including the default values used if it is not +specified. It also gives more details on how to set the number of +threads via the OMP_NUM_THREADS environment variable. </P> <P><B>Or run with the USER-OMP package by editing an input script:</B> </P> <P>The discussion above for the mpirun/mpiexec command, MPI tasks/node, and threads/MPI task is the same. </P> <P>Use the <A HREF = "suffix.html">suffix omp</A> command, or you can explicitly add an "omp" suffix to individual styles in your input script, e.g. </P> <PRE>pair_style lj/cut/omp 2.5 </PRE> <P>You must also use the <A HREF = "package.html">package omp</A> command to enable the -USER-OMP package, unless the "-sf omp" or "-pk omp" <A HREF = "Section_start.html#start_7">command-line -switches</A> were used. It specifies how many -threads per MPI task to use, as well as other options. Its doc page -explains how to set the number of threads via an environment variable -if desired. +USER-OMP package. When you do this you also specify how many threads +per MPI task to use. The command doc page explains other options and +how to set the number of threads via the OMP_NUM_THREADS environment +variable. </P> <P><B>Speed-ups to expect:</B> </P> <P>Depending on which styles are accelerated, you should look for a reduction in the "Pair time", "Bond time", "KSpace time", and "Loop time" values printed at the end of a run. </P> <P>You may see a small performance advantage (5 to 20%) when running a USER-OMP style (in serial or parallel) with a single thread per MPI -task, versus running standard LAMMPS with its standard -(un-accelerated) styles (in serial or all-MPI parallelization with 1 -task/core). This is because many of the USER-OMP styles contain -similar optimizations to those used in the OPT package, as described -above. -</P> -<P>With multiple threads/task, the optimal choice of MPI tasks/node and -OpenMP threads/task can vary a lot and should always be tested via -benchmark runs for a specific simulation running on a specific -machine, paying attention to guidelines discussed in the next +task, versus running standard LAMMPS with its standard un-accelerated +styles (in serial or all-MPI parallelization with 1 task/core). This +is because many of the USER-OMP styles contain similar optimizations +to those used in the OPT package, described in <A HREF = "accelerate_opt.html">Section accelerate +5.3.6</A>. +</P> +<P>With multiple threads/task, the optimal choice of number of MPI +tasks/node and OpenMP threads/task can vary a lot and should always be +tested via benchmark runs for a specific simulation running on a +specific machine, paying attention to guidelines discussed in the next sub-section. </P> <P>A description of the multi-threading strategy used in the USER-OMP package and some performance examples are <A HREF = "http://sites.google.com/site/akohlmey/software/lammps-icms/lammps-icms-tms2011-talk.pdf?attredirects=0&d=1">presented here</A> </P> <P><B>Guidelines for best performance:</B> </P> <P>For many problems on current generation CPUs, running the USER-OMP package with a single thread/task is faster than running with multiple threads/task. This is because the MPI parallelization in LAMMPS is often more efficient than multi-threading as implemented in the USER-OMP package. The parallel efficiency (in a threaded sense) also varies for different USER-OMP styles. </P> <P>Using multiple threads/task can be more effective under the following circumstances: </P> <UL><LI>Individual compute nodes have a significant number of CPU cores but the CPU itself has limited memory bandwidth, e.g. for Intel Xeon 53xx -(Clovertown) and 54xx (Harpertown) quad core processors. Running one +(Clovertown) and 54xx (Harpertown) quad-core processors. Running one MPI task per CPU core will result in significant performance degradation, so that running with 4 or even only 2 MPI tasks per node is faster. Running in hybrid MPI+OpenMP mode will reduce the inter-node communication bandwidth contention in the same way, but offers an additional speedup by utilizing the otherwise idle CPU cores. <LI>The interconnect used for MPI communication does not provide sufficient bandwidth for a large number of MPI tasks per node. For example, this applies to running over gigabit ethernet or on Cray XT4 or XT5 series supercomputers. As in the aforementioned case, this effect worsens when using an increasing number of nodes. <LI>The system has a spatially inhomogeneous particle density which does not map well to the <A HREF = "processors.html">domain decomposition scheme</A> or <A HREF = "balance.html">load-balancing</A> options that LAMMPS provides. This is because multi-threading achives parallelism over the number of particles, not via their distribution in space. <LI>A machine is being used in "capability mode", i.e. near the point where MPI parallelism is maxed out. For example, this can happen when using the <A HREF = "kspace_style.html">PPPM solver</A> for long-range electrostatics on large numbers of nodes. The scaling of the KSpace calculation (see the <A HREF = "kspace_style.html">kspace_style</A> command) becomes the performance-limiting factor. Using multi-threading allows less MPI tasks to be invoked and can speed-up the long-range solver, while increasing overall performance by parallelizing the pairwise and bonded calculations via OpenMP. Likewise additional speedup can be sometimes be achived by increasing the length of the Coulombic cutoff and thus reducing the work done by the long-range solver. Using the <A HREF = "run_style.html">run_style verlet/split</A> command, which is compatible with the USER-OMP package, is an alternative way to reduce the number of MPI tasks assigned to the KSpace calculation. </UL> <P>Additional performance tips are as follows: </P> <UL><LI>The best parallel efficiency from <I>omp</I> styles is typically achieved -when there is at least one MPI task per physical processor, -i.e. socket or die. +when there is at least one MPI task per physical CPU chip, i.e. socket +or die. <LI>It is usually most efficient to restrict threading to a single socket, i.e. use one or more MPI task per socket. -<LI>Several current MPI implementation by default use a processor affinity -setting that restricts each MPI task to a single CPU core. Using -multi-threading in this mode will force the threads to share that core -and thus is likely to be counterproductive. Instead, binding MPI -tasks to a (multi-core) socket, should solve this issue. +<LI>IMPORTANT NOTE: By default, several current MPI implementations use a +processor affinity setting that restricts each MPI task to a single +CPU core. Using multi-threading in this mode will force all threads +to share the one core and thus is likely to be counterproductive. +Instead, binding MPI tasks to a (multi-core) socket, should solve this +issue. </UL> <P><B>Restrictions:</B> </P> <P>None. </P> </HTML> diff --git a/doc/doc2/accelerate_opt.html b/doc/doc2/accelerate_opt.html index 3d96b9b51..53613ba2b 100644 --- a/doc/doc2/accelerate_opt.html +++ b/doc/doc2/accelerate_opt.html @@ -1,87 +1,76 @@ <HTML> <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> </CENTER> <HR> <P><A HREF = "Section_accelerate.html">Return to Section accelerate overview</A> </P> <H4>5.3.6 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>Here is a quick overview of how to use the OPT package: -</P> -<UL><LI>include the OPT package and build LAMMPS -<LI>use OPT pair styles in your input script -</UL> -<P>The last step can be done using the "-sf opt" <A HREF = "Section_start.html#start_7">command-line -switch</A>. Or the effect of the "-sf" switch -can be duplicated by adding a <A HREF = "suffix.html">suffix opt</A> command to your -input script. +<P>Here is a quick overview of how to use the OPT package. More details +follow. </P> +<PRE>make yes-opt +make mpi # build with the OPT pacakge +Make.py -v -p opt -o mpi -a file mpi # or one-line build via Make.py +</PRE> +<PRE>lmp_mpi -sf opt -in in.script # run in serial +mpirun -np 4 lmp_mpi -sf opt -in in.script # run in parallel +</PRE> <P><B>Required hardware/software:</B> </P> <P>None. </P> <P><B>Building LAMMPS with the OPT package:</B> </P> -<P>Include the package and build LAMMPS: -</P> -<P>To do this in one line, use the src/Make.py script, described in -<A HREF = "Section_start.html#start_4">Section 2.4</A> of the manual. Type "Make.py --h" for help. If run from the src directory, this command will create -src/lmp_opt using src/MAKE/Makefile.mpi as the starting -Makefile.machine: +<P>The lines above illustrate how to build LAMMPS with the OPT package in +two steps, using the "make" command. Or how to do it with one command +via the src/Make.py script, described in <A HREF = "Section_start.html#start_4">Section +2.4</A> of the manual. Type "Make.py -h" for +help. </P> -<PRE>Make.py -p opt -o opt -a file mpi -</PRE> -<P>Or you can follow these steps: -</P> -<PRE>cd lammps/src -make yes-opt -make machine -</PRE> -<P>If you are using Intel compilers, then the CCFLAGS setting in -Makefile.machine needs to include "-restrict". +<P>Note that if you use an Intel compiler to build with the OPT package, +the CCFLAGS setting in your Makefile.machine must include "-restrict". +The Make.py command will add this automatically. </P> <P><B>Run with the OPT package from the command line:</B> </P> -<P>Use the "-sf opt" <A HREF = "Section_start.html#start_7">command-line switch</A>, -which will automatically append "opt" to styles that support it. +<P>As in the lines above, use the "-sf opt" <A HREF = "Section_start.html#start_7">command-line +switch</A>, which will automatically append +"opt" to styles that support it. </P> -<PRE>lmp_machine -sf opt -in in.script -mpirun -np 4 lmp_machine -sf opt -in in.script -</PRE> <P><B>Or run with the OPT package by editing an input script:</B> </P> <P>Use the <A HREF = "suffix.html">suffix opt</A> command, or you can explicitly add an "opt" suffix to individual styles in your input script, e.g. </P> <PRE>pair_style lj/cut/opt 2.5 </PRE> <P><B>Speed-ups to expect:</B> </P> <P>You should see a reduction in the "Pair time" value printed at the end of a run. On most machines for reasonable problem sizes, it will be a 5 to 20% savings. </P> <P><B>Guidelines for best performance:</B> </P> -<P>None. Just try out an OPT pair style to see how it performs. +<P>Just try out an OPT pair style to see how it performs. </P> <P><B>Restrictions:</B> </P> <P>None. </P> </HTML> diff --git a/doc/doc2/compute_temp_cs.html b/doc/doc2/compute_temp_cs.html index abb50d2dd..cf8fdbedc 100644 --- a/doc/doc2/compute_temp_cs.html +++ b/doc/doc2/compute_temp_cs.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/cs command </H3> <P><B>Syntax:</B> </P> <PRE>compute ID group-ID temp/cs group1 group2 </PRE> <UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command <LI>temp/cs = style name of this compute command <LI>group1 = group-ID of either cores or shells <LI>group2 = group-ID of either shells or cores </UL> <P><B>Examples:</B> </P> <PRE>compute oxygen_c-s all temp/cs O_core O_shell compute core_shells all temp/cs cores shells </PRE> <P><B>Description:</B> </P> <P>Define a computation that calculates the temperature of a system based on the center-of-mass velocity of atom pairs that are bonded to each other. This compute is designed to be used with the adiabatic core/shell model of <A HREF = "#MitchellFinchham">(Mitchell and Finchham)</A>. See <A HREF = "Section_howto.html#howto_25">Section_howto 25</A> of the manual for an overview of the model as implemented in LAMMPS. Specifically, this compute enables correct temperature calculation and thermostatting of core/shell pairs where it is desirable for the internal degrees of freedom of the core/shell pairs to not be influenced by a thermostat. A compute of this style can be used by any command that computes a temperature via <A HREF = "fix_modify.html">fix_modify</A> e.g. <A HREF = "fix_temp_rescale.html">fix temp/rescale</A>, <A HREF = "fix_nh.html">fix npt</A>, etc. </P> <P>Note that this compute does not require all ions to be polarized, hence defined as core/shell pairs. One can mix core/shell pairs and ions without a satellite particle if desired. The compute will consider the non-polarized ions according to the physical system. </P> <P>For this compute, core and shell particles are specified by two respective group IDs, which can be defined using the <A HREF = "group.html">group</A> command. The number of atoms in the two groups must be the same and there should be one bond defined between a pair of atoms in the two groups. Non-polarized ions which might also be included in the treated system should not be included into either of these groups, they are taken into account by the <I>group-ID</I> (2nd argument) of the compute. </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. Note that the velocity of each core or shell atom used in the KE calculation is the velocity of the center-of-mass (COM) of the core/shell pair the atom is part of. </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. Again, the velocity of each core or shell atom is its -COM velocity. +zz, xy, xz, yz. In contrast to the temperature, the velocity of +each core or shell atom is taken individually. </P> <P>The change this fix makes to core/shell atom velocities is essentially computing the temperature after a "bias" has been removed from the velocity of the atoms. This "bias" is the velocity of the atom relative to the COM velocity of the core/shell pair. 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 COM velocity will be performed, and the bias will be added back in. This means the thermostating will effectively be performed on the core/shell pairs, instead of on the individual core and shell atoms. 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>The internal energy of core/shell pairs can be calculated by the <A HREF = "compute_temp_chunk.html">compute temp/chunk</A> command, if chunks are defined as core/shell pairs. See <A HREF = "Section_howto.html#howto_25">Section_howto 25</A> for more discussion on how to do this. </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. </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>The number of core/shell pairs contributing to the temperature is assumed to be constant for the duration of the run. No fixes should be used which generate new molecules or atoms during a simulation. </P> <P><B>Related commands:</B> </P> <P><A HREF = "compute_temp.html">compute temp</A>, <A HREF = "compute_temp_chunk.html">compute temp/chunk</A> </P> <P><B>Default:</B> none </P> <HR> <A NAME = "MitchellFinchham"></A> <P><B>(Mitchell and Finchham)</B> Mitchell, Finchham, J Phys Condensed Matter, 5, 1031-1038 (1993). </P> </HTML> diff --git a/doc/doc2/fix_adapt.html b/doc/doc2/fix_adapt.html index 51ad3ce48..27e0e3322 100644 --- a/doc/doc2/fix_adapt.html +++ b/doc/doc2/fix_adapt.html @@ -1,263 +1,267 @@ <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 <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. Also note that many commands allow variables as arguments for specific parameters, if described in that manner on their doc pages. An equal-style variable can calculate a time-dependent quantity, so this is another way to vary a simulation parameter over time. </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>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. </P> <P>Note that whether scale is <I>no</I> or <I>yes</I>, internally, the parameters themselves are actually altered by this fix. 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: +a sub-style name. If there are multiple sub-styles using the same +pair style, then <I>pstyle</I> should be specified as "style:N" where N is +which instance of the pair style you wish to adapt, e.g. the first, +second, etc. For example, <I>pstyle</I> could be specified as "soft" or +"lubricate" or "lj/cut:1" or "lj/cut:2". 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,sigma</TD><TD > type pairs</TD></TR> <TR><TD ><A HREF = "pair_lj_expand.html">lj/expand</A></TD><TD > epsilon,sigma,delta</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_morse.html">morse</A></TD><TD > d0,r0,alpha</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 = "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>charge = charge on particle <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>IMPORTANT NOTE: The <I>atom</I> keyword works this way whether the <I>scale</I> keyword is set to <I>no</I> or <I>yes</I>. I.e. the use of scale yes is not yet supported by the <I>atom</I> keyword. </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> <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#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>For <A HREF = "run_style.html">rRESPA time integration</A>, this fix changes parameters on the outermost rRESPA level. </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/doc2/fix_ave_correlate.html b/doc/doc2/fix_ave_correlate.html index eda6a0785..860459bdb 100644 --- a/doc/doc2/fix_ave_correlate.html +++ b/doc/doc2/fix_ave_correlate.html @@ -1,349 +1,353 @@ <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>Nfreq = calculate time window averages every this many timesteps <LI>one or more input values can be listed <LI>value = c_ID, c_ID[N], f_ID, f_ID[N], v_name <PRE> c_ID = global scalar calculated by a compute with ID c_ID[I] = Ith component of global vector calculated by a compute with ID f_ID = global scalar calculated by a fix with ID f_ID[I] = Ith component of global vector calculated by a fix with ID v_name = global value calculated by an equal-style variable with name </PRE> <LI>zero or more keyword/arg pairs may be appended <LI>keyword = <I>type</I> or <I>ave</I> or <I>start</I> or <I>prefactor</I> or <I>file</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>title3</I> <PRE> <I>type</I> arg = <I>auto</I> or <I>upper</I> or <I>lower</I> or <I>auto/upper</I> or <I>auto/lower</I> or <I>full</I> auto = correlate each value with itself upper = correlate each value with each succeeding value lower = correlate each value with each preceding value auto/upper = auto + upper auto/lower = auto + lower full = correlate each value with every other value, including itself = auto + upper + lower <I>ave</I> args = <I>one</I> or <I>running</I> one = zero the correlation accumulation every Nfreq steps running = accumulate correlations continuously <I>start</I> args = Nstart Nstart = start accumulating correlations on this timestep <I>prefactor</I> args = value value = prefactor to scale all the correlation data by <I>file</I> arg = filename filename = name of file to output correlation data to <I>overwrite</I> arg = none = overwrite output file with only latest output <I>title1</I> arg = string string = text to print as 1st line of output file <I>title2</I> arg = string string = text to print as 2nd line of output file <I>title3</I> arg = string string = text to print as 3rd line of output file </PRE> </UL> <P><B>Examples:</B> </P> <PRE>fix 1 all ave/correlate 5 100 1000 c_myTemp file temp.correlate 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#howto_15">output commands</A> such as <A HREF = "thermo_style.html">thermo_style -custom</A>, and can also be written to a file. +custom</A>, and can also be written to a file. See the +<A HREF = "fix_ave_correlate_long.html">fix ave/correlate/long</A> command for an +alternate method for computing correlation functions efficiently over +very long time windows. </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>overwrite</I> keyword will continuously overwrite the output file with the latest output, so that it only contains one timestep worth of output. This option can only be used with the <I>ave running</I> setting. </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#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 +<P><A HREF = "fix_ave_correlate_long.html">fix ave/correlate/long</A>, +<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/doc2/fix_ave_correlate_long.html b/doc/doc2/fix_ave_correlate_long.html new file mode 100644 index 000000000..05f452665 --- /dev/null +++ b/doc/doc2/fix_ave_correlate_long.html @@ -0,0 +1,159 @@ +<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/long command +</H3> +<P><B>Syntax:</B> +</P> +<PRE>fix ID group-ID ave/correlate/long Nevery Nfreq value1 value2 ... keyword args ... +</PRE> +<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command + +<LI>ave/correlate/long = style name of this fix command + +<LI>Nevery = use input values every this many timesteps + +<LI>Nfreq = save state of the time correlation functions 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>start</I> or <I>file</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>ncorr</I> or <I>p</I> or <I>m</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>start</I> args = Nstart + Nstart = start accumulating correlations on this timestep + <I>file</I> arg = filename + filename = name of file to output correlation data to + <I>overwrite</I> arg = none = overwrite output file with only latest output + <I>title1</I> arg = string + string = text to print as 1st line of output file + <I>title2</I> arg = string + string = text to print as 2nd line of output file + <I>ncorr</I> arg = Ncorrelators + Ncorrelators = number of correlators to store + <I>nlen</I> args = Nlen + Nlen = length of each correlator + <I>ncount</I> args = Ncount + Ncount = number of values over which succesive correlators are averaged +</PRE> + +</UL> +<P><B>Examples:</B> +</P> +<PRE>fix 1 all ave/correlate/long 5 1000 c_myTemp file temp.correlate +fix 1 all ave/correlate/long 1 10000 & + c_thermo_press[1] c_thermo_press[2] c_thermo_press[3] & + type upper title1 "My correlation data" nlen 15 ncount 3 +</PRE> +<P><B>Description:</B> +</P> +<P>This fix is similar in spirit and syntax to the <A HREF = "fix_ave_correlate.html">fix +ave/correlate</A>. However, this fix allows the +efficient calculation of time correlation functions on the fly over +extremely long time windows without too much CPU overhead, using a +multiple-tau method <A HREF = "#Ramirez">(Ramirez)</A> that decreases the resolution +of the stored correlation function with time. +</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 compute or fix or the +evaluation of an equal-style variable. See the <A HREF = "fix_ave_correlate.html">fix +ave/correlate</A> doc page for details. +</P> +<P>The <I>Nevery</I> and <I>Nfreq</I> arguments specify on what timesteps the input +values will be used to calculate correlation data, and the frequency +with which the time correlation functions will be output to a file. +Note that there is no <I>Nrepeat</I> argument, unlike the <A HREF = "fix_ave_correlate.html">fix +ave/correlate</A> command. +</P> +<P>The optional keywords <I>ncorr</I>, <I>nlen</I>, and <I>ncount</I> are unique to this +command and determine the number of correlation points calculated and +the memory and CPU overhead used by this calculation. <I>Nlen</I> and +<I>ncount</I> determine the amount of averaging done at longer correlation +times. The default values <I>nlen=16</I>, <I>ncount=2</I> ensure that the +systematic error of the multiple-tau correlator is always below the +level of the statistical error of a typical simulation (which depends +on the ensemble size and the simulation length). +</P> +<P>The maximum correlation time (in time steps) that can be reached is +given by the formula (nlen-1) * ncount^(ncorr-1). Longer correlation +times are discarded and not calculated. With the default values of +the parameters (ncorr=20, nlen=16 and ncount=2), this corresponds to +7864320 time steps. If longer correlation times are needed, the value +of ncorr should be increased. Using nlen=16 and ncount=2, with +ncorr=30, the maximum number of steps that can be correlated is +80530636808. If ncorr=40, correlation times in excess of 8e12 time +steps can be calculated. +</P> +<P>The total memory needed for each correlation pair is roughly +4*ncorr*nlen*8 bytes. With the default values of the parameters, this +corresponds to about 10 KB. +</P> +<P>For the meaning of the additional optional keywords, see the <A HREF = "fix_ave_correlate.html">fix +ave/correlate</A> doc page. +</P> +<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B> +</P> +<P>Since this fix in intended for the calculation of time correlation +functions over very long MD simulations, the information about this +fix is written automatically to binary restart files, so that the time +correlation calculation can continue in subsequent simulations. None +of the fix_modify options are relevant to this fix. +</P> +<P>No parameter of this fix can be used with the start/stop keywords of +the run command. This fix is not invoked during energy minimization. +</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#start_3">Making +LAMMPS</A> section for more info. +</P> +<P><B>Related commands:</B> +</P> +<P><A HREF = "fix_ave_correlate.html">fix ave/correlate</A> +</P> +<P><B>Default:</B> none +</P> +<P>The option defaults for keywords that are also keywords for the <A HREF = "fix_ave_correlate.html">fix +ave/correlate</A> command are as follows: type = +auto, start = 0, no file output, title 1,2 = strings as described on +the <A HREF = "fix_ave_correlate.html">fix ave/correlate</A> doc page. +</P> +<P>The option defaults for keywords unique to this command are as +follows: ncorr=20, nlen=16, ncount=2. +</P> +<HR> + +<A NAME = "Ramirez"></A> + +<P><B>(Ramirez)</B> J. Ramirez, S.K. Sukumaran, B. Vorselaars and +A.E. Likhtman, J. Chem. Phys. 133, 154103 (2010). +</P> +</HTML> diff --git a/doc/doc2/fix_gcmc.html b/doc/doc2/fix_gcmc.html index e01d62478..21864923c 100644 --- a/doc/doc2/fix_gcmc.html +++ b/doc/doc2/fix_gcmc.html @@ -1,348 +1,369 @@ <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 = average number of GCMC exchanges to attempt every N steps <LI>M = average number of MC moves to attempt every N steps -<LI>type = atom type to assign to inserted atoms (offset for molecule insertion) +<LI>type = atom type for inserted atoms (must be 0 if mol keyword used) <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>translate = maximum Monte Carlo translation distance (length units) <LI>zero or more keyword/value pairs may be appended to args -<PRE>keyword = <I>mol</I>, <I>region</I>, <I>maxangle</I>, <I>pressure</I>, <I>fugacity_coeff</I>, <I>full_energy</I>, <I>charge</I>, <I>group</I>, <I>grouptype</I>, or <I>intra_energy</I> +<PRE>keyword = <I>mol</I>, <I>region</I>, <I>maxangle</I>, <I>pressure</I>, <I>fugacity_coeff</I>, <I>full_energy</I>, <I>charge</I>, <I>group</I>, <I>grouptype</I>, <I>intra_energy</I>, or <I>tfac_insert</I> <I>mol</I> value = template-ID template-ID = ID of molecule template specified in a separate <A HREF = "molecule.html">molecule</A> command <I>shake</I> value = fix-ID fix-ID = ID of <A HREF = "fix_shake.html">fix shake</A> command <I>region</I> value = region-ID region-ID = ID of region where MC moves are allowed <I>maxangle</I> value = maximum molecular rotation angle (degrees) <I>pressure</I> value = pressure of the gas reservoir (pressure units) <I>fugacity_coeff</I> value = fugacity coefficient of the gas reservoir (unitless) <I>full_energy</I> = compute the entire system energy when performing MC moves <I>charge</I> value = charge of inserted atoms (charge units) <I>group</I> value = group-ID group-ID = group-ID for inserted atoms (string) <I>grouptype</I> values = type group-ID type = atom type (int) group-ID = group-ID for inserted atoms (string) - <I>intra_energy</I> value = intramolecular energy (energy units) + <I>intra_energy</I> value = intramolecular energy (energy units) + <I>tfac_insert</I> value = scale up/down temperature of inserted atoms (unitless) </PRE> </UL> <P><B>Examples:</B> </P> <PRE>fix 2 gas gcmc 10 1000 1000 2 29494 298.0 -0.5 0.01 fix 3 water gcmc 10 100 100 0 3456543 3.0 -2.5 0.1 mol my_one_water maxangle 180 full_energy fix 4 my_gas gcmc 1 10 10 1 123456543 300.0 -12.5 1.0 region disk </PRE> <P><B>Description:</B> </P> <P>This fix performs grand canonical Monte Carlo (GCMC) exchanges of atoms or molecules 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 ensemble (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>Every N timesteps the fix attempts a number of GCMC exchanges (insertions or deletions) of gas atoms or molecules of the given type between the simulation cell and the imaginary reservoir. It also attempts a number of Monte Carlo moves (translations and molecule rotations) of gas of the given type within the simulation cell or region. The average number of attempted GCMC exchanges is X. The average number of attempted MC moves is M. M should typically be chosen to be approximately equal to the expected number of gas atoms or molecules of the given type within the simulation cell or region, which will result in roughly one MC translation per atom or molecule per MC cycle. </P> <P>For MC moves of molecular gasses, rotations and translations are each attempted with 50% probability. For MC moves of atomic gasses, translations are attempted 100% of the time. For MC exchanges of either molecular or atomic gasses, deletions and insertions are each attempted with 50% probability. </P> <P>All inserted particles are always assigned to two groups: the default group "all" and the group specified in the fix gcmc command (which can also be "all"). In addition, particles are also added to any groups specified by the <I>group</I> and <I>grouptype</I> keywords. If inserted particles are individual atoms, they are -assigned the specified atom type. If they are molecules, the type of -each atom in the inserted molecule is specified in the file read by -the <A HREF = "molecule.html">molecule</A> command, and those values are added to -the specified atom type. E.g. if <I>type</I> = 2, and the file specifies -atom types 1,2,3, then the inserted molecule will have atom types -3,4,5. +assigned the atom type given by the type argument. If they are molecules, +the type argument has no effect and must be set to zero. Instead, +the type of each atom in the inserted molecule is specified +in the file read by the <A HREF = "molecule.html">molecule</A> command. </P> <P>This fix cannot be used to perform MC insertions of gas atoms or molecules other than the exchanged type, but MC deletions, translations, and rotations can be performed on any atom/molecule in the fix group. All atoms in the simulation cell can be moved using regular time integration translations, e.g. via <A HREF = "fix_nvt.html">fix_nvt</A>, resulting in a hybrid GCMC+MD simulation. A smaller-than-usual timestep size may be needed when running such a hybrid simulation, especially if the inserted molecules are not well equilibrated. </P> <P>This command may optionally use the <I>region</I> keyword to define an exchange and move 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>. Insertion attempts occur only within the specified region. For non-rectangular regions, random trial points are generated within the rectangular bounding box until a point is found that lies inside the region. If no valid point is generated after 1000 trials, no insertion is performed, but it is counted as an attempted insertion. Move and deletion attempt candidates are selected from gas atoms or molecules within the region. If there are no candidates, no move or deletion is performed, but it is counted as an attempt move or deletion. If an attempted move places the atom or molecule center-of-mass outside the specified region, a new attempted move is generated. This process is repeated until the atom or molecule center-of-mass is inside the specified region. </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 cell. -</P> +will not be in thermal equilibrium with the simulation cell. Also, +it is important that the temperature used by fix nvt be dynamic, +which can be achieved as follows: +</P> +<PRE>compute mdtemp mdatoms temp +compute_modify mdtemp dynamic yes +fix mdnvt mdatoms nvt temp 300.0 300.0 10.0 +fix_modify mdnvt temp mdtemp +</PRE> <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 translations per timestep that atoms can move beyond the neighbor list skin distance. See the <A HREF = "neighbor.html">neighbor</A> command for details. </P> <P>When an atom or molecule is to be inserted, its coordinates are chosen at a random position within the current simulation cell or region, and new atom velocities are randomly chosen from -the specified temperature distribution given by T. Relative +the specified temperature distribution given by T. The effective +temperature for new atom velocities can be increased or decreased +using the optional keyword <I>tfac_insert</I> (see below). Relative coordinates for atoms in a molecule are taken from the template molecule provided by the user. The center of mass of the molecule is placed at the insertion point. The orientation of the molecule is chosen at random by rotating about this point. </P> <P>Individual atoms are inserted, unless the <I>mol</I> keyword is used. It specifies a <I>template-ID</I> previously defined using the <A HREF = "molecule.html">molecule</A> command, which reads a file that defines the molecule. The coordinates, atom types, charges, etc, as well as any bond/angle/etc and special neighbor information for the molecule can be specified in the molecule file. See the <A HREF = "molecule.html">molecule</A> command for details. The only settings required to be in this file are the coordinates and types of atoms in the molecule. </P> <P>When not using the <I>mol</I> keyword, you should ensure you do not delete atoms that are bonded to other atoms, or LAMMPS will soon generate an error when it tries to find bonded neighbors. 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 you wish to insert molecules via the <I>mol</I> keyword, that will have their bonds or angles constrained via SHAKE, use the <I>shake</I> keyword, specifying as its value the ID of a separate <A HREF = "fix_shake.html">fix shake</A> command which also appears in your input script. </P> <P>Optionally, users may specify the maximum rotation angle for molecular rotations using the <I>maxangle</I> keyword and specifying the angle in degrees. Rotations are performed by generating a random point on the unit sphere and a random rotation angle on the range [0,maxangle). The molecule is then rotated by that angle about an axis passing through the molecule center of mass. The axis is parallel to the unit vector defined by the point on the unit sphere. The same procedure is used for randomly rotating molecules when they are inserted, except that the maximum angle is 360 degrees. </P> <P>Note that fix GCMC does not use configurational bias MC or any other kind of sampling of intramolecular degrees of freedom. Inserted molecules can have different orientations, but they will all have the same intramolecular configuration, which was specified in the molecule command input. </P> <P>For atomic gasses, inserted atoms have the specified atom type, but deleted atoms are any atoms that have been inserted or that belong to the user-specified fix group. For molecular gasses, exchanged molecules use the same atom types as in the template molecule supplied by the user. In both cases, exchanged atoms/molecules 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>The gas reservoir pressure can be specified using the <I>pressure</I> keyword, in which case the user-specified chemical potential is ignored. For non-ideal gas reservoirs, the user may also specify the fugacity coefficient using the <I>fugacity_coeff</I> keyword. </P> <P>The <I>full_energy</I> option means that fix GCMC will compute the total potential energy of the entire simulated system. The total system energy before and after the proposed GCMC move is then used in the Metropolis criterion to determine whether or not to accept the proposed GCMC move. By default, this option is off, in which case only partial energies are computed to determine the difference in energy that would be caused by the proposed GCMC move. </P> <P>The <I>full_energy</I> option is needed for systems with complicated potential energy calculations, including the following: </P> <UL><LI> long-range electrostatics (kspace) <LI> many-body pair styles <LI> hybrid pair styles <LI> eam pair styles <LI> triclinic systems <LI> need to include potential energy contributions from other fixes </UL> <P>In these cases, LAMMPS will automatically apply the <I>full_energy</I> keyword and issue a warning message. </P> <P>When the <I>mol</I> keyword is used, the <I>full_energy</I> option also includes the intramolecular energy of inserted and deleted molecules. If this is not desired, the <I>intra_energy</I> keyword can be used to define an amount of energy that is subtracted from the final energy when a molecule is inserted, and added to the initial energy when a molecule is deleted. For molecules that have a non-zero intramolecular energy, this will ensure roughly the same behavior whether or not the <I>full_energy</I> option is used. </P> +<P>Inserted atoms and molecules are assigned random velocities based on the +specified temperature T. Because the relative velocity of +all atoms in the molecule is zero, this may result in inserted molecules +that are systematically too cold. In addition, the intramolecular potential +energy of the inserted molecule may cause the kinetic energy +of the molecule to quickly increase or decrease after insertion. +The <I>tfac_insert</I> keyword allows the user to counteract these effects +by changing the temperature used to assign velocities to +inserted atoms and molecules by a constant factor. For a +particular application, some experimentation may be required +to find a value of <I>tfac_insert</I> that results in inserted molecules that +equilibrate quickly to the correct temperature. +</P> <P>Some fixes have an associated potential energy. Examples of such fixes include: <A HREF = "fix_efield.html">efield</A>, <A HREF = "fix_gravity.html">gravity</A>, <A HREF = "fix_addforce.html">addforce</A>, <A HREF = "fix_langevin.html">langevin</A>, <A HREF = "fix_restrain.html">restrain</A>, <A HREF = "fix_temp_berendsen.html">temp/berendsen</A>, <A HREF = "fix_temp_rescale.html">temp/rescale</A>, and <A HREF = "fix_wall.html">wall fixes</A>. For that energy to be included in the total potential energy of the system (the quantity used when performing GCMC moves), you MUST enable the <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option for that fix. The doc pages for individual <A HREF = "fix.html">fix</A> commands specify if this should be done. </P> <P>Use the <I>charge</I> option to insert atoms with a user-specified point charge. Note that doing so will cause the system to become non-neutral. LAMMPS issues a warning when using long-range electrostatics (kspace) with non-neutral systems. See the <A HREF = "compute_group_group.html">compute_group_group</A> documentation for more details about simulating non-neutral systems with kspace on. </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 parameters 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>The <I>group</I> keyword assigns all inserted atoms to the <A HREF = "group.html">group</A> of the group-ID value. The <I>grouptype</I> keyword assigns all inserted atoms of the specified type to the <A HREF = "group.html">group</A> of the group-ID value. </P> <P><B>Restart, fix_modify, output, run start/stop, minimize info:</B> </P> <P>This fix writes the state of the fix 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 8, which can be accessed by various <A HREF = "Section_howto.html#howto_15">output commands</A>. The vector values are the following global cumulative quantities: </P> <UL><LI>1 = translation attempts <LI>2 = translation successes <LI>3 = insertion attempts <LI>4 = insertion successes <LI>5 = deletion attempts <LI>6 = deletion successes <LI>7 = rotation attempts <LI>8 = rotation 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>Can be run in parallel, but aspects of the GCMC part will not scale well in parallel. Only usable for 3D simulations. </P> <P>Note that very lengthy simulations involving insertions/deletions of billions of gas molecules may run out of atom or molecule IDs and trigger an error, so it is better to run multiple shorter-duration simulations. Likewise, very large molecules have not been tested and may turn out to be problematic. </P> <P>Use of multiple fix gcmc commands in the same input script can be problematic if using a template molecule. The issue is that the user-referenced template molecule in the second fix gcmc command may no longer exist since it might have been deleted by the first fix gcmc command. An existing template molecule will need to be referenced by the user for each subsequent fix gcmc command. </P> <P><B>Related commands:</B> </P> <P><A HREF = "fix_atom_swap.html">fix atom/swap</A>, <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>, <A HREF = "delete_atoms.html">delete_atoms</A> </P> <P><B>Default:</B> </P> <P>The option defaults are mol = no, maxangle = 10, full_energy = no, except for the situations where full_energy is required, as listed above. </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/doc2/genindex.html b/doc/doc2/genindex.html index 7ef4cf69a..36d13dad4 100644 --- a/doc/doc2/genindex.html +++ b/doc/doc2/genindex.html @@ -1,2220 +1,2228 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Index — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li></li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <h1 id="index">Index</h1> <div class="genindex-jumpbox"> <a href="#A"><strong>A</strong></a> | <a href="#B"><strong>B</strong></a> | <a href="#C"><strong>C</strong></a> | <a href="#D"><strong>D</strong></a> | <a href="#E"><strong>E</strong></a> | <a href="#F"><strong>F</strong></a> | <a href="#G"><strong>G</strong></a> | <a href="#I"><strong>I</strong></a> | <a href="#J"><strong>J</strong></a> | <a href="#K"><strong>K</strong></a> | <a href="#L"><strong>L</strong></a> | <a href="#M"><strong>M</strong></a> | <a href="#N"><strong>N</strong></a> | <a href="#P"><strong>P</strong></a> | <a href="#Q"><strong>Q</strong></a> | <a href="#R"><strong>R</strong></a> | <a href="#S"><strong>S</strong></a> | <a href="#T"><strong>T</strong></a> | <a href="#U"><strong>U</strong></a> | <a href="#V"><strong>V</strong></a> | <a href="#W"><strong>W</strong></a> </div> <h2 id="A">A</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="angle_coeff.html#index-0">angle_coeff</a> </dt> <dt><a href="angle_style.html#index-0">angle_style</a> </dt> <dt><a href="angle_charmm.html#index-0">angle_style charmm</a> </dt> <dt><a href="angle_class2.html#index-0">angle_style class2</a> </dt> <dt><a href="angle_cosine.html#index-0">angle_style cosine</a> </dt> <dt><a href="angle_cosine_delta.html#index-0">angle_style cosine/delta</a> </dt> <dt><a href="angle_cosine_periodic.html#index-0">angle_style cosine/periodic</a> </dt> <dt><a href="angle_cosine_shift.html#index-0">angle_style cosine/shift</a> </dt> <dt><a href="angle_cosine_shift_exp.html#index-0">angle_style cosine/shift/exp</a> </dt> <dt><a href="angle_cosine_squared.html#index-0">angle_style cosine/squared</a> </dt> <dt><a href="angle_dipole.html#index-0">angle_style dipole</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="angle_fourier.html#index-0">angle_style fourier</a> </dt> <dt><a href="angle_fourier_simple.html#index-0">angle_style fourier/simple</a> </dt> <dt><a href="angle_harmonic.html#index-0">angle_style harmonic</a> </dt> <dt><a href="angle_hybrid.html#index-0">angle_style hybrid</a> </dt> <dt><a href="angle_none.html#index-0">angle_style none</a> </dt> <dt><a href="angle_quartic.html#index-0">angle_style quartic</a> </dt> <dt><a href="angle_sdk.html#index-0">angle_style sdk</a> </dt> <dt><a href="angle_table.html#index-0">angle_style table</a> </dt> <dt><a href="atom_modify.html#index-0">atom_modify</a> </dt> <dt><a href="atom_style.html#index-0">atom_style</a> </dt> </dl></td> </tr></table> <h2 id="B">B</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="balance.html#index-0">balance</a> </dt> <dt><a href="bond_coeff.html#index-0">bond_coeff</a> </dt> <dt><a href="bond_style.html#index-0">bond_style</a> </dt> <dt><a href="bond_class2.html#index-0">bond_style class2</a> </dt> <dt><a href="bond_fene.html#index-0">bond_style fene</a> </dt> <dt><a href="bond_fene_expand.html#index-0">bond_style fene/expand</a> </dt> <dt><a href="bond_harmonic.html#index-0">bond_style harmonic</a> </dt> <dt><a href="bond_harmonic_shift.html#index-0">bond_style harmonic/shift</a> </dt> <dt><a href="bond_harmonic_shift_cut.html#index-0">bond_style harmonic/shift/cut</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="bond_hybrid.html#index-0">bond_style hybrid</a> </dt> <dt><a href="bond_morse.html#index-0">bond_style morse</a> </dt> <dt><a href="bond_none.html#index-0">bond_style none</a> </dt> <dt><a href="bond_nonlinear.html#index-0">bond_style nonlinear</a> </dt> <dt><a href="bond_quartic.html#index-0">bond_style quartic</a> </dt> <dt><a href="bond_table.html#index-0">bond_style table</a> </dt> <dt><a href="boundary.html#index-0">boundary</a> </dt> <dt><a href="box.html#index-0">box</a> </dt> </dl></td> </tr></table> <h2 id="C">C</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="change_box.html#index-0">change_box</a> </dt> <dt><a href="clear.html#index-0">clear</a> </dt> <dt><a href="comm_modify.html#index-0">comm_modify</a> </dt> <dt><a href="comm_style.html#index-0">comm_style</a> </dt> <dt><a href="compute.html#index-0">compute</a> </dt> <dt><a href="compute_ackland_atom.html#index-0">compute ackland/atom</a> </dt> <dt><a href="compute_angle_local.html#index-0">compute angle/local</a> </dt> <dt><a href="compute_angmom_chunk.html#index-0">compute angmom/chunk</a> </dt> <dt><a href="compute_basal_atom.html#index-0">compute basal/atom</a> </dt> <dt><a href="compute_body_local.html#index-0">compute body/local</a> </dt> <dt><a href="compute_bond_local.html#index-0">compute bond/local</a> </dt> <dt><a href="compute_centro_atom.html#index-0">compute centro/atom</a> </dt> <dt><a href="compute_chunk_atom.html#index-0">compute chunk/atom</a> </dt> <dt><a href="compute_cluster_atom.html#index-0">compute cluster/atom</a> </dt> <dt><a href="compute_cna_atom.html#index-0">compute cna/atom</a> </dt> <dt><a href="compute_com.html#index-0">compute com</a> </dt> <dt><a href="compute_com_chunk.html#index-0">compute com/chunk</a> </dt> <dt><a href="compute_contact_atom.html#index-0">compute contact/atom</a> </dt> <dt><a href="compute_coord_atom.html#index-0">compute coord/atom</a> </dt> <dt><a href="compute_damage_atom.html#index-0">compute damage/atom</a> </dt> <dt><a href="compute_dihedral_local.html#index-0">compute dihedral/local</a> </dt> <dt><a href="compute_dilatation_atom.html#index-0">compute dilatation/atom</a> </dt> <dt><a href="compute_displace_atom.html#index-0">compute displace/atom</a> </dt> <dt><a href="compute_erotate_asphere.html#index-0">compute erotate/asphere</a> </dt> <dt><a href="compute_erotate_rigid.html#index-0">compute erotate/rigid</a> </dt> <dt><a href="compute_erotate_sphere.html#index-0">compute erotate/sphere</a> </dt> <dt><a href="compute_erotate_sphere_atom.html#index-0">compute erotate/sphere/atom</a> </dt> <dt><a href="compute_event_displace.html#index-0">compute event/displace</a> </dt> <dt><a href="compute_fep.html#index-0">compute fep</a> </dt> <dt><a href="compute_tally.html#index-0">compute force/tally</a> </dt> <dt><a href="compute_group_group.html#index-0">compute group/group</a> </dt> <dt><a href="compute_gyration.html#index-0">compute gyration</a> </dt> <dt><a href="compute_gyration_chunk.html#index-0">compute gyration/chunk</a> </dt> <dt><a href="compute_heat_flux.html#index-0">compute heat/flux</a> </dt> <dt><a href="compute_improper_local.html#index-0">compute improper/local</a> </dt> <dt><a href="compute_inertia_chunk.html#index-0">compute inertia/chunk</a> </dt> <dt><a href="compute_ke.html#index-0">compute ke</a> </dt> <dt><a href="compute_ke_atom.html#index-0">compute ke/atom</a> </dt> <dt><a href="compute_ke_atom_eff.html#index-0">compute ke/atom/eff</a> </dt> <dt><a href="compute_ke_eff.html#index-0">compute ke/eff</a> </dt> <dt><a href="compute_ke_rigid.html#index-0">compute ke/rigid</a> </dt> <dt><a href="compute_meso_e_atom.html#index-0">compute meso_e/atom</a> </dt> <dt><a href="compute_meso_rho_atom.html#index-0">compute meso_rho/atom</a> </dt> <dt><a href="compute_meso_t_atom.html#index-0">compute meso_t/atom</a> </dt> <dt><a href="compute_msd.html#index-0">compute msd</a> </dt> <dt><a href="compute_msd_chunk.html#index-0">compute msd/chunk</a> </dt> <dt><a href="compute_msd_nongauss.html#index-0">compute msd/nongauss</a> </dt> <dt><a href="compute_omega_chunk.html#index-0">compute omega/chunk</a> </dt> <dt><a href="compute_pair.html#index-0">compute pair</a> </dt> <dt><a href="compute_pair_local.html#index-0">compute pair/local</a> </dt> <dt><a href="compute_pe.html#index-0">compute pe</a> </dt> <dt><a href="compute_pe_atom.html#index-0">compute pe/atom</a> </dt> <dt><a href="compute_plasticity_atom.html#index-0">compute plasticity/atom</a> </dt> <dt><a href="compute_pressure.html#index-0">compute pressure</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="compute_property_atom.html#index-0">compute property/atom</a> </dt> <dt><a href="compute_property_chunk.html#index-0">compute property/chunk</a> </dt> <dt><a href="compute_property_local.html#index-0">compute property/local</a> </dt> <dt><a href="compute_rdf.html#index-0">compute rdf</a> </dt> <dt><a href="compute_reduce.html#index-0">compute reduce</a> </dt> <dt><a href="compute_saed.html#index-0">compute saed</a> </dt> <dt><a href="compute_slice.html#index-0">compute slice</a> </dt> <dt><a href="compute_smd_contact_radius.html#index-0">compute smd/contact_radius</a> </dt> <dt><a href="compute_smd_damage.html#index-0">compute smd/damage</a> </dt> <dt><a href="compute_smd_hourglass_error.html#index-0">compute smd/hourglass_error</a> </dt> <dt><a href="compute_smd_internal_energy.html#index-0">compute smd/internal_energy</a> </dt> <dt><a href="compute_smd_plastic_strain.html#index-0">compute smd/plastic_strain</a> </dt> <dt><a href="compute_smd_plastic_strain_rate.html#index-0">compute smd/plastic_strain_rate</a> </dt> <dt><a href="compute_smd_rho.html#index-0">compute smd/rho</a> </dt> <dt><a href="compute_smd_tlsph_defgrad.html#index-0">compute smd/tlsph_defgrad</a> </dt> <dt><a href="compute_smd_tlsph_dt.html#index-0">compute smd/tlsph_dt</a> </dt> <dt><a href="compute_smd_tlsph_num_neighs.html#index-0">compute smd/tlsph_num_neighs</a> </dt> <dt><a href="compute_smd_tlsph_shape.html#index-0">compute smd/tlsph_shape</a> </dt> <dt><a href="compute_smd_tlsph_strain.html#index-0">compute smd/tlsph_strain</a> </dt> <dt><a href="compute_smd_tlsph_strain_rate.html#index-0">compute smd/tlsph_strain_rate</a> </dt> <dt><a href="compute_smd_tlsph_stress.html#index-0">compute smd/tlsph_stress</a> </dt> <dt><a href="compute_smd_ulsph_num_neighs.html#index-0">compute smd/ulsph_num_neighs</a> </dt> <dt><a href="compute_smd_ulsph_strain.html#index-0">compute smd/ulsph_strain</a> </dt> <dt><a href="compute_smd_ulsph_strain_rate.html#index-0">compute smd/ulsph_strain_rate</a> </dt> <dt><a href="compute_smd_ulsph_stress.html#index-0">compute smd/ulsph_stress</a> </dt> <dt><a href="compute_smd_vol.html#index-0">compute smd/vol</a> </dt> <dt><a href="compute_sna_atom.html#index-0">compute sna/atom</a> </dt> <dt><a href="compute_stress_atom.html#index-0">compute stress/atom</a> </dt> <dt><a href="compute_temp.html#index-0">compute temp</a> </dt> <dt><a href="compute_temp_asphere.html#index-0">compute temp/asphere</a> </dt> <dt><a href="compute_temp_chunk.html#index-0">compute temp/chunk</a> </dt> <dt><a href="compute_temp_com.html#index-0">compute temp/com</a> </dt> <dt><a href="compute_temp_cs.html#index-0">compute temp/cs</a> </dt> <dt><a href="compute_temp_deform.html#index-0">compute temp/deform</a> </dt> <dt><a href="compute_temp_deform_eff.html#index-0">compute temp/deform/eff</a> </dt> <dt><a href="compute_temp_drude.html#index-0">compute temp/drude</a> </dt> <dt><a href="compute_temp_eff.html#index-0">compute temp/eff</a> </dt> <dt><a href="compute_temp_partial.html#index-0">compute temp/partial</a> </dt> <dt><a href="compute_temp_profile.html#index-0">compute temp/profile</a> </dt> <dt><a href="compute_temp_ramp.html#index-0">compute temp/ramp</a> </dt> <dt><a href="compute_temp_region.html#index-0">compute temp/region</a> </dt> <dt><a href="compute_temp_region_eff.html#index-0">compute temp/region/eff</a> </dt> <dt><a href="compute_temp_rotate.html#index-0">compute temp/rotate</a> </dt> <dt><a href="compute_temp_sphere.html#index-0">compute temp/sphere</a> </dt> <dt><a href="compute_ti.html#index-0">compute ti</a> </dt> <dt><a href="compute_torque_chunk.html#index-0">compute torque/chunk</a> </dt> <dt><a href="compute_vacf.html#index-0">compute vacf</a> </dt> <dt><a href="compute_vcm_chunk.html#index-0">compute vcm/chunk</a> </dt> <dt><a href="compute_voronoi_atom.html#index-0">compute voronoi/atom</a> </dt> <dt><a href="compute_xrd.html#index-0">compute xrd</a> </dt> <dt><a href="compute_modify.html#index-0">compute_modify</a> </dt> <dt><a href="create_atoms.html#index-0">create_atoms</a> </dt> <dt><a href="create_bonds.html#index-0">create_bonds</a> </dt> <dt><a href="create_box.html#index-0">create_box</a> </dt> </dl></td> </tr></table> <h2 id="D">D</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="delete_atoms.html#index-0">delete_atoms</a> </dt> <dt><a href="delete_bonds.html#index-0">delete_bonds</a> </dt> <dt><a href="dielectric.html#index-0">dielectric</a> </dt> <dt><a href="dihedral_coeff.html#index-0">dihedral_coeff</a> </dt> <dt><a href="dihedral_style.html#index-0">dihedral_style</a> </dt> <dt><a href="dihedral_charmm.html#index-0">dihedral_style charmm</a> </dt> <dt><a href="dihedral_class2.html#index-0">dihedral_style class2</a> </dt> <dt><a href="dihedral_cosine_shift_exp.html#index-0">dihedral_style cosine/shift/exp</a> </dt> <dt><a href="dihedral_fourier.html#index-0">dihedral_style fourier</a> </dt> <dt><a href="dihedral_harmonic.html#index-0">dihedral_style harmonic</a> </dt> <dt><a href="dihedral_helix.html#index-0">dihedral_style helix</a> </dt> <dt><a href="dihedral_hybrid.html#index-0">dihedral_style hybrid</a> </dt> <dt><a href="dihedral_multi_harmonic.html#index-0">dihedral_style multi/harmonic</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="dihedral_nharmonic.html#index-0">dihedral_style nharmonic</a> </dt> <dt><a href="dihedral_none.html#index-0">dihedral_style none</a> </dt> <dt><a href="dihedral_opls.html#index-0">dihedral_style opls</a> </dt> <dt><a href="dihedral_quadratic.html#index-0">dihedral_style quadratic</a> </dt> <dt><a href="dihedral_table.html#index-0">dihedral_style table</a> </dt> <dt><a href="dimension.html#index-0">dimension</a> </dt> <dt><a href="displace_atoms.html#index-0">displace_atoms</a> </dt> <dt><a href="dump.html#index-0">dump</a> </dt> <dt><a href="dump_h5md.html#index-0">dump h5md</a> </dt> <dt><a href="dump_image.html#index-0">dump image</a> </dt> <dt><a href="dump_molfile.html#index-0">dump molfile</a> </dt> <dt><a href="dump_modify.html#index-0">dump_modify</a> </dt> </dl></td> </tr></table> <h2 id="E">E</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="echo.html#index-0">echo</a> </dt> </dl></td> </tr></table> <h2 id="F">F</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="fix.html#index-0">fix</a> </dt> <dt><a href="fix_adapt.html#index-0">fix adapt</a> </dt> <dt><a href="fix_adapt_fep.html#index-0">fix adapt/fep</a> </dt> <dt><a href="fix_addforce.html#index-0">fix addforce</a> </dt> <dt><a href="fix_addtorque.html#index-0">fix addtorque</a> </dt> <dt><a href="fix_append_atoms.html#index-0">fix append/atoms</a> </dt> <dt><a href="fix_atc.html#index-0">fix atc</a> </dt> <dt><a href="fix_atom_swap.html#index-0">fix atom/swap</a> </dt> <dt><a href="fix_ave_atom.html#index-0">fix ave/atom</a> </dt> <dt><a href="fix_ave_chunk.html#index-0">fix ave/chunk</a> </dt> <dt><a href="fix_ave_correlate.html#index-0">fix ave/correlate</a> </dt> + <dt><a href="fix_ave_correlate_long.html#index-0">fix ave/correlate/long</a> + </dt> + + <dt><a href="fix_ave_histo.html#index-0">fix ave/histo</a> </dt> <dt><a href="fix_ave_spatial.html#index-0">fix ave/spatial</a> </dt> <dt><a href="fix_ave_spatial_sphere.html#index-0">fix ave/spatial/sphere</a> </dt> <dt><a href="fix_ave_time.html#index-0">fix ave/time</a> </dt> <dt><a href="fix_aveforce.html#index-0">fix aveforce</a> </dt> <dt><a href="fix_balance.html#index-0">fix balance</a> </dt> <dt><a href="fix_bond_break.html#index-0">fix bond/break</a> </dt> <dt><a href="fix_bond_create.html#index-0">fix bond/create</a> </dt> <dt><a href="fix_bond_swap.html#index-0">fix bond/swap</a> </dt> <dt><a href="fix_box_relax.html#index-0">fix box/relax</a> </dt> <dt><a href="fix_colvars.html#index-0">fix colvars</a> </dt> <dt><a href="fix_deform.html#index-0">fix deform</a> </dt> <dt><a href="fix_deposit.html#index-0">fix deposit</a> </dt> <dt><a href="fix_drag.html#index-0">fix drag</a> </dt> <dt><a href="fix_drude.html#index-0">fix drude</a> </dt> <dt><a href="fix_drude_transform.html#index-0">fix drude/transform/direct</a> </dt> <dt><a href="fix_dt_reset.html#index-0">fix dt/reset</a> </dt> <dt><a href="fix_efield.html#index-0">fix efield</a> </dt> <dt><a href="fix_enforce2d.html#index-0">fix enforce2d</a> </dt> <dt><a href="fix_evaporate.html#index-0">fix evaporate</a> </dt> <dt><a href="fix_external.html#index-0">fix external</a> </dt> <dt><a href="fix_freeze.html#index-0">fix freeze</a> </dt> <dt><a href="fix_gcmc.html#index-0">fix gcmc</a> </dt> <dt><a href="fix_gld.html#index-0">fix gld</a> </dt> <dt><a href="fix_gle.html#index-0">fix gle</a> </dt> <dt><a href="fix_gravity.html#index-0">fix gravity</a> </dt> <dt><a href="fix_heat.html#index-0">fix heat</a> </dt> <dt><a href="fix_imd.html#index-0">fix imd</a> </dt> <dt><a href="fix_indent.html#index-0">fix indent</a> </dt> <dt><a href="fix_ipi.html#index-0">fix ipi</a> </dt> <dt><a href="fix_langevin.html#index-0">fix langevin</a> </dt> <dt><a href="fix_langevin_drude.html#index-0">fix langevin/drude</a> </dt> <dt><a href="fix_langevin_eff.html#index-0">fix langevin/eff</a> </dt> <dt><a href="fix_lb_fluid.html#index-0">fix lb/fluid</a> </dt> <dt><a href="fix_lb_momentum.html#index-0">fix lb/momentum</a> </dt> <dt><a href="fix_lb_pc.html#index-0">fix lb/pc</a> </dt> <dt><a href="fix_lb_rigid_pc_sphere.html#index-0">fix lb/rigid/pc/sphere</a> </dt> <dt><a href="fix_lb_viscous.html#index-0">fix lb/viscous</a> </dt> <dt><a href="fix_lineforce.html#index-0">fix lineforce</a> </dt> <dt><a href="fix_meso.html#index-0">fix meso</a> </dt> <dt><a href="fix_meso_stationary.html#index-0">fix meso/stationary</a> </dt> <dt><a href="fix_momentum.html#index-0">fix momentum</a> </dt> <dt><a href="fix_move.html#index-0">fix move</a> </dt> <dt><a href="fix_msst.html#index-0">fix msst</a> </dt> <dt><a href="fix_neb.html#index-0">fix neb</a> </dt> <dt><a href="fix_nph_asphere.html#index-0">fix nph/asphere</a> </dt> <dt><a href="fix_nph_sphere.html#index-0">fix nph/sphere</a> </dt> <dt><a href="fix_nphug.html#index-0">fix nphug</a> </dt> <dt><a href="fix_npt_asphere.html#index-0">fix npt/asphere</a> </dt> <dt><a href="fix_npt_sphere.html#index-0">fix npt/sphere</a> </dt> <dt><a href="fix_nve.html#index-0">fix nve</a> </dt> <dt><a href="fix_nve_asphere.html#index-0">fix nve/asphere</a> </dt> <dt><a href="fix_nve_asphere_noforce.html#index-0">fix nve/asphere/noforce</a> </dt> <dt><a href="fix_nve_body.html#index-0">fix nve/body</a> </dt> <dt><a href="fix_nve_eff.html#index-0">fix nve/eff</a> </dt> <dt><a href="fix_nve_limit.html#index-0">fix nve/limit</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="fix_nve_line.html#index-0">fix nve/line</a> </dt> <dt><a href="fix_nve_noforce.html#index-0">fix nve/noforce</a> </dt> <dt><a href="fix_nve_sphere.html#index-0">fix nve/sphere</a> </dt> <dt><a href="fix_nve_tri.html#index-0">fix nve/tri</a> </dt> <dt><a href="fix_nh.html#index-0">fix nvt</a> </dt> <dt><a href="fix_nvt_asphere.html#index-0">fix nvt/asphere</a> </dt> <dt><a href="fix_nh_eff.html#index-0">fix nvt/eff</a> </dt> <dt><a href="fix_nvt_sllod.html#index-0">fix nvt/sllod</a> </dt> <dt><a href="fix_nvt_sllod_eff.html#index-0">fix nvt/sllod/eff</a> </dt> <dt><a href="fix_nvt_sphere.html#index-0">fix nvt/sphere</a> </dt> <dt><a href="fix_oneway.html#index-0">fix oneway</a> </dt> <dt><a href="fix_orient_fcc.html#index-0">fix orient/fcc</a> </dt> <dt><a href="fix_phonon.html#index-0">fix phonon</a> </dt> <dt><a href="fix_pimd.html#index-0">fix pimd</a> </dt> <dt><a href="fix_planeforce.html#index-0">fix planeforce</a> </dt> <dt><a href="fix_pour.html#index-0">fix pour</a> </dt> <dt><a href="fix_press_berendsen.html#index-0">fix press/berendsen</a> </dt> <dt><a href="fix_print.html#index-0">fix print</a> </dt> <dt><a href="fix_property_atom.html#index-0">fix property/atom</a> </dt> <dt><a href="fix_qbmsst.html#index-0">fix qbmsst</a> </dt> <dt><a href="fix_qeq_comb.html#index-0">fix qeq/comb</a> </dt> <dt><a href="fix_qeq.html#index-0">fix qeq/point</a> </dt> <dt><a href="fix_qeq_reax.html#index-0">fix qeq/reax</a> </dt> <dt><a href="fix_qmmm.html#index-0">fix qmmm</a> </dt> <dt><a href="fix_qtb.html#index-0">fix qtb</a> </dt> <dt><a href="fix_reax_bonds.html#index-0">fix reax/bonds</a> </dt> <dt><a href="fix_reaxc_species.html#index-0">fix reax/c/species</a> </dt> <dt><a href="fix_recenter.html#index-0">fix recenter</a> </dt> <dt><a href="fix_restrain.html#index-0">fix restrain</a> </dt> <dt><a href="fix_rigid.html#index-0">fix rigid</a> </dt> <dt><a href="fix_saed_vtk.html#index-0">fix saed/vtk</a> </dt> <dt><a href="fix_setforce.html#index-0">fix setforce</a> </dt> <dt><a href="fix_shake.html#index-0">fix shake</a> </dt> <dt><a href="fix_smd.html#index-0">fix smd</a> </dt> <dt><a href="fix_smd_adjust_dt.html#index-0">fix smd/adjust_dt</a> </dt> <dt><a href="fix_smd_integrate_tlsph.html#index-0">fix smd/integrate_tlsph</a> </dt> <dt><a href="fix_smd_integrate_ulsph.html#index-0">fix smd/integrate_ulsph</a> </dt> <dt><a href="fix_smd_move_triangulated_surface.html#index-0">fix smd/move_tri_surf</a> </dt> <dt><a href="fix_smd_setvel.html#index-0">fix smd/setvel</a> </dt> <dt><a href="fix_smd_wall_surface.html#index-0">fix smd/wall_surface</a> </dt> <dt><a href="fix_spring.html#index-0">fix spring</a> </dt> <dt><a href="fix_spring_rg.html#index-0">fix spring/rg</a> </dt> <dt><a href="fix_spring_self.html#index-0">fix spring/self</a> </dt> <dt><a href="fix_srd.html#index-0">fix srd</a> </dt> <dt><a href="fix_store_force.html#index-0">fix store/force</a> </dt> <dt><a href="fix_store_state.html#index-0">fix store/state</a> </dt> <dt><a href="fix_temp_berendsen.html#index-0">fix temp/berendsen</a> </dt> <dt><a href="fix_temp_csvr.html#index-0">fix temp/csvr</a> </dt> <dt><a href="fix_temp_rescale.html#index-0">fix temp/rescale</a> </dt> <dt><a href="fix_temp_rescale_eff.html#index-0">fix temp/rescale/eff</a> </dt> <dt><a href="fix_tfmc.html#index-0">fix tfmc</a> </dt> <dt><a href="fix_thermal_conductivity.html#index-0">fix thermal/conductivity</a> </dt> <dt><a href="fix_ti_rs.html#index-0">fix ti/rs</a> </dt> <dt><a href="fix_ti_spring.html#index-0">fix ti/spring</a> </dt> <dt><a href="fix_tmd.html#index-0">fix tmd</a> </dt> <dt><a href="fix_ttm.html#index-0">fix ttm</a> </dt> <dt><a href="fix_tune_kspace.html#index-0">fix tune/kspace</a> </dt> <dt><a href="fix_vector.html#index-0">fix vector</a> </dt> <dt><a href="fix_viscosity.html#index-0">fix viscosity</a> </dt> <dt><a href="fix_viscous.html#index-0">fix viscous</a> </dt> <dt><a href="fix_wall_gran.html#index-0">fix wall/gran</a> </dt> <dt><a href="fix_wall.html#index-0">fix wall/lj93</a> </dt> <dt><a href="fix_wall_piston.html#index-0">fix wall/piston</a> </dt> <dt><a href="fix_wall_reflect.html#index-0">fix wall/reflect</a> </dt> <dt><a href="fix_wall_region.html#index-0">fix wall/region</a> </dt> <dt><a href="fix_wall_srd.html#index-0">fix wall/srd</a> </dt> <dt><a href="fix_modify.html#index-0">fix_modify</a> </dt> </dl></td> </tr></table> <h2 id="G">G</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="group.html#index-0">group</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="group2ndx.html#index-0">group2ndx</a> </dt> </dl></td> </tr></table> <h2 id="I">I</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="if.html#index-0">if</a> </dt> <dt><a href="improper_coeff.html#index-0">improper_coeff</a> </dt> <dt><a href="improper_style.html#index-0">improper_style</a> </dt> <dt><a href="improper_class2.html#index-0">improper_style class2</a> </dt> <dt><a href="improper_cossq.html#index-0">improper_style cossq</a> </dt> <dt><a href="improper_cvff.html#index-0">improper_style cvff</a> </dt> <dt><a href="improper_fourier.html#index-0">improper_style fourier</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="improper_harmonic.html#index-0">improper_style harmonic</a> </dt> <dt><a href="improper_hybrid.html#index-0">improper_style hybrid</a> </dt> <dt><a href="improper_none.html#index-0">improper_style none</a> </dt> <dt><a href="improper_ring.html#index-0">improper_style ring</a> </dt> <dt><a href="improper_umbrella.html#index-0">improper_style umbrella</a> </dt> <dt><a href="include.html#index-0">include</a> </dt> <dt><a href="info.html#index-0">info</a> </dt> </dl></td> </tr></table> <h2 id="J">J</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="jump.html#index-0">jump</a> </dt> </dl></td> </tr></table> <h2 id="K">K</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="kspace_modify.html#index-0">kspace_modify</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="kspace_style.html#index-0">kspace_style</a> </dt> </dl></td> </tr></table> <h2 id="L">L</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="label.html#index-0">label</a> </dt> <dt><a href="lattice.html#index-0">lattice</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="log.html#index-0">log</a> </dt> </dl></td> </tr></table> <h2 id="M">M</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="mass.html#index-0">mass</a> </dt> <dt><a href="min_modify.html#index-0">min_modify</a> </dt> <dt><a href="min_style.html#index-0">min_style</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="minimize.html#index-0">minimize</a> </dt> <dt><a href="molecule.html#index-0">molecule</a> </dt> </dl></td> </tr></table> <h2 id="N">N</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="neb.html#index-0">neb</a> </dt> <dt><a href="neigh_modify.html#index-0">neigh_modify</a> </dt> <dt><a href="neighbor.html#index-0">neighbor</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="newton.html#index-0">newton</a> </dt> <dt><a href="next.html#index-0">next</a> </dt> </dl></td> </tr></table> <h2 id="P">P</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="package.html#index-0">package</a> </dt> <dt><a href="pair_coeff.html#index-0">pair_coeff</a> </dt> <dt><a href="pair_modify.html#index-0">pair_modify</a> </dt> <dt><a href="pair_style.html#index-0">pair_style</a> </dt> <dt><a href="pair_adp.html#index-0">pair_style adp</a> </dt> <dt><a href="pair_airebo.html#index-0">pair_style airebo</a> </dt> <dt><a href="pair_awpmd.html#index-0">pair_style awpmd/cut</a> </dt> <dt><a href="pair_beck.html#index-0">pair_style beck</a> </dt> <dt><a href="pair_body.html#index-0">pair_style body</a> </dt> <dt><a href="pair_bop.html#index-0">pair_style bop</a> </dt> <dt><a href="pair_born.html#index-0">pair_style born</a> </dt> <dt><a href="pair_cs.html#index-0">pair_style born/coul/long/cs</a> </dt> <dt><a href="pair_brownian.html#index-0">pair_style brownian</a> </dt> <dt><a href="pair_buck.html#index-0">pair_style buck</a> </dt> <dt><a href="pair_buck_long.html#index-0">pair_style buck/long/coul/long</a> </dt> <dt><a href="pair_colloid.html#index-0">pair_style colloid</a> </dt> <dt><a href="pair_comb.html#index-0">pair_style comb</a> </dt> <dt><a href="pair_coul.html#index-0">pair_style coul/cut</a> </dt> <dt><a href="pair_coul_diel.html#index-0">pair_style coul/diel</a> </dt> <dt><a href="pair_dpd.html#index-0">pair_style dpd</a> </dt> <dt><a href="pair_dsmc.html#index-0">pair_style dsmc</a> </dt> <dt><a href="pair_eam.html#index-0">pair_style eam</a> </dt> <dt><a href="pair_edip.html#index-0">pair_style edip</a> </dt> <dt><a href="pair_eff.html#index-0">pair_style eff/cut</a> </dt> <dt><a href="pair_eim.html#index-0">pair_style eim</a> </dt> <dt><a href="pair_gauss.html#index-0">pair_style gauss</a> </dt> <dt><a href="pair_gayberne.html#index-0">pair_style gayberne</a> </dt> <dt><a href="pair_gran.html#index-0">pair_style gran/hooke</a> </dt> <dt><a href="pair_hbond_dreiding.html#index-0">pair_style hbond/dreiding/lj</a> </dt> <dt><a href="pair_hybrid.html#index-0">pair_style hybrid</a> </dt> <dt><a href="pair_kim.html#index-0">pair_style kim</a> </dt> <dt><a href="pair_lcbop.html#index-0">pair_style lcbop</a> </dt> <dt><a href="pair_line_lj.html#index-0">pair_style line/lj</a> </dt> <dt><a href="pair_list.html#index-0">pair_style list</a> </dt> <dt><a href="pair_charmm.html#index-0">pair_style lj/charmm/coul/charmm</a> </dt> <dt><a href="pair_class2.html#index-0">pair_style lj/class2</a> </dt> <dt><a href="pair_lj_cubic.html#index-0">pair_style lj/cubic</a> </dt> <dt><a href="pair_lj.html#index-0">pair_style lj/cut</a> </dt> <dt><a href="pair_dipole.html#index-0">pair_style lj/cut/dipole/cut</a> </dt> <dt><a href="pair_lj_soft.html#index-0">pair_style lj/cut/soft</a> </dt> <dt><a href="pair_lj_expand.html#index-0">pair_style lj/expand</a> </dt> <dt><a href="pair_gromacs.html#index-0">pair_style lj/gromacs</a> </dt> <dt><a href="pair_lj_long.html#index-0">pair_style lj/long/coul/long</a> </dt> <dt><a href="pair_sdk.html#index-0">pair_style lj/sdk</a> </dt> <dt><a href="pair_lj_sf.html#index-0">pair_style lj/sf</a> </dt> <dt><a href="pair_lj_smooth.html#index-0">pair_style lj/smooth</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="pair_lj_smooth_linear.html#index-0">pair_style lj/smooth/linear</a> </dt> <dt><a href="pair_lj96.html#index-0">pair_style lj96/cut</a> </dt> <dt><a href="pair_lubricate.html#index-0">pair_style lubricate</a> </dt> <dt><a href="pair_lubricateU.html#index-0">pair_style lubricateU</a> </dt> <dt><a href="pair_meam.html#index-0">pair_style meam</a> </dt> <dt><a href="pair_mie.html#index-0">pair_style mie/cut</a> </dt> <dt><a href="pair_morse.html#index-0">pair_style morse</a> </dt> <dt><a href="pair_nb3b_harmonic.html#index-0">pair_style nb3b/harmonic</a> </dt> <dt><a href="pair_nm.html#index-0">pair_style nm/cut</a> </dt> <dt><a href="pair_none.html#index-0">pair_style none</a> </dt> <dt><a href="pair_peri.html#index-0">pair_style peri/pmb</a> </dt> <dt><a href="pair_polymorphic.html#index-0">pair_style polymorphic</a> </dt> <dt><a href="pair_quip.html#index-0">pair_style quip</a> </dt> <dt><a href="pair_reax.html#index-0">pair_style reax</a> </dt> <dt><a href="pair_reax_c.html#index-0">pair_style reax/c</a> </dt> <dt><a href="pair_resquared.html#index-0">pair_style resquared</a> </dt> <dt><a href="pair_smd_hertz.html#index-0">pair_style smd/hertz</a> </dt> <dt><a href="pair_smd_tlsph.html#index-0">pair_style smd/tlsph</a> </dt> <dt><a href="pair_smd_triangulated_surface.html#index-0">pair_style smd/tri_surface</a> </dt> <dt><a href="pair_smd_ulsph.html#index-0">pair_style smd/ulsph</a> </dt> <dt><a href="pair_snap.html#index-0">pair_style snap</a> </dt> <dt><a href="pair_soft.html#index-0">pair_style soft</a> </dt> <dt><a href="pair_sph_heatconduction.html#index-0">pair_style sph/heatconduction</a> </dt> <dt><a href="pair_sph_idealgas.html#index-0">pair_style sph/idealgas</a> </dt> <dt><a href="pair_sph_lj.html#index-0">pair_style sph/lj</a> </dt> <dt><a href="pair_sph_rhosum.html#index-0">pair_style sph/rhosum</a> </dt> <dt><a href="pair_sph_taitwater.html#index-0">pair_style sph/taitwater</a> </dt> <dt><a href="pair_sph_taitwater_morris.html#index-0">pair_style sph/taitwater/morris</a> </dt> <dt><a href="pair_srp.html#index-0">pair_style srp</a> </dt> <dt><a href="pair_sw.html#index-0">pair_style sw</a> </dt> <dt><a href="pair_table.html#index-0">pair_style table</a> </dt> <dt><a href="pair_tersoff.html#index-0">pair_style tersoff</a> </dt> <dt><a href="pair_tersoff_mod.html#index-0">pair_style tersoff/mod</a> </dt> <dt><a href="pair_tersoff_zbl.html#index-0">pair_style tersoff/zbl</a> </dt> <dt><a href="pair_thole.html#index-0">pair_style thole</a> </dt> <dt><a href="pair_tri_lj.html#index-0">pair_style tri/lj</a> </dt> + <dt><a href="pair_vashishta.html#index-0">pair_style vashishta</a> + </dt> + + <dt><a href="pair_yukawa.html#index-0">pair_style yukawa</a> </dt> <dt><a href="pair_yukawa_colloid.html#index-0">pair_style yukawa/colloid</a> </dt> <dt><a href="pair_zbl.html#index-0">pair_style zbl</a> </dt> <dt><a href="pair_write.html#index-0">pair_write</a> </dt> <dt><a href="partition.html#index-0">partition</a> </dt> <dt><a href="prd.html#index-0">prd</a> </dt> <dt><a href="print.html#index-0">print</a> </dt> <dt><a href="processors.html#index-0">processors</a> </dt> <dt><a href="python.html#index-0">python</a> </dt> </dl></td> </tr></table> <h2 id="Q">Q</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="quit.html#index-0">quit</a> </dt> </dl></td> </tr></table> <h2 id="R">R</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="read_data.html#index-0">read_data</a> </dt> <dt><a href="read_dump.html#index-0">read_dump</a> </dt> <dt><a href="read_restart.html#index-0">read_restart</a> </dt> <dt><a href="region.html#index-0">region</a> </dt> <dt><a href="replicate.html#index-0">replicate</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="rerun.html#index-0">rerun</a> </dt> <dt><a href="reset_timestep.html#index-0">reset_timestep</a> </dt> <dt><a href="restart.html#index-0">restart</a> </dt> <dt><a href="run.html#index-0">run</a> </dt> <dt><a href="run_style.html#index-0">run_style</a> </dt> </dl></td> </tr></table> <h2 id="S">S</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="set.html#index-0">set</a> </dt> <dt><a href="shell.html#index-0">shell</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="special_bonds.html#index-0">special_bonds</a> </dt> <dt><a href="suffix.html#index-0">suffix</a> </dt> </dl></td> </tr></table> <h2 id="T">T</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="tad.html#index-0">tad</a> </dt> <dt><a href="temper.html#index-0">temper</a> </dt> <dt><a href="thermo.html#index-0">thermo</a> </dt> <dt><a href="thermo_modify.html#index-0">thermo_modify</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="thermo_style.html#index-0">thermo_style</a> </dt> <dt><a href="timer.html#index-0">timer</a> </dt> <dt><a href="timestep.html#index-0">timestep</a> </dt> </dl></td> </tr></table> <h2 id="U">U</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="uncompute.html#index-0">uncompute</a> </dt> <dt><a href="undump.html#index-0">undump</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="unfix.html#index-0">unfix</a> </dt> <dt><a href="units.html#index-0">units</a> </dt> </dl></td> </tr></table> <h2 id="V">V</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="variable.html#index-0">variable</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="velocity.html#index-0">velocity</a> </dt> </dl></td> </tr></table> <h2 id="W">W</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="write_data.html#index-0">write_data</a> </dt> <dt><a href="write_dump.html#index-0">write_dump</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="write_restart.html#index-0">write_restart</a> </dt> </dl></td> </tr></table> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/doc2/molecule.html b/doc/doc2/molecule.html index 15f8df52c..120683933 100644 --- a/doc/doc2/molecule.html +++ b/doc/doc2/molecule.html @@ -1,444 +1,473 @@ <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>molecule command </H3> <P><B>Syntax:</B> </P> -<PRE>molecule ID file1 file2 ... keyword values ... +<PRE>molecule ID file1 keyword values ... file2 keyword values ... fileN ... </PRE> <UL><LI>ID = user-assigned name for the molecule template <LI>file1,file2,... = names of files containing molecule descriptions -<LI>zero or more keyword/value pairs may be appended +<LI>zero or more keyword/value pairs may be appended after each file -<LI>keyword = <I>offset</I> +<LI>keyword = <I>offset</I> or <I>toff</I> or <I>boff</I> or <I>aoff</I> or <I>doff</I> or <I>ioff</I> or <I>scale</I> -<PRE> <I>offset</I> values = toff boff aoff doff ioff - toff = offset to add to atom types - boff = offset to add to bond types - aoff = offset to add to angle types - doff = offset to add to dihedral types - ioff = offset to add to improper types +<PRE> <I>offset</I> values = Toff Boff Aoff Doff Ioff + Toff = offset to add to atom types + Boff = offset to add to bond types + Aoff = offset to add to angle types + Doff = offset to add to dihedral types + Ioff = offset to add to improper types + <I>toff</I> value = Toff + Toff = offset to add to atom types + <I>boff</I> value = Boff + Boff = offset to add to bond types + <I>aoff</I> value = Aoff + Aoff = offset to add to angle types + <I>doff</I> value = Doff + Doff = offset to add to dihedral types + <I>ioff</I> value = Ioff + Ioff = offset to add to improper types + <I>scale</I> value = sfactor + sfactor = scale factor to apply to the size and mass of the molecule </PRE> </UL> <P><B>Examples:</B> </P> -<PRE>molecule 1 mymol +<PRE>molecule 1 mymol.txt molecule 1 co2.txt h2o.txt -molecule CO2 co2.txt -molecule 1 mymol offset 6 9 18 23 14 +molecule CO2 co2.txt boff 3 aoff 2 +molecule 1 mymol.txt offset 6 9 18 23 14 +molecule objects file.1 scale 1.5 file.1 scale 2.0 file.2 scale 1.3 +</PRE> +<PRE> </PRE> <P><B>Description:</B> </P> <P>Define a molecule template that can be used as part of other LAMMPS commands, typically to define a collection of particles as a bonded molecule or a rigid body. Commands that currently use molecule templates include: </P> <UL><LI><A HREF = "fix_deposit.html">fix deposit</A> <LI><A HREF = "fix_pour.html">fix pour</A> <LI><A HREF = "fix_rigid.html">fix rigid/small</A> <LI><A HREF = "fix_shake.html">fix shake</A> <LI><A HREF = "fix_gcmc.html">fix gcmc</A> <LI><A HREF = "create_atoms.html">create_atoms</A> <LI><A HREF = "atom_style.html">atom_style template</A> </UL> <P>The ID of a molecule template can only contain alphanumeric characters and underscores. </P> <P>A single template can contain multiple molecules, listed one per file. -Many of the commands listed above currently use only the first +Some of the commands listed above currently use only the first molecule in the template, and will issue a warning if the template contains multiple molecules. The <A HREF = "atom_style.html">atom_style template</A> command allows multiple-molecule templates to define a system with more than one templated molecule. </P> -<P>The optional <I>offset</I> keyword adds the specified offset values to the -atom types, bond types, angle types, dihedral types, and improper -types as they are read from the molecule file. E.g. if <I>toff</I> = 2, -and the file uses atom types 1,2,3, then each created molecule will -have atom types 3,4,5. This is to make it easy to use the same -molecule template file in different simulations. Note that the same -offsets are applied to the molecules in all specified files. All five -offset values must be speicified, but individual values will be -ignored if the molecule template does not use that attribute (e.g. no -bonds). -</P> -<P>IMPORTANT NOTE: This command can be used to define molecules with -bonds, angles, dihedrals, imporopers, or special bond lists of +<P>Each filename can be followed by optional keywords which are applied +only to the molecule in the file as used in this template. This is to +make it easy to use the same molecule file in different molecule +templates or in different simulations. You can specify the same file +multiple times with different optional keywords. +</P> +<P>The <I>offset</I>, <I>toff</I>, <I>aoff</I>, <I>doff</I>, <I>ioff</I> keywords add the +specified offset values to the atom types, bond types, angle types, +dihedral types, and/or improper types as they are read from the +molecule file. E.g. if <I>toff</I> = 2, and the file uses atom types +1,2,3, then each created molecule will have atom types 3,4,5. For the +<I>offset</I> keyword, all five offset values must be specified, but +individual values will be ignored if the molecule template does not +use that attribute (e.g. no bonds). +</P> +<P>The <I>scale</I> keyword scales the size of the molecule. This can be +useful for modeling polydisperse granular rigid bodies. The scale +factor is applied to each of these properties in the molecule file, if +they are defined: the individual particle coordinates (Coords +section), the individual mass of each particle (Masses section), the +individual diameters of each particle (Diameters section), the total +mass of the molecule (header keyword = mass), the center-of-mass of +the molecule (header keyword = com), and the moments of inertia of the +molecule (header keyword = inertia). +</P> +<P>IMPORTANT NOTE: The molecule command can be used to define molecules +with bonds, angles, dihedrals, imporopers, or special bond lists of neighbors within a molecular topology, so that you can later add the molecules to your simulation, via one or more of the commands listed above. If such molecules do not already exist when LAMMPS creates the simulation box, via the <A HREF = "create_box.html">create_box</A> or <A HREF = "read_data.html">read_data</A> command, when you later add them you may overflow the pre-allocated data structures which store molecular topology information with each atom, and an error will be generated. Both the <A HREF = "create_box.html">create_box</A> command and the data files read by the <A HREF = "read_data.html">read_data</A> command have "extra" options which insure space is allocated for storing topology info for molecules that are added later. </P> <P>The format of an individual molecule file is similar to the data file read by the <A HREF = "read_data.html">read_data</A> commands, and is as follows. </P> <P>A molecule 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>These are the recognized header keywords. Header lines can come in any order. The numeric value(s) are read from the beginning of the line. The keyword should appear at the end of the line. All these settings have default values, as explained below. A line need only appear if the value(s) are different than the default. </P> <UL><LI>N <I>atoms</I> = # of atoms N in molecule, default = 0 <LI>Nb <I>bonds</I> = # of bonds Nb in molecule, default = 0 <LI>Na <I>angles</I> = # of angles Na in molecule, default = 0 <LI>Nd <I>dihedrals</I> = # of dihedrals Nd in molecule, default = 0 <LI>Ni <I>impropers</I> = # of impropers Ni in molecule, default = 0 <LI>Mtotal <I>mass</I> = total mass of molecule <LI>Xc Yc Zc <I>com</I> = coordinates of center-of-mass of molecule <LI>Ixx Iyy Izz Ixy Ixz Iyz <I>inertia</I> = 6 components of inertia tensor of molecule </UL> <P>For <I>mass</I>, <I>com</I>, and <I>inertia</I>, the default is for LAMMPS to calculate this quantity itself if needed, assuming the molecules consists of a set of point particles or finite-size particles (with a non-zero diameter) that do not overlap. If finite-size particles in the molecule do overlap, LAMMPS will not account for the overlap effects when calculating any of these 3 quantities, so you should pre-compute them yourself and list the values in the file. </P> <P>The mass and center-of-mass coordinates (Xc,Yc,Zc) are self-explanatory. The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the values consistent with the current orientation of the rigid body around its center of mass. The values are with respect to the simulation box XYZ axes, not with respect to the prinicpal axes of the rigid body itself. LAMMPS performs the latter calculation internally. </P> <P>These are the allowed section keywords for the body of the file. </P> <UL><LI><I>Coords, Types, Charges, Diameters, Masses</I> = atom-property sections <LI><I>Bonds, Angles, Dihedrals, Impropers</I> = molecular topology sections <LI><I>Special Bond Counts, Special Bonds</I> = special neighbor info <LI><I>Shake Flags, Shake Atoms, Shake Bond Types</I> = SHAKE info </UL> <P>If a Bonds section is specified then the Special Bond Counts and Special Bonds sections can also be used, if desired, to explicitly list the 1-2, 1-3, 1-4 neighbors within the molecule topology (see details below). This is optional since if these sections are not included, LAMMPS will auto-generate this information. Note that LAMMPS uses this info to properly exclude or weight bonded pairwise interactions between bonded atoms. See the <A HREF = "special_bonds.html">special_bonds</A> command for more details. One reason to list the special bond info explicitly is for the <A HREF = "tutorial_drude.html">thermalized Drude oscillator model</A> which treats the bonds between nuclear cores and Drude electrons in a different manner. </P> <P>IMPORTANT NOTE: Whether a section is required depends on how the molecule template is used by other LAMMPS commands. For example, to add a molecule via the <A HREF = "fix_deposit.html">fix deposit</A> command, the Coords and Types sections are required. To add a rigid body via the <A HREF = "fix_pout.html">fix pour</A> command, the Bonds (Angles, etc) sections are not required, since the molecule will be treated as a rigid body. Some sections are optional. For example, the <A HREF = "fix_pour.html">fix pour</A> command can be used to add "molecules" which are clusters of finite-size granular particles. If the Diameters section is not specified, each particle in the molecule will have a default diameter of 1.0. See the doc pages for LAMMPS commands that use molecule templates for more details. </P> <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 whether it can appear in the data file. In each case the ID is ignored; it is simply included for readability, and should be a number from 1 to Nlines for the section, indicating which atom (or bond, etc) the entry applies to. The lines are assumed to be listed in order from 1 to Nlines, but LAMMPS does not check for this. </P> <HR> <P><I>Coords</I> section: </P> <UL><LI>one line per atom <LI>line syntax: ID x y z <LI>x,y,z = coordinate of atom </UL> <HR> <P><I>Types</I> section: </P> <UL><LI>one line per atom <LI>line syntax: ID type <LI>type = atom type of atom </UL> <HR> <P><I>Charges</I> section: </P> <UL><LI>one line per atom <LI>line syntax: ID q <LI>q = charge on atom </UL> <P>This section is only allowed for <A HREF = "atom_style.html">atom styles</A> that support charge. If this section is not included, the default charge on each atom in the molecule is 0.0. </P> <HR> <P><I>Diameters</I> section: </P> <UL><LI>one line per atom <LI>line syntax: ID diam <LI>diam = diameter of atom </UL> <P>This section is only allowed for <A HREF = "atom_style.html">atom styles</A> that support finite-size spherical particles, e.g. atom_style sphere. If not listed, the default diameter of each atom in the molecule is 1.0. </P> <HR> <P><I>Masses</I> section: </P> <UL><LI>one line per atom <LI>line syntax: ID mass <LI>mass = mass of atom </UL> <P>This section is only allowed for <A HREF = "atom_style.html">atom styles</A> that support per-atom mass, as opposed to per-type mass. See the <A HREF = "mass.html">mass</A> command for details. If this section is not included, the default mass for each atom is derived from its volume (see Diameters section) and a default density of 1.0, in <A HREF = "units.html">units</A> of mass/volume. </P> <HR> <P><I>Bonds</I> section: </P> <UL><LI>one line per bond <LI>line syntax: ID type atom1 atom2 <LI>type = bond type (1-Nbondtype) <LI>atom1,atom2 = IDs of atoms in bond </UL> <P>The IDs for the two atoms in each bond should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. </P> <HR> <P><I>Angles</I> section: </P> <UL><LI>one line per angle <LI>line syntax: ID type atom1 atom2 atom3 <LI>type = angle type (1-Nangletype) <LI>atom1,atom2,atom3 = IDs of atoms in angle </UL> <P>The IDs for the three atoms in each angle should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. 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. </P> <HR> <P><I>Dihedrals</I> section: </P> <UL><LI>one line per dihedral <LI>line syntax: ID type atom1 atom2 atom3 atom4 <LI>type = dihedral type (1-Ndihedraltype) <LI>atom1,atom2,atom3,atom4 = IDs of atoms in dihedral </UL> <P>The IDs for the four atoms in each dihedral should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. The 4 atoms are ordered linearly within the dihedral. </P> <HR> <P><I>Impropers</I> section: </P> <UL><LI>one line per improper <LI>line syntax: ID type atom1 atom2 atom3 atom4 <LI>type = improper type (1-Nimpropertype) <LI>atom1,atom2,atom3,atom4 = IDs of atoms in improper </UL> <P>The IDs for the four atoms in each improper should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. The ordering of the 4 atoms determines the definition of the improper angle used in the formula for the defined <A HREF = "improper_style.html">improper style</A>. See the doc pages for individual styles for details. </P> <HR> <P><I>Special Bond Counts</I> section: </P> <UL><LI>one line per atom <LI>line syntax: ID N1 N2 N3 <LI>N1 = # of 1-2 bonds <LI>N2 = # of 1-3 bonds <LI>N3 = # of 1-4 bonds </UL> <P>N1, N2, N3 are the number of 1-2, 1-3, 1-4 neighbors respectively of this atom within the topology of the molecule. See the <A HREF = "special_bonds.html">special_bonds</A> doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section appears, the Special Bonds section must also appear. If this section is not specied, the atoms in the molecule will have no special bonds. </P> <HR> <P><I>Special Bonds</I> section: </P> <UL><LI>one line per atom <LI>line syntax: ID a b c d ... <LI>a,b,c,d,... = IDs of atoms in N1+N2+N3 special bonds </UL> <P>A, b, c, d, etc are the IDs of the n1+n2+n3 atoms that are 1-2, 1-3, 1-4 neighbors of this atom. The IDs should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. The first N1 values should be the 1-2 neighbors, the next N2 should be the 1-3 neighbors, the last N3 should be the 1-4 neighbors. No atom ID should appear more than once. See the <A HREF = "special_bonds.html">special_bonds</A> doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section appears, the Special Bond Counts section must also appear. If this section is not specied, the atoms in the molecule will have no special bonds. </P> <HR> <P><I>Shake Flags</I> section: </P> <UL><LI>one line per atom <LI>line syntax: ID flag <LI>flag = 0,1,2,3,4 </UL> <P>This section is only needed when molecules created using the template will be constrained by SHAKE via the "fix shake" command. The other two Shake sections must also appear in the file, following this one. </P> <P>The meaning of the flag for each atom is as follows. See the <A HREF = "fix_shake.html">fix shake</A> doc page for a further description of SHAKE clusters. </P> <UL><LI>0 = not part of a SHAKE cluster <LI>1 = part of a SHAKE angle cluster (two bonds and the angle they form) <LI>2 = part of a 2-atom SHAKE cluster with a single bond <LI>3 = part of a 3-atom SHAKE cluster with two bonds <LI>4 = part of a 4-atom SHAKE cluster with three bonds </UL> <HR> <P><I>Shake Atoms</I> section: </P> <UL><LI>one line per atom <LI>line syntax: ID a b c d <LI>a,b,c,d = IDs of atoms in cluster </UL> <P>This section is only needed when molecules created using the template will be constrained by SHAKE via the "fix shake" command. The other two Shake sections must also appear in the file. </P> <P>The a,b,c,d values are atom IDs (from 1 to Natoms) for all the atoms in the SHAKE cluster that this atom belongs to. The number of values that must appear is determined by the shake flag for the atom (see the Shake Flags section above). All atoms in a particular cluster should list their a,b,c,d values identically. </P> <P>If flag = 0, no a,b,c,d values are listed on the line, just the (ignored) ID. </P> <P>If flag = 1, a,b,c are listed, where a = ID of central atom in the angle, and b,c the other two atoms in the angle. </P> <P>If flag = 2, a,b are listed, where a = ID of atom in bond with the the lowest ID, and b = ID of atom in bond with the highest ID. </P> <P>If flag = 3, a,b,c are listed, where a = ID of central atom, and b,c = IDs of other two atoms bonded to the central atom. </P> <P>If flag = 4, a,b,c,d are listed, where a = ID of central atom, and b,c,d = IDs of other three atoms bonded to the central atom. </P> <P>See the <A HREF = "fix_shake.html">fix shake</A> doc page for a further description of SHAKE clusters. </P> <HR> <P><I>Shake Bond Types</I> section: </P> <UL><LI>one line per atom <LI>line syntax: ID a b c <LI>a,b,c = bond types (or angle type) of bonds (or angle) in cluster </UL> <P>This section is only needed when molecules created using the template will be constrained by SHAKE via the "fix shake" command. The other two Shake sections must also appear in the file. </P> <P>The a,b,c values are bond types (from 1 to Nbondtypes) for all bonds in the SHAKE cluster that this atom belongs to. The number of values that must appear is determined by the shake flag for the atom (see the Shake Flags section above). All atoms in a particular cluster should list their a,b,c values identically. </P> <P>If flag = 0, no a,b,c values are listed on the line, just the (ignored) ID. </P> <P>If flag = 1, a,b,c are listed, where a = bondtype of the bond between the central atom and the first non-central atom (value b in the Shake Atoms section), b = bondtype of the bond between the central atom and the 2nd non-central atom (value c in the Shake Atoms section), and c = the angle type (1 to Nangletypes) of the angle between the 3 atoms. </P> <P>If flag = 2, only a is listed, where a = bondtype of the bond between the 2 atoms in the cluster. </P> <P>If flag = 3, a,b are listed, where a = bondtype of the bond between the central atom and the first non-central atom (value b in the Shake Atoms section), and b = bondtype of the bond between the central atom and the 2nd non-central atom (value c in the Shake Atoms section). </P> <P>If flag = 4, a,b,c are listed, where a = bondtype of the bond between the central atom and the first non-central atom (value b in the Shake Atoms section), b = bondtype of the bond between the central atom and the 2nd non-central atom (value c in the Shake Atoms section), and c = bondtype of the bond between the central atom and the 3rd non-central atom (value d in the Shake Atoms section). </P> <P>See the <A HREF = "fix_shake.html">fix shake</A> doc page for a further description of SHAKE clusters. </P> <HR> <P><B>Restrictions:</B> none </P> <P><B>Related commands:</B> </P> <P><A HREF = "fix_deposit.html">fix deposit</A>, <A HREF = "fix_pour.html">fix pour</A>, <A HREF = "fix_gcmc.html">fix_gcmc</A> </P> <P><B>Default:</B> </P> -<P>The default keyword value is offset 0 0 0 0 0. +<P>The default keywords values are offset 0 0 0 0 0 and scale = 1.0. </P> </HTML> diff --git a/doc/doc2/pair_hybrid.html b/doc/doc2/pair_hybrid.html index 4782685fe..9815d08fb 100644 --- a/doc/doc2/pair_hybrid.html +++ b/doc/doc2/pair_hybrid.html @@ -1,387 +1,390 @@ <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 hybrid command </H3> <H3>pair_style hybrid/omp command </H3> <H3>pair_style hybrid/overlay command </H3> <H3>pair_style hybrid/overlay/omp command </H3> <P><B>Syntax:</B> </P> <PRE>pair_style hybrid style1 args style2 args ... pair_style hybrid/overlay style1 args style2 args ... </PRE> <UL><LI>style1,style2 = list of one or more pair styles and their arguments </UL> <P><B>Examples:</B> </P> <PRE>pair_style hybrid lj/cut/coul/cut 10.0 eam lj/cut 5.0 pair_coeff 1*2 1*2 eam niu3 pair_coeff 3 3 lj/cut/coul/cut 1.0 1.0 pair_coeff 1*2 3 lj/cut 0.5 1.2 </PRE> <PRE>pair_style hybrid/overlay lj/cut 2.5 coul/long 2.0 pair_coeff * * lj/cut 1.0 1.0 pair_coeff * * coul/long </PRE> <P><B>Description:</B> </P> <P>The <I>hybrid</I> and <I>hybrid/overlay</I> styles enable the use of multiple pair styles in one simulation. With the <I>hybrid</I> style, exactly one pair style is assigned to each pair of atom types. With the <I>hybrid/overlay</I> style, one or more pair styles can be assigned to each pair of atom types. The assignment of pair styles to type pairs is made via the <A HREF = "pair_coeff.html">pair_coeff</A> command. </P> <P>Here are two examples of hybrid simulations. The <I>hybrid</I> style could be used for a simulation of a metal droplet on a LJ surface. The metal atoms interact with each other via an <I>eam</I> potential, the surface atoms interact with each other via a <I>lj/cut</I> potential, and the metal/surface interaction is also computed via a <I>lj/cut</I> potential. The <I>hybrid/overlay</I> style could be used as in the 2nd example above, where multiple potentials are superposed in an additive fashion to compute the interaction between atoms. In this example, using <I>lj/cut</I> and <I>coul/long</I> together gives the same result as if the <I>lj/cut/coul/long</I> potential were used by itself. In this case, it would be more efficient to use the single combined potential, but in general any combination of pair potentials can be used together in to produce an interaction that is not encoded in any single pair_style file, e.g. adding Coulombic forces between granular particles. </P> <P>All pair styles that will be used are listed as "sub-styles" following the <I>hybrid</I> or <I>hybrid/overlay</I> keyword, in any order. Each sub-style's name is followed by its usual arguments, as illustrated in the example above. See the doc pages of individual pair styles for a listing and explanation of the appropriate arguments. </P> <P>Note that an individual pair style can be used multiple times as a sub-style. For efficiency this should only be done if your model requires it. E.g. if you have different regions of Si and C atoms and wish to use a Tersoff potential for pure Si for one set of atoms, and a Tersoff potetnial for pure C for the other set (presumably with some 3rd potential for Si-C interactions), then the sub-style <I>tersoff</I> could be listed twice. But if you just want to use a Lennard-Jones or other pairwise potential for several different atom type pairs in your model, then you should just list the sub-style once and use the pair_coeff command to assign parameters for the different type pairs. </P> -<P>IMPORTANT NOTE: An exception to this option to list an individual pair -style multiple times are the pair styles implemented as Fortran -libraries: <A HREF = "pair_meam.html">pair_style meam</A> and <A HREF = "pair_reax.html">pair_style -reax</A> (<A HREF = "pair_reax_c.html">pair_style reax/c</A> is OK). -This is because unlike a C++ class, they can not be instantiated -multiple times, due to the manner in which they were coded in Fortran. +<P>IMPORTANT NOTE: There are two exceptions to this option to list an +individual pair style multiple times. The first is for pair styles +implemented as Fortran libraries: <A HREF = "pair_meam.html">pair_style meam</A> and +<A HREF = "pair_reax.html">pair_style reax</A> (<A HREF = "pair_reax_c.html">pair_style reax/c</A> +is OK). This is because unlike a C++ class, they can not be +instantiated multiple times, due to the manner in which they were +coded in Fortran. The second is for GPU-enabled pair styles in the +GPU package. This is b/c the GPU package also currently assumes that +only one instance of a pair style is being used. </P> <P>In the pair_coeff commands, the name of a pair style must be added after the I,J type specification, with the remaining coefficients being those appropriate to that style. If the pair style is used multiple times in the pair_style command, then an additional numeric argument must also be specified which is a number from 1 to M where M is the number of times the sub-style was listed in the pair style command. The extra number indicates which instance of the sub-style these coefficients apply to. </P> <P>For example, consider a simulation with 3 atom types: types 1 and 2 are Ni atoms, type 3 are LJ atoms with charges. The following commands would set up a hybrid simulation: </P> <PRE>pair_style hybrid eam/alloy lj/cut/coul/cut 10.0 lj/cut 8.0 pair_coeff * * eam/alloy nialhjea Ni Ni NULL pair_coeff 3 3 lj/cut/coul/cut 1.0 1.0 pair_coeff 1*2 3 lj/cut 0.8 1.3 </PRE> <P>As an example of using the same pair style multiple times, consider a simulation with 2 atom types. Type 1 is Si, type 2 is C. The following commands would model the Si atoms with Tersoff, the C atoms with Tersoff, and the cross-interactions with Lennard-Jones: </P> <PRE>pair_style hybrid lj/cut 2.5 tersoff tersoff pair_coeff * * tersoff 1 Si.tersoff Si NULL pair_coeff * * tersoff 2 C.tersoff NULL C pair_coeff 1 2 lj/cut 1.0 1.5 </PRE> <P>If pair 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. "eam/alloy" or "lj/cut" must be added after the atom type, for each line in the "Pair Coeffs" section, e.g. </P> <PRE>Pair Coeffs </PRE> <PRE>1 lj/cut/coul/cut 1.0 1.0 ... </PRE> <P>Note that the pair_coeff command for some potentials such as <A HREF = "pair_eam.html">pair_style eam/alloy</A> includes a mapping specification of elements to all atom types, which in the hybrid case, can include atom types not assigned to the <I>eam/alloy</I> potential. The NULL keyword is used by many such potentials (eam/alloy, Tersoff, AIREBO, etc), to denote an atom type that will be assigned to a different sub-style. </P> <P>For the <I>hybrid</I> style, each atom type pair I,J is assigned to exactly one sub-style. Just as with a simulation using a single pair style, if you specify the same atom type pair in a second pair_coeff command, the previous assignment will be overwritten. </P> <P>For the <I>hybrid/overlay</I> style, each atom type pair I,J can be assigned to one or more sub-styles. If you specify the same atom type pair in a second pair_coeff command with a new sub-style, then the second sub-style is added to the list of potentials that will be calculated for two interacting atoms of those types. If you specify the same atom type pair in a second pair_coeff command with a sub-style that has already been defined for that pair of atoms, then the new pair coefficients simply override the previous ones, as in the normal usage of the pair_coeff command. E.g. these two sets of commands are the same: </P> <PRE>pair_style lj/cut 2.5 pair_coeff * * 1.0 1.0 pair_coeff 2 2 1.5 0.8 </PRE> <PRE>pair_style hybrid/overlay lj/cut 2.5 pair_coeff * * lj/cut 1.0 1.0 pair_coeff 2 2 lj/cut 1.5 0.8 </PRE> <P>Coefficients must be defined for each pair of atoms types via the <A HREF = "pair_coeff.html">pair_coeff</A> command as described 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 both the <I>hybrid</I> and <I>hybrid/overlay</I> styles, every atom type pair I,J (where I <= J) must be assigned to at least one sub-style via the <A HREF = "pair_coeff.html">pair_coeff</A> command as in the examples above, or in the data file read by the <A HREF = "read_data.html">read_data</A>, or by mixing as described below. </P> <P>If you want there to be no interactions between a particular pair of atom types, you have 3 choices. You can assign the type pair to some sub-style and use the <A HREF = "neigh_modify.html">neigh_modify exclude type</A> command. You can assign it to some sub-style and set the coefficients so that there is effectively no interaction (e.g. epsilon = 0.0 in a LJ potential). Or, for <I>hybrid</I> and <I>hybrid/overlay</I> simulations, you can use this form of the pair_coeff command in your input script: </P> <PRE>pair_coeff 2 3 none </PRE> <P>or this form in the "Pair Coeffs" section of the data file: </P> <PRE>3 none </PRE> <P>If an assignment to <I>none</I> is made in a simulation with the <I>hybrid/overlay</I> pair style, it wipes out all previous assignments of that atom type pair to sub-styles. </P> <P>Note that you may need to use an <A HREF = "atom_style.html">atom_style</A> hybrid command in your input script, if atoms in the simulation will need attributes from several atom styles, due to using multiple pair potentials. </P> <HR> <P>Different force fields (e.g. CHARMM vs AMBER) may have different rules for applying weightings that change the strength of pairwise interactions bewteen pairs of atoms that are also 1-2, 1-3, and 1-4 neighbors in the molecular bond topology, as normally set by the <A HREF = "special_bonds.html">special_bonds</A> command. Different weights can be assigned to different pair hybrid sub-styles via the <A HREF = "pair_modify.html">pair_modify special</A> command. This allows multiple force fields to be used in a model of a hybrid system, however, there is no consistent approach to determine parameters automatically for the interactions between the two force fields, this is only recommended when particles described by the different force fields do not mix. </P> <P>Here is an example for mixing CHARMM and AMBER: The global <I>amber</I> setting sets the 1-4 interactions to non-zero scaling factors and then overrides them with 0.0 only for CHARMM: </P> <PRE>special_bonds amber pair_hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0 pair_modify pair lj/charmm/coul/long special lj/coul 0.0 0.0 0.0 </PRE> <P>The this input achieves the same effect: </P> <PRE>special_bonds 0.0 0.0 0.1 pair_hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0 pair_modify pair lj/cut/coul/long special lj 0.0 0.0 0.5 pair_modify pair lj/cut/coul/long special coul 0.0 0.0 0.83333333 pair_modify pair lj/charmm/coul/long special lj/coul 0.0 0.0 0.0 </PRE> <P>Here is an example for mixing Tersoff with OPLS/AA based on a data file that defines bonds for all atoms where for the Tersoff part of the system the force constants for the bonded interactions have been set to 0. Note the global settings are effectively <I>lj/coul 0.0 0.0 0.5</I> as required for OPLS/AA: </P> <PRE>special_bonds lj/coul 1e-20 1e-20 0.5 pair_hybrid tersoff lj/cut/coul/long 12.0 pair_modify pair tersoff special lj/coul 1.0 1.0 1.0 </PRE> <P>See the <A HREF = "pair_modify.html">pair_modify</A> doc page for details on the specific syntax, requirements and restrictions. </P> <HR> <P>The potential energy contribution to the overall system due to an individual sub-style can be accessed and output via the <A HREF = "compute_pair.html">compute pair</A> command. </P> <HR> <P>IMPORTANT: Several of the potentials defined via the pair_style command in LAMMPS are really many-body potentials, such as Tersoff, AIREBO, MEAM, ReaxFF, etc. The way to think about using these potentials in a hybrid setting is as follows. </P> <P>A subset of atom types is assigned to the many-body potential with a single <A HREF = "pair_coeff.html">pair_coeff</A> command, using "* *" to include all types and the NULL keywords described above to exclude specific types not assigned to that potential. If types 1,3,4 were assigned in that way (but not type 2), this means that all many-body interactions between all atoms of types 1,3,4 will be computed by that potential. Pair_style hybrid allows interactions between type pairs 2-2, 1-2, 2-3, 2-4 to be specified for computation by other pair styles. You could even add a second interaction for 1-1 to be computed by another pair style, assuming pair_style hybrid/overlay is used. </P> <P>But you should not, as a general rule, attempt to exclude the many-body interactions for some subset of the type pairs within the set of 1,3,4 interactions, e.g. exclude 1-1 or 1-3 interactions. That is not conceptually well-defined for many-body interactions, since the potential will typically calculate energies and foces for small groups of atoms, e.g. 3 or 4 atoms, using the neighbor lists of the atoms to find the additional atoms in the group. It is typically non-physical to think of excluding an interaction between a particular pair of atoms when the potential computes 3-body or 4-body interactions. </P> <P>However, you can still use the pair_coeff none setting or the <A HREF = "neigh_modify.html">neigh_modify exclude</A> command to exclude certain type pairs from the neighbor list that will be passed to a manybody sub-style. This will alter the calculations made by a many-body potential, since it builds its list of 3-body, 4-body, etc interactions from the pair list. You will need to think carefully as to whether it produces a physically meaningful result for your model. </P> <P>For example, imagine you have two atom types in your model, type 1 for atoms in one surface, and type 2 for atoms in the other, and you wish to use a Tersoff potential to compute interactions within each surface, but not between surfaces. Then either of these two command sequences would implement that model: </P> <PRE>pair_style hybrid tersoff pair_coeff * * tersoff SiC.tersoff C C pair_coeff 1 2 none </PRE> <PRE>pair_style tersoff pair_coeff * * SiC.tersoff C C neigh_modify exclude type 1 2 </PRE> <P>Either way, only neighbor lists with 1-1 or 2-2 interactions would be passed to the Tersoff potential, which means it would compute no 3-body interactions containing both type 1 and 2 atoms. </P> <P>Here is another example, using hybrid/overlay, to use 2 many-body potentials together, in an overlapping manner. Imagine you have CNT (C atoms) on a Si surface. You want to use Tersoff for Si/Si and Si/C interactions, and AIREBO for C/C interactions. Si atoms are type 1; C atoms are type 2. Something like this will work: </P> <PRE>pair_style hybrid/overlay tersoff airebo 3.0 pair_coeff * * tersoff SiC.tersoff.custom Si C pair_coeff * * airebo CH.airebo NULL C </PRE> <P>Note that to prevent the Tersoff potential from computing C/C interactions, you would need to modify the SiC.tersoff file to turn off C/C interaction, i.e. by setting the appropriate coefficients to 0.0. </P> <HR> <P>Styles with a <I>cuda</I>, <I>gpu</I>, <I>intel</I>, <I>kk</I>, <I>omp</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">Section_accelerate</A> of the manual. </P> <P>Since the <I>hybrid</I> and <I>hybrid/overlay</I> styles delegate computation to the individual sub-styles, the suffix versions of the <I>hybrid</I> and <I>hybrid/overlay</I> styles are used to propagate the corresponding suffix to all sub-styles, if those versions exist. Otherwise the non-accelerated version will be used. </P> <P>The individual accelerated sub-styles are part of the USER-CUDA, GPU, USER-OMP and OPT packages, respectively. They are only enabled if LAMMPS was built with 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#start_7">-suffix command-line switch</A> when you invoke LAMMPS, or you can use the <A HREF = "suffix.html">suffix</A> command in your input script. </P> <P>See <A HREF = "Section_accelerate.html">Section_accelerate</A> of the manual for more instructions on how to use the accelerated styles effectively. </P> <HR> <P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>: </P> <P>Any pair potential settings made via the <A HREF = "pair_modify.html">pair_modify</A> command are passed along to all sub-styles of the hybrid potential. </P> <P>For atom type pairs I,J and I != J, if the sub-style assigned to I,I and J,J is the same, and if the sub-style allows for mixing, then the coefficients for I,J can be mixed. This means you do not have to specify a pair_coeff command for I,J since the I,J type pair will be assigned automatically to the sub-style defined for both I,I and J,J and its coefficients generated by the mixing rule used by that sub-style. For the <I>hybrid/overlay</I> style, there is an additional requirement that both the I,I and J,J pairs are assigned to a single sub-style. See the "pair_modify" command for details of mixing rules. See the See the doc page for the sub-style to see if allows for mixing. </P> <P>The hybrid pair styles supports the <A HREF = "pair_modify.html">pair_modify</A> shift, table, and tail options for an I,J pair interaction, if the associated sub-style supports it. </P> <P>For the hybrid pair styles, the list of sub-styles and their respective settings are written to <A HREF = "restart.html">binary restart files</A>, so a <A HREF = "pair_style.html">pair_style</A> command does not need to specified in an input script that reads a restart file. However, the coefficient information is not stored in the restart file. Thus, pair_coeff commands need to be re-specified in the restart input script. </P> <P>These 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, if their sub-styles do. </P> <P><B>Restrictions:</B> </P> <P>When using a long-range Coulombic solver (via the <A HREF = "kspace_style.html">kspace_style</A> command) with a hybrid pair_style, one or more sub-styles will be of the "long" variety, e.g. <I>lj/cut/coul/long</I> or <I>buck/coul/long</I>. You must insure that the short-range Coulombic cutoff used by each of these long pair styles is the same or else LAMMPS will generate an error. </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/doc2/pair_reax.html b/doc/doc2/pair_reax.html index bbd554e1b..3b7aa0894 100644 --- a/doc/doc2/pair_reax.html +++ b/doc/doc2/pair_reax.html @@ -1,216 +1,218 @@ <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 command </H3> <P><B>Syntax:</B> </P> <PRE>pair_style reax hbcut hbnewflag tripflag precision </PRE> <UL><LI>hbcut = hydrogen-bond cutoff (optional) (distance units) <LI>hbnewflag = use old or new hbond function style (0 or 1) (optional) <LI>tripflag = apply stabilization to all triple bonds (0 or 1) (optional) <LI>precision = precision for charge equilibration (optional) </UL> <P><B>Examples:</B> </P> <PRE>pair_style reax pair_style reax 10.0 0 1 1.0e-5 pair_coeff * * ffield.reax 3 1 2 2 pair_coeff * * ffield.reax 3 NULL NULL 3 </PRE> <P><B>Description:</B> </P> <P>Style <I>reax</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)</A>. The version integrated into LAMMPS matches the most up-to-date version of ReaxFF as of summer 2010. </P> -<P>The <I>reax</I> style differs from the <A HREF = "pair_reax_c.html">pair_style reax/c</A> -command in the lo-level implementation details. The <I>reax</I> style is a +<P>WARNING: pair style reax is now deprecated and will soon be retired. Users +should switch to <A HREF = "pair_reax_c.html">pair_style reax/c</A>. The <I>reax</I> style +differs from the <I>reax/c</I> style 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. +a package. </P> <P>LAMMPS requires that a file called ffield.reax be provided, containing the ReaxFF parameters for each atom type, bond type, etc. The format is identical to the ffield file used by van Duin and co-workers. The filename is required as an argument in the pair_coeff command. Any value other than "ffield.reax" will be rejected (see below). </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>IMPORTANT NOTE: We do not distribute a wide variety of ReaxFF force field files with LAMMPS. Adri van Duin's group at PSU is the central repository for this kind of data as they are continuously deriving and updating parameterizations for different classes of materials. You can visit their WWW site at <A HREF = "http://www.engr.psu.edu/adri">http://www.engr.psu.edu/adri</A>, register as a "new user", and then submit a request to their group describing material(s) you are interested in modeling with ReaxFF. They can tell you what is currently available or what it would take to create a suitable ReaxFF parameterization. </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</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>hbcut</I>, <I>hbnewflag</I>, <I>tripflag</I>, and <I>precision</I> settings are optional arguments. If none are provided, default settings are used: <I>hbcut</I> = 6 (which is Angstroms in real units), <I>hbnewflag</I> = 1 (use new hbond function style), <I>tripflag</I> = 1 (apply stabilization to all triple bonds), and <I>precision</I> = 1.0e-6 (one part in 10^6). If you wish to override any of these defaults, then all of the settings must be specified. </P> <P>Two examples using <I>pair_style reax</I> are provided in the examples/reax sub-directory, along with corresponding examples for <A HREF = "pair_reax_c.html">pair_style reax/c</A>. </P> <P>Use of this pair style requires that a charge be defined for every atom since the <I>reax</I> pair style performs a charge equilibration (QEq) calculation. 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 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 ReaxFF FORTRAN library): </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 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</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 specification of the filename and the mapping of LAMMPS atom types recognized by the ReaxFF is done differently than for other LAMMPS potentials, due to the non-portable difficulty of passing character strings (e.g. filename, element names) between C++ and Fortran. </P> <P>The filename has to be "ffield.reax" and it has to exist in the directory you are running LAMMPS in. This means you cannot prepend a path to the file in the potentials dir. Rather, you should copy that file into the directory you are running from. If you wish to use another ReaxFF potential file, then name it "ffield.reax" and put it in the directory you run from. </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 a ReaxFF 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>IMPORTANT NOTE: Currently the reax pair style cannot be used as part of the <I>hybrid</I> pair style. Some additional changes still need to be made 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><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>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><B>Related commands:</B> </P> <P><A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "pair_reax_c.html">pair_style reax/c</A>, <A HREF = "fix_reax_bonds.html">fix_reax_bonds</A> </P> <P><B>Default:</B> </P> <P>The keyword defaults are <I>hbcut</I> = 6, <I>hbnewflag</I> = 1, <I>tripflag</I> = 1, <I>precision</I> = 1.0e-6. </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> </HTML> diff --git a/doc/doc2/pair_srp.html b/doc/doc2/pair_srp.html index df195432b..173a2f55b 100644 --- a/doc/doc2/pair_srp.html +++ b/doc/doc2/pair_srp.html @@ -1,172 +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>pair_style srp command </H3> <P><B>Syntax:</B> </P> -<P>pair_style srp cutoff bond_type dist keyword value ... +<P>pair_style srp cutoff btype dist keyword value ... </P> <UL><LI>cutoff = global cutoff for SRP interactions (distance units) -<LI>bond_type = bond type to apply SRP interactions +<LI>btype = bond type to apply SRP interactions to (can be wildcard, see below) <LI>distance = <I>min</I> or <I>mid</I> <LI>zero or more keyword/value pairs may be appended <LI>keyword = <I>exclude</I> <PRE> <I>exclude</I> value = <I>yes</I> or <I>no</I> </PRE> </UL> <P><B>Examples:</B> </P> <PRE>pair_style hybrid dpd 1.0 1.0 12345 srp 0.8 1 mid exclude yes pair_coeff 1 1 dpd 60.0 4.5 1.0 pair_coeff 1 2 none pair_coeff 2 2 srp 100.0 0.8 </PRE> <PRE>pair_style hybrid dpd 1.0 1.0 12345 srp 0.8 * min exclude yes pair_coeff 1 1 dpd 60.0 50 1.0 pair_coeff 1 2 none pair_coeff 2 2 srp 40.0 </PRE> <PRE>pair_style hybrid srp 0.8 2 mid pair_coeff 1 1 none pair_coeff 1 2 none pair_coeff 2 2 srp 100.0 0.8 </PRE> <P><B>Description:</B> </P> <P>Style <I>srp</I> computes a soft segmental repulsive potential (SRP) that acts between pairs of bonds. This potential is useful for preventing bonds from passing through one another when a soft non-bonded potential acts between beads in, for example, DPD polymer chains. An example input script that uses this command is provided in examples/USER/srp. </P> -<P>Bonds of type <I>btype</I> interact with one another through a +<P>Bonds of specified type <I>btype</I> interact with one another through a bond-pairwise potential, such that the force on bond <I>i</I> due to bond <I>j</I> is as follows </P> <CENTER><IMG SRC = "Eqs/pair_srp1.jpg"> </CENTER> <P>where <I>r</I> and <I>rij</I> are the distance and unit vector between the two -bonds. The bondtype can also be specified as an asterisk (*) and then -this interaction applied to all bonds. -The <I>mid</I> option computes <I>r</I> and <I>rij</I> from the midpoint -distance between bonds. The <I>min</I> option computes <I>r</I> and <I>rij</I> from -the minimum distance between bonds. The force acting on a bond is -mapped onto the two bond atoms according to the lever rule, +bonds. Note that <I>btype</I> can be specified as an asterisk "*", which +case the interaction is applied to all bond types. The <I>mid</I> option +computes <I>r</I> and <I>rij</I> from the midpoint distance between bonds. The +<I>min</I> option computes <I>r</I> and <I>rij</I> from the minimum distance between +bonds. The force acting on a bond is mapped onto the two bond atoms +according to the lever rule, </P> <CENTER><IMG SRC = "Eqs/pair_srp2.jpg"> </CENTER> <P>where <I>L</I> is the normalized distance from the atom to the point of closest approach of bond <I>i</I> and <I>j</I>. The <I>mid</I> option takes <I>L</I> as 0.5 for each interaction as described in <A HREF = "#Sirk">(Sirk)</A>. </P> <P>The following coefficients must be defined via the <A HREF = "pair_coeff.html">pair_coeff</A> command as in the examples above, or in the data file or restart file read by the <A HREF = "read_data.html">read_data</A> or <A HREF = "read_restart.html">read_restart</A> commands: </P> <UL><LI><I>C</I> (force units) <LI><I>rc</I> (distance units) </UL> <P>The last coefficient is optional. If not specified, the global cutoff is used. </P> -<P>IMPORTANT NOTE: Pair style srp considers each bond of type <I>btype</I> as -a fictitious particle of type <I>bptype</I>, where <I>bptype</I> is the largest -atom type in the system. These "bond particles" are inserted at the -beginning of the run, and serve as placeholders that define the -position of the bonds. This allows neighbor lists to be constructed -and pairwise interactions to be computed in almost the same way as is -done for point particles. Because bonds interact only with other -bonds, <A HREF = "pair_hybrid.html">pair_style hybrid</A> should be used to turn off -interactions between atom type <I>bptype</I> and all other types of atoms. -An error will be flagged if <A HREF = "pair_hybrid.html">pair_style hybrid</A> is -not used. Further, only bond particles should be given an atom type -of <I>bptype</I>; a check is done at the beginning of the run to ensure -there are no regular atoms of <I>bptype</I>. +<P>IMPORTANT NOTE: Pair style srp considers each bond of type <I>btype</I> to +be a fictitious "particle" of type <I>bptype</I>, where <I>bptype</I> is the +largest atom type in the system. There cannot be any actual particles +assigned to this atom type. This means you must specify the number of +types in your system to be one larger would normally be the case, +e.g. via the <A HREF = "create_box.html">create_box</A> or +<A HREF = "read_data.html">read_data</A> commands. These ficitious "bond particles" +are inserted at the beginning of the run, and serve as placeholders +that define the position of the bonds. This allows neighbor lists to +be constructed and pairwise interactions to be computed in almost the +same way as is done for actual particles. Because bonds interact only +with other bonds, <A HREF = "pair_hybrid.html">pair_style hybrid</A> should be used +to turn off interactions between atom type <I>bptype</I> and all other +types of atoms. An error will be flagged if <A HREF = "pair_hybrid.html">pair_style +hybrid</A> is not used. </P> <P>The optional <I>exclude</I> keyword determines if forces are computed between first neighbor (directly connected) bonds. For a setting of -<I>no</I>, first neighbor forces are computed; for <I>yes</I> they are not computed. A setting of <I>no</I> -cannot be used with the <I>min</I> option for distance calculation because the the minimum distance between -directly connected bonds is zero. +<I>no</I>, first neighbor forces are computed; for <I>yes</I> they are not +computed. A setting of <I>no</I> cannot be used with the <I>min</I> option for +distance calculation because the the minimum distance between directly +connected bonds is zero. </P> <P>Pair style <I>srp</I> turns off normalization of thermodynamic properties by particle number, as if the command <A HREF = "thermo_modify.html">thermo_modify norm no</A> had been issued. </P> <P>The pairwise energy associated with style <I>srp</I> is shifted to be zero at the cutoff distance <I>rc</I>. </P> <HR> <P><B>Mixing, shift, table, tail correction, restart, rRESPA info</B>: </P> <P>This pair styles does not support mixing. </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. Note that as discussed above, the energy term is already shifted to be 0.0 at the cutoff distance <I>rc</I>. </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 global and per-atom information to <A HREF = "restart.html">binary restart files</A>. Pair srp should be used with <A HREF = "pair_hybrid.html">pair_style hybrid</A>, thus the pair_coeff commands need to be specified in the input script when reading 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 Making LAMMPS section for more info. </P> -<P>This pair style must be used with <A HREF = "pair_hybrid.html">pair_style hybrid</A>. +<P>This pair style must be used with <A HREF = "pair_hybrid.html">pair_style +hybrid</A>. </P> <P>This pair style requires the <A HREF = "newton.html">newton</A> command to be <I>on</I> for non-bonded interactions. </P> <P><B>Related commands:</B> </P> <P><A HREF = "pair_hybrid.html">pair_style hybrid</A>, <A HREF = "pair_coeff.html">pair_coeff</A>, <A HREF = "pair_dpd.html">pair dpd</A> </P> <P><B>Default:</B> </P> <P>The default keyword value is exclude = yes. </P> <HR> <A NAME = "Sirk"></A> <P><B>(Sirk)</B> Sirk TW, Sliozberg YR, Brennan JK, Lisal M, Andzelm JW, J Chem Phys, 136 (13) 134903, 2012. </P> </HTML> diff --git a/doc/doc2/pair_style.html b/doc/doc2/pair_style.html index 6cfd97335..95fd464b9 100644 --- a/doc/doc2/pair_style.html +++ b/doc/doc2/pair_style.html @@ -1,234 +1,235 @@ <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. They are also given in more compact form in the pair section of <A HREF = "Section_commands.html#cmd_5">this page</A>. </P> <P>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> <P>There are also additional pair styles (not listed here) 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#cmd_5">this page</A>. </P> <P>There are also additional accelerated pair styles (not listed here) 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#cmd_5">this page</A>. </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_beck.html">pair_style beck</A> - Beck potential <LI><A HREF = "pair_body.html">pair_style body</A> - interactions between body particles <LI><A HREF = "pair_bop.html">pair_style bop</A> - BOP potential of Pettifor <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 Coulombics <LI><A HREF = "pair_born.html">pair_style born/coul/long/cs</A> - Born-Mayer-Huggins with long-range Coulombics and core/shell <LI><A HREF = "pair_born.html">pair_style born/coul/msm</A> - Born-Mayer-Huggins with long-range MSM Coulombics <LI><A HREF = "pair_born.html">pair_style born/coul/wolf</A> - Born-Mayer-Huggins with Coulombics via Wolf potential <LI><A HREF = "pair_brownian.html">pair_style brownian</A> - Brownian potential for Fast Lubrication Dynamics <LI><A HREF = "pair_brownian.html">pair_style brownian/poly</A> - Brownian potential for Fast Lubrication Dynamics with polydispersity <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 Coulombics <LI><A HREF = "pair_buck.html">pair_style buck/coul/long/cs</A> - Buckingham with long-range Coulombics and core/shell <LI><A HREF = "pair_buck.html">pair_style buck/coul/msm</A> - Buckingham long-range MSM Coulombics <LI><A HREF = "pair_buck_long.html">pair_style buck/long/coul/long</A> - long-range Buckingham with long-range Coulombics <LI><A HREF = "pair_colloid.html">pair_style colloid</A> - integrated colloidal potential <LI><A HREF = "pair_comb.html">pair_style comb</A> - charge-optimized many-body (COMB) potential <LI><A HREF = "pair_comb.html">pair_style comb3</A> - charge-optimized many-body (COMB3) 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/dsf</A> - Coulombics via damped shifted forces <LI><A HREF = "pair_coul.html">pair_style coul/long</A> - long-range Coulombic potential <LI><A HREF = "pair_coul.html">pair_style coul/long/cs</A> - long-range Coulombic potential and core/shell <LI><A HREF = "pair_coul.html">pair_style coul/msm</A> - long-range MSM Coulombics <LI><A HREF = "pair_coul_streitz.html">pair_style coul/msm</A> - Coulombics via Streitz/Mintmire Slater orbitals <LI><A HREF = "pair_coul.html">pair_style coul/wolf</A> - Coulombics via Wolf potential <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_kim.html">pair_style kim</A> - interface to potentials provided by KIM project <LI><A HREF = "pair_lcbop.html">pair_style lcbop</A> - long-range bond-order potential (LCBOP) <LI><A HREF = "pair_line_lj.html">pair_style line/lj</A> - LJ potential between line segments <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_charmm.html">pair_style lj/charmm/coul/msm</A> - CHARMM with long-range MSM Coulombics <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/dsf</A> - LJ with Coulombics via damped shifted forces <LI><A HREF = "pair_lj.html">pair_style lj/cut/coul/long</A> - LJ with long-range Coulombics <LI><A HREF = "pair_lj.html">pair_style lj/cut/coul/msm</A> - LJ with long-range MSM Coulombics <LI><A HREF = "pair_dipole.html">pair_style lj/cut/dipole/cut</A> - point dipoles with cutoff <LI><A HREF = "pair_dipole.html">pair_style lj/cut/dipole/long</A> - point dipoles with long-range Ewald <LI><A HREF = "pair_lj.html">pair_style lj/cut/tip4p/cut</A> - LJ with cutoff Coulomb for TIP4P water <LI><A HREF = "pair_lj.html">pair_style lj/cut/tip4p/long</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_long.html">pair_style lj/long/coul/long</A> - long-range LJ and long-range Coulombics <LI><A HREF = "pair_dipole.html">pair_style lj/long/dipole/long</A> - long-range LJ and long-range point dipoles <LI><A HREF = "pair_lj_long.html">pair_style lj/long/tip4p/long</A> - long-range LJ and long-range Coulomb for TIP4P water <LI><A HREF = "pair_lj_smooth.html">pair_style lj/smooth</A> - smoothed Lennard-Jones potential <LI><A HREF = "pair_lj_smooth_linear.html">pair_style lj/smooth/linear</A> - linear 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_lubricate.html">pair_style lubricate/poly</A> - hydrodynamic lubrication forces with polydispersity <LI><A HREF = "pair_lubricateU.html">pair_style lubricateU</A> - hydrodynamic lubrication forces for Fast Lubrication Dynamics <LI><A HREF = "pair_lubricateU.html">pair_style lubricateU/poly</A> - hydrodynamic lubrication forces for Fast Lubrication with polydispersity <LI><A HREF = "pair_meam.html">pair_style meam</A> - modified embedded atom method (MEAM) <LI><A HREF = "pair_mie.html">pair_style mie/cut</A> - Mie potential <LI><A HREF = "pair_morse.html">pair_style morse</A> - Morse potential <LI><A HREF = "pair_nb3b_harmonic.html">pair_style nb3b/harmonic</A> - nonbonded 3-body harmonic potential <LI><A HREF = "pair_nm.html">pair_style nm/cut</A> - N-M potential <LI><A HREF = "pair_nm.html">pair_style nm/cut/coul/cut</A> - N-M potential with cutoff Coulomb <LI><A HREF = "pair_nm.html">pair_style nm/cut/coul/long</A> - N-M potential with long-range Coulombics <LI><A HREF = "pair_peri.html">pair_style peri/eps</A> - peridynamic EPS 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_peri.html">pair_style peri/ves</A> - peridynamic VES potential <LI><A HREF = "pair_polymorphic.html">pair_style polymorphic</A> - polymorphic 3-body 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_snap.html">pair_style snap</A> - SNAP quantum-accurate 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_mod.html">pair_style tersoff/mod</A> - modified 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_coul.html">pair_style tip4p/cut</A> - Coulomb for TIP4P water w/out LJ <LI><A HREF = "pair_coul.html">pair_style tip4p/long</A> - long-range Coulombics for TIP4P water w/out LJ <LI><A HREF = "pair_tri_lj.html">pair_style tri/lj</A> - LJ potential between triangles +<LI><A HREF = "pair_vahishta.html">pair_style vashishta</A> - Vashishta 2-body and 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 <LI><A HREF = "pair_zbl.html">pair_style zbl</A> - Ziegler-Biersack-Littmark potential </UL> <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#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_vashishta.html b/doc/doc2/pair_vashishta.html similarity index 87% copy from doc/pair_vashishta.html copy to doc/doc2/pair_vashishta.html index f2b42588e..7a5832c68 100644 --- a/doc/pair_vashishta.html +++ b/doc/doc2/pair_vashishta.html @@ -1,211 +1,236 @@ <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 vashishta command </H3> +<H3>pair_style vashishta/omp command +</H3> <P><B>Syntax:</B> </P> <PRE>pair_style vashishta </PRE> <P><B>Examples:</B> </P> <PRE>pair_style vashishta pair_coeff * * SiC.vashishta Si C </PRE> <P><B>Description:</B> </P> <P>The <I>vashishta</I> style computes the combined 2-body and 3-body family of potentials developed in the group of Vashishta and co-workers. By combining repulsive, screened Coulombic, screened charge-dipole, and dispersion interactions with a bond-angle energy based on the Stillinger-Weber potential, this potential has been used to describe a variety of inorganic compounds, including SiO2 <A HREF = "#Vashishta1990">Vashishta1990</A>, SiC <A HREF = "#Vashishta2007">Vashishta2007</A>, and InP <A HREF = "#Branicio2009">Branicio2009</A>. </P> <P>The potential for the energy U of a system of atoms is </P> <CENTER><IMG SRC = "Eqs/pair_vashishta.jpg"> </CENTER> <P>where we follow the notation used in <A HREF = "#Branicio2009">Branicio2009</A>. U2 is a two-body term and U3 is a three-body term. The summation over two-body terms is over all neighbors J within a cutoff distance = <I>rc</I>. The twobody terms are shifted and tilted by a linear function so that the energy and force are both zero at <I>rc</I>. The summation over three-body terms is over all neighbors J and K within a cut-off distance = <I>r0</I>, where the exponential screening function becomes zero. </P> <P>Only a single pair_coeff command is used with the <I>vashishta</I> style which specifies a Vashishta 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 Vashishta elements to atom types </UL> <P>See the <A HREF = "pair_coeff.html">pair_coeff</A> doc page for alternate ways to specify the path for the potential file. </P> <P>As an example, imagine a file SiC.vashishta has parameters 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.vashishta 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 file. The final C argument maps LAMMPS atom type 4 to the C element in the file. If a mapping value is specified as NULL, the mapping is not performed. This can be used when a <I>vashishta</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>Vashishta files in the <I>potentials</I> directory of the LAMMPS distribution have a ".vashishta" 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 formulae above: </P> <UL><LI>element 1 (the center atom in a 3-body interaction) <LI>element 2 <LI>element 3 <LI>H (energy units) <LI>eta <LI>Zi (electron charge units) <LI>Zj (electron charge units) <LI>lambda1 (distance units) <LI>D (energy units) <LI>lambda4 (distance units) <LI>W (energy units) <LI>rc (distance units) <LI>B (energy units) <LI>gamma <LI>r0 (distance units) <LI>C <LI>costheta0 </UL> <P>The non-annotated parameters are unitless. The Vashishta 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 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>Depending on the particular version of the Vashishta potential, the values of these parameters may be keyed to the identities of zero, one, two, or three elements. In order to make the input file format unambiguous, general, and simple to code, LAMMPS uses a slightly confusing method for specifying parameters. All parameters are divided into two classes: two-body and three-body. Two-body and three-body parameters are handled differently, as described below. The two-body parameters are H, eta, lambda1, D, lambda4, W, rc, gamma, and r0. They appear in the above formulae with two subscripts. The parameters Zi and Zj are also classified as two-body parameters, even though they only have 1 subscript. The three-body parameters are B, C, costheta0. They appear in the above formulae with three subscripts. Two-body and three-body parameters are handled differently, as described below. </P> <P>The first element in each entry is the center atom in a three-body interaction, while the second and third elements are two neighbor atoms. Three-body parameters for a central atom I and two neighbors J and K are taken from the IJK entry. Note that even though three-body parameters do not depend on the order of J and K, LAMMPS stores three-body parameters for both IJK and IKJ. The user must ensure that these values are equal. Two-body parameters for an atom I interacting with atom J are taken from the IJJ entry, where the 2nd and 3rd elements are the same. Thus the two-body parameters for Si interacting with C come from the SiCC entry. Note that even though two-body parameters (except possibly gamma and r0 in U3) do not depend on the order of the two elements, LAMMPS will get the Si-C value from the SiCC entry and the C-Si value from the CSiSi entry. The user must ensure that these values are equal. Two-body parameters appearing in entries where the 2nd and 3rd elements are different are stored but never used. It is good practice to enter zero for these values. Note that the three-body function U3 above contains the two-body parameters gamma and r0. So U3 for a central C atom bonded to an Si atom and a second C atom will take three-body parameters from the CSiC entry, but two-body parameters from the CCC and CSiSi entries. </P> <HR> +<P>Styles with a <I>cuda</I>, <I>gpu</I>, <I>intel</I>, <I>kk</I>, <I>omp</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">Section_accelerate</A> +of the manual. The accelerated styles take the same arguments and +should produce the same results, except for round-off and precision +issues. +</P> +<P>These accelerated styles are part of the USER-CUDA, GPU, USER-INTEL, +KOKKOS, USER-OMP and OPT packages, respectively. They are only +enabled if LAMMPS was built with 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#start_7">-suffix command-line +switch</A> when you invoke LAMMPS, or you can +use the <A HREF = "suffix.html">suffix</A> command in your input script. +</P> +<P>See <A HREF = "Section_accelerate.html">Section_accelerate</A> of the manual for +more instructions on how to use the accelerated styles effectively. +</P> +<HR> + <P><B>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#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 Vashishta potential files provided with LAMMPS (see the potentials directory) are parameterized for metal <A HREF = "units.html">units</A>. You can use the Vashishta potential with any LAMMPS units, but you would need to create your own Vashishta 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 = "Vashishta1990"></A> <P><B>(Vashishta1990)</B> P. Vashishta, R. K. Kalia, J. P. Rino, Phys. Rev. B 41, 12197 (1990). </P> <A NAME = "Vashishta2007"></A> <P><B>(Vashishta2007)</B> P. Vashishta, R. K. Kalia, A. Nakano, J. P. Rino. J. Appl. Phys. 101, 103515 (2007). </P> <A NAME = "Branicio2009"></A> <P><B>(Branicio2009)</B> Branicio, Rino, Gan and Tsuzuki, J. Phys Condensed Matter 21 (2009) 095002 </P> </HTML> diff --git a/doc/fix_adapt.html b/doc/fix_adapt.html index fe2d76637..14ac58eb4 100644 --- a/doc/fix_adapt.html +++ b/doc/fix_adapt.html @@ -1,462 +1,466 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>fix adapt command — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>fix adapt command</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="fix-adapt-command"> <span id="index-0"></span><h1>fix adapt command<a class="headerlink" href="#fix-adapt-command" title="Permalink to this headline">¶</a></h1> <div class="section" id="syntax"> <h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><pre>fix ID group-ID adapt N attribute args ... keyword value ... </pre></div> </div> <ul class="simple"> <li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><em>fix</em></a> command</li> <li>adapt = style name of this fix command</li> <li>N = adapt simulation settings every this many timesteps</li> <li>one or more attribute/arg pairs may be appended</li> <li>attribute = <em>pair</em> or <em>kspace</em> or <em>atom</em></li> </ul> <pre class="literal-block"> <em>pair</em> 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 <em>kspace</em> arg = v_name v_name = variable with name that calculates scale factor on K-space terms <em>atom</em> args = aparam v_name aparam = parameter to adapt over time v_name = variable with name that calculates value of aparam </pre> <ul class="simple"> <li>zero or more keyword/value pairs may be appended</li> <li>keyword = <em>scale</em> or <em>reset</em></li> </ul> <pre class="literal-block"> <em>scale</em> value = <em>no</em> or <em>yes</em> <em>no</em> = the variable value is the new setting <em>yes</em> = the variable value multiplies the original setting <em>reset</em> value = <em>no</em> or <em>yes</em> <em>no</em> = values will remain altered at the end of a run <em>yes</em> = reset altered values to their original values at the end of a run </pre> </div> <div class="section" id="examples"> <h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><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></div> </div> </div> <div class="section" id="description"> <h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2> <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. Also note that many commands allow variables as arguments for specific parameters, if described in that manner on their doc pages. An equal-style variable can calculate a time-dependent quantity, so this is another way to vary a simulation parameter over time.</p> <p>If <em>N</em> 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 <em>N</em> > 0, then changes are made every <em>N</em> steps during the simulation, presumably with a variable that is time-dependent.</p> <p>Depending on the value of the <em>reset</em> 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 <em>reset</em> is specified as <em>yes</em>, a restart file written during a simulation will contain the modified settings.</p> <p>If the <em>scale</em> keyword is set to <em>no</em>, then the value the parameter is set to will be whatever the variable generates. If the <em>scale</em> keyword is set to <em>yes</em>, 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.</p> <p>Note that whether scale is <em>no</em> or <em>yes</em>, internally, the parameters themselves are actually altered by this fix. Make sure you use the <em>reset yes</em> option if you want the parameters to be restored to their initial values after the run.</p> <hr class="docutils" /> <p>The <em>pair</em> keyword enables various parameters of potentials defined by the <a class="reference internal" href="pair_style.html"><em>pair_style</em></a> command to be changed, if the pair style supports it. Note that the <a class="reference internal" href="pair_style.html"><em>pair_style</em></a> and <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></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 <em>pstyle</em> argument is the name of the pair style. If <a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid or hybrid/overlay</em></a> is used, <em>pstyle</em> should be -a sub-style name. For example, <em>pstyle</em> could be specified as “soft” -or “lubricate”. The <em>pparam</em> 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> +a sub-style name. If there are multiple sub-styles using the same +pair style, then <em>pstyle</em> should be specified as “style:N” where N is +which instance of the pair style you wish to adapt, e.g. the first, +second, etc. For example, <em>pstyle</em> could be specified as “soft” or +“lubricate” or “lj/cut:1” or “lj/cut:2”. The <em>pparam</em> 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> <table border="1" class="docutils"> <colgroup> <col width="51%" /> <col width="31%" /> <col width="18%" /> </colgroup> <tbody valign="top"> <tr class="row-odd"><td><a class="reference internal" href="pair_born.html"><em>born</em></a></td> <td>a,b,c</td> <td>type pairs</td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_buck.html"><em>buck</em></a></td> <td>a,c</td> <td>type pairs</td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_coul.html"><em>coul/cut</em></a></td> <td>scale</td> <td>type pairs</td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_coul.html"><em>coul/debye</em></a></td> <td>scale</td> <td>type pairs</td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_coul.html"><em>coul/long</em></a></td> <td>scale</td> <td>type pairs</td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_lj.html"><em>lj/cut</em></a></td> <td>epsilon,sigma</td> <td>type pairs</td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_lj_expand.html"><em>lj/expand</em></a></td> <td>epsilon,sigma,delta</td> <td>type pairs</td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_lubricate.html"><em>lubricate</em></a></td> <td>mu</td> <td>global</td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_gauss.html"><em>gauss</em></a></td> <td>a</td> <td>type pairs</td> </tr> <tr class="row-even"><td><a class="reference internal" href="pair_morse.html"><em>morse</em></a></td> <td>d0,r0,alpha</td> <td>type pairs</td> </tr> <tr class="row-odd"><td><a class="reference internal" href="pair_soft.html"><em>soft</em></a></td> <td>a</td> <td>type pairs</td> </tr> </tbody> </table> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">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> </div> <p>Some parameters are global settings for the pair style, e.g. the viscosity setting “mu” for <a class="reference internal" href="pair_lubricate.html"><em>pair_style lubricate</em></a>. Other parameters apply to atom type pairs within the pair style, e.g. the prefactor “a” for <a class="reference internal" href="pair_soft.html"><em>pair_style soft</em></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 class="reference internal" href="pair_coul.html"><em>coul/cut</em></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 class="reference internal" href="pair_buck.html"><em>Buckingham potential</em></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 <em>I</em> and <em>J</em> settings should be specified to indicate which type pairs to apply it to. If a global parameter is specified, the <em>I</em> and <em>J</em> settings still need to be specified, but are ignored.</p> <p>Similar to the <a class="reference internal" href="pair_coeff.html"><em>pair_coeff command</em></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 “<em>n” or “n</em>” 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 class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid or hybrid/overlay</em></a> is being used, then the <em>pstyle</em> will be a sub-style name. You must specify I,J arguments that correspond to type pair values defined (via the <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command) for that sub-style.</p> <p>The <em>v_name</em> argument for keyword <em>pair</em> is the name of an <a class="reference internal" href="variable.html"><em>equal-style variable</em></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 class="reference internal" href="thermo_style.html"><em>thermo_style</em></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 <em>start</em> and <em>stop</em> keywords of the <a class="reference internal" href="run.html"><em>run</em></a> command and the <em>elaplong</em> keyword of <a class="reference internal" href="thermo_style.html"><em>thermo_style custom</em></a> for details.</p> <p>For example, these commands would change the prefactor coefficient of the <a class="reference internal" href="pair_soft.html"><em>pair_style soft</em></a> potential from 10.0 to 30.0 in a linear fashion over the course of a simulation:</p> <div class="highlight-python"><div class="highlight"><pre>variable prefactor equal ramp(10,30) fix 1 all adapt 1 pair soft a * * v_prefactor </pre></div> </div> <hr class="docutils" /> <p>The <em>kspace</em> 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 class="reference internal" href="kspace_style.html"><em>kspace_style</em></a> command. If the variable has a value of 1.0, then the solver is unaltered.</p> <p>The <em>kspace</em> keyword works this way whether the <em>scale</em> keyword is set to <em>no</em> or <em>yes</em>.</p> <hr class="docutils" /> <p>The <em>atom</em> keyword enables various atom properties to be changed. The <em>aparam</em> 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 class="simple"> <li>charge = charge on particle</li> <li>diameter = diameter of particle</li> </ul> <p>The <em>v_name</em> argument of the <em>atom</em> keyword is the name of an <a class="reference internal" href="variable.html"><em>equal-style variable</em></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> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">The <em>atom</em> keyword works this way whether the <em>scale</em> keyword is set to <em>no</em> or <em>yes</em>. I.e. the use of scale yes is not yet supported by the <em>atom</em> keyword.</p> </div> <p>If the atom parameter is <em>diameter</em> and per-atom density and per-atom mass are defined for particles (e.g. <a class="reference internal" href="atom_style.html"><em>atom_style granular</em></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> <div class="highlight-python"><div class="highlight"><pre>variable size equal ramp(1.0,0.1) fix 1 center adapt 10 atom diameter v_size </pre></div> </div> </div> <hr class="docutils" /> <div class="section" id="restart-fix-modify-output-run-start-stop-minimize-info"> <h2>Restart, fix_modify, output, run start/stop, minimize info<a class="headerlink" href="#restart-fix-modify-output-run-start-stop-minimize-info" title="Permalink to this headline">¶</a></h2> <p>No information about this fix is written to <a class="reference internal" href="restart.html"><em>binary restart files</em></a>. None of the <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> options are relevant to this fix. No global or per-atom quantities are stored by this fix for access by various <a class="reference internal" href="Section_howto.html#howto-15"><span>output commands</span></a>. No parameter of this fix can be used with the <em>start/stop</em> keywords of the <a class="reference internal" href="run.html"><em>run</em></a> command. This fix is not invoked during <a class="reference internal" href="minimize.html"><em>energy minimization</em></a>.</p> <p>For <a class="reference internal" href="run_style.html"><em>rRESPA time integration</em></a>, this fix changes parameters on the outermost rRESPA level.</p> </div> <div class="section" id="restrictions"> <h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> <blockquote> <div>none</div></blockquote> </div> <div class="section" id="related-commands"> <h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2> <p><a class="reference internal" href="compute_ti.html"><em>compute ti</em></a></p> </div> <div class="section" id="default"> <h2>Default<a class="headerlink" href="#default" title="Permalink to this headline">¶</a></h2> <p>The option defaults are scale = no, reset = no.</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/fix_adapt.txt b/doc/fix_adapt.txt index 14c7789cf..a13101257 100644 --- a/doc/fix_adapt.txt +++ b/doc/fix_adapt.txt @@ -1,247 +1,251 @@ "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 {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. Also note that many commands allow variables as arguments for specific parameters, if described in that manner on their doc pages. An equal-style variable can calculate a time-dependent quantity, so this is another way to vary a simulation parameter over time. 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. 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. Note that whether scale is {no} or {yes}, internally, the parameters themselves are actually altered by this fix. 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: +a sub-style name. If there are multiple sub-styles using the same +pair style, then {pstyle} should be specified as "style:N" where N is +which instance of the pair style you wish to adapt, e.g. the first, +second, etc. For example, {pstyle} could be specified as "soft" or +"lubricate" or "lj/cut:1" or "lj/cut:2". 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,sigma: type pairs: "lj/expand"_pair_lj_expand.html: epsilon,sigma,delta: type pairs: "lubricate"_pair_lubricate.html: mu: global: "gauss"_pair_gauss.html: a: type pairs: "morse"_pair_morse.html: d0,r0,alpha: 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"_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: charge = charge on particle 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. IMPORTANT NOTE: The {atom} keyword works this way whether the {scale} keyword is set to {no} or {yes}. I.e. the use of scale yes is not yet supported by the {atom} keyword. 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 :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#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. For "rRESPA time integration"_run_style.html, this fix changes parameters on the outermost rRESPA level. [Restrictions:] none [Related commands:] "compute ti"_compute_ti.html [Default:] The option defaults are scale = no, reset = no. diff --git a/doc/fix_ave_correlate.html b/doc/fix_ave_correlate.html index d9a2b1234..4217690a7 100644 --- a/doc/fix_ave_correlate.html +++ b/doc/fix_ave_correlate.html @@ -1,479 +1,483 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>fix ave/correlate command — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>fix ave/correlate command</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="fix-ave-correlate-command"> <span id="index-0"></span><h1>fix ave/correlate command<a class="headerlink" href="#fix-ave-correlate-command" title="Permalink to this headline">¶</a></h1> <div class="section" id="syntax"> <h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><pre>fix ID group-ID ave/correlate Nevery Nrepeat Nfreq value1 value2 ... keyword args ... </pre></div> </div> <ul class="simple"> <li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><em>fix</em></a> command</li> <li>ave/correlate = style name of this fix command</li> <li>Nevery = use input values every this many timesteps</li> <li>Nrepeat = # of correlation time windows to accumulate</li> -<li>Nfreq = calculate tine window averages every this many timesteps</li> +<li>Nfreq = calculate time window averages every this many timesteps</li> <li>one or more input values can be listed</li> <li>value = c_ID, c_ID[N], f_ID, f_ID[N], v_name</li> </ul> <div class="highlight-python"><div class="highlight"><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></div> </div> <ul class="simple"> <li>zero or more keyword/arg pairs may be appended</li> <li>keyword = <em>type</em> or <em>ave</em> or <em>start</em> or <em>prefactor</em> or <em>file</em> or <em>overwrite</em> or <em>title1</em> or <em>title2</em> or <em>title3</em></li> </ul> <pre class="literal-block"> <em>type</em> arg = <em>auto</em> or <em>upper</em> or <em>lower</em> or <em>auto/upper</em> or <em>auto/lower</em> or <em>full</em> 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 <em>ave</em> args = <em>one</em> or <em>running</em> one = zero the correlation accumulation every Nfreq steps running = accumulate correlations continuously <em>start</em> args = Nstart Nstart = start accumulating correlations on this timestep <em>prefactor</em> args = value value = prefactor to scale all the correlation data by <em>file</em> arg = filename filename = name of file to output correlation data to <em>overwrite</em> arg = none = overwrite output file with only latest output <em>title1</em> arg = string string = text to print as 1st line of output file <em>title2</em> arg = string string = text to print as 2nd line of output file <em>title3</em> arg = string string = text to print as 3rd line of output file </pre> </div> <div class="section" id="examples"> <h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><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></div> </div> </div> <div class="section" id="description"> <h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="variable.html"><em>variables</em></a> or used by other <a class="reference internal" href="Section_howto.html#howto-15"><span>output commands</span></a> such as <a class="reference internal" href="thermo_style.html"><em>thermo_style custom</em></a>, and can also be written to a file.</p> +<a class="reference internal" href="variable.html"><em>variables</em></a> or used by other <a class="reference internal" href="Section_howto.html#howto-15"><span>output commands</span></a> such as <a class="reference internal" href="thermo_style.html"><em>thermo_style custom</em></a>, and can also be written to a file. See the +<a class="reference internal" href="fix_ave_correlate_long.html"><em>fix ave/correlate/long</em></a> command for an +alternate method for computing correlation functions efficiently over +very long time windows.</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 class="reference internal" href="compute.html"><em>compute</em></a> or <a class="reference internal" href="fix.html"><em>fix</em></a> or the evaluation of an equal-style <a class="reference internal" href="variable.html"><em>variable</em></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 class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></a>, <a class="reference internal" href="fix_ave_atom.html"><em>fix ave/atom</em></a>, or <a class="reference internal" href="fix_ave_histo.html"><em>fix ave/histo</em></a> commands. If you wish to sum a per-atom quantity into a single global quantity, see the <a class="reference internal" href="compute_reduce.html"><em>compute reduce</em></a> command.</p> <p><a class="reference internal" href="compute.html"><em>Computes</em></a> that produce global quantities are those which do not have the word <em>atom</em> in their style name. Only a few <a class="reference internal" href="fix.html"><em>fixes</em></a> produce global quantities. See the doc pages for individual fixes for info on which ones produce such values. <a class="reference internal" href="variable.html"><em>Variables</em></a> of style <em>equal</em> are the only ones that can be used with this fix. Variables of style <em>atom</em> 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 <em>type</em> keyword as discussed below.</p> <hr class="docutils" /> <p>The <em>Nevery</em>, <em>Nrepeat</em>, and <em>Nfreq</em> arguments specify on what timesteps the input values will be used to calculate correlation data. The input values are sampled every <em>Nevery</em> timesteps. The correlation data for the preceding samples is computed on timesteps that are a multiple of <em>Nfreq</em>. 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 <em>ave</em> keyword for options. For the set of samples, the correlation value Cij is calculated as:</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">Cij</span><span class="p">(</span><span class="n">delta</span><span class="p">)</span> <span class="o">=</span> <span class="n">ave</span><span class="p">(</span><span class="n">Vi</span><span class="p">(</span><span class="n">t</span><span class="p">)</span><span class="o">*</span><span class="n">Vj</span><span class="p">(</span><span class="n">t</span><span class="o">+</span><span class="n">delta</span><span class="p">))</span> </pre></div> </div> <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 (<em>Nrepeat</em>-1)**Nevery*. Thus the correlation between a pair of input values yields <em>Nrepeat</em> correlation datums:</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">Cij</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">Cij</span><span class="p">(</span><span class="n">Nevery</span><span class="p">),</span> <span class="n">Cij</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">Nevery</span><span class="p">),</span> <span class="o">...</span><span class="p">,</span> <span class="n">Cij</span><span class="p">((</span><span class="n">Nrepeat</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">Nevery</span><span class="p">)</span> </pre></div> </div> <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><em>Nfreq</em> must be a multiple of <em>Nevery</em>; <em>Nevery</em> and <em>Nrepeat</em> must be non-zero. Also, if the <em>ave</em> keyword is set to <em>one</em> which is the default, then <em>Nfreq</em> >= (<em>Nrepeat</em>-1)**Nevery* is required.</p> <hr class="docutils" /> <p>If a value begins with “<a href="#id3"><span class="problematic" id="id4">c_</span></a>”, 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 class="reference internal" href="compute_reduce.html"><em>compute reduce</em></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 class="reference internal" href="thermo_style.html"><em>thermodynamic output</em></a> or other fixes such as <a class="reference internal" href="fix_nh.html"><em>fix nvt</em></a> or <a class="reference internal" href="fix_temp_rescale.html"><em>fix temp/rescale</em></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 class="reference internal" href="Section_modify.html"><em>add them to LAMMPS</em></a>.</p> <p>If a value begins with “<a href="#id5"><span class="problematic" id="id6">f_</span></a>”, 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 <em>Nevery</em>, else an error will result. Users can also write code for their own fix styles and <a class="reference internal" href="Section_modify.html"><em>add them to LAMMPS</em></a>.</p> <p>If a value begins with “<a href="#id7"><span class="problematic" id="id8">v_</span></a>”, a variable name must follow which has been previously defined in the input script. Only equal-style variables can be referenced. See the <a class="reference internal" href="variable.html"><em>variable</em></a> command for details. Note that variables of style <em>equal</em> 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 class="docutils" /> <p>Additional optional keywords also affect the operation of this fix.</p> <p>The <em>type</em> 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 class="simple"> <li>If <em>type</em> is set to <em>auto</em> then each input value is correlated with itself. I.e. Cii = Vi*Vi, for i = 1 to N, so Npair = N.</li> <li>If <em>type</em> is set to <em>upper</em> 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> <li>If <em>type</em> is set to <em>lower</em> 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> <li>If <em>type</em> is set to <em>auto/upper</em> 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> <li>If <em>type</em> is set to <em>auto/lower</em> 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> <li>If <em>type</em> is set to <em>full</em> 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.</li> </ul> <p>The <em>ave</em> keyword determines what happens to the accumulation of correlation samples every <em>Nfreq</em> timesteps. If the <em>ave</em> setting is <em>one</em>, then the accumulation is restarted or zeroed every <em>Nfreq</em> timesteps. Thus the outputs on successive <em>Nfreq</em> 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 <em>Nfreq</em>, contributes to the correlation output both at time T and at time T+Nfreq.</p> <p>If the <em>ave</em> setting is <em>running</em>, then the accumulation is never zeroed. Thus the output of correlation data at any timestep is the average over samples accumulated every <em>Nevery</em> steps since the fix was defined. it can only be restarted by deleting the fix via the <a class="reference internal" href="unfix.html"><em>unfix</em></a> command, or by re-defining the fix by re-specifying it.</p> <p>The <em>start</em> 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 <em>prefactor</em> 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 <em>file</em> keyword allows a filename to be specified. Every <em>Nfreq</em> steps, an array of correlation data is written to the file. The number of rows is <em>Nrepeat</em>, 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 <em>overwrite</em> keyword will continuously overwrite the output file with the latest output, so that it only contains one timestep worth of output. This option can only be used with the <em>ave running</em> setting.</p> <p>The <em>title1</em> and <em>title2</em> and <em>title3</em> keywords allow specification of the strings that will be printed as the first 3 lines of the output file, assuming the <em>file</em> 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> <div class="highlight-python"><div class="highlight"><pre><span class="c"># Time-correlated data for fix ID</span> <span class="c"># TimeStep Number-of-time-windows</span> <span class="c"># Index TimeDelta Ncount valueI*valueJ valueI*valueJ ...</span> </pre></div> </div> <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 class="docutils" /> <p>Let Sij = a set of time correlation data for input values I and J, namely the <em>Nrepeat</em> values:</p> <div class="highlight-python"><div class="highlight"><pre>Sij = Cij(0), Cij(Nevery), Cij(2*Nevery), ..., Cij(*Nrepeat-1)*Nevery) </pre></div> </div> <p>As explained below, these datums are output as one column of a global array, which is effectively the correlation matrix.</p> <p>The <em>trap</em> function defined for <a class="reference internal" href="variable.html"><em>equal-style variables</em></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 <em>prefactor</em> keyword.</p> </div> <hr class="docutils" /> <div class="section" id="restart-fix-modify-output-run-start-stop-minimize-info"> <h2>Restart, fix_modify, output, run start/stop, minimize info<a class="headerlink" href="#restart-fix-modify-output-run-start-stop-minimize-info" title="Permalink to this headline">¶</a></h2> <p>No information about this fix is written to <a class="reference internal" href="restart.html"><em>binary restart files</em></a>. None of the <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> options are relevant to this fix.</p> <p>This fix computes a global array of values which can be accessed by various <a class="reference internal" href="Section_howto.html#howto-15"><span>output commands</span></a>. The values can only be accessed on timesteps that are multiples of <em>Nfreq</em> since that is when averaging is performed. The global array has # of rows = <em>Nrepeat</em> 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 <em>type</em> keyword, as described above.</p> <ul class="simple"> <li>For <em>type</em> = <em>auto</em>, the Npair = N columns are ordered: C11, C22, ..., CNN.</li> <li>For <em>type</em> = <em>upper</em>, the Npair = N*(N-1)/2 columns are ordered: C12, C13, ..., C1N, C23, ..., C2N, C34, ..., CN-1N.</li> <li>For <em>type</em> = <em>lower</em>, the Npair = N*(N-1)/2 columns are ordered: C21, C31, C32, C41, C42, C43, ..., CN1, CN2, ..., CNN-1.</li> <li>For <em>type</em> = <em>auto/upper</em>, the Npair = N*(N+1)/2 columns are ordered: C11, C12, C13, ..., C1N, C22, C23, ..., C2N, C33, C34, ..., CN-1N, CNN.</li> <li>For <em>type</em> = <em>auto/lower</em>, the Npair = N*(N+1)/2 columns are ordered: C11, C21, C22, C31, C32, C33, C41, ..., C44, CN1, CN2, ..., CNN-1, CNN.</li> <li>For <em>type</em> = <em>full</em>, the Npair = N^2 columns are ordered: C11, C12, ..., C1N, C21, C22, ..., C2N, C31, ..., C3N, ..., CN1, ..., CNN-1, CNN.</li> </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 class="reference internal" href="variable.html"><em>variable</em></a>.</p> <p>No parameter of this fix can be used with the <em>start/stop</em> keywords of the <a class="reference internal" href="run.html"><em>run</em></a> command. This fix is not invoked during <a class="reference internal" href="minimize.html"><em>energy minimization</em></a>.</p> </div> <div class="section" id="restrictions"> <h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> <blockquote> <div>none</div></blockquote> </div> <div class="section" id="related-commands"> <h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2> -<p><a class="reference internal" href="compute.html"><em>compute</em></a>, <a class="reference internal" href="fix_ave_time.html"><em>fix ave/time</em></a>, <a class="reference internal" href="fix_ave_atom.html"><em>fix ave/atom</em></a>, <a class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></a>, +<p><a class="reference internal" href="fix_ave_correlate_long.html"><em>fix ave/correlate/long</em></a>, +<a class="reference internal" href="compute.html"><em>compute</em></a>, <a class="reference internal" href="fix_ave_time.html"><em>fix ave/time</em></a>, <a class="reference internal" href="fix_ave_atom.html"><em>fix ave/atom</em></a>, <a class="reference internal" href="fix_ave_spatial.html"><em>fix ave/spatial</em></a>, <a class="reference internal" href="fix_ave_histo.html"><em>fix ave/histo</em></a>, <a class="reference internal" href="variable.html"><em>variable</em></a></p> <p><strong>Default:</strong> 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> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/fix_ave_correlate.txt b/doc/fix_ave_correlate.txt index 47036af03..6ad218c46 100644 --- a/doc/fix_ave_correlate.txt +++ b/doc/fix_ave_correlate.txt @@ -1,334 +1,338 @@ "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 +Nfreq = calculate time 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 {overwrite} 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 {overwrite} arg = none = overwrite output file with only latest output {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#howto_15 such as "thermo_style -custom"_thermo_style.html, and can also be written to a file. +custom"_thermo_style.html, and can also be written to a file. See the +"fix ave/correlate/long"_fix_ave_correlate_long.html command for an +alternate method for computing correlation functions efficiently over +very long time windows. 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 {overwrite} keyword will continuously overwrite the output file with the latest output, so that it only contains one timestep worth of output. This option can only be used with the {ave running} setting. 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#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:] +"fix ave/correlate/long"_fix_ave_correlate_long.html, "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_correlate_long.html b/doc/fix_ave_correlate_long.html new file mode 100644 index 000000000..f1c8bf529 --- /dev/null +++ b/doc/fix_ave_correlate_long.html @@ -0,0 +1,317 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>fix ave/correlate/long command — LAMMPS 15 May 2015 version documentation</title> + + + + + + + + + + + + + + + + <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + + + + <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> + + + + <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> + + + <script src="_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav" role="document"> + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-nav-search"> + + + + <a href="Manual.html" class="icon icon-home"> LAMMPS + + + + </a> + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> +</ul> + + + + </div> + + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="Manual.html">LAMMPS</a> + </nav> + + + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="breadcrumbs navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="Manual.html">Docs</a> »</li> + + <li>fix ave/correlate/long command</li> + <li class="wy-breadcrumbs-aside"> + + + <a href="http://lammps.sandia.gov">Website</a> + <a href="Section_commands.html#comm">Commands</a> + + </li> + </ul> + <hr/> + +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="fix-ave-correlate-long-command"> +<span id="index-0"></span><h1>fix ave/correlate/long command<a class="headerlink" href="#fix-ave-correlate-long-command" title="Permalink to this headline">¶</a></h1> +<div class="section" id="syntax"> +<h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2> +<div class="highlight-python"><div class="highlight"><pre>fix ID group-ID ave/correlate/long Nevery Nfreq value1 value2 ... keyword args ... +</pre></div> +</div> +<ul class="simple"> +<li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><em>fix</em></a> command</li> +<li>ave/correlate/long = style name of this fix command</li> +<li>Nevery = use input values every this many timesteps</li> +<li>Nfreq = save state of the time correlation functions every this many timesteps</li> +<li>one or more input values can be listed</li> +<li>value = c_ID, c_ID[N], f_ID, f_ID[N], v_name</li> +</ul> +<div class="highlight-python"><div class="highlight"><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></div> +</div> +<ul class="simple"> +<li>zero or more keyword/arg pairs may be appended</li> +<li>keyword = <em>type</em> or <em>start</em> or <em>file</em> or <em>overwrite</em> or <em>title1</em> or <em>title2</em> or <em>ncorr</em> or <em>p</em> or <em>m</em></li> +</ul> +<pre class="literal-block"> +<em>type</em> arg = <em>auto</em> or <em>upper</em> or <em>lower</em> or <em>auto/upper</em> or <em>auto/lower</em> or <em>full</em> + 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 +<em>start</em> args = Nstart + Nstart = start accumulating correlations on this timestep +<em>file</em> arg = filename + filename = name of file to output correlation data to +<em>overwrite</em> arg = none = overwrite output file with only latest output +<em>title1</em> arg = string + string = text to print as 1st line of output file +<em>title2</em> arg = string + string = text to print as 2nd line of output file +<em>ncorr</em> arg = Ncorrelators + Ncorrelators = number of correlators to store +<em>nlen</em> args = Nlen + Nlen = length of each correlator +<em>ncount</em> args = Ncount + Ncount = number of values over which succesive correlators are averaged +</pre> +</div> +<div class="section" id="examples"> +<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2> +<div class="highlight-python"><div class="highlight"><pre>fix 1 all ave/correlate/long 5 1000 c_myTemp file temp.correlate +fix 1 all ave/correlate/long 1 10000 & + c_thermo_press[1] c_thermo_press[2] c_thermo_press[3] & + type upper title1 "My correlation data" nlen 15 ncount 3 +</pre></div> +</div> +</div> +<div class="section" id="description"> +<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2> +<p>This fix is similar in spirit and syntax to the <a class="reference internal" href="fix_ave_correlate.html"><em>fix ave/correlate</em></a>. However, this fix allows the +efficient calculation of time correlation functions on the fly over +extremely long time windows without too much CPU overhead, using a +multiple-tau method <a class="reference internal" href="#ramirez"><span>(Ramirez)</span></a> that decreases the resolution +of the stored correlation function with time.</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 compute or fix or the +evaluation of an equal-style variable. See the <a class="reference internal" href="fix_ave_correlate.html"><em>fix ave/correlate</em></a> doc page for details.</p> +<p>The <em>Nevery</em> and <em>Nfreq</em> arguments specify on what timesteps the input +values will be used to calculate correlation data, and the frequency +with which the time correlation functions will be output to a file. +Note that there is no <em>Nrepeat</em> argument, unlike the <a class="reference internal" href="fix_ave_correlate.html"><em>fix ave/correlate</em></a> command.</p> +<p>The optional keywords <em>ncorr</em>, <em>nlen</em>, and <em>ncount</em> are unique to this +command and determine the number of correlation points calculated and +the memory and CPU overhead used by this calculation. <em>Nlen</em> and +<em>ncount</em> determine the amount of averaging done at longer correlation +times. The default values <em>nlen=16</em>, <em>ncount=2</em> ensure that the +systematic error of the multiple-tau correlator is always below the +level of the statistical error of a typical simulation (which depends +on the ensemble size and the simulation length).</p> +<p>The maximum correlation time (in time steps) that can be reached is +given by the formula (nlen-1) * ncount^(ncorr-1). Longer correlation +times are discarded and not calculated. With the default values of +the parameters (ncorr=20, nlen=16 and ncount=2), this corresponds to +7864320 time steps. If longer correlation times are needed, the value +of ncorr should be increased. Using nlen=16 and ncount=2, with +ncorr=30, the maximum number of steps that can be correlated is +80530636808. If ncorr=40, correlation times in excess of 8e12 time +steps can be calculated.</p> +<p>The total memory needed for each correlation pair is roughly +4*ncorr*nlen*8 bytes. With the default values of the parameters, this +corresponds to about 10 KB.</p> +<p>For the meaning of the additional optional keywords, see the <a class="reference internal" href="fix_ave_correlate.html"><em>fix ave/correlate</em></a> doc page.</p> +</div> +<div class="section" id="restart-fix-modify-output-run-start-stop-minimize-info"> +<h2>Restart, fix_modify, output, run start/stop, minimize info<a class="headerlink" href="#restart-fix-modify-output-run-start-stop-minimize-info" title="Permalink to this headline">¶</a></h2> +<p>Since this fix in intended for the calculation of time correlation +functions over very long MD simulations, the information about this +fix is written automatically to binary restart files, so that the time +correlation calculation can continue in subsequent simulations. None +of the fix_modify options are relevant to this fix.</p> +<p>No parameter of this fix can be used with the start/stop keywords of +the run command. This fix is not invoked during energy minimization.</p> +</div> +<div class="section" id="restrictions"> +<h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> +<p>This compute is part of the USER-MISC package. It is only enabled if +LAMMPS was built with that package. See the <a class="reference internal" href="Section_start.html#start-3"><span>Making LAMMPS</span></a> section for more info.</p> +</div> +<div class="section" id="related-commands"> +<h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2> +<p><a class="reference internal" href="fix_ave_correlate.html"><em>fix ave/correlate</em></a></p> +<p><strong>Default:</strong> none</p> +<p>The option defaults for keywords that are also keywords for the <a class="reference internal" href="fix_ave_correlate.html"><em>fix ave/correlate</em></a> command are as follows: type = +auto, start = 0, no file output, title 1,2 = strings as described on +the <a class="reference internal" href="fix_ave_correlate.html"><em>fix ave/correlate</em></a> doc page.</p> +<p>The option defaults for keywords unique to this command are as +follows: ncorr=20, nlen=16, ncount=2.</p> +<hr class="docutils" /> +<p id="ramirez"><strong>(Ramirez)</strong> J. Ramirez, S.K. Sukumaran, B. Vorselaars and +A.E. Likhtman, J. Chem. Phys. 133, 154103 (2010).</p> +</div> +</div> + + + </div> + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright . + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'./', + VERSION:'15 May 2015 version', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> + + + + + + <script type="text/javascript" src="_static/js/theme.js"></script> + + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.StickyNav.enable(); + }); + </script> + + +</body> +</html> \ No newline at end of file diff --git a/doc/fix_ave_correlate_long.txt b/doc/fix_ave_correlate_long.txt new file mode 100644 index 000000000..e744ad4cb --- /dev/null +++ b/doc/fix_ave_correlate_long.txt @@ -0,0 +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/correlate/long command :h3 + +[Syntax:] + +fix ID group-ID ave/correlate/long Nevery Nfreq value1 value2 ... keyword args ... :pre + +ID, group-ID are documented in "fix"_fix.html command :ulb,l +ave/correlate/long = style name of this fix command :l +Nevery = use input values every this many timesteps :l +Nfreq = save state of the time correlation functions 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 {start} or {file} or {overwrite} or {title1} or {title2} or {ncorr} or {p} or {m} :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 + {start} args = Nstart + Nstart = start accumulating correlations on this timestep + {file} arg = filename + filename = name of file to output correlation data to + {overwrite} arg = none = overwrite output file with only latest output + {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 + {ncorr} arg = Ncorrelators + Ncorrelators = number of correlators to store + {nlen} args = Nlen + Nlen = length of each correlator + {ncount} args = Ncount + Ncount = number of values over which succesive correlators are averaged :pre +:ule + +[Examples:] + +fix 1 all ave/correlate/long 5 1000 c_myTemp file temp.correlate +fix 1 all ave/correlate/long 1 10000 & + c_thermo_press\[1\] c_thermo_press\[2\] c_thermo_press\[3\] & + type upper title1 "My correlation data" nlen 15 ncount 3 :pre + +[Description:] + +This fix is similar in spirit and syntax to the "fix +ave/correlate"_fix_ave_correlate.html. However, this fix allows the +efficient calculation of time correlation functions on the fly over +extremely long time windows without too much CPU overhead, using a +multiple-tau method "(Ramirez)"_#Ramirez that decreases the resolution +of the stored correlation function with time. + +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 or fix or the +evaluation of an equal-style variable. See the "fix +ave/correlate"_fix_ave_correlate.html doc page for details. + +The {Nevery} and {Nfreq} arguments specify on what timesteps the input +values will be used to calculate correlation data, and the frequency +with which the time correlation functions will be output to a file. +Note that there is no {Nrepeat} argument, unlike the "fix +ave/correlate"_fix_ave_correlate.html command. + +The optional keywords {ncorr}, {nlen}, and {ncount} are unique to this +command and determine the number of correlation points calculated and +the memory and CPU overhead used by this calculation. {Nlen} and +{ncount} determine the amount of averaging done at longer correlation +times. The default values {nlen=16}, {ncount=2} ensure that the +systematic error of the multiple-tau correlator is always below the +level of the statistical error of a typical simulation (which depends +on the ensemble size and the simulation length). + +The maximum correlation time (in time steps) that can be reached is +given by the formula (nlen-1) * ncount^(ncorr-1). Longer correlation +times are discarded and not calculated. With the default values of +the parameters (ncorr=20, nlen=16 and ncount=2), this corresponds to +7864320 time steps. If longer correlation times are needed, the value +of ncorr should be increased. Using nlen=16 and ncount=2, with +ncorr=30, the maximum number of steps that can be correlated is +80530636808. If ncorr=40, correlation times in excess of 8e12 time +steps can be calculated. + +The total memory needed for each correlation pair is roughly +4*ncorr*nlen*8 bytes. With the default values of the parameters, this +corresponds to about 10 KB. + +For the meaning of the additional optional keywords, see the "fix +ave/correlate"_fix_ave_correlate.html doc page. + +[Restart, fix_modify, output, run start/stop, minimize info:] + +Since this fix in intended for the calculation of time correlation +functions over very long MD simulations, the information about this +fix is written automatically to binary restart files, so that the time +correlation calculation can continue in subsequent simulations. None +of the fix_modify options are relevant to this fix. + +No parameter of this fix can be used with the start/stop keywords of +the run command. This fix is not invoked during energy minimization. + +[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#start_3 section for more info. + +[Related commands:] + +"fix ave/correlate"_fix_ave_correlate.html + +[Default:] none + +The option defaults for keywords that are also keywords for the "fix +ave/correlate"_fix_ave_correlate.html command are as follows: type = +auto, start = 0, no file output, title 1,2 = strings as described on +the "fix ave/correlate"_fix_ave_correlate.html doc page. + +The option defaults for keywords unique to this command are as +follows: ncorr=20, nlen=16, ncount=2. + +:line + +:link(Ramirez) +[(Ramirez)] J. Ramirez, S.K. Sukumaran, B. Vorselaars and +A.E. Likhtman, J. Chem. Phys. 133, 154103 (2010). diff --git a/doc/fix_gcmc.html b/doc/fix_gcmc.html index 21864923c..84b770acf 100644 --- a/doc/fix_gcmc.html +++ b/doc/fix_gcmc.html @@ -1,369 +1,505 @@ -<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> +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>fix gcmc command — LAMMPS 15 May 2015 version documentation</title> + + + + + + + -<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 + + + <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + -<LI>gcmc = style name of this fix command + + <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> + -<LI>N = invoke this fix every N steps + + <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> -<LI>X = average number of GCMC exchanges to attempt every N steps + + <script src="_static/js/modernizr.min.js"></script> -<LI>M = average number of MC moves to attempt every N steps +</head> -<LI>type = atom type for inserted atoms (must be 0 if mol keyword used) +<body class="wy-body-for-nav" role="document"> -<LI>seed = random # seed (positive integer) + <div class="wy-grid-for-nav"> -<LI>T = temperature of the ideal gas reservoir (temperature units) + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-nav-search"> + -<LI>mu = chemical potential of the ideal gas reservoir (energy units) + + <a href="Manual.html" class="icon icon-home"> LAMMPS + -<LI>translate = maximum Monte Carlo translation distance (length units) + + </a> -<LI>zero or more keyword/value pairs may be appended to args + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> -<PRE>keyword = <I>mol</I>, <I>region</I>, <I>maxangle</I>, <I>pressure</I>, <I>fugacity_coeff</I>, <I>full_energy</I>, <I>charge</I>, <I>group</I>, <I>grouptype</I>, <I>intra_energy</I>, or <I>tfac_insert</I> - <I>mol</I> value = template-ID - template-ID = ID of molecule template specified in a separate <A HREF = "molecule.html">molecule</A> command - <I>shake</I> value = fix-ID - fix-ID = ID of <A HREF = "fix_shake.html">fix shake</A> command - <I>region</I> value = region-ID - region-ID = ID of region where MC moves are allowed - <I>maxangle</I> value = maximum molecular rotation angle (degrees) - <I>pressure</I> value = pressure of the gas reservoir (pressure units) - <I>fugacity_coeff</I> value = fugacity coefficient of the gas reservoir (unitless) - <I>full_energy</I> = compute the entire system energy when performing MC moves - <I>charge</I> value = charge of inserted atoms (charge units) - <I>group</I> value = group-ID + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> +</ul> + + + + </div> + + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="Manual.html">LAMMPS</a> + </nav> + + + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="breadcrumbs navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="Manual.html">Docs</a> »</li> + + <li>fix gcmc command</li> + <li class="wy-breadcrumbs-aside"> + + + <a href="http://lammps.sandia.gov">Website</a> + <a href="Section_commands.html#comm">Commands</a> + + </li> + </ul> + <hr/> + +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="fix-gcmc-command"> +<span id="index-0"></span><h1>fix gcmc command<a class="headerlink" href="#fix-gcmc-command" title="Permalink to this headline">¶</a></h1> +<div class="section" id="syntax"> +<h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2> +<div class="highlight-python"><div class="highlight"><pre>fix ID group-ID gcmc N X M type seed T mu displace keyword values ... +</pre></div> +</div> +<ul class="simple"> +<li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><em>fix</em></a> command</li> +<li>gcmc = style name of this fix command</li> +<li>N = invoke this fix every N steps</li> +<li>X = average number of GCMC exchanges to attempt every N steps</li> +<li>M = average number of MC moves to attempt every N steps</li> +<li>type = atom type for inserted atoms (must be 0 if mol keyword used)</li> +<li>seed = random # seed (positive integer)</li> +<li>T = temperature of the ideal gas reservoir (temperature units)</li> +<li>mu = chemical potential of the ideal gas reservoir (energy units)</li> +<li>translate = maximum Monte Carlo translation distance (length units)</li> +<li>zero or more keyword/value pairs may be appended to args</li> +</ul> +<pre class="literal-block"> +keyword = <em>mol</em>, <em>region</em>, <em>maxangle</em>, <em>pressure</em>, <em>fugacity_coeff</em>, <em>full_energy</em>, <em>charge</em>, <em>group</em>, <em>grouptype</em>, <em>intra_energy</em>, or <em>tfac_insert</em> + <em>mol</em> value = template-ID + template-ID = ID of molecule template specified in a separate <a class="reference internal" href="molecule.html"><em>molecule</em></a> command + <em>shake</em> value = fix-ID + fix-ID = ID of <a class="reference internal" href="fix_shake.html"><em>fix shake</em></a> command + <em>region</em> value = region-ID + region-ID = ID of region where MC moves are allowed + <em>maxangle</em> value = maximum molecular rotation angle (degrees) + <em>pressure</em> value = pressure of the gas reservoir (pressure units) + <em>fugacity_coeff</em> value = fugacity coefficient of the gas reservoir (unitless) + <em>full_energy</em> = compute the entire system energy when performing MC moves + <em>charge</em> value = charge of inserted atoms (charge units) + <em>group</em> value = group-ID group-ID = group-ID for inserted atoms (string) - <I>grouptype</I> values = type group-ID + <em>grouptype</em> values = type group-ID type = atom type (int) group-ID = group-ID for inserted atoms (string) - <I>intra_energy</I> value = intramolecular energy (energy units) - <I>tfac_insert</I> value = scale up/down temperature of inserted atoms (unitless) -</PRE> - -</UL> -<P><B>Examples:</B> -</P> -<PRE>fix 2 gas gcmc 10 1000 1000 2 29494 298.0 -0.5 0.01 + <em>intra_energy</em> value = intramolecular energy (energy units) + <em>tfac_insert</em> value = scale up/down temperature of inserted atoms (unitless) +</pre> +</div> +<div class="section" id="examples"> +<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2> +<div class="highlight-python"><div class="highlight"><pre>fix 2 gas gcmc 10 1000 1000 2 29494 298.0 -0.5 0.01 fix 3 water gcmc 10 100 100 0 3456543 3.0 -2.5 0.1 mol my_one_water maxangle 180 full_energy -fix 4 my_gas gcmc 1 10 10 1 123456543 300.0 -12.5 1.0 region disk -</PRE> -<P><B>Description:</B> -</P> -<P>This fix performs grand canonical Monte Carlo (GCMC) exchanges of +fix 4 my_gas gcmc 1 10 10 1 123456543 300.0 -12.5 1.0 region disk +</pre></div> +</div> +</div> +<div class="section" id="description"> +<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2> +<p>This fix performs grand canonical Monte Carlo (GCMC) exchanges of atoms or molecules 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, +<a class="reference internal" href="#frenkel"><span>(Frenkel)</span></a>. If used with the <a class="reference internal" href="fix_nh.html"><em>fix nvt</em></a> command, simulations in the grand canonical ensemble (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>Every N timesteps the fix attempts a number of GCMC exchanges (insertions +materials, or computing vapor-liquid coexistence curves.</p> +<p>Every N timesteps the fix attempts a number of GCMC exchanges (insertions or deletions) of gas atoms or molecules of the given type between the simulation cell and the imaginary reservoir. It also attempts a number of Monte Carlo moves (translations and molecule rotations) of gas of the given type -within the simulation cell or region. The average number of +within the simulation cell or region. The average number of attempted GCMC exchanges is X. The average number of attempted MC moves is M. M should typically be chosen to be approximately equal to the expected number of gas atoms or molecules -of the given type within the simulation cell or region, +of the given type within the simulation cell or region, which will result in roughly one -MC translation per atom or molecule per MC cycle. -</P> -<P>For MC moves of molecular gasses, rotations and translations are each +MC translation per atom or molecule per MC cycle.</p> +<p>For MC moves of molecular gasses, rotations and translations are each attempted with 50% probability. For MC moves of atomic gasses, translations are attempted 100% of the time. For MC exchanges of either molecular or atomic gasses, deletions and insertions are each -attempted with 50% probability. -</P> -<P>All inserted particles are always assigned to two groups: the default group -"all" and the group specified in the fix gcmc command (which can also -be "all"). In addition, particles are also added to any groups specified -by the <I>group</I> and <I>grouptype</I> keywords. +attempted with 50% probability.</p> +<p>All inserted particles are always assigned to two groups: the default group +“all” and the group specified in the fix gcmc command (which can also +be “all”). In addition, particles are also added to any groups specified +by the <em>group</em> and <em>grouptype</em> keywords. If inserted particles are individual atoms, they are -assigned the atom type given by the type argument. If they are molecules, -the type argument has no effect and must be set to zero. Instead, -the type of each atom in the inserted molecule is specified -in the file read by the <A HREF = "molecule.html">molecule</A> command. -</P> -<P>This fix cannot be used to perform MC insertions of gas atoms or +assigned the atom type given by the type argument. If they are molecules, +the type argument has no effect and must be set to zero. Instead, +the type of each atom in the inserted molecule is specified +in the file read by the <a class="reference internal" href="molecule.html"><em>molecule</em></a> command.</p> +<p>This fix cannot be used to perform MC insertions of gas atoms or molecules other than the exchanged type, but MC deletions, translations, and rotations can be performed on any atom/molecule in the fix group. All atoms in the simulation cell can be moved using regular time integration translations, e.g. via -<A HREF = "fix_nvt.html">fix_nvt</A>, resulting in a hybrid GCMC+MD simulation. A +<code class="xref doc docutils literal"><span class="pre">fix_nvt</span></code>, resulting in a hybrid GCMC+MD simulation. A smaller-than-usual timestep size may be needed when running such a hybrid simulation, especially if the inserted molecules are not well -equilibrated. -</P> -<P>This command may optionally use the <I>region</I> keyword to define an -exchange and move 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>. Insertion attempts occur only within the -specified region. For non-rectangular regions, random trial +equilibrated.</p> +<p>This command may optionally use the <em>region</em> keyword to define an +exchange and move volume. The specified region must have been +previously defined with a <a class="reference internal" href="region.html"><em>region</em></a> command. It must be +defined with side = <em>in</em>. Insertion attempts occur only within the +specified region. For non-rectangular regions, random trial points are generated within the rectangular bounding box until a point is found that lies inside the region. If no valid point is generated after 1000 trials, no insertion is performed, but it is counted as an attempted insertion. -Move and deletion attempt candidates are selected +Move and deletion attempt candidates are selected from gas atoms or molecules within the region. If there are no candidates, no move or deletion is performed, but it is counted as an attempt move -or deletion. If an attempted move places the atom or molecule center-of-mass outside -the specified region, a new attempted move is generated. This process is repeated -until the atom or molecule center-of-mass is inside the specified region. -</P> -<P>If used with <A HREF = "fix_nvt.html">fix_nvt</A>, the temperature of the imaginary +or deletion. If an attempted move places the atom or molecule center-of-mass outside +the specified region, a new attempted move is generated. This process is repeated +until the atom or molecule center-of-mass is inside the specified region.</p> +<p>If used with <code class="xref doc docutils literal"><span class="pre">fix_nvt</span></code>, 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 +used in <code class="xref doc docutils literal"><span class="pre">fix_nvt</span></code>. Otherwise, the imaginary reservoir will not be in thermal equilibrium with the simulation cell. Also, it is important that the temperature used by fix nvt be dynamic, -which can be achieved as follows: -</P> -<PRE>compute mdtemp mdatoms temp +which can be achieved as follows:</p> +<div class="highlight-python"><div class="highlight"><pre>compute mdtemp mdatoms temp compute_modify mdtemp dynamic yes fix mdnvt mdatoms nvt temp 300.0 300.0 10.0 -fix_modify mdnvt temp mdtemp -</PRE> -<P>Note that neighbor lists are re-built every timestep that this fix is +fix_modify mdnvt temp mdtemp +</pre></div> +</div> +<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 translations per timestep that atoms can move beyond the neighbor list skin -distance. See the <A HREF = "neighbor.html">neighbor</A> command for details. -</P> -<P>When an atom or molecule is to be inserted, its +distance. See the <a class="reference internal" href="neighbor.html"><em>neighbor</em></a> command for details.</p> +<p>When an atom or molecule is to be inserted, its coordinates are chosen at a random position within the current simulation cell or region, and new atom velocities are randomly chosen from the specified temperature distribution given by T. The effective temperature for new atom velocities can be increased or decreased -using the optional keyword <I>tfac_insert</I> (see below). Relative +using the optional keyword <em>tfac_insert</em> (see below). Relative coordinates for atoms in a molecule are taken from the template molecule provided by the user. The center of mass of the molecule is placed at the insertion point. The orientation of the molecule -is chosen at random by rotating about this point. -</P> -<P>Individual atoms are inserted, unless the <I>mol</I> keyword is used. It -specifies a <I>template-ID</I> previously defined using the -<A HREF = "molecule.html">molecule</A> command, which reads a file that defines the +is chosen at random by rotating about this point.</p> +<p>Individual atoms are inserted, unless the <em>mol</em> keyword is used. It +specifies a <em>template-ID</em> previously defined using the +<a class="reference internal" href="molecule.html"><em>molecule</em></a> command, which reads a file that defines the molecule. The coordinates, atom types, charges, etc, as well as any bond/angle/etc and special neighbor information for the molecule can -be specified in the molecule file. See the <A HREF = "molecule.html">molecule</A> +be specified in the molecule file. See the <a class="reference internal" href="molecule.html"><em>molecule</em></a> command for details. The only settings required to be in this file -are the coordinates and types of atoms in the molecule. -</P> -<P>When not using the <I>mol</I> keyword, you should ensure you do not delete +are the coordinates and types of atoms in the molecule.</p> +<p>When not using the <em>mol</em> keyword, you should ensure you do not delete atoms that are bonded to other atoms, or LAMMPS will soon generate an error when it tries to find bonded neighbors. 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 you wish to insert molecules via the <I>mol</I> keyword, that will have -their bonds or angles constrained via SHAKE, use the <I>shake</I> keyword, -specifying as its value the ID of a separate <A HREF = "fix_shake.html">fix -shake</A> command which also appears in your input script. -</P> -<P>Optionally, users may specify the maximum rotation angle for -molecular rotations using the <I>maxangle</I> keyword and specifying +molecule ID, but does not check for this at the time of deletion.</p> +<p>If you wish to insert molecules via the <em>mol</em> keyword, that will have +their bonds or angles constrained via SHAKE, use the <em>shake</em> keyword, +specifying as its value the ID of a separate <a class="reference internal" href="fix_shake.html"><em>fix shake</em></a> command which also appears in your input script.</p> +<p>Optionally, users may specify the maximum rotation angle for +molecular rotations using the <em>maxangle</em> keyword and specifying the angle in degrees. Rotations are performed by generating a random point on the unit sphere and a random rotation angle on the range [0,maxangle). The molecule is then rotated by that angle about an -axis passing through the molecule center of mass. The axis is parallel -to the unit vector defined by the point on the unit sphere. +axis passing through the molecule center of mass. The axis is parallel +to the unit vector defined by the point on the unit sphere. The same procedure is used for randomly rotating molecules when they -are inserted, except that the maximum angle is 360 degrees. -</P> -<P>Note that fix GCMC does not use configurational bias -MC or any other kind of sampling of intramolecular degrees of freedom. -Inserted molecules can have different orientations, but they will all -have the same intramolecular configuration, -which was specified in the molecule command input. -</P> -<P>For atomic gasses, inserted atoms have the specified atom type, but -deleted atoms are any atoms that have been inserted or that belong -to the user-specified fix group. For molecular gasses, exchanged -molecules use the same atom types as in the template molecule +are inserted, except that the maximum angle is 360 degrees.</p> +<p>Note that fix GCMC does not use configurational bias +MC or any other kind of sampling of intramolecular degrees of freedom. +Inserted molecules can have different orientations, but they will all +have the same intramolecular configuration, +which was specified in the molecule command input.</p> +<p>For atomic gasses, inserted atoms have the specified atom type, but +deleted atoms are any atoms that have been inserted or that belong +to the user-specified fix group. For molecular gasses, exchanged +molecules use the same atom types as in the template molecule supplied by the user. In both cases, exchanged -atoms/molecules 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>The gas reservoir pressure can be specified using the <I>pressure</I> -keyword, in which case the user-specified chemical potential is -ignored. For non-ideal gas reservoirs, the user may also specify the -fugacity coefficient using the <I>fugacity_coeff</I> keyword. -</P> -<P>The <I>full_energy</I> option means that fix GCMC will compute the total +atoms/molecules 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>The gas reservoir pressure can be specified using the <em>pressure</em> +keyword, in which case the user-specified chemical potential is +ignored. For non-ideal gas reservoirs, the user may also specify the +fugacity coefficient using the <em>fugacity_coeff</em> keyword.</p> +<p>The <em>full_energy</em> option means that fix GCMC will compute the total potential energy of the entire simulated system. The total system energy before and after the proposed GCMC move is then used in the -Metropolis criterion to determine whether or not to accept the +Metropolis criterion to determine whether or not to accept the proposed GCMC move. By default, this option is off, in which case only partial energies are computed to determine the difference in -energy that would be caused by the proposed GCMC move. -</P> -<P>The <I>full_energy</I> option is needed for systems with complicated -potential energy calculations, including the following: -</P> -<UL><LI> long-range electrostatics (kspace) -<LI> many-body pair styles -<LI> hybrid pair styles -<LI> eam pair styles -<LI> triclinic systems -<LI> need to include potential energy contributions from other fixes -</UL> -<P>In these cases, LAMMPS will automatically apply the <I>full_energy</I> -keyword and issue a warning message. -</P> -<P>When the <I>mol</I> keyword is used, the <I>full_energy</I> option also includes -the intramolecular energy of inserted and deleted molecules. If this -is not desired, the <I>intra_energy</I> keyword can be used to define an +energy that would be caused by the proposed GCMC move.</p> +<p>The <em>full_energy</em> option is needed for systems with complicated +potential energy calculations, including the following:</p> +<ul class="simple"> +<li>long-range electrostatics (kspace)</li> +<li>many-body pair styles</li> +<li>hybrid pair styles</li> +<li>eam pair styles</li> +<li>triclinic systems</li> +<li>need to include potential energy contributions from other fixes</li> +</ul> +<p>In these cases, LAMMPS will automatically apply the <em>full_energy</em> +keyword and issue a warning message.</p> +<p>When the <em>mol</em> keyword is used, the <em>full_energy</em> option also includes +the intramolecular energy of inserted and deleted molecules. If this +is not desired, the <em>intra_energy</em> keyword can be used to define an amount of energy that is subtracted from the final energy when a molecule is inserted, and added to the initial energy when a molecule is deleted. For molecules that have a non-zero intramolecular energy, this -will ensure roughly the same behavior whether or not the <I>full_energy</I> -option is used. -</P> -<P>Inserted atoms and molecules are assigned random velocities based on the +will ensure roughly the same behavior whether or not the <em>full_energy</em> +option is used.</p> +<p>Inserted atoms and molecules are assigned random velocities based on the specified temperature T. Because the relative velocity of all atoms in the molecule is zero, this may result in inserted molecules that are systematically too cold. In addition, the intramolecular potential energy of the inserted molecule may cause the kinetic energy -of the molecule to quickly increase or decrease after insertion. -The <I>tfac_insert</I> keyword allows the user to counteract these effects -by changing the temperature used to assign velocities to +of the molecule to quickly increase or decrease after insertion. +The <em>tfac_insert</em> keyword allows the user to counteract these effects +by changing the temperature used to assign velocities to inserted atoms and molecules by a constant factor. For a particular application, some experimentation may be required -to find a value of <I>tfac_insert</I> that results in inserted molecules that -equilibrate quickly to the correct temperature. -</P> -<P>Some fixes have an associated potential energy. Examples of such fixes -include: <A HREF = "fix_efield.html">efield</A>, <A HREF = "fix_gravity.html">gravity</A>, -<A HREF = "fix_addforce.html">addforce</A>, <A HREF = "fix_langevin.html">langevin</A>, -<A HREF = "fix_restrain.html">restrain</A>, <A HREF = "fix_temp_berendsen.html">temp/berendsen</A>, -<A HREF = "fix_temp_rescale.html">temp/rescale</A>, and <A HREF = "fix_wall.html">wall fixes</A>. -For that energy to be included in the total potential energy of the +to find a value of <em>tfac_insert</em> that results in inserted molecules that +equilibrate quickly to the correct temperature.</p> +<p>Some fixes have an associated potential energy. Examples of such fixes +include: <a class="reference internal" href="fix_efield.html"><em>efield</em></a>, <a class="reference internal" href="fix_gravity.html"><em>gravity</em></a>, +<a class="reference internal" href="fix_addforce.html"><em>addforce</em></a>, <a class="reference internal" href="fix_langevin.html"><em>langevin</em></a>, +<a class="reference internal" href="fix_restrain.html"><em>restrain</em></a>, <a class="reference internal" href="fix_temp_berendsen.html"><em>temp/berendsen</em></a>, +<a class="reference internal" href="fix_temp_rescale.html"><em>temp/rescale</em></a>, and <a class="reference internal" href="fix_wall.html"><em>wall fixes</em></a>. +For that energy to be included in the total potential energy of the system (the quantity used when performing GCMC moves), -you MUST enable the <A HREF = "fix_modify.html">fix_modify</A> <I>energy</I> option for -that fix. The doc pages for individual <A HREF = "fix.html">fix</A> commands -specify if this should be done. -</P> -<P>Use the <I>charge</I> option to insert atoms with a user-specified point -charge. Note that doing so will cause the system to become non-neutral. -LAMMPS issues a warning when using long-range electrostatics (kspace) -with non-neutral systems. See the -<A HREF = "compute_group_group.html">compute_group_group</A> documentation for more -details about simulating non-neutral systems with kspace on. -</P> -<P>Use of this fix typically will cause the number of atoms to fluctuate, +you MUST enable the <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> <em>energy</em> option for +that fix. The doc pages for individual <a class="reference internal" href="fix.html"><em>fix</em></a> commands +specify if this should be done.</p> +<p>Use the <em>charge</em> option to insert atoms with a user-specified point +charge. Note that doing so will cause the system to become non-neutral. +LAMMPS issues a warning when using long-range electrostatics (kspace) +with non-neutral systems. See the +<a class="reference internal" href="compute_group_group.html"><em>compute_group_group</em></a> documentation for more +details about simulating non-neutral systems with kspace on.</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 +<a class="reference internal" href="compute_modify.html"><em>compute_modify</em></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 +temperature is computed. Here is the necessary command:</p> +<div class="highlight-python"><div class="highlight"><pre>compute_modify thermo_temp dynamic yes +</pre></div> +</div> +<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 parameters 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>The <I>group</I> keyword assigns all inserted atoms to the <A HREF = "group.html">group</A> -of the group-ID value. The <I>grouptype</I> keyword assigns all -inserted atoms of the specified type to the <A HREF = "group.html">group</A> -of the group-ID value. -</P> -<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B> -</P> -<P>This fix writes the state of the fix to <A HREF = "restart.html">binary restart -files</A>. This includes information about the random +mass = 39.948 amu.</p> +<p>The <em>group</em> keyword assigns all inserted atoms to the <a class="reference internal" href="group.html"><em>group</em></a> +of the group-ID value. The <em>grouptype</em> keyword assigns all +inserted atoms of the specified type to the <a class="reference internal" href="group.html"><em>group</em></a> +of the group-ID value.</p> +</div> +<div class="section" id="restart-fix-modify-output-run-start-stop-minimize-info"> +<h2>Restart, fix_modify, output, run start/stop, minimize info<a class="headerlink" href="#restart-fix-modify-output-run-start-stop-minimize-info" title="Permalink to this headline">¶</a></h2> +<p>This fix writes the state of the fix to <a class="reference internal" href="restart.html"><em>binary restart files</em></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 +the <a class="reference internal" href="read_restart.html"><em>read_restart</em></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 8, which can be accessed -by various <A HREF = "Section_howto.html#howto_15">output commands</A>. The vector -values are the following global cumulative quantities: -</P> -<UL><LI>1 = translation attempts -<LI>2 = translation successes -<LI>3 = insertion attempts -<LI>4 = insertion successes -<LI>5 = deletion attempts -<LI>6 = deletion successes -<LI>7 = rotation attempts -<LI>8 = rotation 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>Can be run in parallel, but aspects of the GCMC part will not scale -well in parallel. Only usable for 3D simulations. -</P> -<P>Note that very lengthy simulations involving insertions/deletions of +the operation of the fix continues in an uninterrupted fashion.</p> +<p>None of the <a class="reference internal" href="fix_modify.html"><em>fix_modify</em></a> options are relevant to this +fix.</p> +<p>This fix computes a global vector of length 8, which can be accessed +by various <a class="reference internal" href="Section_howto.html#howto-15"><span>output commands</span></a>. The vector +values are the following global cumulative quantities:</p> +<ul class="simple"> +<li>1 = translation attempts</li> +<li>2 = translation successes</li> +<li>3 = insertion attempts</li> +<li>4 = insertion successes</li> +<li>5 = deletion attempts</li> +<li>6 = deletion successes</li> +<li>7 = rotation attempts</li> +<li>8 = rotation successes</li> +</ul> +<p>The vector values calculated by this fix are “extensive”.</p> +<p>No parameter of this fix can be used with the <em>start/stop</em> keywords of +the <a class="reference internal" href="run.html"><em>run</em></a> command. This fix is not invoked during <a class="reference internal" href="minimize.html"><em>energy minimization</em></a>.</p> +</div> +<div class="section" id="restrictions"> +<h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> +<p>This fix is part of the MC package. It is only enabled if LAMMPS was +built with that package. See the <a class="reference internal" href="Section_start.html#start-3"><span>Making LAMMPS</span></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>Can be run in parallel, but aspects of the GCMC part will not scale +well in parallel. Only usable for 3D simulations.</p> +<p>Note that very lengthy simulations involving insertions/deletions of billions of gas molecules may run out of atom or molecule IDs and -trigger an error, so it is better to run multiple shorter-duration +trigger an error, so it is better to run multiple shorter-duration simulations. Likewise, very large molecules have not been tested -and may turn out to be problematic. -</P> -<P>Use of multiple fix gcmc commands in the same input script can be -problematic if using a template molecule. The issue is that the +and may turn out to be problematic.</p> +<p>Use of multiple fix gcmc commands in the same input script can be +problematic if using a template molecule. The issue is that the user-referenced template molecule in the second fix gcmc command may no longer exist since it might have been deleted by the first fix gcmc command. An existing template molecule will need to be -referenced by the user for each subsequent fix gcmc command. -</P> -<P><B>Related commands:</B> -</P> -<P><A HREF = "fix_atom_swap.html">fix atom/swap</A>, -<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>, -<A HREF = "delete_atoms.html">delete_atoms</A> -</P> -<P><B>Default:</B> -</P> -<P>The option defaults are mol = no, maxangle = 10, full_energy = no, +referenced by the user for each subsequent fix gcmc command.</p> +</div> +<div class="section" id="related-commands"> +<h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2> +<p><a class="reference internal" href="fix_atom_swap.html"><em>fix atom/swap</em></a>, +<code class="xref doc docutils literal"><span class="pre">fix</span> <span class="pre">nvt</span></code>, <a class="reference internal" href="neighbor.html"><em>neighbor</em></a>, +<a class="reference internal" href="fix_deposit.html"><em>fix deposit</em></a>, <a class="reference internal" href="fix_evaporate.html"><em>fix evaporate</em></a>, +<a class="reference internal" href="delete_atoms.html"><em>delete_atoms</em></a></p> +</div> +<div class="section" id="default"> +<h2>Default<a class="headerlink" href="#default" title="Permalink to this headline">¶</a></h2> +<p>The option defaults are mol = no, maxangle = 10, full_energy = no, except for the situations where full_energy is required, as -listed above. -</P> -<HR> +listed above.</p> +<hr class="docutils" /> +<p id="frenkel"><strong>(Frenkel)</strong> Frenkel and Smit, Understanding Molecular Simulation, +Academic Press, London, 2002.</p> +</div> +</div> + + + </div> + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright . + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'./', + VERSION:'15 May 2015 version', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> + + + + + + <script type="text/javascript" src="_static/js/theme.js"></script> + -<A NAME = "Frenkel"></A> + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.StickyNav.enable(); + }); + </script> + -<P><B>(Frenkel)</B> Frenkel and Smit, Understanding Molecular Simulation, -Academic Press, London, 2002. -</P> -</HTML> +</body> +</html> \ No newline at end of file diff --git a/doc/genindex.html b/doc/genindex.html index 7ef4cf69a..36d13dad4 100644 --- a/doc/genindex.html +++ b/doc/genindex.html @@ -1,2220 +1,2228 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Index — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li></li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <h1 id="index">Index</h1> <div class="genindex-jumpbox"> <a href="#A"><strong>A</strong></a> | <a href="#B"><strong>B</strong></a> | <a href="#C"><strong>C</strong></a> | <a href="#D"><strong>D</strong></a> | <a href="#E"><strong>E</strong></a> | <a href="#F"><strong>F</strong></a> | <a href="#G"><strong>G</strong></a> | <a href="#I"><strong>I</strong></a> | <a href="#J"><strong>J</strong></a> | <a href="#K"><strong>K</strong></a> | <a href="#L"><strong>L</strong></a> | <a href="#M"><strong>M</strong></a> | <a href="#N"><strong>N</strong></a> | <a href="#P"><strong>P</strong></a> | <a href="#Q"><strong>Q</strong></a> | <a href="#R"><strong>R</strong></a> | <a href="#S"><strong>S</strong></a> | <a href="#T"><strong>T</strong></a> | <a href="#U"><strong>U</strong></a> | <a href="#V"><strong>V</strong></a> | <a href="#W"><strong>W</strong></a> </div> <h2 id="A">A</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="angle_coeff.html#index-0">angle_coeff</a> </dt> <dt><a href="angle_style.html#index-0">angle_style</a> </dt> <dt><a href="angle_charmm.html#index-0">angle_style charmm</a> </dt> <dt><a href="angle_class2.html#index-0">angle_style class2</a> </dt> <dt><a href="angle_cosine.html#index-0">angle_style cosine</a> </dt> <dt><a href="angle_cosine_delta.html#index-0">angle_style cosine/delta</a> </dt> <dt><a href="angle_cosine_periodic.html#index-0">angle_style cosine/periodic</a> </dt> <dt><a href="angle_cosine_shift.html#index-0">angle_style cosine/shift</a> </dt> <dt><a href="angle_cosine_shift_exp.html#index-0">angle_style cosine/shift/exp</a> </dt> <dt><a href="angle_cosine_squared.html#index-0">angle_style cosine/squared</a> </dt> <dt><a href="angle_dipole.html#index-0">angle_style dipole</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="angle_fourier.html#index-0">angle_style fourier</a> </dt> <dt><a href="angle_fourier_simple.html#index-0">angle_style fourier/simple</a> </dt> <dt><a href="angle_harmonic.html#index-0">angle_style harmonic</a> </dt> <dt><a href="angle_hybrid.html#index-0">angle_style hybrid</a> </dt> <dt><a href="angle_none.html#index-0">angle_style none</a> </dt> <dt><a href="angle_quartic.html#index-0">angle_style quartic</a> </dt> <dt><a href="angle_sdk.html#index-0">angle_style sdk</a> </dt> <dt><a href="angle_table.html#index-0">angle_style table</a> </dt> <dt><a href="atom_modify.html#index-0">atom_modify</a> </dt> <dt><a href="atom_style.html#index-0">atom_style</a> </dt> </dl></td> </tr></table> <h2 id="B">B</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="balance.html#index-0">balance</a> </dt> <dt><a href="bond_coeff.html#index-0">bond_coeff</a> </dt> <dt><a href="bond_style.html#index-0">bond_style</a> </dt> <dt><a href="bond_class2.html#index-0">bond_style class2</a> </dt> <dt><a href="bond_fene.html#index-0">bond_style fene</a> </dt> <dt><a href="bond_fene_expand.html#index-0">bond_style fene/expand</a> </dt> <dt><a href="bond_harmonic.html#index-0">bond_style harmonic</a> </dt> <dt><a href="bond_harmonic_shift.html#index-0">bond_style harmonic/shift</a> </dt> <dt><a href="bond_harmonic_shift_cut.html#index-0">bond_style harmonic/shift/cut</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="bond_hybrid.html#index-0">bond_style hybrid</a> </dt> <dt><a href="bond_morse.html#index-0">bond_style morse</a> </dt> <dt><a href="bond_none.html#index-0">bond_style none</a> </dt> <dt><a href="bond_nonlinear.html#index-0">bond_style nonlinear</a> </dt> <dt><a href="bond_quartic.html#index-0">bond_style quartic</a> </dt> <dt><a href="bond_table.html#index-0">bond_style table</a> </dt> <dt><a href="boundary.html#index-0">boundary</a> </dt> <dt><a href="box.html#index-0">box</a> </dt> </dl></td> </tr></table> <h2 id="C">C</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="change_box.html#index-0">change_box</a> </dt> <dt><a href="clear.html#index-0">clear</a> </dt> <dt><a href="comm_modify.html#index-0">comm_modify</a> </dt> <dt><a href="comm_style.html#index-0">comm_style</a> </dt> <dt><a href="compute.html#index-0">compute</a> </dt> <dt><a href="compute_ackland_atom.html#index-0">compute ackland/atom</a> </dt> <dt><a href="compute_angle_local.html#index-0">compute angle/local</a> </dt> <dt><a href="compute_angmom_chunk.html#index-0">compute angmom/chunk</a> </dt> <dt><a href="compute_basal_atom.html#index-0">compute basal/atom</a> </dt> <dt><a href="compute_body_local.html#index-0">compute body/local</a> </dt> <dt><a href="compute_bond_local.html#index-0">compute bond/local</a> </dt> <dt><a href="compute_centro_atom.html#index-0">compute centro/atom</a> </dt> <dt><a href="compute_chunk_atom.html#index-0">compute chunk/atom</a> </dt> <dt><a href="compute_cluster_atom.html#index-0">compute cluster/atom</a> </dt> <dt><a href="compute_cna_atom.html#index-0">compute cna/atom</a> </dt> <dt><a href="compute_com.html#index-0">compute com</a> </dt> <dt><a href="compute_com_chunk.html#index-0">compute com/chunk</a> </dt> <dt><a href="compute_contact_atom.html#index-0">compute contact/atom</a> </dt> <dt><a href="compute_coord_atom.html#index-0">compute coord/atom</a> </dt> <dt><a href="compute_damage_atom.html#index-0">compute damage/atom</a> </dt> <dt><a href="compute_dihedral_local.html#index-0">compute dihedral/local</a> </dt> <dt><a href="compute_dilatation_atom.html#index-0">compute dilatation/atom</a> </dt> <dt><a href="compute_displace_atom.html#index-0">compute displace/atom</a> </dt> <dt><a href="compute_erotate_asphere.html#index-0">compute erotate/asphere</a> </dt> <dt><a href="compute_erotate_rigid.html#index-0">compute erotate/rigid</a> </dt> <dt><a href="compute_erotate_sphere.html#index-0">compute erotate/sphere</a> </dt> <dt><a href="compute_erotate_sphere_atom.html#index-0">compute erotate/sphere/atom</a> </dt> <dt><a href="compute_event_displace.html#index-0">compute event/displace</a> </dt> <dt><a href="compute_fep.html#index-0">compute fep</a> </dt> <dt><a href="compute_tally.html#index-0">compute force/tally</a> </dt> <dt><a href="compute_group_group.html#index-0">compute group/group</a> </dt> <dt><a href="compute_gyration.html#index-0">compute gyration</a> </dt> <dt><a href="compute_gyration_chunk.html#index-0">compute gyration/chunk</a> </dt> <dt><a href="compute_heat_flux.html#index-0">compute heat/flux</a> </dt> <dt><a href="compute_improper_local.html#index-0">compute improper/local</a> </dt> <dt><a href="compute_inertia_chunk.html#index-0">compute inertia/chunk</a> </dt> <dt><a href="compute_ke.html#index-0">compute ke</a> </dt> <dt><a href="compute_ke_atom.html#index-0">compute ke/atom</a> </dt> <dt><a href="compute_ke_atom_eff.html#index-0">compute ke/atom/eff</a> </dt> <dt><a href="compute_ke_eff.html#index-0">compute ke/eff</a> </dt> <dt><a href="compute_ke_rigid.html#index-0">compute ke/rigid</a> </dt> <dt><a href="compute_meso_e_atom.html#index-0">compute meso_e/atom</a> </dt> <dt><a href="compute_meso_rho_atom.html#index-0">compute meso_rho/atom</a> </dt> <dt><a href="compute_meso_t_atom.html#index-0">compute meso_t/atom</a> </dt> <dt><a href="compute_msd.html#index-0">compute msd</a> </dt> <dt><a href="compute_msd_chunk.html#index-0">compute msd/chunk</a> </dt> <dt><a href="compute_msd_nongauss.html#index-0">compute msd/nongauss</a> </dt> <dt><a href="compute_omega_chunk.html#index-0">compute omega/chunk</a> </dt> <dt><a href="compute_pair.html#index-0">compute pair</a> </dt> <dt><a href="compute_pair_local.html#index-0">compute pair/local</a> </dt> <dt><a href="compute_pe.html#index-0">compute pe</a> </dt> <dt><a href="compute_pe_atom.html#index-0">compute pe/atom</a> </dt> <dt><a href="compute_plasticity_atom.html#index-0">compute plasticity/atom</a> </dt> <dt><a href="compute_pressure.html#index-0">compute pressure</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="compute_property_atom.html#index-0">compute property/atom</a> </dt> <dt><a href="compute_property_chunk.html#index-0">compute property/chunk</a> </dt> <dt><a href="compute_property_local.html#index-0">compute property/local</a> </dt> <dt><a href="compute_rdf.html#index-0">compute rdf</a> </dt> <dt><a href="compute_reduce.html#index-0">compute reduce</a> </dt> <dt><a href="compute_saed.html#index-0">compute saed</a> </dt> <dt><a href="compute_slice.html#index-0">compute slice</a> </dt> <dt><a href="compute_smd_contact_radius.html#index-0">compute smd/contact_radius</a> </dt> <dt><a href="compute_smd_damage.html#index-0">compute smd/damage</a> </dt> <dt><a href="compute_smd_hourglass_error.html#index-0">compute smd/hourglass_error</a> </dt> <dt><a href="compute_smd_internal_energy.html#index-0">compute smd/internal_energy</a> </dt> <dt><a href="compute_smd_plastic_strain.html#index-0">compute smd/plastic_strain</a> </dt> <dt><a href="compute_smd_plastic_strain_rate.html#index-0">compute smd/plastic_strain_rate</a> </dt> <dt><a href="compute_smd_rho.html#index-0">compute smd/rho</a> </dt> <dt><a href="compute_smd_tlsph_defgrad.html#index-0">compute smd/tlsph_defgrad</a> </dt> <dt><a href="compute_smd_tlsph_dt.html#index-0">compute smd/tlsph_dt</a> </dt> <dt><a href="compute_smd_tlsph_num_neighs.html#index-0">compute smd/tlsph_num_neighs</a> </dt> <dt><a href="compute_smd_tlsph_shape.html#index-0">compute smd/tlsph_shape</a> </dt> <dt><a href="compute_smd_tlsph_strain.html#index-0">compute smd/tlsph_strain</a> </dt> <dt><a href="compute_smd_tlsph_strain_rate.html#index-0">compute smd/tlsph_strain_rate</a> </dt> <dt><a href="compute_smd_tlsph_stress.html#index-0">compute smd/tlsph_stress</a> </dt> <dt><a href="compute_smd_ulsph_num_neighs.html#index-0">compute smd/ulsph_num_neighs</a> </dt> <dt><a href="compute_smd_ulsph_strain.html#index-0">compute smd/ulsph_strain</a> </dt> <dt><a href="compute_smd_ulsph_strain_rate.html#index-0">compute smd/ulsph_strain_rate</a> </dt> <dt><a href="compute_smd_ulsph_stress.html#index-0">compute smd/ulsph_stress</a> </dt> <dt><a href="compute_smd_vol.html#index-0">compute smd/vol</a> </dt> <dt><a href="compute_sna_atom.html#index-0">compute sna/atom</a> </dt> <dt><a href="compute_stress_atom.html#index-0">compute stress/atom</a> </dt> <dt><a href="compute_temp.html#index-0">compute temp</a> </dt> <dt><a href="compute_temp_asphere.html#index-0">compute temp/asphere</a> </dt> <dt><a href="compute_temp_chunk.html#index-0">compute temp/chunk</a> </dt> <dt><a href="compute_temp_com.html#index-0">compute temp/com</a> </dt> <dt><a href="compute_temp_cs.html#index-0">compute temp/cs</a> </dt> <dt><a href="compute_temp_deform.html#index-0">compute temp/deform</a> </dt> <dt><a href="compute_temp_deform_eff.html#index-0">compute temp/deform/eff</a> </dt> <dt><a href="compute_temp_drude.html#index-0">compute temp/drude</a> </dt> <dt><a href="compute_temp_eff.html#index-0">compute temp/eff</a> </dt> <dt><a href="compute_temp_partial.html#index-0">compute temp/partial</a> </dt> <dt><a href="compute_temp_profile.html#index-0">compute temp/profile</a> </dt> <dt><a href="compute_temp_ramp.html#index-0">compute temp/ramp</a> </dt> <dt><a href="compute_temp_region.html#index-0">compute temp/region</a> </dt> <dt><a href="compute_temp_region_eff.html#index-0">compute temp/region/eff</a> </dt> <dt><a href="compute_temp_rotate.html#index-0">compute temp/rotate</a> </dt> <dt><a href="compute_temp_sphere.html#index-0">compute temp/sphere</a> </dt> <dt><a href="compute_ti.html#index-0">compute ti</a> </dt> <dt><a href="compute_torque_chunk.html#index-0">compute torque/chunk</a> </dt> <dt><a href="compute_vacf.html#index-0">compute vacf</a> </dt> <dt><a href="compute_vcm_chunk.html#index-0">compute vcm/chunk</a> </dt> <dt><a href="compute_voronoi_atom.html#index-0">compute voronoi/atom</a> </dt> <dt><a href="compute_xrd.html#index-0">compute xrd</a> </dt> <dt><a href="compute_modify.html#index-0">compute_modify</a> </dt> <dt><a href="create_atoms.html#index-0">create_atoms</a> </dt> <dt><a href="create_bonds.html#index-0">create_bonds</a> </dt> <dt><a href="create_box.html#index-0">create_box</a> </dt> </dl></td> </tr></table> <h2 id="D">D</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="delete_atoms.html#index-0">delete_atoms</a> </dt> <dt><a href="delete_bonds.html#index-0">delete_bonds</a> </dt> <dt><a href="dielectric.html#index-0">dielectric</a> </dt> <dt><a href="dihedral_coeff.html#index-0">dihedral_coeff</a> </dt> <dt><a href="dihedral_style.html#index-0">dihedral_style</a> </dt> <dt><a href="dihedral_charmm.html#index-0">dihedral_style charmm</a> </dt> <dt><a href="dihedral_class2.html#index-0">dihedral_style class2</a> </dt> <dt><a href="dihedral_cosine_shift_exp.html#index-0">dihedral_style cosine/shift/exp</a> </dt> <dt><a href="dihedral_fourier.html#index-0">dihedral_style fourier</a> </dt> <dt><a href="dihedral_harmonic.html#index-0">dihedral_style harmonic</a> </dt> <dt><a href="dihedral_helix.html#index-0">dihedral_style helix</a> </dt> <dt><a href="dihedral_hybrid.html#index-0">dihedral_style hybrid</a> </dt> <dt><a href="dihedral_multi_harmonic.html#index-0">dihedral_style multi/harmonic</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="dihedral_nharmonic.html#index-0">dihedral_style nharmonic</a> </dt> <dt><a href="dihedral_none.html#index-0">dihedral_style none</a> </dt> <dt><a href="dihedral_opls.html#index-0">dihedral_style opls</a> </dt> <dt><a href="dihedral_quadratic.html#index-0">dihedral_style quadratic</a> </dt> <dt><a href="dihedral_table.html#index-0">dihedral_style table</a> </dt> <dt><a href="dimension.html#index-0">dimension</a> </dt> <dt><a href="displace_atoms.html#index-0">displace_atoms</a> </dt> <dt><a href="dump.html#index-0">dump</a> </dt> <dt><a href="dump_h5md.html#index-0">dump h5md</a> </dt> <dt><a href="dump_image.html#index-0">dump image</a> </dt> <dt><a href="dump_molfile.html#index-0">dump molfile</a> </dt> <dt><a href="dump_modify.html#index-0">dump_modify</a> </dt> </dl></td> </tr></table> <h2 id="E">E</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="echo.html#index-0">echo</a> </dt> </dl></td> </tr></table> <h2 id="F">F</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="fix.html#index-0">fix</a> </dt> <dt><a href="fix_adapt.html#index-0">fix adapt</a> </dt> <dt><a href="fix_adapt_fep.html#index-0">fix adapt/fep</a> </dt> <dt><a href="fix_addforce.html#index-0">fix addforce</a> </dt> <dt><a href="fix_addtorque.html#index-0">fix addtorque</a> </dt> <dt><a href="fix_append_atoms.html#index-0">fix append/atoms</a> </dt> <dt><a href="fix_atc.html#index-0">fix atc</a> </dt> <dt><a href="fix_atom_swap.html#index-0">fix atom/swap</a> </dt> <dt><a href="fix_ave_atom.html#index-0">fix ave/atom</a> </dt> <dt><a href="fix_ave_chunk.html#index-0">fix ave/chunk</a> </dt> <dt><a href="fix_ave_correlate.html#index-0">fix ave/correlate</a> </dt> + <dt><a href="fix_ave_correlate_long.html#index-0">fix ave/correlate/long</a> + </dt> + + <dt><a href="fix_ave_histo.html#index-0">fix ave/histo</a> </dt> <dt><a href="fix_ave_spatial.html#index-0">fix ave/spatial</a> </dt> <dt><a href="fix_ave_spatial_sphere.html#index-0">fix ave/spatial/sphere</a> </dt> <dt><a href="fix_ave_time.html#index-0">fix ave/time</a> </dt> <dt><a href="fix_aveforce.html#index-0">fix aveforce</a> </dt> <dt><a href="fix_balance.html#index-0">fix balance</a> </dt> <dt><a href="fix_bond_break.html#index-0">fix bond/break</a> </dt> <dt><a href="fix_bond_create.html#index-0">fix bond/create</a> </dt> <dt><a href="fix_bond_swap.html#index-0">fix bond/swap</a> </dt> <dt><a href="fix_box_relax.html#index-0">fix box/relax</a> </dt> <dt><a href="fix_colvars.html#index-0">fix colvars</a> </dt> <dt><a href="fix_deform.html#index-0">fix deform</a> </dt> <dt><a href="fix_deposit.html#index-0">fix deposit</a> </dt> <dt><a href="fix_drag.html#index-0">fix drag</a> </dt> <dt><a href="fix_drude.html#index-0">fix drude</a> </dt> <dt><a href="fix_drude_transform.html#index-0">fix drude/transform/direct</a> </dt> <dt><a href="fix_dt_reset.html#index-0">fix dt/reset</a> </dt> <dt><a href="fix_efield.html#index-0">fix efield</a> </dt> <dt><a href="fix_enforce2d.html#index-0">fix enforce2d</a> </dt> <dt><a href="fix_evaporate.html#index-0">fix evaporate</a> </dt> <dt><a href="fix_external.html#index-0">fix external</a> </dt> <dt><a href="fix_freeze.html#index-0">fix freeze</a> </dt> <dt><a href="fix_gcmc.html#index-0">fix gcmc</a> </dt> <dt><a href="fix_gld.html#index-0">fix gld</a> </dt> <dt><a href="fix_gle.html#index-0">fix gle</a> </dt> <dt><a href="fix_gravity.html#index-0">fix gravity</a> </dt> <dt><a href="fix_heat.html#index-0">fix heat</a> </dt> <dt><a href="fix_imd.html#index-0">fix imd</a> </dt> <dt><a href="fix_indent.html#index-0">fix indent</a> </dt> <dt><a href="fix_ipi.html#index-0">fix ipi</a> </dt> <dt><a href="fix_langevin.html#index-0">fix langevin</a> </dt> <dt><a href="fix_langevin_drude.html#index-0">fix langevin/drude</a> </dt> <dt><a href="fix_langevin_eff.html#index-0">fix langevin/eff</a> </dt> <dt><a href="fix_lb_fluid.html#index-0">fix lb/fluid</a> </dt> <dt><a href="fix_lb_momentum.html#index-0">fix lb/momentum</a> </dt> <dt><a href="fix_lb_pc.html#index-0">fix lb/pc</a> </dt> <dt><a href="fix_lb_rigid_pc_sphere.html#index-0">fix lb/rigid/pc/sphere</a> </dt> <dt><a href="fix_lb_viscous.html#index-0">fix lb/viscous</a> </dt> <dt><a href="fix_lineforce.html#index-0">fix lineforce</a> </dt> <dt><a href="fix_meso.html#index-0">fix meso</a> </dt> <dt><a href="fix_meso_stationary.html#index-0">fix meso/stationary</a> </dt> <dt><a href="fix_momentum.html#index-0">fix momentum</a> </dt> <dt><a href="fix_move.html#index-0">fix move</a> </dt> <dt><a href="fix_msst.html#index-0">fix msst</a> </dt> <dt><a href="fix_neb.html#index-0">fix neb</a> </dt> <dt><a href="fix_nph_asphere.html#index-0">fix nph/asphere</a> </dt> <dt><a href="fix_nph_sphere.html#index-0">fix nph/sphere</a> </dt> <dt><a href="fix_nphug.html#index-0">fix nphug</a> </dt> <dt><a href="fix_npt_asphere.html#index-0">fix npt/asphere</a> </dt> <dt><a href="fix_npt_sphere.html#index-0">fix npt/sphere</a> </dt> <dt><a href="fix_nve.html#index-0">fix nve</a> </dt> <dt><a href="fix_nve_asphere.html#index-0">fix nve/asphere</a> </dt> <dt><a href="fix_nve_asphere_noforce.html#index-0">fix nve/asphere/noforce</a> </dt> <dt><a href="fix_nve_body.html#index-0">fix nve/body</a> </dt> <dt><a href="fix_nve_eff.html#index-0">fix nve/eff</a> </dt> <dt><a href="fix_nve_limit.html#index-0">fix nve/limit</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="fix_nve_line.html#index-0">fix nve/line</a> </dt> <dt><a href="fix_nve_noforce.html#index-0">fix nve/noforce</a> </dt> <dt><a href="fix_nve_sphere.html#index-0">fix nve/sphere</a> </dt> <dt><a href="fix_nve_tri.html#index-0">fix nve/tri</a> </dt> <dt><a href="fix_nh.html#index-0">fix nvt</a> </dt> <dt><a href="fix_nvt_asphere.html#index-0">fix nvt/asphere</a> </dt> <dt><a href="fix_nh_eff.html#index-0">fix nvt/eff</a> </dt> <dt><a href="fix_nvt_sllod.html#index-0">fix nvt/sllod</a> </dt> <dt><a href="fix_nvt_sllod_eff.html#index-0">fix nvt/sllod/eff</a> </dt> <dt><a href="fix_nvt_sphere.html#index-0">fix nvt/sphere</a> </dt> <dt><a href="fix_oneway.html#index-0">fix oneway</a> </dt> <dt><a href="fix_orient_fcc.html#index-0">fix orient/fcc</a> </dt> <dt><a href="fix_phonon.html#index-0">fix phonon</a> </dt> <dt><a href="fix_pimd.html#index-0">fix pimd</a> </dt> <dt><a href="fix_planeforce.html#index-0">fix planeforce</a> </dt> <dt><a href="fix_pour.html#index-0">fix pour</a> </dt> <dt><a href="fix_press_berendsen.html#index-0">fix press/berendsen</a> </dt> <dt><a href="fix_print.html#index-0">fix print</a> </dt> <dt><a href="fix_property_atom.html#index-0">fix property/atom</a> </dt> <dt><a href="fix_qbmsst.html#index-0">fix qbmsst</a> </dt> <dt><a href="fix_qeq_comb.html#index-0">fix qeq/comb</a> </dt> <dt><a href="fix_qeq.html#index-0">fix qeq/point</a> </dt> <dt><a href="fix_qeq_reax.html#index-0">fix qeq/reax</a> </dt> <dt><a href="fix_qmmm.html#index-0">fix qmmm</a> </dt> <dt><a href="fix_qtb.html#index-0">fix qtb</a> </dt> <dt><a href="fix_reax_bonds.html#index-0">fix reax/bonds</a> </dt> <dt><a href="fix_reaxc_species.html#index-0">fix reax/c/species</a> </dt> <dt><a href="fix_recenter.html#index-0">fix recenter</a> </dt> <dt><a href="fix_restrain.html#index-0">fix restrain</a> </dt> <dt><a href="fix_rigid.html#index-0">fix rigid</a> </dt> <dt><a href="fix_saed_vtk.html#index-0">fix saed/vtk</a> </dt> <dt><a href="fix_setforce.html#index-0">fix setforce</a> </dt> <dt><a href="fix_shake.html#index-0">fix shake</a> </dt> <dt><a href="fix_smd.html#index-0">fix smd</a> </dt> <dt><a href="fix_smd_adjust_dt.html#index-0">fix smd/adjust_dt</a> </dt> <dt><a href="fix_smd_integrate_tlsph.html#index-0">fix smd/integrate_tlsph</a> </dt> <dt><a href="fix_smd_integrate_ulsph.html#index-0">fix smd/integrate_ulsph</a> </dt> <dt><a href="fix_smd_move_triangulated_surface.html#index-0">fix smd/move_tri_surf</a> </dt> <dt><a href="fix_smd_setvel.html#index-0">fix smd/setvel</a> </dt> <dt><a href="fix_smd_wall_surface.html#index-0">fix smd/wall_surface</a> </dt> <dt><a href="fix_spring.html#index-0">fix spring</a> </dt> <dt><a href="fix_spring_rg.html#index-0">fix spring/rg</a> </dt> <dt><a href="fix_spring_self.html#index-0">fix spring/self</a> </dt> <dt><a href="fix_srd.html#index-0">fix srd</a> </dt> <dt><a href="fix_store_force.html#index-0">fix store/force</a> </dt> <dt><a href="fix_store_state.html#index-0">fix store/state</a> </dt> <dt><a href="fix_temp_berendsen.html#index-0">fix temp/berendsen</a> </dt> <dt><a href="fix_temp_csvr.html#index-0">fix temp/csvr</a> </dt> <dt><a href="fix_temp_rescale.html#index-0">fix temp/rescale</a> </dt> <dt><a href="fix_temp_rescale_eff.html#index-0">fix temp/rescale/eff</a> </dt> <dt><a href="fix_tfmc.html#index-0">fix tfmc</a> </dt> <dt><a href="fix_thermal_conductivity.html#index-0">fix thermal/conductivity</a> </dt> <dt><a href="fix_ti_rs.html#index-0">fix ti/rs</a> </dt> <dt><a href="fix_ti_spring.html#index-0">fix ti/spring</a> </dt> <dt><a href="fix_tmd.html#index-0">fix tmd</a> </dt> <dt><a href="fix_ttm.html#index-0">fix ttm</a> </dt> <dt><a href="fix_tune_kspace.html#index-0">fix tune/kspace</a> </dt> <dt><a href="fix_vector.html#index-0">fix vector</a> </dt> <dt><a href="fix_viscosity.html#index-0">fix viscosity</a> </dt> <dt><a href="fix_viscous.html#index-0">fix viscous</a> </dt> <dt><a href="fix_wall_gran.html#index-0">fix wall/gran</a> </dt> <dt><a href="fix_wall.html#index-0">fix wall/lj93</a> </dt> <dt><a href="fix_wall_piston.html#index-0">fix wall/piston</a> </dt> <dt><a href="fix_wall_reflect.html#index-0">fix wall/reflect</a> </dt> <dt><a href="fix_wall_region.html#index-0">fix wall/region</a> </dt> <dt><a href="fix_wall_srd.html#index-0">fix wall/srd</a> </dt> <dt><a href="fix_modify.html#index-0">fix_modify</a> </dt> </dl></td> </tr></table> <h2 id="G">G</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="group.html#index-0">group</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="group2ndx.html#index-0">group2ndx</a> </dt> </dl></td> </tr></table> <h2 id="I">I</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="if.html#index-0">if</a> </dt> <dt><a href="improper_coeff.html#index-0">improper_coeff</a> </dt> <dt><a href="improper_style.html#index-0">improper_style</a> </dt> <dt><a href="improper_class2.html#index-0">improper_style class2</a> </dt> <dt><a href="improper_cossq.html#index-0">improper_style cossq</a> </dt> <dt><a href="improper_cvff.html#index-0">improper_style cvff</a> </dt> <dt><a href="improper_fourier.html#index-0">improper_style fourier</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="improper_harmonic.html#index-0">improper_style harmonic</a> </dt> <dt><a href="improper_hybrid.html#index-0">improper_style hybrid</a> </dt> <dt><a href="improper_none.html#index-0">improper_style none</a> </dt> <dt><a href="improper_ring.html#index-0">improper_style ring</a> </dt> <dt><a href="improper_umbrella.html#index-0">improper_style umbrella</a> </dt> <dt><a href="include.html#index-0">include</a> </dt> <dt><a href="info.html#index-0">info</a> </dt> </dl></td> </tr></table> <h2 id="J">J</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="jump.html#index-0">jump</a> </dt> </dl></td> </tr></table> <h2 id="K">K</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="kspace_modify.html#index-0">kspace_modify</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="kspace_style.html#index-0">kspace_style</a> </dt> </dl></td> </tr></table> <h2 id="L">L</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="label.html#index-0">label</a> </dt> <dt><a href="lattice.html#index-0">lattice</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="log.html#index-0">log</a> </dt> </dl></td> </tr></table> <h2 id="M">M</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="mass.html#index-0">mass</a> </dt> <dt><a href="min_modify.html#index-0">min_modify</a> </dt> <dt><a href="min_style.html#index-0">min_style</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="minimize.html#index-0">minimize</a> </dt> <dt><a href="molecule.html#index-0">molecule</a> </dt> </dl></td> </tr></table> <h2 id="N">N</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="neb.html#index-0">neb</a> </dt> <dt><a href="neigh_modify.html#index-0">neigh_modify</a> </dt> <dt><a href="neighbor.html#index-0">neighbor</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="newton.html#index-0">newton</a> </dt> <dt><a href="next.html#index-0">next</a> </dt> </dl></td> </tr></table> <h2 id="P">P</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="package.html#index-0">package</a> </dt> <dt><a href="pair_coeff.html#index-0">pair_coeff</a> </dt> <dt><a href="pair_modify.html#index-0">pair_modify</a> </dt> <dt><a href="pair_style.html#index-0">pair_style</a> </dt> <dt><a href="pair_adp.html#index-0">pair_style adp</a> </dt> <dt><a href="pair_airebo.html#index-0">pair_style airebo</a> </dt> <dt><a href="pair_awpmd.html#index-0">pair_style awpmd/cut</a> </dt> <dt><a href="pair_beck.html#index-0">pair_style beck</a> </dt> <dt><a href="pair_body.html#index-0">pair_style body</a> </dt> <dt><a href="pair_bop.html#index-0">pair_style bop</a> </dt> <dt><a href="pair_born.html#index-0">pair_style born</a> </dt> <dt><a href="pair_cs.html#index-0">pair_style born/coul/long/cs</a> </dt> <dt><a href="pair_brownian.html#index-0">pair_style brownian</a> </dt> <dt><a href="pair_buck.html#index-0">pair_style buck</a> </dt> <dt><a href="pair_buck_long.html#index-0">pair_style buck/long/coul/long</a> </dt> <dt><a href="pair_colloid.html#index-0">pair_style colloid</a> </dt> <dt><a href="pair_comb.html#index-0">pair_style comb</a> </dt> <dt><a href="pair_coul.html#index-0">pair_style coul/cut</a> </dt> <dt><a href="pair_coul_diel.html#index-0">pair_style coul/diel</a> </dt> <dt><a href="pair_dpd.html#index-0">pair_style dpd</a> </dt> <dt><a href="pair_dsmc.html#index-0">pair_style dsmc</a> </dt> <dt><a href="pair_eam.html#index-0">pair_style eam</a> </dt> <dt><a href="pair_edip.html#index-0">pair_style edip</a> </dt> <dt><a href="pair_eff.html#index-0">pair_style eff/cut</a> </dt> <dt><a href="pair_eim.html#index-0">pair_style eim</a> </dt> <dt><a href="pair_gauss.html#index-0">pair_style gauss</a> </dt> <dt><a href="pair_gayberne.html#index-0">pair_style gayberne</a> </dt> <dt><a href="pair_gran.html#index-0">pair_style gran/hooke</a> </dt> <dt><a href="pair_hbond_dreiding.html#index-0">pair_style hbond/dreiding/lj</a> </dt> <dt><a href="pair_hybrid.html#index-0">pair_style hybrid</a> </dt> <dt><a href="pair_kim.html#index-0">pair_style kim</a> </dt> <dt><a href="pair_lcbop.html#index-0">pair_style lcbop</a> </dt> <dt><a href="pair_line_lj.html#index-0">pair_style line/lj</a> </dt> <dt><a href="pair_list.html#index-0">pair_style list</a> </dt> <dt><a href="pair_charmm.html#index-0">pair_style lj/charmm/coul/charmm</a> </dt> <dt><a href="pair_class2.html#index-0">pair_style lj/class2</a> </dt> <dt><a href="pair_lj_cubic.html#index-0">pair_style lj/cubic</a> </dt> <dt><a href="pair_lj.html#index-0">pair_style lj/cut</a> </dt> <dt><a href="pair_dipole.html#index-0">pair_style lj/cut/dipole/cut</a> </dt> <dt><a href="pair_lj_soft.html#index-0">pair_style lj/cut/soft</a> </dt> <dt><a href="pair_lj_expand.html#index-0">pair_style lj/expand</a> </dt> <dt><a href="pair_gromacs.html#index-0">pair_style lj/gromacs</a> </dt> <dt><a href="pair_lj_long.html#index-0">pair_style lj/long/coul/long</a> </dt> <dt><a href="pair_sdk.html#index-0">pair_style lj/sdk</a> </dt> <dt><a href="pair_lj_sf.html#index-0">pair_style lj/sf</a> </dt> <dt><a href="pair_lj_smooth.html#index-0">pair_style lj/smooth</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="pair_lj_smooth_linear.html#index-0">pair_style lj/smooth/linear</a> </dt> <dt><a href="pair_lj96.html#index-0">pair_style lj96/cut</a> </dt> <dt><a href="pair_lubricate.html#index-0">pair_style lubricate</a> </dt> <dt><a href="pair_lubricateU.html#index-0">pair_style lubricateU</a> </dt> <dt><a href="pair_meam.html#index-0">pair_style meam</a> </dt> <dt><a href="pair_mie.html#index-0">pair_style mie/cut</a> </dt> <dt><a href="pair_morse.html#index-0">pair_style morse</a> </dt> <dt><a href="pair_nb3b_harmonic.html#index-0">pair_style nb3b/harmonic</a> </dt> <dt><a href="pair_nm.html#index-0">pair_style nm/cut</a> </dt> <dt><a href="pair_none.html#index-0">pair_style none</a> </dt> <dt><a href="pair_peri.html#index-0">pair_style peri/pmb</a> </dt> <dt><a href="pair_polymorphic.html#index-0">pair_style polymorphic</a> </dt> <dt><a href="pair_quip.html#index-0">pair_style quip</a> </dt> <dt><a href="pair_reax.html#index-0">pair_style reax</a> </dt> <dt><a href="pair_reax_c.html#index-0">pair_style reax/c</a> </dt> <dt><a href="pair_resquared.html#index-0">pair_style resquared</a> </dt> <dt><a href="pair_smd_hertz.html#index-0">pair_style smd/hertz</a> </dt> <dt><a href="pair_smd_tlsph.html#index-0">pair_style smd/tlsph</a> </dt> <dt><a href="pair_smd_triangulated_surface.html#index-0">pair_style smd/tri_surface</a> </dt> <dt><a href="pair_smd_ulsph.html#index-0">pair_style smd/ulsph</a> </dt> <dt><a href="pair_snap.html#index-0">pair_style snap</a> </dt> <dt><a href="pair_soft.html#index-0">pair_style soft</a> </dt> <dt><a href="pair_sph_heatconduction.html#index-0">pair_style sph/heatconduction</a> </dt> <dt><a href="pair_sph_idealgas.html#index-0">pair_style sph/idealgas</a> </dt> <dt><a href="pair_sph_lj.html#index-0">pair_style sph/lj</a> </dt> <dt><a href="pair_sph_rhosum.html#index-0">pair_style sph/rhosum</a> </dt> <dt><a href="pair_sph_taitwater.html#index-0">pair_style sph/taitwater</a> </dt> <dt><a href="pair_sph_taitwater_morris.html#index-0">pair_style sph/taitwater/morris</a> </dt> <dt><a href="pair_srp.html#index-0">pair_style srp</a> </dt> <dt><a href="pair_sw.html#index-0">pair_style sw</a> </dt> <dt><a href="pair_table.html#index-0">pair_style table</a> </dt> <dt><a href="pair_tersoff.html#index-0">pair_style tersoff</a> </dt> <dt><a href="pair_tersoff_mod.html#index-0">pair_style tersoff/mod</a> </dt> <dt><a href="pair_tersoff_zbl.html#index-0">pair_style tersoff/zbl</a> </dt> <dt><a href="pair_thole.html#index-0">pair_style thole</a> </dt> <dt><a href="pair_tri_lj.html#index-0">pair_style tri/lj</a> </dt> + <dt><a href="pair_vashishta.html#index-0">pair_style vashishta</a> + </dt> + + <dt><a href="pair_yukawa.html#index-0">pair_style yukawa</a> </dt> <dt><a href="pair_yukawa_colloid.html#index-0">pair_style yukawa/colloid</a> </dt> <dt><a href="pair_zbl.html#index-0">pair_style zbl</a> </dt> <dt><a href="pair_write.html#index-0">pair_write</a> </dt> <dt><a href="partition.html#index-0">partition</a> </dt> <dt><a href="prd.html#index-0">prd</a> </dt> <dt><a href="print.html#index-0">print</a> </dt> <dt><a href="processors.html#index-0">processors</a> </dt> <dt><a href="python.html#index-0">python</a> </dt> </dl></td> </tr></table> <h2 id="Q">Q</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="quit.html#index-0">quit</a> </dt> </dl></td> </tr></table> <h2 id="R">R</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="read_data.html#index-0">read_data</a> </dt> <dt><a href="read_dump.html#index-0">read_dump</a> </dt> <dt><a href="read_restart.html#index-0">read_restart</a> </dt> <dt><a href="region.html#index-0">region</a> </dt> <dt><a href="replicate.html#index-0">replicate</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="rerun.html#index-0">rerun</a> </dt> <dt><a href="reset_timestep.html#index-0">reset_timestep</a> </dt> <dt><a href="restart.html#index-0">restart</a> </dt> <dt><a href="run.html#index-0">run</a> </dt> <dt><a href="run_style.html#index-0">run_style</a> </dt> </dl></td> </tr></table> <h2 id="S">S</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="set.html#index-0">set</a> </dt> <dt><a href="shell.html#index-0">shell</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="special_bonds.html#index-0">special_bonds</a> </dt> <dt><a href="suffix.html#index-0">suffix</a> </dt> </dl></td> </tr></table> <h2 id="T">T</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="tad.html#index-0">tad</a> </dt> <dt><a href="temper.html#index-0">temper</a> </dt> <dt><a href="thermo.html#index-0">thermo</a> </dt> <dt><a href="thermo_modify.html#index-0">thermo_modify</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="thermo_style.html#index-0">thermo_style</a> </dt> <dt><a href="timer.html#index-0">timer</a> </dt> <dt><a href="timestep.html#index-0">timestep</a> </dt> </dl></td> </tr></table> <h2 id="U">U</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="uncompute.html#index-0">uncompute</a> </dt> <dt><a href="undump.html#index-0">undump</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="unfix.html#index-0">unfix</a> </dt> <dt><a href="units.html#index-0">units</a> </dt> </dl></td> </tr></table> <h2 id="V">V</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="variable.html#index-0">variable</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="velocity.html#index-0">velocity</a> </dt> </dl></td> </tr></table> <h2 id="W">W</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%" valign="top"><dl> <dt><a href="write_data.html#index-0">write_data</a> </dt> <dt><a href="write_dump.html#index-0">write_dump</a> </dt> </dl></td> <td style="width: 33%" valign="top"><dl> <dt><a href="write_restart.html#index-0">write_restart</a> </dt> </dl></td> </tr></table> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/molecule.html b/doc/molecule.html index fc5b4506e..45c355212 100644 --- a/doc/molecule.html +++ b/doc/molecule.html @@ -1,579 +1,604 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>molecule command — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>molecule command</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="molecule-command"> <span id="index-0"></span><h1>molecule command<a class="headerlink" href="#molecule-command" title="Permalink to this headline">¶</a></h1> <div class="section" id="syntax"> <h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2> -<div class="highlight-python"><div class="highlight"><pre>molecule ID file1 file2 ... keyword values ... +<div class="highlight-python"><div class="highlight"><pre>molecule ID file1 keyword values ... file2 keyword values ... fileN ... </pre></div> </div> <ul class="simple"> <li>ID = user-assigned name for the molecule template</li> <li>file1,file2,... = names of files containing molecule descriptions</li> -<li>zero or more keyword/value pairs may be appended</li> -<li>keyword = <em>offset</em></li> +<li>zero or more keyword/value pairs may be appended after each file</li> +<li>keyword = <em>offset</em> or <em>toff</em> or <em>boff</em> or <em>aoff</em> or <em>doff</em> or <em>ioff</em> or <em>scale</em></li> </ul> <pre class="literal-block"> -<em>offset</em> values = toff boff aoff doff ioff - toff = offset to add to atom types - boff = offset to add to bond types - aoff = offset to add to angle types - doff = offset to add to dihedral types - ioff = offset to add to improper types +<em>offset</em> values = Toff Boff Aoff Doff Ioff + Toff = offset to add to atom types + Boff = offset to add to bond types + Aoff = offset to add to angle types + Doff = offset to add to dihedral types + Ioff = offset to add to improper types +<em>toff</em> value = Toff + Toff = offset to add to atom types +<em>boff</em> value = Boff + Boff = offset to add to bond types +<em>aoff</em> value = Aoff + Aoff = offset to add to angle types +<em>doff</em> value = Doff + Doff = offset to add to dihedral types +<em>ioff</em> value = Ioff + Ioff = offset to add to improper types +<em>scale</em> value = sfactor + sfactor = scale factor to apply to the size and mass of the molecule </pre> </div> <div class="section" id="examples"> <h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2> -<div class="highlight-python"><div class="highlight"><pre>molecule 1 mymol +<div class="highlight-python"><div class="highlight"><pre>molecule 1 mymol.txt molecule 1 co2.txt h2o.txt -molecule CO2 co2.txt -molecule 1 mymol offset 6 9 18 23 14 +molecule CO2 co2.txt boff 3 aoff 2 +molecule 1 mymol.txt offset 6 9 18 23 14 +molecule objects file.1 scale 1.5 file.1 scale 2.0 file.2 scale 1.3 </pre></div> </div> </div> <div class="section" id="description"> <h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2> <p>Define a molecule template that can be used as part of other LAMMPS commands, typically to define a collection of particles as a bonded molecule or a rigid body. Commands that currently use molecule templates include:</p> <ul class="simple"> <li><a class="reference internal" href="fix_deposit.html"><em>fix deposit</em></a></li> <li><a class="reference internal" href="fix_pour.html"><em>fix pour</em></a></li> <li><a class="reference internal" href="fix_rigid.html"><em>fix rigid/small</em></a></li> <li><a class="reference internal" href="fix_shake.html"><em>fix shake</em></a></li> <li><a class="reference internal" href="fix_gcmc.html"><em>fix gcmc</em></a></li> <li><a class="reference internal" href="create_atoms.html"><em>create_atoms</em></a></li> <li><a class="reference internal" href="atom_style.html"><em>atom_style template</em></a></li> </ul> <p>The ID of a molecule template can only contain alphanumeric characters and underscores.</p> <p>A single template can contain multiple molecules, listed one per file. -Many of the commands listed above currently use only the first +Some of the commands listed above currently use only the first molecule in the template, and will issue a warning if the template contains multiple molecules. The <a class="reference internal" href="atom_style.html"><em>atom_style template</em></a> command allows multiple-molecule templates to define a system with more than one templated molecule.</p> -<p>The optional <em>offset</em> keyword adds the specified offset values to the -atom types, bond types, angle types, dihedral types, and improper -types as they are read from the molecule file. E.g. if <em>toff</em> = 2, -and the file uses atom types 1,2,3, then each created molecule will -have atom types 3,4,5. This is to make it easy to use the same -molecule template file in different simulations. Note that the same -offsets are applied to the molecules in all specified files. All five -offset values must be speicified, but individual values will be -ignored if the molecule template does not use that attribute (e.g. no -bonds).</p> +<p>Each filename can be followed by optional keywords which are applied +only to the molecule in the file as used in this template. This is to +make it easy to use the same molecule file in different molecule +templates or in different simulations. You can specify the same file +multiple times with different optional keywords.</p> +<p>The <em>offset</em>, <em>toff</em>, <em>aoff</em>, <em>doff</em>, <em>ioff</em> keywords add the +specified offset values to the atom types, bond types, angle types, +dihedral types, and/or improper types as they are read from the +molecule file. E.g. if <em>toff</em> = 2, and the file uses atom types +1,2,3, then each created molecule will have atom types 3,4,5. For the +<em>offset</em> keyword, all five offset values must be specified, but +individual values will be ignored if the molecule template does not +use that attribute (e.g. no bonds).</p> +<p>The <em>scale</em> keyword scales the size of the molecule. This can be +useful for modeling polydisperse granular rigid bodies. The scale +factor is applied to each of these properties in the molecule file, if +they are defined: the individual particle coordinates (Coords +section), the individual mass of each particle (Masses section), the +individual diameters of each particle (Diameters section), the total +mass of the molecule (header keyword = mass), the center-of-mass of +the molecule (header keyword = com), and the moments of inertia of the +molecule (header keyword = inertia).</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> -<p class="last">This command can be used to define molecules with -bonds, angles, dihedrals, imporopers, or special bond lists of +<p class="last">The molecule command can be used to define molecules +with bonds, angles, dihedrals, imporopers, or special bond lists of neighbors within a molecular topology, so that you can later add the molecules to your simulation, via one or more of the commands listed above. If such molecules do not already exist when LAMMPS creates the simulation box, via the <a class="reference internal" href="create_box.html"><em>create_box</em></a> or <a class="reference internal" href="read_data.html"><em>read_data</em></a> command, when you later add them you may overflow the pre-allocated data structures which store molecular topology information with each atom, and an error will be generated. Both the <a class="reference internal" href="create_box.html"><em>create_box</em></a> command and the data files read by the <a class="reference internal" href="read_data.html"><em>read_data</em></a> command have “extra” options which insure space is allocated for storing topology info for molecules that are added later.</p> </div> <p>The format of an individual molecule file is similar to the data file read by the <a class="reference internal" href="read_data.html"><em>read_data</em></a> commands, and is as follows.</p> <p>A molecule 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>These are the recognized header keywords. Header lines can come in any order. The numeric value(s) are read from the beginning of the line. The keyword should appear at the end of the line. All these settings have default values, as explained below. A line need only appear if the value(s) are different than the default.</p> <ul class="simple"> <li>N <em>atoms</em> = # of atoms N in molecule, default = 0</li> <li>Nb <em>bonds</em> = # of bonds Nb in molecule, default = 0</li> <li>Na <em>angles</em> = # of angles Na in molecule, default = 0</li> <li>Nd <em>dihedrals</em> = # of dihedrals Nd in molecule, default = 0</li> <li>Ni <em>impropers</em> = # of impropers Ni in molecule, default = 0</li> <li>Mtotal <em>mass</em> = total mass of molecule</li> <li>Xc Yc Zc <em>com</em> = coordinates of center-of-mass of molecule</li> <li>Ixx Iyy Izz Ixy Ixz Iyz <em>inertia</em> = 6 components of inertia tensor of molecule</li> </ul> <p>For <em>mass</em>, <em>com</em>, and <em>inertia</em>, the default is for LAMMPS to calculate this quantity itself if needed, assuming the molecules consists of a set of point particles or finite-size particles (with a non-zero diameter) that do not overlap. If finite-size particles in the molecule do overlap, LAMMPS will not account for the overlap effects when calculating any of these 3 quantities, so you should pre-compute them yourself and list the values in the file.</p> <p>The mass and center-of-mass coordinates (Xc,Yc,Zc) are self-explanatory. The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the values consistent with the current orientation of the rigid body around its center of mass. The values are with respect to the simulation box XYZ axes, not with respect to the prinicpal axes of the rigid body itself. LAMMPS performs the latter calculation internally.</p> <p>These are the allowed section keywords for the body of the file.</p> <ul class="simple"> <li><em>Coords, Types, Charges, Diameters, Masses</em> = atom-property sections</li> <li><em>Bonds, Angles, Dihedrals, Impropers</em> = molecular topology sections</li> <li><em>Special Bond Counts, Special Bonds</em> = special neighbor info</li> <li><em>Shake Flags, Shake Atoms, Shake Bond Types</em> = SHAKE info</li> </ul> <p>If a Bonds section is specified then the Special Bond Counts and Special Bonds sections can also be used, if desired, to explicitly list the 1-2, 1-3, 1-4 neighbors within the molecule topology (see details below). This is optional since if these sections are not included, LAMMPS will auto-generate this information. Note that LAMMPS uses this info to properly exclude or weight bonded pairwise interactions between bonded atoms. See the <a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a> command for more details. One reason to list the special bond info explicitly is for the <a class="reference internal" href="tutorial_drude.html"><em>thermalized Drude oscillator model</em></a> which treats the bonds between nuclear cores and Drude electrons in a different manner.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">Whether a section is required depends on how the molecule template is used by other LAMMPS commands. For example, to add a molecule via the <a class="reference internal" href="fix_deposit.html"><em>fix deposit</em></a> command, the Coords and Types sections are required. To add a rigid body via the <code class="xref doc docutils literal"><span class="pre">fix</span> <span class="pre">pour</span></code> command, the Bonds (Angles, etc) sections are not required, since the molecule will be treated as a rigid body. Some sections are optional. For example, the <a class="reference internal" href="fix_pour.html"><em>fix pour</em></a> command can be used to add “molecules” which are clusters of finite-size granular particles. If the Diameters section is not specified, each particle in the molecule will have a default diameter of 1.0. See the doc pages for LAMMPS commands that use molecule templates for more details.</p> </div> <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 whether it can appear in the data file. In each case the ID is ignored; it is simply included for readability, and should be a number from 1 to Nlines for the section, indicating which atom (or bond, etc) the entry applies to. The lines are assumed to be listed in order from 1 to Nlines, but LAMMPS does not check for this.</p> <hr class="docutils" /> <p><em>Coords</em> section:</p> <ul class="simple"> <li>one line per atom</li> <li>line syntax: ID x y z</li> <li>x,y,z = coordinate of atom</li> </ul> <hr class="docutils" /> <p><em>Types</em> section:</p> <ul class="simple"> <li>one line per atom</li> <li>line syntax: ID type</li> <li>type = atom type of atom</li> </ul> <hr class="docutils" /> <p><em>Charges</em> section:</p> <ul class="simple"> <li>one line per atom</li> <li>line syntax: ID q</li> <li>q = charge on atom</li> </ul> <p>This section is only allowed for <a class="reference internal" href="atom_style.html"><em>atom styles</em></a> that support charge. If this section is not included, the default charge on each atom in the molecule is 0.0.</p> <hr class="docutils" /> <p><em>Diameters</em> section:</p> <ul class="simple"> <li>one line per atom</li> <li>line syntax: ID diam</li> <li>diam = diameter of atom</li> </ul> <p>This section is only allowed for <a class="reference internal" href="atom_style.html"><em>atom styles</em></a> that support finite-size spherical particles, e.g. atom_style sphere. If not listed, the default diameter of each atom in the molecule is 1.0.</p> <hr class="docutils" /> <p><em>Masses</em> section:</p> <ul class="simple"> <li>one line per atom</li> <li>line syntax: ID mass</li> <li>mass = mass of atom</li> </ul> <p>This section is only allowed for <a class="reference internal" href="atom_style.html"><em>atom styles</em></a> that support per-atom mass, as opposed to per-type mass. See the <a class="reference internal" href="mass.html"><em>mass</em></a> command for details. If this section is not included, the default mass for each atom is derived from its volume (see Diameters section) and a default density of 1.0, in <a class="reference internal" href="units.html"><em>units</em></a> of mass/volume.</p> <hr class="docutils" /> <p><em>Bonds</em> section:</p> <ul class="simple"> <li>one line per bond</li> <li>line syntax: ID type atom1 atom2</li> <li>type = bond type (1-Nbondtype)</li> <li>atom1,atom2 = IDs of atoms in bond</li> </ul> <p>The IDs for the two atoms in each bond should be values from 1 to Natoms, where Natoms = # of atoms in the molecule.</p> <hr class="docutils" /> <p><em>Angles</em> section:</p> <ul class="simple"> <li>one line per angle</li> <li>line syntax: ID type atom1 atom2 atom3</li> <li>type = angle type (1-Nangletype)</li> <li>atom1,atom2,atom3 = IDs of atoms in angle</li> </ul> <p>The IDs for the three atoms in each angle should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. 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.</p> <hr class="docutils" /> <p><em>Dihedrals</em> section:</p> <ul class="simple"> <li>one line per dihedral</li> <li>line syntax: ID type atom1 atom2 atom3 atom4</li> <li>type = dihedral type (1-Ndihedraltype)</li> <li>atom1,atom2,atom3,atom4 = IDs of atoms in dihedral</li> </ul> <p>The IDs for the four atoms in each dihedral should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. The 4 atoms are ordered linearly within the dihedral.</p> <hr class="docutils" /> <p><em>Impropers</em> section:</p> <ul class="simple"> <li>one line per improper</li> <li>line syntax: ID type atom1 atom2 atom3 atom4</li> <li>type = improper type (1-Nimpropertype)</li> <li>atom1,atom2,atom3,atom4 = IDs of atoms in improper</li> </ul> <p>The IDs for the four atoms in each improper should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. The ordering of the 4 atoms determines the definition of the improper angle used in the formula for the defined <a class="reference internal" href="improper_style.html"><em>improper style</em></a>. See the doc pages for individual styles for details.</p> <hr class="docutils" /> <p><em>Special Bond Counts</em> section:</p> <ul class="simple"> <li>one line per atom</li> <li>line syntax: ID N1 N2 N3</li> <li>N1 = # of 1-2 bonds</li> <li>N2 = # of 1-3 bonds</li> <li>N3 = # of 1-4 bonds</li> </ul> <p>N1, N2, N3 are the number of 1-2, 1-3, 1-4 neighbors respectively of this atom within the topology of the molecule. See the <a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a> doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section appears, the Special Bonds section must also appear. If this section is not specied, the atoms in the molecule will have no special bonds.</p> <hr class="docutils" /> <p><em>Special Bonds</em> section:</p> <ul class="simple"> <li>one line per atom</li> <li>line syntax: ID a b c d ...</li> <li>a,b,c,d,... = IDs of atoms in N1+N2+N3 special bonds</li> </ul> <p>A, b, c, d, etc are the IDs of the n1+n2+n3 atoms that are 1-2, 1-3, 1-4 neighbors of this atom. The IDs should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. The first N1 values should be the 1-2 neighbors, the next N2 should be the 1-3 neighbors, the last N3 should be the 1-4 neighbors. No atom ID should appear more than once. See the <a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a> doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section appears, the Special Bond Counts section must also appear. If this section is not specied, the atoms in the molecule will have no special bonds.</p> <hr class="docutils" /> <p><em>Shake Flags</em> section:</p> <ul class="simple"> <li>one line per atom</li> <li>line syntax: ID flag</li> <li>flag = 0,1,2,3,4</li> </ul> <p>This section is only needed when molecules created using the template will be constrained by SHAKE via the “fix shake” command. The other two Shake sections must also appear in the file, following this one.</p> <p>The meaning of the flag for each atom is as follows. See the <a class="reference internal" href="fix_shake.html"><em>fix shake</em></a> doc page for a further description of SHAKE clusters.</p> <ul class="simple"> <li>0 = not part of a SHAKE cluster</li> <li>1 = part of a SHAKE angle cluster (two bonds and the angle they form)</li> <li>2 = part of a 2-atom SHAKE cluster with a single bond</li> <li>3 = part of a 3-atom SHAKE cluster with two bonds</li> <li>4 = part of a 4-atom SHAKE cluster with three bonds</li> </ul> <hr class="docutils" /> <p><em>Shake Atoms</em> section:</p> <ul class="simple"> <li>one line per atom</li> <li>line syntax: ID a b c d</li> <li>a,b,c,d = IDs of atoms in cluster</li> </ul> <p>This section is only needed when molecules created using the template will be constrained by SHAKE via the “fix shake” command. The other two Shake sections must also appear in the file.</p> <p>The a,b,c,d values are atom IDs (from 1 to Natoms) for all the atoms in the SHAKE cluster that this atom belongs to. The number of values that must appear is determined by the shake flag for the atom (see the Shake Flags section above). All atoms in a particular cluster should list their a,b,c,d values identically.</p> <p>If flag = 0, no a,b,c,d values are listed on the line, just the (ignored) ID.</p> <p>If flag = 1, a,b,c are listed, where a = ID of central atom in the angle, and b,c the other two atoms in the angle.</p> <p>If flag = 2, a,b are listed, where a = ID of atom in bond with the the lowest ID, and b = ID of atom in bond with the highest ID.</p> <p>If flag = 3, a,b,c are listed, where a = ID of central atom, and b,c = IDs of other two atoms bonded to the central atom.</p> <p>If flag = 4, a,b,c,d are listed, where a = ID of central atom, and b,c,d = IDs of other three atoms bonded to the central atom.</p> <p>See the <a class="reference internal" href="fix_shake.html"><em>fix shake</em></a> doc page for a further description of SHAKE clusters.</p> <hr class="docutils" /> <p><em>Shake Bond Types</em> section:</p> <ul class="simple"> <li>one line per atom</li> <li>line syntax: ID a b c</li> <li>a,b,c = bond types (or angle type) of bonds (or angle) in cluster</li> </ul> <p>This section is only needed when molecules created using the template will be constrained by SHAKE via the “fix shake” command. The other two Shake sections must also appear in the file.</p> <p>The a,b,c values are bond types (from 1 to Nbondtypes) for all bonds in the SHAKE cluster that this atom belongs to. The number of values that must appear is determined by the shake flag for the atom (see the Shake Flags section above). All atoms in a particular cluster should list their a,b,c values identically.</p> <p>If flag = 0, no a,b,c values are listed on the line, just the (ignored) ID.</p> <p>If flag = 1, a,b,c are listed, where a = bondtype of the bond between the central atom and the first non-central atom (value b in the Shake Atoms section), b = bondtype of the bond between the central atom and the 2nd non-central atom (value c in the Shake Atoms section), and c = the angle type (1 to Nangletypes) of the angle between the 3 atoms.</p> <p>If flag = 2, only a is listed, where a = bondtype of the bond between the 2 atoms in the cluster.</p> <p>If flag = 3, a,b are listed, where a = bondtype of the bond between the central atom and the first non-central atom (value b in the Shake Atoms section), and b = bondtype of the bond between the central atom and the 2nd non-central atom (value c in the Shake Atoms section).</p> <p>If flag = 4, a,b,c are listed, where a = bondtype of the bond between the central atom and the first non-central atom (value b in the Shake Atoms section), b = bondtype of the bond between the central atom and the 2nd non-central atom (value c in the Shake Atoms section), and c = bondtype of the bond between the central atom and the 3rd non-central atom (value d in the Shake Atoms section).</p> <p>See the <a class="reference internal" href="fix_shake.html"><em>fix shake</em></a> doc page for a further description of SHAKE clusters.</p> </div> <hr class="docutils" /> <div class="section" id="restrictions"> <h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> <blockquote> <div>none</div></blockquote> </div> <div class="section" id="related-commands"> <h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2> <p><a class="reference internal" href="fix_deposit.html"><em>fix deposit</em></a>, <a class="reference internal" href="fix_pour.html"><em>fix pour</em></a>, <a class="reference internal" href="fix_gcmc.html"><em>fix_gcmc</em></a></p> </div> <div class="section" id="default"> <h2>Default<a class="headerlink" href="#default" title="Permalink to this headline">¶</a></h2> -<p>The default keyword value is offset 0 0 0 0 0.</p> +<p>The default keywords values are offset 0 0 0 0 0 and scale = 1.0.</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/molecule.txt b/doc/molecule.txt index 3aedbc8e1..41c11ae24 100644 --- a/doc/molecule.txt +++ b/doc/molecule.txt @@ -1,434 +1,463 @@ <"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 molecule command :h3 [Syntax:] -molecule ID file1 file2 ... keyword values ... :pre +molecule ID file1 keyword values ... file2 keyword values ... fileN ... :pre ID = user-assigned name for the molecule template :ulb,l file1,file2,... = names of files containing molecule descriptions :l -zero or more keyword/value pairs may be appended :l -keyword = {offset} :l - {offset} values = toff boff aoff doff ioff - toff = offset to add to atom types - boff = offset to add to bond types - aoff = offset to add to angle types - doff = offset to add to dihedral types - ioff = offset to add to improper types :pre +zero or more keyword/value pairs may be appended after each file :l +keyword = {offset} or {toff} or {boff} or {aoff} or {doff} or {ioff} or {scale} :l + {offset} values = Toff Boff Aoff Doff Ioff + Toff = offset to add to atom types + Boff = offset to add to bond types + Aoff = offset to add to angle types + Doff = offset to add to dihedral types + Ioff = offset to add to improper types + {toff} value = Toff + Toff = offset to add to atom types + {boff} value = Boff + Boff = offset to add to bond types + {aoff} value = Aoff + Aoff = offset to add to angle types + {doff} value = Doff + Doff = offset to add to dihedral types + {ioff} value = Ioff + Ioff = offset to add to improper types + {scale} value = sfactor + sfactor = scale factor to apply to the size and mass of the molecule :pre :ule [Examples:] -molecule 1 mymol +molecule 1 mymol.txt molecule 1 co2.txt h2o.txt -molecule CO2 co2.txt -molecule 1 mymol offset 6 9 18 23 14 :pre +molecule CO2 co2.txt boff 3 aoff 2 +molecule 1 mymol.txt offset 6 9 18 23 14 +molecule objects file.1 scale 1.5 file.1 scale 2.0 file.2 scale 1.3 :pre + +:pre [Description:] Define a molecule template that can be used as part of other LAMMPS commands, typically to define a collection of particles as a bonded molecule or a rigid body. Commands that currently use molecule templates include: "fix deposit"_fix_deposit.html "fix pour"_fix_pour.html "fix rigid/small"_fix_rigid.html "fix shake"_fix_shake.html "fix gcmc"_fix_gcmc.html "create_atoms"_create_atoms.html "atom_style template"_atom_style.html :ul The ID of a molecule template can only contain alphanumeric characters and underscores. A single template can contain multiple molecules, listed one per file. -Many of the commands listed above currently use only the first +Some of the commands listed above currently use only the first molecule in the template, and will issue a warning if the template contains multiple molecules. The "atom_style template"_atom_style.html command allows multiple-molecule templates to define a system with more than one templated molecule. -The optional {offset} keyword adds the specified offset values to the -atom types, bond types, angle types, dihedral types, and improper -types as they are read from the molecule file. E.g. if {toff} = 2, -and the file uses atom types 1,2,3, then each created molecule will -have atom types 3,4,5. This is to make it easy to use the same -molecule template file in different simulations. Note that the same -offsets are applied to the molecules in all specified files. All five -offset values must be speicified, but individual values will be -ignored if the molecule template does not use that attribute (e.g. no -bonds). - -IMPORTANT NOTE: This command can be used to define molecules with -bonds, angles, dihedrals, imporopers, or special bond lists of +Each filename can be followed by optional keywords which are applied +only to the molecule in the file as used in this template. This is to +make it easy to use the same molecule file in different molecule +templates or in different simulations. You can specify the same file +multiple times with different optional keywords. + +The {offset}, {toff}, {aoff}, {doff}, {ioff} keywords add the +specified offset values to the atom types, bond types, angle types, +dihedral types, and/or improper types as they are read from the +molecule file. E.g. if {toff} = 2, and the file uses atom types +1,2,3, then each created molecule will have atom types 3,4,5. For the +{offset} keyword, all five offset values must be specified, but +individual values will be ignored if the molecule template does not +use that attribute (e.g. no bonds). + +The {scale} keyword scales the size of the molecule. This can be +useful for modeling polydisperse granular rigid bodies. The scale +factor is applied to each of these properties in the molecule file, if +they are defined: the individual particle coordinates (Coords +section), the individual mass of each particle (Masses section), the +individual diameters of each particle (Diameters section), the total +mass of the molecule (header keyword = mass), the center-of-mass of +the molecule (header keyword = com), and the moments of inertia of the +molecule (header keyword = inertia). + +IMPORTANT NOTE: The molecule command can be used to define molecules +with bonds, angles, dihedrals, imporopers, or special bond lists of neighbors within a molecular topology, so that you can later add the molecules to your simulation, via one or more of the commands listed above. If such molecules do not already exist when LAMMPS creates the simulation box, via the "create_box"_create_box.html or "read_data"_read_data.html command, when you later add them you may overflow the pre-allocated data structures which store molecular topology information with each atom, and an error will be generated. Both the "create_box"_create_box.html command and the data files read by the "read_data"_read_data.html command have "extra" options which insure space is allocated for storing topology info for molecules that are added later. The format of an individual molecule file is similar to the data file read by the "read_data"_read_data.html commands, and is as follows. A molecule 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. These are the recognized header keywords. Header lines can come in any order. The numeric value(s) are read from the beginning of the line. The keyword should appear at the end of the line. All these settings have default values, as explained below. A line need only appear if the value(s) are different than the default. N {atoms} = # of atoms N in molecule, default = 0 Nb {bonds} = # of bonds Nb in molecule, default = 0 Na {angles} = # of angles Na in molecule, default = 0 Nd {dihedrals} = # of dihedrals Nd in molecule, default = 0 Ni {impropers} = # of impropers Ni in molecule, default = 0 Mtotal {mass} = total mass of molecule Xc Yc Zc {com} = coordinates of center-of-mass of molecule Ixx Iyy Izz Ixy Ixz Iyz {inertia} = 6 components of inertia tensor of molecule :ul For {mass}, {com}, and {inertia}, the default is for LAMMPS to calculate this quantity itself if needed, assuming the molecules consists of a set of point particles or finite-size particles (with a non-zero diameter) that do not overlap. If finite-size particles in the molecule do overlap, LAMMPS will not account for the overlap effects when calculating any of these 3 quantities, so you should pre-compute them yourself and list the values in the file. The mass and center-of-mass coordinates (Xc,Yc,Zc) are self-explanatory. The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the values consistent with the current orientation of the rigid body around its center of mass. The values are with respect to the simulation box XYZ axes, not with respect to the prinicpal axes of the rigid body itself. LAMMPS performs the latter calculation internally. These are the allowed section keywords for the body of the file. {Coords, Types, Charges, Diameters, Masses} = atom-property sections {Bonds, Angles, Dihedrals, Impropers} = molecular topology sections {Special Bond Counts, Special Bonds} = special neighbor info {Shake Flags, Shake Atoms, Shake Bond Types} = SHAKE info :ul If a Bonds section is specified then the Special Bond Counts and Special Bonds sections can also be used, if desired, to explicitly list the 1-2, 1-3, 1-4 neighbors within the molecule topology (see details below). This is optional since if these sections are not included, LAMMPS will auto-generate this information. Note that LAMMPS uses this info to properly exclude or weight bonded pairwise interactions between bonded atoms. See the "special_bonds"_special_bonds.html command for more details. One reason to list the special bond info explicitly is for the "thermalized Drude oscillator model"_tutorial_drude.html which treats the bonds between nuclear cores and Drude electrons in a different manner. IMPORTANT NOTE: Whether a section is required depends on how the molecule template is used by other LAMMPS commands. For example, to add a molecule via the "fix deposit"_fix_deposit.html command, the Coords and Types sections are required. To add a rigid body via the "fix pour"_fix_pout.html command, the Bonds (Angles, etc) sections are not required, since the molecule will be treated as a rigid body. Some sections are optional. For example, the "fix pour"_fix_pour.html command can be used to add "molecules" which are clusters of finite-size granular particles. If the Diameters section is not specified, each particle in the molecule will have a default diameter of 1.0. See the doc pages for LAMMPS commands that use molecule templates for more details. 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 whether it can appear in the data file. In each case the ID is ignored; it is simply included for readability, and should be a number from 1 to Nlines for the section, indicating which atom (or bond, etc) the entry applies to. The lines are assumed to be listed in order from 1 to Nlines, but LAMMPS does not check for this. :line {Coords} section: one line per atom line syntax: ID x y z x,y,z = coordinate of atom :ul :line {Types} section: one line per atom line syntax: ID type type = atom type of atom :ul :line {Charges} section: one line per atom line syntax: ID q q = charge on atom :ul This section is only allowed for "atom styles"_atom_style.html that support charge. If this section is not included, the default charge on each atom in the molecule is 0.0. :line {Diameters} section: one line per atom line syntax: ID diam diam = diameter of atom :ul This section is only allowed for "atom styles"_atom_style.html that support finite-size spherical particles, e.g. atom_style sphere. If not listed, the default diameter of each atom in the molecule is 1.0. :line {Masses} section: one line per atom line syntax: ID mass mass = mass of atom :ul This section is only allowed for "atom styles"_atom_style.html that support per-atom mass, as opposed to per-type mass. See the "mass"_mass.html command for details. If this section is not included, the default mass for each atom is derived from its volume (see Diameters section) and a default density of 1.0, in "units"_units.html of mass/volume. :line {Bonds} section: one line per bond line syntax: ID type atom1 atom2 type = bond type (1-Nbondtype) atom1,atom2 = IDs of atoms in bond :ul The IDs for the two atoms in each bond should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. :line {Angles} section: one line per angle line syntax: ID type atom1 atom2 atom3 type = angle type (1-Nangletype) atom1,atom2,atom3 = IDs of atoms in angle :ul The IDs for the three atoms in each angle should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. 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. :line {Dihedrals} section: one line per dihedral line syntax: ID type atom1 atom2 atom3 atom4 type = dihedral type (1-Ndihedraltype) atom1,atom2,atom3,atom4 = IDs of atoms in dihedral :ul The IDs for the four atoms in each dihedral should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. The 4 atoms are ordered linearly within the dihedral. :line {Impropers} section: one line per improper line syntax: ID type atom1 atom2 atom3 atom4 type = improper type (1-Nimpropertype) atom1,atom2,atom3,atom4 = IDs of atoms in improper :ul The IDs for the four atoms in each improper should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. The ordering of the 4 atoms determines the definition of the improper angle used in the formula for the defined "improper style"_improper_style.html. See the doc pages for individual styles for details. :line {Special Bond Counts} section: one line per atom line syntax: ID N1 N2 N3 N1 = # of 1-2 bonds N2 = # of 1-3 bonds N3 = # of 1-4 bonds :ul N1, N2, N3 are the number of 1-2, 1-3, 1-4 neighbors respectively of this atom within the topology of the molecule. See the "special_bonds"_special_bonds.html doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section appears, the Special Bonds section must also appear. If this section is not specied, the atoms in the molecule will have no special bonds. :line {Special Bonds} section: one line per atom line syntax: ID a b c d ... a,b,c,d,... = IDs of atoms in N1+N2+N3 special bonds :ul A, b, c, d, etc are the IDs of the n1+n2+n3 atoms that are 1-2, 1-3, 1-4 neighbors of this atom. The IDs should be values from 1 to Natoms, where Natoms = # of atoms in the molecule. The first N1 values should be the 1-2 neighbors, the next N2 should be the 1-3 neighbors, the last N3 should be the 1-4 neighbors. No atom ID should appear more than once. See the "special_bonds"_special_bonds.html doc page for more discussion of 1-2, 1-3, 1-4 neighbors. If this section appears, the Special Bond Counts section must also appear. If this section is not specied, the atoms in the molecule will have no special bonds. :line {Shake Flags} section: one line per atom line syntax: ID flag flag = 0,1,2,3,4 :ul This section is only needed when molecules created using the template will be constrained by SHAKE via the "fix shake" command. The other two Shake sections must also appear in the file, following this one. The meaning of the flag for each atom is as follows. See the "fix shake"_fix_shake.html doc page for a further description of SHAKE clusters. 0 = not part of a SHAKE cluster 1 = part of a SHAKE angle cluster (two bonds and the angle they form) 2 = part of a 2-atom SHAKE cluster with a single bond 3 = part of a 3-atom SHAKE cluster with two bonds 4 = part of a 4-atom SHAKE cluster with three bonds :ul :line {Shake Atoms} section: one line per atom line syntax: ID a b c d a,b,c,d = IDs of atoms in cluster :ul This section is only needed when molecules created using the template will be constrained by SHAKE via the "fix shake" command. The other two Shake sections must also appear in the file. The a,b,c,d values are atom IDs (from 1 to Natoms) for all the atoms in the SHAKE cluster that this atom belongs to. The number of values that must appear is determined by the shake flag for the atom (see the Shake Flags section above). All atoms in a particular cluster should list their a,b,c,d values identically. If flag = 0, no a,b,c,d values are listed on the line, just the (ignored) ID. If flag = 1, a,b,c are listed, where a = ID of central atom in the angle, and b,c the other two atoms in the angle. If flag = 2, a,b are listed, where a = ID of atom in bond with the the lowest ID, and b = ID of atom in bond with the highest ID. If flag = 3, a,b,c are listed, where a = ID of central atom, and b,c = IDs of other two atoms bonded to the central atom. If flag = 4, a,b,c,d are listed, where a = ID of central atom, and b,c,d = IDs of other three atoms bonded to the central atom. See the "fix shake"_fix_shake.html doc page for a further description of SHAKE clusters. :line {Shake Bond Types} section: one line per atom line syntax: ID a b c a,b,c = bond types (or angle type) of bonds (or angle) in cluster :ul This section is only needed when molecules created using the template will be constrained by SHAKE via the "fix shake" command. The other two Shake sections must also appear in the file. The a,b,c values are bond types (from 1 to Nbondtypes) for all bonds in the SHAKE cluster that this atom belongs to. The number of values that must appear is determined by the shake flag for the atom (see the Shake Flags section above). All atoms in a particular cluster should list their a,b,c values identically. If flag = 0, no a,b,c values are listed on the line, just the (ignored) ID. If flag = 1, a,b,c are listed, where a = bondtype of the bond between the central atom and the first non-central atom (value b in the Shake Atoms section), b = bondtype of the bond between the central atom and the 2nd non-central atom (value c in the Shake Atoms section), and c = the angle type (1 to Nangletypes) of the angle between the 3 atoms. If flag = 2, only a is listed, where a = bondtype of the bond between the 2 atoms in the cluster. If flag = 3, a,b are listed, where a = bondtype of the bond between the central atom and the first non-central atom (value b in the Shake Atoms section), and b = bondtype of the bond between the central atom and the 2nd non-central atom (value c in the Shake Atoms section). If flag = 4, a,b,c are listed, where a = bondtype of the bond between the central atom and the first non-central atom (value b in the Shake Atoms section), b = bondtype of the bond between the central atom and the 2nd non-central atom (value c in the Shake Atoms section), and c = bondtype of the bond between the central atom and the 3rd non-central atom (value d in the Shake Atoms section). See the "fix shake"_fix_shake.html doc page for a further description of SHAKE clusters. :line [Restrictions:] none [Related commands:] "fix deposit"_fix_deposit.html, "fix pour"_fix_pour.html, "fix_gcmc"_fix_gcmc.html [Default:] -The default keyword value is offset 0 0 0 0 0. +The default keywords values are offset 0 0 0 0 0 and scale = 1.0. diff --git a/doc/pair_hybrid.html b/doc/pair_hybrid.html index 7c116747d..329c77fec 100644 --- a/doc/pair_hybrid.html +++ b/doc/pair_hybrid.html @@ -1,539 +1,543 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>pair_style hybrid command — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>pair_style hybrid command</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="pair-style-hybrid-command"> <span id="index-0"></span><h1>pair_style hybrid command<a class="headerlink" href="#pair-style-hybrid-command" title="Permalink to this headline">¶</a></h1> </div> <div class="section" id="pair-style-hybrid-omp-command"> <h1>pair_style hybrid/omp command<a class="headerlink" href="#pair-style-hybrid-omp-command" title="Permalink to this headline">¶</a></h1> </div> <div class="section" id="pair-style-hybrid-overlay-command"> <h1>pair_style hybrid/overlay command<a class="headerlink" href="#pair-style-hybrid-overlay-command" title="Permalink to this headline">¶</a></h1> </div> <div class="section" id="pair-style-hybrid-overlay-omp-command"> <h1>pair_style hybrid/overlay/omp command<a class="headerlink" href="#pair-style-hybrid-overlay-omp-command" title="Permalink to this headline">¶</a></h1> <div class="section" id="syntax"> <h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><pre>pair_style hybrid style1 args style2 args ... pair_style hybrid/overlay style1 args style2 args ... </pre></div> </div> <ul class="simple"> <li>style1,style2 = list of one or more pair styles and their arguments</li> </ul> </div> <div class="section" id="examples"> <h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><pre>pair_style hybrid lj/cut/coul/cut 10.0 eam lj/cut 5.0 pair_coeff 1*2 1*2 eam niu3 pair_coeff 3 3 lj/cut/coul/cut 1.0 1.0 pair_coeff 1*2 3 lj/cut 0.5 1.2 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>pair_style hybrid/overlay lj/cut 2.5 coul/long 2.0 pair_coeff * * lj/cut 1.0 1.0 pair_coeff * * coul/long </pre></div> </div> </div> <div class="section" id="description"> <h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2> <p>The <em>hybrid</em> and <em>hybrid/overlay</em> styles enable the use of multiple pair styles in one simulation. With the <em>hybrid</em> style, exactly one pair style is assigned to each pair of atom types. With the <em>hybrid/overlay</em> style, one or more pair styles can be assigned to each pair of atom types. The assignment of pair styles to type pairs is made via the <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command.</p> <p>Here are two examples of hybrid simulations. The <em>hybrid</em> style could be used for a simulation of a metal droplet on a LJ surface. The metal atoms interact with each other via an <em>eam</em> potential, the surface atoms interact with each other via a <em>lj/cut</em> potential, and the metal/surface interaction is also computed via a <em>lj/cut</em> potential. The <em>hybrid/overlay</em> style could be used as in the 2nd example above, where multiple potentials are superposed in an additive fashion to compute the interaction between atoms. In this example, using <em>lj/cut</em> and <em>coul/long</em> together gives the same result as if the <em>lj/cut/coul/long</em> potential were used by itself. In this case, it would be more efficient to use the single combined potential, but in general any combination of pair potentials can be used together in to produce an interaction that is not encoded in any single pair_style file, e.g. adding Coulombic forces between granular particles.</p> <p>All pair styles that will be used are listed as “sub-styles” following the <em>hybrid</em> or <em>hybrid/overlay</em> keyword, in any order. Each sub-style’s name is followed by its usual arguments, as illustrated in the example above. See the doc pages of individual pair styles for a listing and explanation of the appropriate arguments.</p> <p>Note that an individual pair style can be used multiple times as a sub-style. For efficiency this should only be done if your model requires it. E.g. if you have different regions of Si and C atoms and wish to use a Tersoff potential for pure Si for one set of atoms, and a Tersoff potetnial for pure C for the other set (presumably with some 3rd potential for Si-C interactions), then the sub-style <em>tersoff</em> could be listed twice. But if you just want to use a Lennard-Jones or other pairwise potential for several different atom type pairs in your model, then you should just list the sub-style once and use the pair_coeff command to assign parameters for the different type pairs.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> -<p class="last">An exception to this option to list an individual pair -style multiple times are the pair styles implemented as Fortran -libraries: <a class="reference internal" href="pair_meam.html"><em>pair_style meam</em></a> and <a class="reference internal" href="pair_reax.html"><em>pair_style reax</em></a> (<a class="reference internal" href="pair_reax_c.html"><em>pair_style reax/c</em></a> is OK). -This is because unlike a C++ class, they can not be instantiated -multiple times, due to the manner in which they were coded in Fortran.</p> +<p class="last">There are two exceptions to this option to list an +individual pair style multiple times. The first is for pair styles +implemented as Fortran libraries: <a class="reference internal" href="pair_meam.html"><em>pair_style meam</em></a> and +<a class="reference internal" href="pair_reax.html"><em>pair_style reax</em></a> (<a class="reference internal" href="pair_reax_c.html"><em>pair_style reax/c</em></a> +is OK). This is because unlike a C++ class, they can not be +instantiated multiple times, due to the manner in which they were +coded in Fortran. The second is for GPU-enabled pair styles in the +GPU package. This is b/c the GPU package also currently assumes that +only one instance of a pair style is being used.</p> </div> <p>In the pair_coeff commands, the name of a pair style must be added after the I,J type specification, with the remaining coefficients being those appropriate to that style. If the pair style is used multiple times in the pair_style command, then an additional numeric argument must also be specified which is a number from 1 to M where M is the number of times the sub-style was listed in the pair style command. The extra number indicates which instance of the sub-style these coefficients apply to.</p> <p>For example, consider a simulation with 3 atom types: types 1 and 2 are Ni atoms, type 3 are LJ atoms with charges. The following commands would set up a hybrid simulation:</p> <div class="highlight-python"><div class="highlight"><pre>pair_style hybrid eam/alloy lj/cut/coul/cut 10.0 lj/cut 8.0 pair_coeff * * eam/alloy nialhjea Ni Ni NULL pair_coeff 3 3 lj/cut/coul/cut 1.0 1.0 pair_coeff 1*2 3 lj/cut 0.8 1.3 </pre></div> </div> <p>As an example of using the same pair style multiple times, consider a simulation with 2 atom types. Type 1 is Si, type 2 is C. The following commands would model the Si atoms with Tersoff, the C atoms with Tersoff, and the cross-interactions with Lennard-Jones:</p> <div class="highlight-python"><div class="highlight"><pre>pair_style hybrid lj/cut 2.5 tersoff tersoff pair_coeff * * tersoff 1 Si.tersoff Si NULL pair_coeff * * tersoff 2 C.tersoff NULL C pair_coeff 1 2 lj/cut 1.0 1.5 </pre></div> </div> <p>If pair coefficients are specified in the data file read via the <a class="reference internal" href="read_data.html"><em>read_data</em></a> command, then the same rule applies. E.g. “eam/alloy” or “lj/cut” must be added after the atom type, for each line in the “Pair Coeffs” section, e.g.</p> <div class="highlight-python"><div class="highlight"><pre>Pair Coeffs </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>1 lj/cut/coul/cut 1.0 1.0 ... </pre></div> </div> <p>Note that the pair_coeff command for some potentials such as <a class="reference internal" href="pair_eam.html"><em>pair_style eam/alloy</em></a> includes a mapping specification of elements to all atom types, which in the hybrid case, can include atom types not assigned to the <em>eam/alloy</em> potential. The NULL keyword is used by many such potentials (eam/alloy, Tersoff, AIREBO, etc), to denote an atom type that will be assigned to a different sub-style.</p> <p>For the <em>hybrid</em> style, each atom type pair I,J is assigned to exactly one sub-style. Just as with a simulation using a single pair style, if you specify the same atom type pair in a second pair_coeff command, the previous assignment will be overwritten.</p> <p>For the <em>hybrid/overlay</em> style, each atom type pair I,J can be assigned to one or more sub-styles. If you specify the same atom type pair in a second pair_coeff command with a new sub-style, then the second sub-style is added to the list of potentials that will be calculated for two interacting atoms of those types. If you specify the same atom type pair in a second pair_coeff command with a sub-style that has already been defined for that pair of atoms, then the new pair coefficients simply override the previous ones, as in the normal usage of the pair_coeff command. E.g. these two sets of commands are the same:</p> <div class="highlight-python"><div class="highlight"><pre>pair_style lj/cut 2.5 pair_coeff * * 1.0 1.0 pair_coeff 2 2 1.5 0.8 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>pair_style hybrid/overlay lj/cut 2.5 pair_coeff * * lj/cut 1.0 1.0 pair_coeff 2 2 lj/cut 1.5 0.8 </pre></div> </div> <p>Coefficients must be defined for each pair of atoms types via the <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command as described above, or in the data file or restart files read by the <a class="reference internal" href="read_data.html"><em>read_data</em></a> or <a class="reference internal" href="read_restart.html"><em>read_restart</em></a> commands, or by mixing as described below.</p> <p>For both the <em>hybrid</em> and <em>hybrid/overlay</em> styles, every atom type pair I,J (where I <= J) must be assigned to at least one sub-style via the <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command as in the examples above, or in the data file read by the <a class="reference internal" href="read_data.html"><em>read_data</em></a>, or by mixing as described below.</p> <p>If you want there to be no interactions between a particular pair of atom types, you have 3 choices. You can assign the type pair to some sub-style and use the <a class="reference internal" href="neigh_modify.html"><em>neigh_modify exclude type</em></a> command. You can assign it to some sub-style and set the coefficients so that there is effectively no interaction (e.g. epsilon = 0.0 in a LJ potential). Or, for <em>hybrid</em> and <em>hybrid/overlay</em> simulations, you can use this form of the pair_coeff command in your input script:</p> <div class="highlight-python"><div class="highlight"><pre>pair_coeff 2 3 none </pre></div> </div> <p>or this form in the “Pair Coeffs” section of the data file:</p> <div class="highlight-python"><div class="highlight"><pre>3 none </pre></div> </div> <p>If an assignment to <em>none</em> is made in a simulation with the <em>hybrid/overlay</em> pair style, it wipes out all previous assignments of that atom type pair to sub-styles.</p> <p>Note that you may need to use an <a class="reference internal" href="atom_style.html"><em>atom_style</em></a> hybrid command in your input script, if atoms in the simulation will need attributes from several atom styles, due to using multiple pair potentials.</p> <hr class="docutils" /> <p>Different force fields (e.g. CHARMM vs AMBER) may have different rules for applying weightings that change the strength of pairwise interactions bewteen pairs of atoms that are also 1-2, 1-3, and 1-4 neighbors in the molecular bond topology, as normally set by the <a class="reference internal" href="special_bonds.html"><em>special_bonds</em></a> command. Different weights can be assigned to different pair hybrid sub-styles via the <a class="reference internal" href="pair_modify.html"><em>pair_modify special</em></a> command. This allows multiple force fields to be used in a model of a hybrid system, however, there is no consistent approach to determine parameters automatically for the interactions between the two force fields, this is only recommended when particles described by the different force fields do not mix.</p> <p>Here is an example for mixing CHARMM and AMBER: The global <em>amber</em> setting sets the 1-4 interactions to non-zero scaling factors and then overrides them with 0.0 only for CHARMM:</p> <div class="highlight-python"><div class="highlight"><pre>special_bonds amber pair_hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0 pair_modify pair lj/charmm/coul/long special lj/coul 0.0 0.0 0.0 </pre></div> </div> <p>The this input achieves the same effect:</p> <div class="highlight-python"><div class="highlight"><pre>special_bonds 0.0 0.0 0.1 pair_hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0 pair_modify pair lj/cut/coul/long special lj 0.0 0.0 0.5 pair_modify pair lj/cut/coul/long special coul 0.0 0.0 0.83333333 pair_modify pair lj/charmm/coul/long special lj/coul 0.0 0.0 0.0 </pre></div> </div> <p>Here is an example for mixing Tersoff with OPLS/AA based on a data file that defines bonds for all atoms where for the Tersoff part of the system the force constants for the bonded interactions have been set to 0. Note the global settings are effectively <em>lj/coul 0.0 0.0 0.5</em> as required for OPLS/AA:</p> <div class="highlight-python"><div class="highlight"><pre>special_bonds lj/coul 1e-20 1e-20 0.5 pair_hybrid tersoff lj/cut/coul/long 12.0 pair_modify pair tersoff special lj/coul 1.0 1.0 1.0 </pre></div> </div> <p>See the <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a> doc page for details on the specific syntax, requirements and restrictions.</p> <hr class="docutils" /> <p>The potential energy contribution to the overall system due to an individual sub-style can be accessed and output via the <a class="reference internal" href="compute_pair.html"><em>compute pair</em></a> command.</p> <hr class="docutils" /> <p>IMPORTANT: Several of the potentials defined via the pair_style command in LAMMPS are really many-body potentials, such as Tersoff, AIREBO, MEAM, ReaxFF, etc. The way to think about using these potentials in a hybrid setting is as follows.</p> <p>A subset of atom types is assigned to the many-body potential with a single <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command, using “* <a href="#id1"><span class="problematic" id="id2">*</span></a>” to include all types and the NULL keywords described above to exclude specific types not assigned to that potential. If types 1,3,4 were assigned in that way (but not type 2), this means that all many-body interactions between all atoms of types 1,3,4 will be computed by that potential. Pair_style hybrid allows interactions between type pairs 2-2, 1-2, 2-3, 2-4 to be specified for computation by other pair styles. You could even add a second interaction for 1-1 to be computed by another pair style, assuming pair_style hybrid/overlay is used.</p> <p>But you should not, as a general rule, attempt to exclude the many-body interactions for some subset of the type pairs within the set of 1,3,4 interactions, e.g. exclude 1-1 or 1-3 interactions. That is not conceptually well-defined for many-body interactions, since the potential will typically calculate energies and foces for small groups of atoms, e.g. 3 or 4 atoms, using the neighbor lists of the atoms to find the additional atoms in the group. It is typically non-physical to think of excluding an interaction between a particular pair of atoms when the potential computes 3-body or 4-body interactions.</p> <p>However, you can still use the pair_coeff none setting or the <a class="reference internal" href="neigh_modify.html"><em>neigh_modify exclude</em></a> command to exclude certain type pairs from the neighbor list that will be passed to a manybody sub-style. This will alter the calculations made by a many-body potential, since it builds its list of 3-body, 4-body, etc interactions from the pair list. You will need to think carefully as to whether it produces a physically meaningful result for your model.</p> <p>For example, imagine you have two atom types in your model, type 1 for atoms in one surface, and type 2 for atoms in the other, and you wish to use a Tersoff potential to compute interactions within each surface, but not between surfaces. Then either of these two command sequences would implement that model:</p> <div class="highlight-python"><div class="highlight"><pre>pair_style hybrid tersoff pair_coeff * * tersoff SiC.tersoff C C pair_coeff 1 2 none </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>pair_style tersoff pair_coeff * * SiC.tersoff C C neigh_modify exclude type 1 2 </pre></div> </div> <p>Either way, only neighbor lists with 1-1 or 2-2 interactions would be passed to the Tersoff potential, which means it would compute no 3-body interactions containing both type 1 and 2 atoms.</p> <p>Here is another example, using hybrid/overlay, to use 2 many-body potentials together, in an overlapping manner. Imagine you have CNT (C atoms) on a Si surface. You want to use Tersoff for Si/Si and Si/C interactions, and AIREBO for C/C interactions. Si atoms are type 1; C atoms are type 2. Something like this will work:</p> <div class="highlight-python"><div class="highlight"><pre>pair_style hybrid/overlay tersoff airebo 3.0 pair_coeff * * tersoff SiC.tersoff.custom Si C pair_coeff * * airebo CH.airebo NULL C </pre></div> </div> <p>Note that to prevent the Tersoff potential from computing C/C interactions, you would need to modify the SiC.tersoff file to turn off C/C interaction, i.e. by setting the appropriate coefficients to 0.0.</p> <hr class="docutils" /> <p>Styles with a <em>cuda</em>, <em>gpu</em>, <em>intel</em>, <em>kk</em>, <em>omp</em>, or <em>opt</em> 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 class="reference internal" href="Section_accelerate.html"><em>Section_accelerate</em></a> of the manual.</p> <p>Since the <em>hybrid</em> and <em>hybrid/overlay</em> styles delegate computation to the individual sub-styles, the suffix versions of the <em>hybrid</em> and <em>hybrid/overlay</em> styles are used to propagate the corresponding suffix to all sub-styles, if those versions exist. Otherwise the non-accelerated version will be used.</p> <p>The individual accelerated sub-styles are part of the USER-CUDA, GPU, USER-OMP and OPT packages, respectively. They are only enabled if LAMMPS was built with those packages. See the <a class="reference internal" href="Section_start.html#start-3"><span>Making LAMMPS</span></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 class="reference internal" href="Section_start.html#start-7"><span>-suffix command-line switch</span></a> when you invoke LAMMPS, or you can use the <a class="reference internal" href="suffix.html"><em>suffix</em></a> command in your input script.</p> <p>See <a class="reference internal" href="Section_accelerate.html"><em>Section_accelerate</em></a> of the manual for more instructions on how to use the accelerated styles effectively.</p> <hr class="docutils" /> <p><strong>Mixing, shift, table, tail correction, restart, rRESPA info</strong>:</p> <p>Any pair potential settings made via the <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a> command are passed along to all sub-styles of the hybrid potential.</p> <p>For atom type pairs I,J and I != J, if the sub-style assigned to I,I and J,J is the same, and if the sub-style allows for mixing, then the coefficients for I,J can be mixed. This means you do not have to specify a pair_coeff command for I,J since the I,J type pair will be assigned automatically to the sub-style defined for both I,I and J,J and its coefficients generated by the mixing rule used by that sub-style. For the <em>hybrid/overlay</em> style, there is an additional requirement that both the I,I and J,J pairs are assigned to a single sub-style. See the “pair_modify” command for details of mixing rules. See the See the doc page for the sub-style to see if allows for mixing.</p> <p>The hybrid pair styles supports the <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a> shift, table, and tail options for an I,J pair interaction, if the associated sub-style supports it.</p> <p>For the hybrid pair styles, the list of sub-styles and their respective settings are written to <a class="reference internal" href="restart.html"><em>binary restart files</em></a>, so a <a class="reference internal" href="pair_style.html"><em>pair_style</em></a> command does not need to specified in an input script that reads a restart file. However, the coefficient information is not stored in the restart file. Thus, pair_coeff commands need to be re-specified in the restart input script.</p> <p>These pair styles support the use of the <em>inner</em>, <em>middle</em>, and <em>outer</em> keywords of the <a class="reference internal" href="run_style.html"><em>run_style respa</em></a> command, if their sub-styles do.</p> </div> <div class="section" id="restrictions"> <h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> <p>When using a long-range Coulombic solver (via the <a class="reference internal" href="kspace_style.html"><em>kspace_style</em></a> command) with a hybrid pair_style, one or more sub-styles will be of the “long” variety, e.g. <em>lj/cut/coul/long</em> or <em>buck/coul/long</em>. You must insure that the short-range Coulombic cutoff used by each of these long pair styles is the same or else LAMMPS will generate an error.</p> </div> <div class="section" id="related-commands"> <h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2> <p><a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a></p> <p><strong>Default:</strong> none</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/pair_hybrid.txt b/doc/pair_hybrid.txt index 103a7bd16..34c09f392 100644 --- a/doc/pair_hybrid.txt +++ b/doc/pair_hybrid.txt @@ -1,378 +1,381 @@ "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 hybrid command :h3 pair_style hybrid/omp command :h3 pair_style hybrid/overlay command :h3 pair_style hybrid/overlay/omp command :h3 [Syntax:] pair_style hybrid style1 args style2 args ... pair_style hybrid/overlay style1 args style2 args ... :pre style1,style2 = list of one or more pair styles and their arguments :ul [Examples:] pair_style hybrid lj/cut/coul/cut 10.0 eam lj/cut 5.0 pair_coeff 1*2 1*2 eam niu3 pair_coeff 3 3 lj/cut/coul/cut 1.0 1.0 pair_coeff 1*2 3 lj/cut 0.5 1.2 :pre pair_style hybrid/overlay lj/cut 2.5 coul/long 2.0 pair_coeff * * lj/cut 1.0 1.0 pair_coeff * * coul/long :pre [Description:] The {hybrid} and {hybrid/overlay} styles enable the use of multiple pair styles in one simulation. With the {hybrid} style, exactly one pair style is assigned to each pair of atom types. With the {hybrid/overlay} style, one or more pair styles can be assigned to each pair of atom types. The assignment of pair styles to type pairs is made via the "pair_coeff"_pair_coeff.html command. Here are two examples of hybrid simulations. The {hybrid} style could be used for a simulation of a metal droplet on a LJ surface. The metal atoms interact with each other via an {eam} potential, the surface atoms interact with each other via a {lj/cut} potential, and the metal/surface interaction is also computed via a {lj/cut} potential. The {hybrid/overlay} style could be used as in the 2nd example above, where multiple potentials are superposed in an additive fashion to compute the interaction between atoms. In this example, using {lj/cut} and {coul/long} together gives the same result as if the {lj/cut/coul/long} potential were used by itself. In this case, it would be more efficient to use the single combined potential, but in general any combination of pair potentials can be used together in to produce an interaction that is not encoded in any single pair_style file, e.g. adding Coulombic forces between granular particles. All pair styles that will be used are listed as "sub-styles" following the {hybrid} or {hybrid/overlay} keyword, in any order. Each sub-style's name is followed by its usual arguments, as illustrated in the example above. See the doc pages of individual pair styles for a listing and explanation of the appropriate arguments. Note that an individual pair style can be used multiple times as a sub-style. For efficiency this should only be done if your model requires it. E.g. if you have different regions of Si and C atoms and wish to use a Tersoff potential for pure Si for one set of atoms, and a Tersoff potetnial for pure C for the other set (presumably with some 3rd potential for Si-C interactions), then the sub-style {tersoff} could be listed twice. But if you just want to use a Lennard-Jones or other pairwise potential for several different atom type pairs in your model, then you should just list the sub-style once and use the pair_coeff command to assign parameters for the different type pairs. -IMPORTANT NOTE: An exception to this option to list an individual pair -style multiple times are the pair styles implemented as Fortran -libraries like "pair_style meam"_pair_meam.html +IMPORTANT NOTE: There are two exceptions to this option to list an +individual pair style multiple times. The first is for pair styles +implemented as Fortran libraries: "pair_style meam"_pair_meam.html. This is because unlike a C++ class, they can not be instantiated multiple times, due to the manner in which they were coded in Fortran. +The second is for GPU-enabled pair styles in the GPU package. +This is b/c the GPU package also currently assumes that only one +instance of a pair style is being used. In the pair_coeff commands, the name of a pair style must be added after the I,J type specification, with the remaining coefficients being those appropriate to that style. If the pair style is used multiple times in the pair_style command, then an additional numeric argument must also be specified which is a number from 1 to M where M is the number of times the sub-style was listed in the pair style command. The extra number indicates which instance of the sub-style these coefficients apply to. For example, consider a simulation with 3 atom types: types 1 and 2 are Ni atoms, type 3 are LJ atoms with charges. The following commands would set up a hybrid simulation: pair_style hybrid eam/alloy lj/cut/coul/cut 10.0 lj/cut 8.0 pair_coeff * * eam/alloy nialhjea Ni Ni NULL pair_coeff 3 3 lj/cut/coul/cut 1.0 1.0 pair_coeff 1*2 3 lj/cut 0.8 1.3 :pre As an example of using the same pair style multiple times, consider a simulation with 2 atom types. Type 1 is Si, type 2 is C. The following commands would model the Si atoms with Tersoff, the C atoms with Tersoff, and the cross-interactions with Lennard-Jones: pair_style hybrid lj/cut 2.5 tersoff tersoff pair_coeff * * tersoff 1 Si.tersoff Si NULL pair_coeff * * tersoff 2 C.tersoff NULL C pair_coeff 1 2 lj/cut 1.0 1.5 :pre If pair coefficients are specified in the data file read via the "read_data"_read_data.html command, then the same rule applies. E.g. "eam/alloy" or "lj/cut" must be added after the atom type, for each line in the "Pair Coeffs" section, e.g. Pair Coeffs :pre 1 lj/cut/coul/cut 1.0 1.0 ... :pre Note that the pair_coeff command for some potentials such as "pair_style eam/alloy"_pair_eam.html includes a mapping specification of elements to all atom types, which in the hybrid case, can include atom types not assigned to the {eam/alloy} potential. The NULL keyword is used by many such potentials (eam/alloy, Tersoff, AIREBO, etc), to denote an atom type that will be assigned to a different sub-style. For the {hybrid} style, each atom type pair I,J is assigned to exactly one sub-style. Just as with a simulation using a single pair style, if you specify the same atom type pair in a second pair_coeff command, the previous assignment will be overwritten. For the {hybrid/overlay} style, each atom type pair I,J can be assigned to one or more sub-styles. If you specify the same atom type pair in a second pair_coeff command with a new sub-style, then the second sub-style is added to the list of potentials that will be calculated for two interacting atoms of those types. If you specify the same atom type pair in a second pair_coeff command with a sub-style that has already been defined for that pair of atoms, then the new pair coefficients simply override the previous ones, as in the normal usage of the pair_coeff command. E.g. these two sets of commands are the same: pair_style lj/cut 2.5 pair_coeff * * 1.0 1.0 pair_coeff 2 2 1.5 0.8 :pre pair_style hybrid/overlay lj/cut 2.5 pair_coeff * * lj/cut 1.0 1.0 pair_coeff 2 2 lj/cut 1.5 0.8 :pre Coefficients must be defined for each pair of atoms types via the "pair_coeff"_pair_coeff.html command as described 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 both the {hybrid} and {hybrid/overlay} styles, every atom type pair I,J (where I <= J) must be assigned to at least one sub-style via the "pair_coeff"_pair_coeff.html command as in the examples above, or in the data file read by the "read_data"_read_data.html, or by mixing as described below. If you want there to be no interactions between a particular pair of atom types, you have 3 choices. You can assign the type pair to some sub-style and use the "neigh_modify exclude type"_neigh_modify.html command. You can assign it to some sub-style and set the coefficients so that there is effectively no interaction (e.g. epsilon = 0.0 in a LJ potential). Or, for {hybrid} and {hybrid/overlay} simulations, you can use this form of the pair_coeff command in your input script: pair_coeff 2 3 none :pre or this form in the "Pair Coeffs" section of the data file: 3 none :pre If an assignment to {none} is made in a simulation with the {hybrid/overlay} pair style, it wipes out all previous assignments of that atom type pair to sub-styles. Note that you may need to use an "atom_style"_atom_style.html hybrid command in your input script, if atoms in the simulation will need attributes from several atom styles, due to using multiple pair potentials. :line Different force fields (e.g. CHARMM vs AMBER) may have different rules for applying weightings that change the strength of pairwise interactions bewteen pairs of atoms that are also 1-2, 1-3, and 1-4 neighbors in the molecular bond topology, as normally set by the "special_bonds"_special_bonds.html command. Different weights can be assigned to different pair hybrid sub-styles via the "pair_modify special"_pair_modify.html command. This allows multiple force fields to be used in a model of a hybrid system, however, there is no consistent approach to determine parameters automatically for the interactions between the two force fields, this is only recommended when particles described by the different force fields do not mix. Here is an example for mixing CHARMM and AMBER: The global {amber} setting sets the 1-4 interactions to non-zero scaling factors and then overrides them with 0.0 only for CHARMM: special_bonds amber pair_hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0 pair_modify pair lj/charmm/coul/long special lj/coul 0.0 0.0 0.0 :pre The this input achieves the same effect: special_bonds 0.0 0.0 0.1 pair_hybrid lj/charmm/coul/long 8.0 10.0 lj/cut/coul/long 10.0 pair_modify pair lj/cut/coul/long special lj 0.0 0.0 0.5 pair_modify pair lj/cut/coul/long special coul 0.0 0.0 0.83333333 pair_modify pair lj/charmm/coul/long special lj/coul 0.0 0.0 0.0 :pre Here is an example for mixing Tersoff with OPLS/AA based on a data file that defines bonds for all atoms where for the Tersoff part of the system the force constants for the bonded interactions have been set to 0. Note the global settings are effectively {lj/coul 0.0 0.0 0.5} as required for OPLS/AA: special_bonds lj/coul 1e-20 1e-20 0.5 pair_hybrid tersoff lj/cut/coul/long 12.0 pair_modify pair tersoff special lj/coul 1.0 1.0 1.0 :pre See the "pair_modify"_pair_modify.html doc page for details on the specific syntax, requirements and restrictions. :line The potential energy contribution to the overall system due to an individual sub-style can be accessed and output via the "compute pair"_compute_pair.html command. :line IMPORTANT: Several of the potentials defined via the pair_style command in LAMMPS are really many-body potentials, such as Tersoff, AIREBO, MEAM, ReaxFF, etc. The way to think about using these potentials in a hybrid setting is as follows. A subset of atom types is assigned to the many-body potential with a single "pair_coeff"_pair_coeff.html command, using "* *" to include all types and the NULL keywords described above to exclude specific types not assigned to that potential. If types 1,3,4 were assigned in that way (but not type 2), this means that all many-body interactions between all atoms of types 1,3,4 will be computed by that potential. Pair_style hybrid allows interactions between type pairs 2-2, 1-2, 2-3, 2-4 to be specified for computation by other pair styles. You could even add a second interaction for 1-1 to be computed by another pair style, assuming pair_style hybrid/overlay is used. But you should not, as a general rule, attempt to exclude the many-body interactions for some subset of the type pairs within the set of 1,3,4 interactions, e.g. exclude 1-1 or 1-3 interactions. That is not conceptually well-defined for many-body interactions, since the potential will typically calculate energies and foces for small groups of atoms, e.g. 3 or 4 atoms, using the neighbor lists of the atoms to find the additional atoms in the group. It is typically non-physical to think of excluding an interaction between a particular pair of atoms when the potential computes 3-body or 4-body interactions. However, you can still use the pair_coeff none setting or the "neigh_modify exclude"_neigh_modify.html command to exclude certain type pairs from the neighbor list that will be passed to a manybody sub-style. This will alter the calculations made by a many-body potential, since it builds its list of 3-body, 4-body, etc interactions from the pair list. You will need to think carefully as to whether it produces a physically meaningful result for your model. For example, imagine you have two atom types in your model, type 1 for atoms in one surface, and type 2 for atoms in the other, and you wish to use a Tersoff potential to compute interactions within each surface, but not between surfaces. Then either of these two command sequences would implement that model: pair_style hybrid tersoff pair_coeff * * tersoff SiC.tersoff C C pair_coeff 1 2 none :pre pair_style tersoff pair_coeff * * SiC.tersoff C C neigh_modify exclude type 1 2 :pre Either way, only neighbor lists with 1-1 or 2-2 interactions would be passed to the Tersoff potential, which means it would compute no 3-body interactions containing both type 1 and 2 atoms. Here is another example, using hybrid/overlay, to use 2 many-body potentials together, in an overlapping manner. Imagine you have CNT (C atoms) on a Si surface. You want to use Tersoff for Si/Si and Si/C interactions, and AIREBO for C/C interactions. Si atoms are type 1; C atoms are type 2. Something like this will work: pair_style hybrid/overlay tersoff airebo 3.0 pair_coeff * * tersoff SiC.tersoff.custom Si C pair_coeff * * airebo CH.airebo NULL C :pre Note that to prevent the Tersoff potential from computing C/C interactions, you would need to modify the SiC.tersoff file to turn off C/C interaction, i.e. by setting the appropriate coefficients to 0.0. :line Styles with a {cuda}, {gpu}, {intel}, {kk}, {omp}, 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 "Section_accelerate"_Section_accelerate.html of the manual. Since the {hybrid} and {hybrid/overlay} styles delegate computation to the individual sub-styles, the suffix versions of the {hybrid} and {hybrid/overlay} styles are used to propagate the corresponding suffix to all sub-styles, if those versions exist. Otherwise the non-accelerated version will be used. The individual accelerated sub-styles are part of the USER-CUDA, GPU, USER-OMP and OPT packages, respectively. They are only enabled if LAMMPS was built with 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#start_7 when you invoke LAMMPS, or you can use the "suffix"_suffix.html command in your input script. See "Section_accelerate"_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]: Any pair potential settings made via the "pair_modify"_pair_modify.html command are passed along to all sub-styles of the hybrid potential. For atom type pairs I,J and I != J, if the sub-style assigned to I,I and J,J is the same, and if the sub-style allows for mixing, then the coefficients for I,J can be mixed. This means you do not have to specify a pair_coeff command for I,J since the I,J type pair will be assigned automatically to the sub-style defined for both I,I and J,J and its coefficients generated by the mixing rule used by that sub-style. For the {hybrid/overlay} style, there is an additional requirement that both the I,I and J,J pairs are assigned to a single sub-style. See the "pair_modify" command for details of mixing rules. See the See the doc page for the sub-style to see if allows for mixing. The hybrid pair styles supports the "pair_modify"_pair_modify.html shift, table, and tail options for an I,J pair interaction, if the associated sub-style supports it. For the hybrid pair styles, the list of sub-styles and their respective settings are written to "binary restart files"_restart.html, so a "pair_style"_pair_style.html command does not need to specified in an input script that reads a restart file. However, the coefficient information is not stored in the restart file. Thus, pair_coeff commands need to be re-specified in the restart input script. These pair styles support the use of the {inner}, {middle}, and {outer} keywords of the "run_style respa"_run_style.html command, if their sub-styles do. [Restrictions:] When using a long-range Coulombic solver (via the "kspace_style"_kspace_style.html command) with a hybrid pair_style, one or more sub-styles will be of the "long" variety, e.g. {lj/cut/coul/long} or {buck/coul/long}. You must insure that the short-range Coulombic cutoff used by each of these long pair styles is the same or else LAMMPS will generate an error. [Related commands:] "pair_coeff"_pair_coeff.html [Default:] none diff --git a/doc/pair_srp.html b/doc/pair_srp.html index 4e926a94c..38b3f4f56 100644 --- a/doc/pair_srp.html +++ b/doc/pair_srp.html @@ -1,326 +1,328 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>pair_style srp command — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>pair_style srp command</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="pair-style-srp-command"> <span id="index-0"></span><h1>pair_style srp command<a class="headerlink" href="#pair-style-srp-command" title="Permalink to this headline">¶</a></h1> <div class="section" id="syntax"> <h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2> -<p>pair_style srp cutoff bond_type dist keyword value ...</p> +<p>pair_style srp cutoff btype dist keyword value ...</p> <ul class="simple"> <li>cutoff = global cutoff for SRP interactions (distance units)</li> -<li>bond_type = bond type to apply SRP interactions</li> +<li>btype = bond type to apply SRP interactions to (can be wildcard, see below)</li> <li>distance = <em>min</em> or <em>mid</em></li> <li>zero or more keyword/value pairs may be appended</li> <li>keyword = <em>exclude</em></li> </ul> <pre class="literal-block"> <em>exclude</em> value = <em>yes</em> or <em>no</em> </pre> </div> <div class="section" id="examples"> <h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><pre>pair_style hybrid dpd 1.0 1.0 12345 srp 0.8 1 mid exclude yes pair_coeff 1 1 dpd 60.0 4.5 1.0 pair_coeff 1 2 none pair_coeff 2 2 srp 100.0 0.8 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>pair_style hybrid dpd 1.0 1.0 12345 srp 0.8 * min exclude yes pair_coeff 1 1 dpd 60.0 50 1.0 pair_coeff 1 2 none pair_coeff 2 2 srp 40.0 </pre></div> </div> <div class="highlight-python"><div class="highlight"><pre>pair_style hybrid srp 0.8 2 mid pair_coeff 1 1 none pair_coeff 1 2 none pair_coeff 2 2 srp 100.0 0.8 </pre></div> </div> </div> <div class="section" id="description"> <h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2> <p>Style <em>srp</em> computes a soft segmental repulsive potential (SRP) that acts between pairs of bonds. This potential is useful for preventing bonds from passing through one another when a soft non-bonded potential acts between beads in, for example, DPD polymer chains. An example input script that uses this command is provided in examples/USER/srp.</p> -<p>Bonds of type <em>btype</em> interact with one another through a +<p>Bonds of specified type <em>btype</em> interact with one another through a bond-pairwise potential, such that the force on bond <em>i</em> due to bond <em>j</em> is as follows</p> <img alt="_images/pair_srp1.jpg" class="align-center" src="_images/pair_srp1.jpg" /> <p>where <em>r</em> and <em>rij</em> are the distance and unit vector between the two -bonds. The bondtype can also be specified as an asterisk (*) and then -this interaction applied to all bonds. -The <em>mid</em> option computes <em>r</em> and <em>rij</em> from the midpoint -distance between bonds. The <em>min</em> option computes <em>r</em> and <em>rij</em> from -the minimum distance between bonds. The force acting on a bond is -mapped onto the two bond atoms according to the lever rule,</p> +bonds. Note that <em>btype</em> can be specified as an asterisk “*”, which +case the interaction is applied to all bond types. The <em>mid</em> option +computes <em>r</em> and <em>rij</em> from the midpoint distance between bonds. The +<em>min</em> option computes <em>r</em> and <em>rij</em> from the minimum distance between +bonds. The force acting on a bond is mapped onto the two bond atoms +according to the lever rule,</p> <img alt="_images/pair_srp2.jpg" class="align-center" src="_images/pair_srp2.jpg" /> <p>where <em>L</em> is the normalized distance from the atom to the point of closest approach of bond <em>i</em> and <em>j</em>. The <em>mid</em> option takes <em>L</em> as 0.5 for each interaction as described in <a class="reference internal" href="#sirk"><span>(Sirk)</span></a>.</p> <p>The following coefficients must be defined via the <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command as in the examples above, or in the data file or restart file read by the <a class="reference internal" href="read_data.html"><em>read_data</em></a> or <a class="reference internal" href="read_restart.html"><em>read_restart</em></a> commands:</p> <ul class="simple"> <li><em>C</em> (force units)</li> <li><em>rc</em> (distance units)</li> </ul> <p>The last coefficient is optional. If not specified, the global cutoff is used.</p> <div class="admonition warning"> <p class="first admonition-title">Warning</p> -<p class="last">Pair style srp considers each bond of type <em>btype</em> as -a fictitious particle of type <em>bptype</em>, where <em>bptype</em> is the largest -atom type in the system. These “bond particles” are inserted at the -beginning of the run, and serve as placeholders that define the -position of the bonds. This allows neighbor lists to be constructed -and pairwise interactions to be computed in almost the same way as is -done for point particles. Because bonds interact only with other -bonds, <a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid</em></a> should be used to turn off -interactions between atom type <em>bptype</em> and all other types of atoms. -An error will be flagged if <a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid</em></a> is -not used. Further, only bond particles should be given an atom type -of <em>bptype</em>; a check is done at the beginning of the run to ensure -there are no regular atoms of <em>bptype</em>.</p> +<p class="last">Pair style srp considers each bond of type <em>btype</em> to +be a fictitious “particle” of type <em>bptype</em>, where <em>bptype</em> is the +largest atom type in the system. There cannot be any actual particles +assigned to this atom type. This means you must specify the number of +types in your system to be one larger would normally be the case, +e.g. via the <a class="reference internal" href="create_box.html"><em>create_box</em></a> or +<a class="reference internal" href="read_data.html"><em>read_data</em></a> commands. These ficitious “bond particles” +are inserted at the beginning of the run, and serve as placeholders +that define the position of the bonds. This allows neighbor lists to +be constructed and pairwise interactions to be computed in almost the +same way as is done for actual particles. Because bonds interact only +with other bonds, <a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid</em></a> should be used +to turn off interactions between atom type <em>bptype</em> and all other +types of atoms. An error will be flagged if <a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid</em></a> is not used.</p> </div> <p>The optional <em>exclude</em> keyword determines if forces are computed between first neighbor (directly connected) bonds. For a setting of -<em>no</em>, first neighbor forces are computed; for <em>yes</em> they are not computed. A setting of <em>no</em> -cannot be used with the <em>min</em> option for distance calculation because the the minimum distance between -directly connected bonds is zero.</p> +<em>no</em>, first neighbor forces are computed; for <em>yes</em> they are not +computed. A setting of <em>no</em> cannot be used with the <em>min</em> option for +distance calculation because the the minimum distance between directly +connected bonds is zero.</p> <p>Pair style <em>srp</em> turns off normalization of thermodynamic properties by particle number, as if the command <a class="reference internal" href="thermo_modify.html"><em>thermo_modify norm no</em></a> had been issued.</p> <p>The pairwise energy associated with style <em>srp</em> is shifted to be zero at the cutoff distance <em>rc</em>.</p> <hr class="docutils" /> <p><strong>Mixing, shift, table, tail correction, restart, rRESPA info</strong>:</p> <p>This pair styles does not support mixing.</p> <p>This pair style does not support the <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a> shift option for the energy of the pair interaction. Note that as discussed above, the energy term is already shifted to be 0.0 at the cutoff distance <em>rc</em>.</p> <p>The <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a> table option is not relevant for this pair style.</p> <p>This pair style does not support the <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a> tail option for adding long-range tail corrections to energy and pressure.</p> <p>This pair style writes global and per-atom information to <a class="reference internal" href="restart.html"><em>binary restart files</em></a>. Pair srp should be used with <a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid</em></a>, thus the pair_coeff commands need to be specified in the input script when reading a restart file.</p> <p>This pair style can only be used via the <em>pair</em> keyword of the <a class="reference internal" href="run_style.html"><em>run_style respa</em></a> command. It does not support the <em>inner</em>, <em>middle</em>, <em>outer</em> keywords.</p> </div> <hr class="docutils" /> <div class="section" id="restrictions"> <h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> <p>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 for more info.</p> <p>This pair style must be used with <a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid</em></a>.</p> <p>This pair style requires the <a class="reference internal" href="newton.html"><em>newton</em></a> command to be <em>on</em> for non-bonded interactions.</p> </div> <div class="section" id="related-commands"> <h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2> <p><a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid</em></a>, <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a>, <a class="reference internal" href="pair_dpd.html"><em>pair dpd</em></a></p> </div> <div class="section" id="default"> <h2>Default<a class="headerlink" href="#default" title="Permalink to this headline">¶</a></h2> <p>The default keyword value is exclude = yes.</p> <hr class="docutils" /> <p id="sirk"><strong>(Sirk)</strong> Sirk TW, Sliozberg YR, Brennan JK, Lisal M, Andzelm JW, J Chem Phys, 136 (13) 134903, 2012.</p> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/pair_srp.txt b/doc/pair_srp.txt index 05a89fde6..02e3f8383 100644 --- a/doc/pair_srp.txt +++ b/doc/pair_srp.txt @@ -1,160 +1,164 @@ "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 srp command :h3 [Syntax:] -pair_style srp cutoff bond_type dist keyword value ... +pair_style srp cutoff btype dist keyword value ... cutoff = global cutoff for SRP interactions (distance units) :ulb,l -bond_type = bond type to apply SRP interactions :l +btype = bond type to apply SRP interactions to (can be wildcard, see below) :l distance = {min} or {mid} :l zero or more keyword/value pairs may be appended :l keyword = {exclude} :l {exclude} value = {yes} or {no} :pre :ule [Examples:] pair_style hybrid dpd 1.0 1.0 12345 srp 0.8 1 mid exclude yes pair_coeff 1 1 dpd 60.0 4.5 1.0 pair_coeff 1 2 none pair_coeff 2 2 srp 100.0 0.8 :pre pair_style hybrid dpd 1.0 1.0 12345 srp 0.8 * min exclude yes pair_coeff 1 1 dpd 60.0 50 1.0 pair_coeff 1 2 none pair_coeff 2 2 srp 40.0 :pre pair_style hybrid srp 0.8 2 mid pair_coeff 1 1 none pair_coeff 1 2 none pair_coeff 2 2 srp 100.0 0.8 :pre [Description:] Style {srp} computes a soft segmental repulsive potential (SRP) that acts between pairs of bonds. This potential is useful for preventing bonds from passing through one another when a soft non-bonded potential acts between beads in, for example, DPD polymer chains. An example input script that uses this command is provided in examples/USER/srp. -Bonds of type {btype} interact with one another through a +Bonds of specified type {btype} interact with one another through a bond-pairwise potential, such that the force on bond {i} due to bond {j} is as follows :c,image(Eqs/pair_srp1.jpg) where {r} and {rij} are the distance and unit vector between the two -bonds. The bondtype can also be specified as an asterisk (*) and then -this interaction applied to all bonds. -The {mid} option computes {r} and {rij} from the midpoint -distance between bonds. The {min} option computes {r} and {rij} from -the minimum distance between bonds. The force acting on a bond is -mapped onto the two bond atoms according to the lever rule, +bonds. Note that {btype} can be specified as an asterisk "*", which +case the interaction is applied to all bond types. The {mid} option +computes {r} and {rij} from the midpoint distance between bonds. The +{min} option computes {r} and {rij} from the minimum distance between +bonds. The force acting on a bond is mapped onto the two bond atoms +according to the lever rule, :c,image(Eqs/pair_srp2.jpg) where {L} is the normalized distance from the atom to the point of closest approach of bond {i} and {j}. The {mid} option takes {L} as 0.5 for each interaction as described in "(Sirk)"_#Sirk. The following coefficients must be defined via the "pair_coeff"_pair_coeff.html command as in the examples above, or in the data file or restart file read by the "read_data"_read_data.html or "read_restart"_read_restart.html commands: {C} (force units) {rc} (distance units) :ul The last coefficient is optional. If not specified, the global cutoff is used. -IMPORTANT NOTE: Pair style srp considers each bond of type {btype} as -a fictitious particle of type {bptype}, where {bptype} is the largest -atom type in the system. These "bond particles" are inserted at the -beginning of the run, and serve as placeholders that define the -position of the bonds. This allows neighbor lists to be constructed -and pairwise interactions to be computed in almost the same way as is -done for point particles. Because bonds interact only with other -bonds, "pair_style hybrid"_pair_hybrid.html should be used to turn off -interactions between atom type {bptype} and all other types of atoms. -An error will be flagged if "pair_style hybrid"_pair_hybrid.html is -not used. Further, only bond particles should be given an atom type -of {bptype}; a check is done at the beginning of the run to ensure -there are no regular atoms of {bptype}. +IMPORTANT NOTE: Pair style srp considers each bond of type {btype} to +be a fictitious "particle" of type {bptype}, where {bptype} is the +largest atom type in the system. There cannot be any actual particles +assigned to this atom type. This means you must specify the number of +types in your system to be one larger would normally be the case, +e.g. via the "create_box"_create_box.html or +"read_data"_read_data.html commands. These ficitious "bond particles" +are inserted at the beginning of the run, and serve as placeholders +that define the position of the bonds. This allows neighbor lists to +be constructed and pairwise interactions to be computed in almost the +same way as is done for actual particles. Because bonds interact only +with other bonds, "pair_style hybrid"_pair_hybrid.html should be used +to turn off interactions between atom type {bptype} and all other +types of atoms. An error will be flagged if "pair_style +hybrid"_pair_hybrid.html is not used. The optional {exclude} keyword determines if forces are computed between first neighbor (directly connected) bonds. For a setting of -{no}, first neighbor forces are computed; for {yes} they are not computed. A setting of {no} -cannot be used with the {min} option for distance calculation because the the minimum distance between -directly connected bonds is zero. +{no}, first neighbor forces are computed; for {yes} they are not +computed. A setting of {no} cannot be used with the {min} option for +distance calculation because the the minimum distance between directly +connected bonds is zero. Pair style {srp} turns off normalization of thermodynamic properties by particle number, as if the command "thermo_modify norm no"_thermo_modify.html had been issued. The pairwise energy associated with style {srp} is shifted to be zero at the cutoff distance {rc}. :line [Mixing, shift, table, tail correction, restart, rRESPA info]: This pair styles does not support mixing. This pair style does not support the "pair_modify"_pair_modify.html shift option for the energy of the pair interaction. Note that as discussed above, the energy term is already shifted to be 0.0 at the cutoff distance {rc}. 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 global and per-atom information to "binary restart files"_restart.html. Pair srp should be used with "pair_style hybrid"_pair_hybrid.html, thus the pair_coeff commands need to be specified in the input script when reading 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 for more info. -This pair style must be used with "pair_style hybrid"_pair_hybrid.html. +This pair style must be used with "pair_style +hybrid"_pair_hybrid.html. This pair style requires the "newton"_newton.html command to be {on} for non-bonded interactions. [Related commands:] "pair_style hybrid"_pair_hybrid.html, "pair_coeff"_pair_coeff.html, "pair dpd"_pair_dpd.html [Default:] The default keyword value is exclude = yes. :line :link(Sirk) [(Sirk)] Sirk TW, Sliozberg YR, Brennan JK, Lisal M, Andzelm JW, J Chem Phys, 136 (13) 134903, 2012. diff --git a/doc/pair_style.html b/doc/pair_style.html index 4396eb0b2..761e22141 100644 --- a/doc/pair_style.html +++ b/doc/pair_style.html @@ -1,404 +1,405 @@ <!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>pair_style command — LAMMPS 15 May 2015 version documentation</title> <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> <script src="_static/js/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="Manual.html" class="icon icon-home"> LAMMPS </a> <div role="search"> <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> <li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="Manual.html">LAMMPS</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="Manual.html">Docs</a> »</li> <li>pair_style command</li> <li class="wy-breadcrumbs-aside"> <a href="http://lammps.sandia.gov">Website</a> <a href="Section_commands.html#comm">Commands</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <div class="section" id="pair-style-command"> <span id="index-0"></span><h1>pair_style command<a class="headerlink" href="#pair-style-command" title="Permalink to this headline">¶</a></h1> <div class="section" id="syntax"> <h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><pre>pair_style style args </pre></div> </div> <ul class="simple"> <li>style = one of the styles from the list below</li> <li>args = arguments used by a particular style</li> </ul> </div> <div class="section" id="examples"> <h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><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></div> </div> </div> <div class="section" id="description"> <h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2> <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 class="reference internal" href="bond_style.html"><em>bond_style</em></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 <em>hybrid</em> 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 class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command or read from a file by the <a class="reference internal" href="read_data.html"><em>read_data</em></a> or <a class="reference internal" href="read_restart.html"><em>read_restart</em></a> commands.</p> <p>The <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></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 class="reference internal" href="write_restart.html"><em>restart file</em></a> is listed on the potential doc page.</p> <p>In the formulas listed for each pair style, <em>E</em> is the energy of a pairwise interaction between two atoms separated by a distance <em>r</em>. 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 class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></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 class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command. The exceptions to this are that pair_style <em>table</em> and <em>hybrid</em> settings cannot be reset. A new pair_style command for these styles will wipe out all previously specified pair_coeff values.</p> <hr class="docutils" /> <p>Here is an alphabetic list of pair styles defined in LAMMPS. They are also given in more compact form in the pair section of <a class="reference internal" href="Section_commands.html#cmd-5"><span>this page</span></a>.</p> <p>Click on the style to display the formula it computes, arguments specified in the pair_style command, and coefficients specified by the associated <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> command.</p> <p>There are also additional pair styles (not listed here) 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 class="reference internal" href="Section_commands.html#cmd-5"><span>this page</span></a>.</p> <p>There are also additional accelerated pair styles (not listed here) 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 class="reference internal" href="Section_commands.html#cmd-5"><span>this page</span></a>.</p> <ul class="simple"> <li><a class="reference internal" href="pair_none.html"><em>pair_style none</em></a> - turn off pairwise interactions</li> <li><a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid</em></a> - multiple styles of pairwise interactions</li> <li><a class="reference internal" href="pair_hybrid.html"><em>pair_style hybrid/overlay</em></a> - multiple styles of superposed pairwise interactions</li> <li><a class="reference internal" href="pair_adp.html"><em>pair_style adp</em></a> - angular dependent potential (ADP) of Mishin</li> <li><a class="reference internal" href="pair_airebo.html"><em>pair_style airebo</em></a> - AIREBO potential of Stuart</li> <li><a class="reference internal" href="pair_beck.html"><em>pair_style beck</em></a> - Beck potential</li> <li><a class="reference internal" href="pair_body.html"><em>pair_style body</em></a> - interactions between body particles</li> <li><a class="reference internal" href="pair_bop.html"><em>pair_style bop</em></a> - BOP potential of Pettifor</li> <li><a class="reference internal" href="pair_born.html"><em>pair_style born</em></a> - Born-Mayer-Huggins potential</li> <li><a class="reference internal" href="pair_born.html"><em>pair_style born/coul/long</em></a> - Born-Mayer-Huggins with long-range Coulombics</li> <li><a class="reference internal" href="pair_born.html"><em>pair_style born/coul/long/cs</em></a> - Born-Mayer-Huggins with long-range Coulombics and core/shell</li> <li><a class="reference internal" href="pair_born.html"><em>pair_style born/coul/msm</em></a> - Born-Mayer-Huggins with long-range MSM Coulombics</li> <li><a class="reference internal" href="pair_born.html"><em>pair_style born/coul/wolf</em></a> - Born-Mayer-Huggins with Coulombics via Wolf potential</li> <li><a class="reference internal" href="pair_brownian.html"><em>pair_style brownian</em></a> - Brownian potential for Fast Lubrication Dynamics</li> <li><a class="reference internal" href="pair_brownian.html"><em>pair_style brownian/poly</em></a> - Brownian potential for Fast Lubrication Dynamics with polydispersity</li> <li><a class="reference internal" href="pair_buck.html"><em>pair_style buck</em></a> - Buckingham potential</li> <li><a class="reference internal" href="pair_buck.html"><em>pair_style buck/coul/cut</em></a> - Buckingham with cutoff Coulomb</li> <li><a class="reference internal" href="pair_buck.html"><em>pair_style buck/coul/long</em></a> - Buckingham with long-range Coulombics</li> <li><a class="reference internal" href="pair_buck.html"><em>pair_style buck/coul/long/cs</em></a> - Buckingham with long-range Coulombics and core/shell</li> <li><a class="reference internal" href="pair_buck.html"><em>pair_style buck/coul/msm</em></a> - Buckingham long-range MSM Coulombics</li> <li><a class="reference internal" href="pair_buck_long.html"><em>pair_style buck/long/coul/long</em></a> - long-range Buckingham with long-range Coulombics</li> <li><a class="reference internal" href="pair_colloid.html"><em>pair_style colloid</em></a> - integrated colloidal potential</li> <li><a class="reference internal" href="pair_comb.html"><em>pair_style comb</em></a> - charge-optimized many-body (COMB) potential</li> <li><a class="reference internal" href="pair_comb.html"><em>pair_style comb3</em></a> - charge-optimized many-body (COMB3) potential</li> <li><a class="reference internal" href="pair_coul.html"><em>pair_style coul/cut</em></a> - cutoff Coulombic potential</li> <li><a class="reference internal" href="pair_coul.html"><em>pair_style coul/debye</em></a> - cutoff Coulombic potential with Debye screening</li> <li><a class="reference internal" href="pair_coul.html"><em>pair_style coul/dsf</em></a> - Coulombics via damped shifted forces</li> <li><a class="reference internal" href="pair_coul.html"><em>pair_style coul/long</em></a> - long-range Coulombic potential</li> <li><a class="reference internal" href="pair_coul.html"><em>pair_style coul/long/cs</em></a> - long-range Coulombic potential and core/shell</li> <li><a class="reference internal" href="pair_coul.html"><em>pair_style coul/msm</em></a> - long-range MSM Coulombics</li> <li><code class="xref doc docutils literal"><span class="pre">pair_style</span> <span class="pre">coul/msm</span></code> - Coulombics via Streitz/Mintmire Slater orbitals</li> <li><a class="reference internal" href="pair_coul.html"><em>pair_style coul/wolf</em></a> - Coulombics via Wolf potential</li> <li><a class="reference internal" href="pair_dpd.html"><em>pair_style dpd</em></a> - dissipative particle dynamics (DPD)</li> <li><a class="reference internal" href="pair_dpd.html"><em>pair_style dpd/tstat</em></a> - DPD thermostatting</li> <li><a class="reference internal" href="pair_dsmc.html"><em>pair_style dsmc</em></a> - Direct Simulation Monte Carlo (DSMC)</li> <li><a class="reference internal" href="pair_eam.html"><em>pair_style eam</em></a> - embedded atom method (EAM)</li> <li><a class="reference internal" href="pair_eam.html"><em>pair_style eam/alloy</em></a> - alloy EAM</li> <li><a class="reference internal" href="pair_eam.html"><em>pair_style eam/fs</em></a> - Finnis-Sinclair EAM</li> <li><a class="reference internal" href="pair_eim.html"><em>pair_style eim</em></a> - embedded ion method (EIM)</li> <li><a class="reference internal" href="pair_gauss.html"><em>pair_style gauss</em></a> - Gaussian potential</li> <li><a class="reference internal" href="pair_gayberne.html"><em>pair_style gayberne</em></a> - Gay-Berne ellipsoidal potential</li> <li><a class="reference internal" href="pair_gran.html"><em>pair_style gran/hertz/history</em></a> - granular potential with Hertzian interactions</li> <li><a class="reference internal" href="pair_gran.html"><em>pair_style gran/hooke</em></a> - granular potential with history effects</li> <li><a class="reference internal" href="pair_gran.html"><em>pair_style gran/hooke/history</em></a> - granular potential without history effects</li> <li><a class="reference internal" href="pair_hbond_dreiding.html"><em>pair_style hbond/dreiding/lj</em></a> - DREIDING hydrogen bonding LJ potential</li> <li><a class="reference internal" href="pair_hbond_dreiding.html"><em>pair_style hbond/dreiding/morse</em></a> - DREIDING hydrogen bonding Morse potential</li> <li><a class="reference internal" href="pair_kim.html"><em>pair_style kim</em></a> - interface to potentials provided by KIM project</li> <li><a class="reference internal" href="pair_lcbop.html"><em>pair_style lcbop</em></a> - long-range bond-order potential (LCBOP)</li> <li><a class="reference internal" href="pair_line_lj.html"><em>pair_style line/lj</em></a> - LJ potential between line segments</li> <li><a class="reference internal" href="pair_charmm.html"><em>pair_style lj/charmm/coul/charmm</em></a> - CHARMM potential with cutoff Coulomb</li> <li><a class="reference internal" href="pair_charmm.html"><em>pair_style lj/charmm/coul/charmm/implicit</em></a> - CHARMM for implicit solvent</li> <li><a class="reference internal" href="pair_charmm.html"><em>pair_style lj/charmm/coul/long</em></a> - CHARMM with long-range Coulomb</li> <li><a class="reference internal" href="pair_charmm.html"><em>pair_style lj/charmm/coul/msm</em></a> - CHARMM with long-range MSM Coulombics</li> <li><a class="reference internal" href="pair_class2.html"><em>pair_style lj/class2</em></a> - COMPASS (class 2) force field with no Coulomb</li> <li><a class="reference internal" href="pair_class2.html"><em>pair_style lj/class2/coul/cut</em></a> - COMPASS with cutoff Coulomb</li> <li><a class="reference internal" href="pair_class2.html"><em>pair_style lj/class2/coul/long</em></a> - COMPASS with long-range Coulomb</li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut</em></a> - cutoff Lennard-Jones potential with no Coulomb</li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/coul/cut</em></a> - LJ with cutoff Coulomb</li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/coul/debye</em></a> - LJ with Debye screening added to Coulomb</li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/coul/dsf</em></a> - LJ with Coulombics via damped shifted forces</li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/coul/long</em></a> - LJ with long-range Coulombics</li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/coul/msm</em></a> - LJ with long-range MSM Coulombics</li> <li><a class="reference internal" href="pair_dipole.html"><em>pair_style lj/cut/dipole/cut</em></a> - point dipoles with cutoff</li> <li><a class="reference internal" href="pair_dipole.html"><em>pair_style lj/cut/dipole/long</em></a> - point dipoles with long-range Ewald</li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/tip4p/cut</em></a> - LJ with cutoff Coulomb for TIP4P water</li> <li><a class="reference internal" href="pair_lj.html"><em>pair_style lj/cut/tip4p/long</em></a> - LJ with long-range Coulomb for TIP4P water</li> <li><a class="reference internal" href="pair_lj_expand.html"><em>pair_style lj/expand</em></a> - Lennard-Jones for variable size particles</li> <li><a class="reference internal" href="pair_gromacs.html"><em>pair_style lj/gromacs</em></a> - GROMACS-style Lennard-Jones potential</li> <li><a class="reference internal" href="pair_gromacs.html"><em>pair_style lj/gromacs/coul/gromacs</em></a> - GROMACS-style LJ and Coulombic potential</li> <li><a class="reference internal" href="pair_lj_long.html"><em>pair_style lj/long/coul/long</em></a> - long-range LJ and long-range Coulombics</li> <li><a class="reference internal" href="pair_dipole.html"><em>pair_style lj/long/dipole/long</em></a> - long-range LJ and long-range point dipoles</li> <li><a class="reference internal" href="pair_lj_long.html"><em>pair_style lj/long/tip4p/long</em></a> - long-range LJ and long-range Coulomb for TIP4P water</li> <li><a class="reference internal" href="pair_lj_smooth.html"><em>pair_style lj/smooth</em></a> - smoothed Lennard-Jones potential</li> <li><a class="reference internal" href="pair_lj_smooth_linear.html"><em>pair_style lj/smooth/linear</em></a> - linear smoothed Lennard-Jones potential</li> <li><a class="reference internal" href="pair_lj96.html"><em>pair_style lj96/cut</em></a> - Lennard-Jones 9/6 potential</li> <li><a class="reference internal" href="pair_lubricate.html"><em>pair_style lubricate</em></a> - hydrodynamic lubrication forces</li> <li><a class="reference internal" href="pair_lubricate.html"><em>pair_style lubricate/poly</em></a> - hydrodynamic lubrication forces with polydispersity</li> <li><a class="reference internal" href="pair_lubricateU.html"><em>pair_style lubricateU</em></a> - hydrodynamic lubrication forces for Fast Lubrication Dynamics</li> <li><a class="reference internal" href="pair_lubricateU.html"><em>pair_style lubricateU/poly</em></a> - hydrodynamic lubrication forces for Fast Lubrication with polydispersity</li> <li><a class="reference internal" href="pair_meam.html"><em>pair_style meam</em></a> - modified embedded atom method (MEAM)</li> <li><a class="reference internal" href="pair_mie.html"><em>pair_style mie/cut</em></a> - Mie potential</li> <li><a class="reference internal" href="pair_morse.html"><em>pair_style morse</em></a> - Morse potential</li> <li><a class="reference internal" href="pair_nb3b_harmonic.html"><em>pair_style nb3b/harmonic</em></a> - nonbonded 3-body harmonic potential</li> <li><a class="reference internal" href="pair_nm.html"><em>pair_style nm/cut</em></a> - N-M potential</li> <li><a class="reference internal" href="pair_nm.html"><em>pair_style nm/cut/coul/cut</em></a> - N-M potential with cutoff Coulomb</li> <li><a class="reference internal" href="pair_nm.html"><em>pair_style nm/cut/coul/long</em></a> - N-M potential with long-range Coulombics</li> <li><a class="reference internal" href="pair_peri.html"><em>pair_style peri/eps</em></a> - peridynamic EPS potential</li> <li><a class="reference internal" href="pair_peri.html"><em>pair_style peri/lps</em></a> - peridynamic LPS potential</li> <li><a class="reference internal" href="pair_peri.html"><em>pair_style peri/pmb</em></a> - peridynamic PMB potential</li> <li><a class="reference internal" href="pair_peri.html"><em>pair_style peri/ves</em></a> - peridynamic VES potential</li> <li><a class="reference internal" href="pair_polymorphic.html"><em>pair_style polymorphic</em></a> - polymorphic 3-body potential</li> <li><a class="reference internal" href="pair_reax.html"><em>pair_style reax</em></a> - ReaxFF potential</li> <li><a class="reference internal" href="pair_airebo.html"><em>pair_style rebo</em></a> - 2nd generation REBO potential of Brenner</li> <li><a class="reference internal" href="pair_resquared.html"><em>pair_style resquared</em></a> - Everaers RE-Squared ellipsoidal potential</li> <li><a class="reference internal" href="pair_snap.html"><em>pair_style snap</em></a> - SNAP quantum-accurate potential</li> <li><a class="reference internal" href="pair_soft.html"><em>pair_style soft</em></a> - Soft (cosine) potential</li> <li><a class="reference internal" href="pair_sw.html"><em>pair_style sw</em></a> - Stillinger-Weber 3-body potential</li> <li><a class="reference internal" href="pair_table.html"><em>pair_style table</em></a> - tabulated pair potential</li> <li><a class="reference internal" href="pair_tersoff.html"><em>pair_style tersoff</em></a> - Tersoff 3-body potential</li> <li><a class="reference internal" href="pair_tersoff_mod.html"><em>pair_style tersoff/mod</em></a> - modified Tersoff 3-body potential</li> <li><a class="reference internal" href="pair_tersoff_zbl.html"><em>pair_style tersoff/zbl</em></a> - Tersoff/ZBL 3-body potential</li> <li><a class="reference internal" href="pair_coul.html"><em>pair_style tip4p/cut</em></a> - Coulomb for TIP4P water w/out LJ</li> <li><a class="reference internal" href="pair_coul.html"><em>pair_style tip4p/long</em></a> - long-range Coulombics for TIP4P water w/out LJ</li> <li><a class="reference internal" href="pair_tri_lj.html"><em>pair_style tri/lj</em></a> - LJ potential between triangles</li> +<li><code class="xref doc docutils literal"><span class="pre">pair_style</span> <span class="pre">vashishta</span></code> - Vashishta 2-body and 3-body potential</li> <li><a class="reference internal" href="pair_yukawa.html"><em>pair_style yukawa</em></a> - Yukawa potential</li> <li><a class="reference internal" href="pair_yukawa_colloid.html"><em>pair_style yukawa/colloid</em></a> - screened Yukawa potential for finite-size particles</li> <li><a class="reference internal" href="pair_zbl.html"><em>pair_style zbl</em></a> - Ziegler-Biersack-Littmark potential</li> </ul> </div> <hr class="docutils" /> <div class="section" id="restrictions"> <h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> <p>This command must be used before any coefficients are set by the <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a>, <a class="reference internal" href="read_data.html"><em>read_data</em></a>, or <a class="reference internal" href="read_restart.html"><em>read_restart</em></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 class="reference internal" href="Section_start.html#start-3"><span>Making LAMMPS</span></a> section for more info on packages. The doc pages for individual pair potentials tell if it is part of a package.</p> </div> <div class="section" id="related-commands"> <h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2> <p><a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a>, <a class="reference internal" href="read_data.html"><em>read_data</em></a>, <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a>, <a class="reference internal" href="kspace_style.html"><em>kspace_style</em></a>, <a class="reference internal" href="dielectric.html"><em>dielectric</em></a>, <a class="reference internal" href="pair_write.html"><em>pair_write</em></a></p> </div> <div class="section" id="default"> <h2>Default<a class="headerlink" href="#default" title="Permalink to this headline">¶</a></h2> <div class="highlight-python"><div class="highlight"><pre>pair_style none </pre></div> </div> </div> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright . </p> </div> Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'./', VERSION:'15 May 2015 version', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> <script type="text/javascript" src="_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html> \ No newline at end of file diff --git a/doc/pair_vashishta.html b/doc/pair_vashishta.html index f2b42588e..37a31cf93 100644 --- a/doc/pair_vashishta.html +++ b/doc/pair_vashishta.html @@ -1,211 +1,384 @@ -<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> +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>pair_style vashishta command — LAMMPS 15 May 2015 version documentation</title> + + + + + + + -<HR> + -<H3>pair_style vashishta command -</H3> -<P><B>Syntax:</B> -</P> -<PRE>pair_style vashishta -</PRE> -<P><B>Examples:</B> -</P> -<PRE>pair_style vashishta -pair_coeff * * SiC.vashishta Si C -</PRE> -<P><B>Description:</B> -</P> -<P>The <I>vashishta</I> style computes the combined 2-body and 3-body + + + <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> + + + + <link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" /> + + + + <link rel="top" title="LAMMPS 15 May 2015 version documentation" href="index.html"/> + + + <script src="_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav" role="document"> + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-nav-search"> + + + + <a href="Manual.html" class="icon icon-home"> LAMMPS + + + + </a> + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + <ul> +<li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance & scalability</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying & extending LAMMPS</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li> +<li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li> +</ul> + + + + </div> + + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="Manual.html">LAMMPS</a> + </nav> + + + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="breadcrumbs navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="Manual.html">Docs</a> »</li> + + <li>pair_style vashishta command</li> + <li class="wy-breadcrumbs-aside"> + + + <a href="http://lammps.sandia.gov">Website</a> + <a href="Section_commands.html#comm">Commands</a> + + </li> + </ul> + <hr/> + +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="pair-style-vashishta-command"> +<span id="index-0"></span><h1>pair_style vashishta command<a class="headerlink" href="#pair-style-vashishta-command" title="Permalink to this headline">¶</a></h1> +</div> +<div class="section" id="pair-style-vashishta-omp-command"> +<h1>pair_style vashishta/omp command<a class="headerlink" href="#pair-style-vashishta-omp-command" title="Permalink to this headline">¶</a></h1> +<div class="section" id="syntax"> +<h2>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline">¶</a></h2> +<div class="highlight-python"><div class="highlight"><pre>pair_style vashishta +</pre></div> +</div> +</div> +<div class="section" id="examples"> +<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2> +<div class="highlight-python"><div class="highlight"><pre>pair_style vashishta +pair_coeff * * SiC.vashishta Si C +</pre></div> +</div> +</div> +<div class="section" id="description"> +<h2>Description<a class="headerlink" href="#description" title="Permalink to this headline">¶</a></h2> +<p>The <em>vashishta</em> style computes the combined 2-body and 3-body family of potentials developed in the group of Vashishta and -co-workers. By combining repulsive, screened Coulombic, -screened charge-dipole, and dispersion interactions with a -bond-angle energy based on the Stillinger-Weber potential, +co-workers. By combining repulsive, screened Coulombic, +screened charge-dipole, and dispersion interactions with a +bond-angle energy based on the Stillinger-Weber potential, this potential has been used to describe a variety of inorganic -compounds, including SiO2 <A HREF = "#Vashishta1990">Vashishta1990</A>, -SiC <A HREF = "#Vashishta2007">Vashishta2007</A>, -and InP <A HREF = "#Branicio2009">Branicio2009</A>. -</P> -<P>The potential for the energy U of a system of atoms is -</P> -<CENTER><IMG SRC = "Eqs/pair_vashishta.jpg"> -</CENTER> -<P>where we follow the notation used in <A HREF = "#Branicio2009">Branicio2009</A>. +compounds, including SiO2 <a class="reference internal" href="#vashishta1990"><span>Vashishta1990</span></a>, +SiC <a class="reference internal" href="#vashishta2007"><span>Vashishta2007</span></a>, +and InP <a class="reference internal" href="#branicio2009"><span>Branicio2009</span></a>.</p> +<p>The potential for the energy U of a system of atoms is</p> +<img alt="_images/pair_vashishta.jpg" class="align-center" src="_images/pair_vashishta.jpg" /> +<p>where we follow the notation used in <a class="reference internal" href="#branicio2009"><span>Branicio2009</span></a>. U2 is a two-body term and U3 is a three-body term. The summation over two-body terms is over all neighbors J within -a cutoff distance = <I>rc</I>. The twobody terms are shifted and -tilted by a linear function so that the energy and force are -both zero at <I>rc</I>. The summation over three-body terms -is over all neighbors J and K within a cut-off distance = <I>r0</I>, -where the exponential screening function becomes zero. -</P> -<P>Only a single pair_coeff command is used with the <I>vashishta</I> style which +a cutoff distance = <em>rc</em>. The twobody terms are shifted and +tilted by a linear function so that the energy and force are +both zero at <em>rc</em>. The summation over three-body terms +is over all neighbors J and K within a cut-off distance = <em>r0</em>, +where the exponential screening function becomes zero.</p> +<p>Only a single pair_coeff command is used with the <em>vashishta</em> style which specifies a Vashishta 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 Vashishta elements to atom types -</UL> -<P>See the <A HREF = "pair_coeff.html">pair_coeff</A> doc page for alternate ways -to specify the path for the potential file. -</P> -<P>As an example, imagine a file SiC.vashishta has parameters for +where N is the number of LAMMPS atom types:</p> +<ul class="simple"> +<li>filename</li> +<li>N element names = mapping of Vashishta elements to atom types</li> +</ul> +<p>See the <a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a> doc page for alternate ways +to specify the path for the potential file.</p> +<p>As an example, imagine a file SiC.vashishta has parameters 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.vashishta Si Si Si C -</PRE> -<P>The 1st 2 arguments must be * * so as to span all LAMMPS atom types. +pair_coeff command:</p> +<div class="highlight-python"><div class="highlight"><pre>pair_coeff * * SiC.vashishta Si Si Si C +</pre></div> +</div> +<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 file. The final C argument maps LAMMPS atom type 4 to the C element in the file. If a mapping value is specified as -NULL, the mapping is not performed. This can be used when a <I>vashishta</I> -potential is used as part of the <I>hybrid</I> pair style. The NULL values +NULL, the mapping is not performed. This can be used when a <em>vashishta</em> +potential is used as part of the <em>hybrid</em> pair style. The NULL values are placeholders for atom types that will be used with other -potentials. -</P> -<P>Vashishta files in the <I>potentials</I> directory of the LAMMPS -distribution have a ".vashishta" suffix. Lines that are not blank or +potentials.</p> +<p>Vashishta files in the <em>potentials</em> directory of the LAMMPS +distribution have a ”.vashishta” 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 formulae above: -</P> -<UL><LI>element 1 (the center atom in a 3-body interaction) -<LI>element 2 -<LI>element 3 -<LI>H (energy units) -<LI>eta -<LI>Zi (electron charge units) -<LI>Zj (electron charge units) -<LI>lambda1 (distance units) -<LI>D (energy units) -<LI>lambda4 (distance units) -<LI>W (energy units) -<LI>rc (distance units) -<LI>B (energy units) -<LI>gamma -<LI>r0 (distance units) -<LI>C -<LI>costheta0 -</UL> -<P>The non-annotated parameters are unitless. +and three-body coefficients in the formulae above:</p> +<ul class="simple"> +<li>element 1 (the center atom in a 3-body interaction)</li> +<li>element 2</li> +<li>element 3</li> +<li>H (energy units)</li> +<li>eta</li> +<li>Zi (electron charge units)</li> +<li>Zj (electron charge units)</li> +<li>lambda1 (distance units)</li> +<li>D (energy units)</li> +<li>lambda4 (distance units)</li> +<li>W (energy units)</li> +<li>rc (distance units)</li> +<li>B (energy units)</li> +<li>gamma</li> +<li>r0 (distance units)</li> +<li>C</li> +<li>costheta0</li> +</ul> +<p>The non-annotated parameters are unitless. The Vashishta 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 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>Depending on the particular version of the Vashishta potential, +entries would be required, etc.</p> +<p>Depending on the particular version of the Vashishta potential, the values of these parameters may be keyed to the identities of zero, one, two, or three elements. In order to make the input file format unambiguous, general, and simple to code, LAMMPS uses a slightly confusing method for specifying parameters. All parameters are divided into two classes: two-body and three-body. Two-body and three-body parameters are handled differently, as described below. The two-body parameters are H, eta, lambda1, D, lambda4, W, rc, gamma, and r0. They appear in the above formulae with two subscripts. The parameters Zi and Zj are also classified as two-body parameters, even though they only have 1 subscript. The three-body parameters are B, C, costheta0. They appear in the above formulae with three subscripts. Two-body and three-body parameters are handled differently, -as described below. -</P> -<P>The first element in each entry is the center atom +as described below.</p> +<p>The first element in each entry is the center atom in a three-body interaction, while the second and third elements are two neighbor atoms. Three-body parameters for a central atom I and two neighbors J and K are taken from the IJK entry. Note that even though three-body parameters do not depend on the order of J and K, LAMMPS stores three-body parameters for both IJK and IKJ. -The user must ensure that these values are equal. +The user must ensure that these values are equal. Two-body parameters for an atom I interacting with atom J are taken from the IJJ entry, where the 2nd and 3rd -elements are the same. Thus the two-body parameters +elements are the same. Thus the two-body parameters for Si interacting with C come from the SiCC entry. Note that even -though two-body parameters (except possibly gamma and r0 in U3) -do not depend on the order of the two elements, +though two-body parameters (except possibly gamma and r0 in U3) +do not depend on the order of the two elements, LAMMPS will get the Si-C value from the SiCC entry and the C-Si value from the CSiSi entry. The user must ensure that these values are equal. Two-body parameters appearing in entries where the 2nd and 3rd elements are different are stored but never used. It is good practice to enter zero for -these values. Note that the three-body function U3 above -contains the two-body parameters gamma and r0. So U3 for a +these values. Note that the three-body function U3 above +contains the two-body parameters gamma and r0. So U3 for a central C atom bonded to an Si atom and a second C atom will take three-body parameters from the CSiC entry, but -two-body parameters from the CCC and CSiSi entries. -</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-body parameters from the CCC and CSiSi entries.</p> +<hr class="docutils" /> +<p>Styles with a <em>cuda</em>, <em>gpu</em>, <em>intel</em>, <em>kk</em>, <em>omp</em>, or <em>opt</em> 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 class="reference internal" href="Section_accelerate.html"><em>Section_accelerate</em></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, USER-INTEL, +KOKKOS, USER-OMP and OPT packages, respectively. They are only +enabled if LAMMPS was built with those packages. See the <a class="reference internal" href="Section_start.html#start-3"><span>Making LAMMPS</span></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 class="reference internal" href="Section_start.html#start-7"><span>-suffix command-line switch</span></a> when you invoke LAMMPS, or you can +use the <a class="reference internal" href="suffix.html"><em>suffix</em></a> command in your input script.</p> +<p>See <a class="reference internal" href="Section_accelerate.html"><em>Section_accelerate</em></a> of the manual for +more instructions on how to use the accelerated styles effectively.</p> +<hr class="docutils" /> +<p><strong>Mixing, shift, table, tail correction, restart, rRESPA info</strong>:</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 +described above from values in the potential file.</p> +<p>This pair style does not support the <a class="reference internal" href="pair_modify.html"><em>pair_modify</em></a> +shift, table, and tail options.</p> +<p>This pair style does not write its information to <a class="reference internal" href="restart.html"><em>binary restart files</em></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 +script that reads a restart file.</p> +<p>This pair style can only be used via the <em>pair</em> keyword of the +<a class="reference internal" href="run_style.html"><em>run_style respa</em></a> command. It does not support the +<em>inner</em>, <em>middle</em>, <em>outer</em> keywords.</p> +</div> +<hr class="docutils" /> +<div class="section" id="restrictions"> +<h2>Restrictions<a class="headerlink" href="#restrictions" title="Permalink to this headline">¶</a></h2> +<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#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 Vashishta potential files provided with LAMMPS (see the -potentials directory) are parameterized for metal <A HREF = "units.html">units</A>. +the <a class="reference internal" href="Section_start.html#start-3"><span>Making LAMMPS</span></a> section for more info.</p> +<p>This pair style requires the <a class="reference internal" href="newton.html"><em>newton</em></a> setting to be “on” +for pair interactions.</p> +<p>The Vashishta potential files provided with LAMMPS (see the +potentials directory) are parameterized for metal <a class="reference internal" href="units.html"><em>units</em></a>. You can use the Vashishta potential with any LAMMPS units, but you would need to create your own Vashishta 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 = "Vashishta1990"></A> - -<P><B>(Vashishta1990)</B> P. Vashishta, R. K. Kalia, J. P. Rino, Phys. Rev. B 41, 12197 (1990). -</P> -<A NAME = "Vashishta2007"></A> - -<P><B>(Vashishta2007)</B> P. Vashishta, R. K. Kalia, A. Nakano, J. P. Rino. J. Appl. Phys. 101, 103515 (2007). -</P> -<A NAME = "Branicio2009"></A> - -<P><B>(Branicio2009)</B> Branicio, Rino, Gan and Tsuzuki, J. Phys Condensed Matter 21 (2009) 095002 -</P> -</HTML> +appropriate units if your simulation doesn’t use “metal” units.</p> +</div> +<div class="section" id="related-commands"> +<h2>Related commands<a class="headerlink" href="#related-commands" title="Permalink to this headline">¶</a></h2> +<p><a class="reference internal" href="pair_coeff.html"><em>pair_coeff</em></a></p> +<p><strong>Default:</strong> none</p> +<hr class="docutils" /> +<p id="vashishta1990"><strong>(Vashishta1990)</strong> P. Vashishta, R. K. Kalia, J. P. Rino, Phys. Rev. B 41, 12197 (1990).</p> +<p id="vashishta2007"><strong>(Vashishta2007)</strong> P. Vashishta, R. K. Kalia, A. Nakano, J. P. Rino. J. Appl. Phys. 101, 103515 (2007).</p> +<p id="branicio2009"><strong>(Branicio2009)</strong> Branicio, Rino, Gan and Tsuzuki, J. Phys Condensed Matter 21 (2009) 095002</p> +</div> +</div> + + + </div> + </div> + <footer> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright . + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'./', + VERSION:'15 May 2015 version', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="_static/jquery.js"></script> + <script type="text/javascript" src="_static/underscore.js"></script> + <script type="text/javascript" src="_static/doctools.js"></script> + <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script> + <script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script> + + + + + + <script type="text/javascript" src="_static/js/theme.js"></script> + + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.StickyNav.enable(); + }); + </script> + + +</body> +</html> \ No newline at end of file diff --git a/doc/searchindex.js b/doc/searchindex.js index 1a5074045..b13413c7a 100644 --- a/doc/searchindex.js +++ b/doc/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:47,filenames:["Manual","Section_accelerate","Section_commands","Section_errors","Section_example","Section_history","Section_howto","Section_intro","Section_modify","Section_packages","Section_perf","Section_python","Section_start","Section_tools","accelerate_cuda","accelerate_gpu","accelerate_intel","accelerate_kokkos","accelerate_omp","accelerate_opt","angle_charmm","angle_class2","angle_coeff","angle_cosine","angle_cosine_delta","angle_cosine_periodic","angle_cosine_shift","angle_cosine_shift_exp","angle_cosine_squared","angle_dipole","angle_fourier","angle_fourier_simple","angle_harmonic","angle_hybrid","angle_none","angle_quartic","angle_sdk","angle_style","angle_table","atom_modify","atom_style","balance","body","bond_class2","bond_coeff","bond_fene","bond_fene_expand","bond_harmonic","bond_harmonic_shift","bond_harmonic_shift_cut","bond_hybrid","bond_morse","bond_none","bond_nonlinear","bond_quartic","bond_style","bond_table","boundary","box","change_box","clear","comm_modify","comm_style","compute","compute_ackland_atom","compute_angle_local","compute_angmom_chunk","compute_basal_atom","compute_body_local","compute_bond_local","compute_centro_atom","compute_chunk_atom","compute_cluster_atom","compute_cna_atom","compute_com","compute_com_chunk","compute_contact_atom","compute_coord_atom","compute_damage_atom","compute_dihedral_local","compute_dilatation_atom","compute_displace_atom","compute_erotate_asphere","compute_erotate_rigid","compute_erotate_sphere","compute_erotate_sphere_atom","compute_event_displace","compute_fep","compute_group_group","compute_gyration","compute_gyration_chunk","compute_heat_flux","compute_improper_local","compute_inertia_chunk","compute_ke","compute_ke_atom","compute_ke_atom_eff","compute_ke_eff","compute_ke_rigid","compute_meso_e_atom","compute_meso_rho_atom","compute_meso_t_atom","compute_modify","compute_msd","compute_msd_chunk","compute_msd_nongauss","compute_omega_chunk","compute_pair","compute_pair_local","compute_pe","compute_pe_atom","compute_plasticity_atom","compute_pressure","compute_property_atom","compute_property_chunk","compute_property_local","compute_rdf","compute_reduce","compute_saed","compute_slice","compute_smd_contact_radius","compute_smd_damage","compute_smd_hourglass_error","compute_smd_internal_energy","compute_smd_plastic_strain","compute_smd_plastic_strain_rate","compute_smd_rho","compute_smd_tlsph_defgrad","compute_smd_tlsph_dt","compute_smd_tlsph_num_neighs","compute_smd_tlsph_shape","compute_smd_tlsph_strain","compute_smd_tlsph_strain_rate","compute_smd_tlsph_stress","compute_smd_triangle_mesh_vertices","compute_smd_ulsph_num_neighs","compute_smd_ulsph_strain","compute_smd_ulsph_strain_rate","compute_smd_ulsph_stress","compute_smd_vol","compute_sna_atom","compute_stress_atom","compute_tally","compute_temp","compute_temp_asphere","compute_temp_chunk","compute_temp_com","compute_temp_cs","compute_temp_deform","compute_temp_deform_eff","compute_temp_drude","compute_temp_eff","compute_temp_partial","compute_temp_profile","compute_temp_ramp","compute_temp_region","compute_temp_region_eff","compute_temp_rotate","compute_temp_sphere","compute_ti","compute_torque_chunk","compute_vacf","compute_vcm_chunk","compute_voronoi_atom","compute_xrd","create_atoms","create_bonds","create_box","delete_atoms","delete_bonds","dielectric","dihedral_charmm","dihedral_class2","dihedral_coeff","dihedral_cosine_shift_exp","dihedral_fourier","dihedral_harmonic","dihedral_helix","dihedral_hybrid","dihedral_multi_harmonic","dihedral_nharmonic","dihedral_none","dihedral_opls","dihedral_quadratic","dihedral_style","dihedral_table","dimension","displace_atoms","dump","dump_h5md","dump_image","dump_modify","dump_molfile","echo","fix","fix_adapt","fix_adapt_fep","fix_addforce","fix_addtorque","fix_append_atoms","fix_atc","fix_atom_swap","fix_ave_atom","fix_ave_chunk","fix_ave_correlate","fix_ave_histo","fix_ave_spatial","fix_ave_spatial_sphere","fix_ave_time","fix_aveforce","fix_balance","fix_bond_break","fix_bond_create","fix_bond_swap","fix_box_relax","fix_colvars","fix_deform","fix_deposit","fix_drag","fix_drude","fix_drude_transform","fix_dt_reset","fix_efield","fix_enforce2d","fix_evaporate","fix_external","fix_freeze","fix_gcmc","fix_gld","fix_gle","fix_gravity","fix_heat","fix_imd","fix_indent","fix_ipi","fix_langevin","fix_langevin_drude","fix_langevin_eff","fix_lb_fluid","fix_lb_momentum","fix_lb_pc","fix_lb_rigid_pc_sphere","fix_lb_viscous","fix_lineforce","fix_meso","fix_meso_stationary","fix_modify","fix_momentum","fix_move","fix_msst","fix_neb","fix_nh","fix_nh_eff","fix_nph_asphere","fix_nph_sphere","fix_nphug","fix_npt_asphere","fix_npt_sphere","fix_nve","fix_nve_asphere","fix_nve_asphere_noforce","fix_nve_body","fix_nve_eff","fix_nve_limit","fix_nve_line","fix_nve_noforce","fix_nve_sphere","fix_nve_tri","fix_nvt_asphere","fix_nvt_sllod","fix_nvt_sllod_eff","fix_nvt_sphere","fix_oneway","fix_orient_fcc","fix_phonon","fix_pimd","fix_planeforce","fix_poems","fix_pour","fix_press_berendsen","fix_print","fix_property_atom","fix_qbmsst","fix_qeq","fix_qeq_comb","fix_qeq_reax","fix_qmmm","fix_qtb","fix_reax_bonds","fix_reaxc_species","fix_recenter","fix_restrain","fix_rigid","fix_saed_vtk","fix_setforce","fix_shake","fix_smd","fix_smd_adjust_dt","fix_smd_integrate_tlsph","fix_smd_integrate_ulsph","fix_smd_move_triangulated_surface","fix_smd_setvel","fix_smd_tlsph_reference_configuration","fix_smd_wall_surface","fix_spring","fix_spring_rg","fix_spring_self","fix_srd","fix_store_force","fix_store_state","fix_temp_berendsen","fix_temp_csvr","fix_temp_rescale","fix_temp_rescale_eff","fix_tfmc","fix_thermal_conductivity","fix_ti_rs","fix_ti_spring","fix_tmd","fix_ttm","fix_tune_kspace","fix_vector","fix_viscosity","fix_viscous","fix_wall","fix_wall_gran","fix_wall_piston","fix_wall_reflect","fix_wall_region","fix_wall_srd","group","group2ndx","if","improper_class2","improper_coeff","improper_cossq","improper_cvff","improper_fourier","improper_harmonic","improper_hybrid","improper_none","improper_ring","improper_style","improper_umbrella","include","info","jump","kspace_modify","kspace_style","label","lattice","log","mass","min_modify","min_style","minimize","molecule","neb","neigh_modify","neighbor","newton","next","package","pair_adp","pair_airebo","pair_awpmd","pair_beck","pair_body","pair_bop","pair_born","pair_brownian","pair_buck","pair_buck_long","pair_charmm","pair_class2","pair_coeff","pair_colloid","pair_comb","pair_coul","pair_coul_diel","pair_cs","pair_dipole","pair_dpd","pair_dsmc","pair_eam","pair_edip","pair_eff","pair_eim","pair_gauss","pair_gayberne","pair_gran","pair_gromacs","pair_hbond_dreiding","pair_hybrid","pair_kim","pair_lcbop","pair_line_lj","pair_list","pair_lj","pair_lj96","pair_lj_cubic","pair_lj_expand","pair_lj_long","pair_lj_sf","pair_lj_smooth","pair_lj_smooth_linear","pair_lj_soft","pair_lubricate","pair_lubricateU","pair_meam","pair_meam_spline","pair_meam_sw_spline","pair_mie","pair_modify","pair_morse","pair_nb3b_harmonic","pair_nm","pair_none","pair_peri","pair_polymorphic","pair_quip","pair_reax","pair_reax_c","pair_resquared","pair_sdk","pair_smd_hertz","pair_smd_tlsph","pair_smd_triangulated_surface","pair_smd_ulsph","pair_snap","pair_soft","pair_sph_heatconduction","pair_sph_idealgas","pair_sph_lj","pair_sph_rhosum","pair_sph_taitwater","pair_sph_taitwater_morris","pair_srp","pair_style","pair_sw","pair_table","pair_tersoff","pair_tersoff_mod","pair_tersoff_zbl","pair_thole","pair_tri_lj","pair_write","pair_yukawa","pair_yukawa_colloid","pair_zbl","partition","prd","print","processors","python","quit","read_data","read_dump","read_restart","region","replicate","rerun","reset_timestep","restart","run","run_style","set","shell","special_bonds","suffix","tad","temper","thermo","thermo_modify","thermo_style","timer","timestep","tutorial_drude","uncompute","undump","unfix","units","variable","velocity","write_data","write_dump","write_restart"],objects:{},objnames:{},objtypes:{},terms:{"00a":316,"00b":316,"02214e23":91,"03275e":481,"0892e":12,"0b1":11,"0e20":[332,459,482],"0e4":[249,325,390],"0e5":249,"0x98b5e0":190,"100k":1,"1024x1024":190,"10e":380,"10f":3,"10g":482,"10th":[451,457,470],"10x":[3,354,355,357,358,368],"10x10x10":153,"10x20x20":350,"11e":10,"15g":[191,482],"16g":[203,208],"16x":1,"18986e":355,"18e":10,"1_12":350,"1_3":350,"1_6":350,"1_prop":6,"1st":[2,6,8,12,20,22,38,44,56,57,58,60,87,159,171,173,185,195,196,203,204,205,206,207,208,212,216,251,280,290,318,330,334,352,358,363,364,368,375,377,384,386,387,394,395,404,405,409,410,411,415,419,429,439,440,441,442,443,450,456,464,465,468,482],"1x2x2":453,"2000k":190,"20x":368,"23899e":355,"2400k":190,"256k":10,"25x":10,"298k":379,"2_3":350,"2k_ss":386,"2nd":[2,3,6,11,12,15,17,38,45,46,56,57,60,71,77,88,147,154,185,191,203,204,205,206,207,208,212,214,216,251,292,296,304,330,333,339,346,355,356,357,358,362,364,377,386,392,393,409,429,438,439,440,441,442,443,456,463,465,468,482],"2pi":185,"2theta":164,"2x1x2":453,"2x2x1":453,"2x2x2":453,"2x4x10":453,"2x5":386,"300k":[229,292,483],"32k":10,"3419e":249,"3806504e":[6,91],"38e":10,"3n_k":228,"3nk":282,"3nkb":287,"3rd":[15,17,20,38,56,71,105,114,185,203,204,205,206,207,208,212,292,293,330,356,360,362,377,386,392,393,429,439,440,441,442,443,456,463,468,482],"3x3":[91,350],"4857990943e":386,"4_94":11,"4th":[6,38,56,81,103,104,116,161,171,185,191,304,330,348,361,363,364,368,384,387,394,409,415,419,429,439,440,441,443,456,463,468,471,486],"4x10":346,"4x2x10":453,"4x6x10":453,"50k":1,"53xx":18,"54xx":18,"55e":10,"5_1":368,"5_12":350,"5_6":350,"5kx":[197,222],"5nlog_2":12,"5th":[116,355,473],"6021765e":481,"6863e22":418,"6x6":6,"72360e":249,"7797e":249,"7842e":12,"8032044e":481,"8x1":6,"8x2":[6,12],"9e18":[12,39],"9e9":418,"9jan09":[325,390],"9th":357,"__main__":454,"__pthread_key_cr":12,"_compute_group_group":142,"_compute_heat_flux":142,"_compute_t":8,"_j1m1m1":140,"_j2m2m2":140,"_serial":12,"abstract":17,"boolean":[3,330,332],"break":[],"byte":[3,12,473],"case":[1,2,3,6,8,11,12,13,15,16,17,18,39,40,41,45,46,59,61,63,71,73,104,108,114,116,117,143,144,145,146,148,151,152,153,154,155,157,158,159,163,165,167,168,169,171,188,189,190,191,197,198,202,203,204,205,206,207,208,209,210,212,214,216,220,222,224,227,230,231,233,234,235,236,238,249,251,252,253,254,255,256,257,268,269,271,273,274,279,281,282,283,284,291,292,294,296,298,299,301,304,307,310,311,312,314,315,319,321,322,324,325,327,328,329,330,332,346,347,348,350,352,354,355,356,357,359,361,362,364,373,376,378,380,384,386,389,390,392,393,394,396,406,407,408,409,413,415,419,422,425,427,430,440,441,443,449,451,454,456,458,459,463,464,466,468,470,472,473,474,475,477,481,482,483,485,486],"catch":[1,3,454],"char":[6,8],"class":[1,3,5,6,7,8,9,11,12,13,22,37,44,55,173,184,225,281,334,342,374,393,421,422,438,454,456],"default":[],"export":[190,375],"final":[3,5,6,7,8,11,12,17,41,59,87,141,191,202,203,204,205,206,207,208,210,214,216,227,250,251,255,282,286,292,293,296,316,318,319,326,332,355,357,363,364,368,384,387,394,406,409,415,419,420,439,440,441,443,451,464,470,477,482,484],"float":[3,6,8,12,40,42,71,113,188,191,203,208,232,281,293,309,386,426,428,454,456,466,473,482],"function":[],"import":[1,2,3,6,11,17,71,87,105,165,176,194,203,206,214,230,235,236,251,287,292,310,311,312,314,319,329,331,357,393,406,454,456,465,473,477],"int":[3,6,8,11,101,225,227,235,237,287,319,473],"long":[],"new":[],"null":[3,6,91,112,141,165,194,209,215,218,221,248,281,290,294,296,300,301,304,305,325,363,364,377,384,387,390,393,394,395,409,410,411,415,419,421,422,429,439,441,442,443,456,459,464,466,483],"public":[0,7,8,12,225,234,387,420],"return":[2,3,6,8,11,14,15,16,17,18,19,41,71,108,117,134,135,139,163,165,191,203,206,207,216,225,332,344,346,390,453,454,455,463,466,472,482],"short":[1,3,6,7,13,16,163,251,292,307,320,348,358,359,362,364,368,369,371,372,373,377,378,380,386,393,398,402,406,409,413,416,424,440,444,451,454,464,466,470,477],"static":[],"switch":[1,3,6,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,91,109,112,140,143,152,164,171,172,174,175,176,177,179,180,182,183,185,190,193,197,201,209,216,223,226,230,234,235,238,251,253,254,255,256,257,258,266,268,269,271,284,292,294,295,310,312,316,317,323,327,333,335,336,337,338,341,343,344,346,348,351,357,361,362,363,364,366,369,370,371,372,373,374,376,377,378,381,382,384,385,387,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,410,414,415,416,418,423,424,430,439,440,441,442,443,445,447,448,449,450,451,453,456,458,463,465,469,471,482,484,486],"throw":473,"true":[6,12,13,17,108,115,188,210,212,216,251,252,273,274,275,279,292,314,318,330,332,362,386,390,439,454,458,466,482],"try":[1,3,8,12,17,19,203,232,238,315,316,317,322,454,482],"var":[3,11,12,165,330,346,467,482],"void":[4,6,7,8,41,168,210,225,459],"while":[3,9,10,11,12,13,14,18,71,105,140,148,163,176,188,192,201,207,214,216,220,228,229,234,235,236,238,251,269,282,287,289,320,348,355,362,368,379,384,422,441,443,451,454,465,470,477],a10:332,a123:332,a12:423,a2m:[6,91],a_0:[238,319,368],a_0_real:238,a_1:319,a_2:319,a_3:319,a_4:319,a_c:376,a_cc:376,a_f:443,a_i:444,a_ij:368,a_j:444,a_pi:368,a_sigma:368,a_ss:376,aacut:274,aat:172,aatom1:115,aatom2:115,aatom3:115,ab_23_cd:332,abbrevi:12,abc:[3,12,332,454,482],abf:215,abf_integr:13,abi:192,abil:[3,9,214,251,279,292,386],abl:[3,8,11,12,39,86,188,192,213,222,226,315,322,362,454,482,485],ablat:319,about:[0,1,3,4,6,8,9,10,11,12,13,17,39,41,42,61,63,78,108,115,116,118,159,165,188,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,220,221,222,223,224,225,226,227,230,231,232,233,235,236,237,238,239,240,241,242,243,244,245,247,250,255,258,259,260,261,262,263,264,265,266,267,272,273,274,276,277,278,279,280,281,283,284,285,286,287,288,289,290,291,292,293,294,295,304,305,307,308,310,311,312,313,314,315,316,317,318,319,321,322,323,324,326,327,328,329,330,345,348,354,355,357,362,367,373,378,393,418,422,448,454,457,458,463,464,466,471,475,482,484,486],abov:[1,2,6,7,8,10,11,12,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,38,40,41,42,43,44,45,46,47,48,49,50,51,53,54,56,57,63,64,68,70,71,72,73,76,77,86,87,89,90,91,93,94,96,97,112,114,116,118,140,141,143,144,145,146,147,148,151,152,153,154,155,157,158,159,163,164,165,167,168,171,172,173,174,175,176,177,178,179,180,182,183,185,188,189,190,191,194,195,196,197,198,203,204,205,206,207,208,210,213,214,216,217,222,225,227,231,233,235,236,237,241,250,251,255,275,278,280,285,291,292,296,304,307,310,311,312,313,330,332,333,334,335,336,337,338,339,341,343,348,350,352,356,357,361,362,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385,386,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,408,409,412,413,414,416,418,419,421,422,423,424,429,430,431,432,433,434,435,436,437,439,440,441,442,443,444,445,447,448,449,450,451,452,453,454,456,457,458,459,460,463,464,465,466,467,470,471,474,477,482,483,485,486],abscissa:440,absenc:198,absent:477,absolut:[3,191,201,215,216,220,296,309,347,348,355,390,398,457],absorb:319,absoult:348,ac3:164,academ:227,acc:314,acceler:[],accelri:[6,13],accept:[7,12,87,165,191,201,213,216,227,314,372,402,464,471],acceptor:392,access:[0,3,6,7,8,9,11,12,16,40,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,85,88,89,90,91,92,93,95,96,99,100,101,103,104,105,106,107,108,110,111,112,113,114,115,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,143,144,145,146,147,148,149,150,152,153,154,155,156,157,158,160,161,162,163,164,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,221,222,223,224,225,226,227,228,229,230,231,232,233,235,237,238,239,240,241,242,243,244,245,247,248,249,250,251,255,258,259,260,261,262,263,264,265,266,267,272,273,274,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,301,304,305,306,307,308,309,310,311,312,313,315,316,317,318,319,321,322,323,324,325,326,327,328,329,347,362,388,390,392,393,409,421,422,430,453,454,457,462,474,482],accidenti:341,accler:16,accommod:199,accomod:251,accompani:8,accomplish:[16,216,239,265],accord:[6,64,71,121,127,130,147,190,201,211,212,238,251,274,282,296,298,316,317,319,324,325,327,328,329,358,362,386,390,401,404,419,426,428,430,432,433,435,436,437,465,470,482],accordingli:[11,14,144,158,169,358,407,408],account:[3,6,9,87,118,147,163,164,173,184,204,205,221,232,233,235,251,256,257,268,269,271,273,277,283,292,293,295,304,305,306,307,310,311,312,315,319,322,337,356,378,390,398,402,407,408,409,453,470,483],accuml:[3,292,315,322],accumul:[1,6,8,15,71,142,194,204,235,292,296,321,345,362,462,481],accur:[1,3,6,15,17,38,41,56,148,210,249,287,292,295,307,315,322,328,330,348,368,386,389,390,413,423,438,440,441,443,470,475,482],accuraci:[1,3,6,12,41,188,191,210,229,251,284,295,320,330,347,348,354,386,413,421,422,440,446,465,470,475,477,482,485],accuractli:475,ach:347,achiev:[1,3,6,16,17,18,41,210,229,251,252,274,275,282,347,393,465],achiv:18,acid:9,ackland1:384,ackland2:384,ackland:[],acknowledg:[],acml:12,aco:482,acolor:[190,191],acoust:274,acquir:[3,6,58,61,62,168,212,214,216,251,417,461,477],across:[1,2,3,6,9,12,13,15,41,57,61,65,68,69,71,79,92,107,108,115,117,153,167,169,203,205,206,207,210,221,231,292,293,297,315,319,322,328,332,357,362,451,456,459,460,464,473,475],act:[3,6,108,150,220,230,233,234,235,236,238,241,250,292,301,314,316,317,319,328,329,330,355,370,381,389,390,392,423,437],acta:[118,164,363],action:[2,6,11,12,71,228,233,317,477],activ:[5,8,11,12,13,14,55,59,87,163,215,228,232,235,241,250,272,292,299,318,345,406,438,450,479,482],actual:[1,3,6,8,12,56,62,122,148,188,191,195,196,209,211,212,220,235,236,269,273,279,287,296,307,309,310,311,312,314,320,329,330,347,358,389,391,401,407,408,453,454,465,466,474,482],adam:[347,348],adapt:[],add:[0,1,3,5,6,7,8,9,11,12,13,14,15,16,17,18,19,40,42,71,87,91,102,114,117,119,163,165,166,188,189,190,194,195,196,197,198,200,202,203,204,205,206,207,208,212,215,220,222,225,229,230,231,233,235,237,238,242,249,250,251,252,253,254,255,256,257,268,269,270,271,273,281,291,292,294,295,304,306,310,312,313,317,318,319,321,323,324,328,330,348,350,354,356,364,369,371,374,378,386,393,398,409,413,416,422,424,454,456,457,462,464,466,468,475,477],add_molecul:200,add_speci:200,add_to_nodeset:200,addforc:[],addit:[],addition:[6,8,16,139,307,329,389,423],address:[7,8,11,190,234],addtorqu:[],adequ:[307,320,347,357,465],adher:29,adhikari:238,adiabat:[],adiam:[190,191],adjac:[39,165,357,413,440,441,470,471],adjiman:412,adjust:[2,3,6,16,17,41,59,118,144,145,148,149,152,153,158,159,164,169,188,190,203,210,214,216,232,235,239,243,247,248,251,252,255,269,273,276,278,279,282,283,284,285,290,292,299,307,311,315,320,322,323,324,326,327,329,347,348,355,357,362,364,383,407,408,443,466,483],adjust_dt:128,adjust_radiu:299,adjust_radius_factor:299,admiss:255,adof:[145,203],adopt:[291,477],adp:[],adri:[9,288,421,422],adust:159,advanc:[3,232,368,451,462],advantag:[1,6,8,11,14,18,39,40,41,210,362,385,465,470],advect:[3,6,307],advertis:8,advis:[357,420],afer:3,affect:[1,6,10,14,15,16,17,40,60,61,71,88,117,141,149,163,169,191,196,203,204,205,206,207,208,211,212,213,214,216,217,225,231,233,235,241,248,252,253,254,256,257,263,268,269,271,292,293,305,319,329,341,347,353,354,355,357,358,359,362,386,407,408,413,453,454,456,459,461,464,466],affin:[16,17,18,216,362,377],afil:229,aforement:18,afresh:[280,464,482],afshar:382,after:[2,3,5,6,8,9,11,12,15,16,21,22,33,39,40,41,44,50,57,58,59,61,63,71,144,145,146,147,148,149,152,153,154,155,157,158,165,166,168,169,172,173,178,187,188,189,190,191,192,194,195,196,200,201,203,204,210,211,212,213,214,216,220,227,238,239,240,241,242,247,248,249,251,256,257,263,268,269,271,274,278,282,290,292,295,303,308,310,311,312,314,315,316,317,318,322,324,326,330,333,334,339,346,352,353,355,356,358,360,361,362,363,364,368,375,377,384,385,386,387,393,394,395,406,407,408,409,410,411,415,419,421,422,429,439,441,442,443,451,453,455,456,457,458,459,461,462,464,466,468,470,473,474,477,481,482,483,484,485,486],afterrun:464,afterward:3,afterword:41,ag1:164,ag2:164,again:[6,11,12,17,62,140,145,147,151,159,188,191,216,231,278,333,346,357,407,408,451,453,454,456,458,463,470,472,482,484],against:[11,12,13,64,217,357,421,422],aggreg:[6,12,65,68,69,79,92,108,115,231,247,290,292,305,451,483],aggress:[231,470],agilio:[9,13],agre:[3,8,185,355,364,395,422],agreement:[5,7],ahd:392,ahead:326,aidan:[0,5,7,9,13,350],aij:13,aim:6,airebo:[],ajaramil:[7,9,13],aka:190,akohlmei:[7,9,13,192,232],aktulga:[7,9,285,422],al2o3_001:[118,293],al3:164,ala:238,alain:9,alat:[273,409],alb:[419,441,443],albeit:291,albert:9,alchem:[87,159],alcohol:322,alcu:[363,368],alcu_eam:419,alderton:381,alejandr:[251,252],alessandro:13,algorithm:[0,1,6,7,8,9,41,61,191,200,210,213,216,238,240,241,263,275,292,295,314,315,319,322,327,353,354,355,359,362,386,408,426,428,451,453,470],alia:12,alias:[1,348],aliceblu:191,align:[6,12,29,41,71,167,185,206,210,233,350,456,459,477],alkali:386,all:[0,1,2,3,5,6,7,8,9,11,12,13,14,15,16,17,18,22,33,37,39,40,41,42,44,50,54,55,57,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,153,158,159,160,161,162,163,164,165,166,167,168,169,171,173,178,184,185,188,189,190,191,192,194,195,196,197,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,219,220,221,222,223,224,225,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,244,246,247,249,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,287,288,289,290,291,292,293,294,295,296,297,298,299,303,304,306,307,308,309,310,311,314,315,316,317,318,319,320,321,322,324,325,326,327,328,329,330,331,332,333,334,337,342,345,346,347,348,349,350,352,355,356,357,358,359,361,362,363,364,365,367,368,369,371,372,373,374,375,377,378,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,402,406,407,408,409,410,411,412,413,414,415,416,418,419,420,421,422,423,424,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,448,449,450,451,453,454,455,456,457,458,459,460,461,463,464,465,466,467,468,469,470,471,473,474,475,477,481,482,483,484,485,486],allen:[29,87,381,389],allentildeslei:87,allign:3,allindex:331,alloc:[3,5,6,8,9,11,12,60,225,321,356,358,362,417,422,456,464],allocat:3,alloi:[],allow:[1,2,3,6,8,9,11,12,13,14,15,16,17,18,22,37,39,40,41,55,57,58,59,61,62,63,77,108,142,144,145,158,163,164,165,167,173,184,185,188,190,191,192,194,195,197,199,200,201,203,204,205,206,207,208,210,212,213,214,215,216,217,221,222,225,227,228,229,230,232,235,238,241,242,246,248,251,252,273,277,279,280,281,282,286,292,293,295,296,298,299,303,307,314,315,316,317,319,320,321,322,323,324,330,332,334,342,347,348,350,355,356,357,358,361,362,365,368,369,370,371,372,373,378,384,386,390,391,392,393,398,402,407,408,413,419,422,423,426,428,437,446,448,451,454,456,458,459,460,461,462,463,466,468,469,470,473,474,482,483],almost:[2,3,12,60,233,282,319,348,359,362,437],alo:378,alon:[6,7,213,288,421,422,454],alond:13,along:[6,8,9,12,29,40,87,118,164,165,187,188,190,213,233,238,239,243,248,250,282,292,295,296,300,304,305,314,318,319,325,328,330,350,353,354,355,357,378,381,390,393,396,398,402,409,421,422,440,456,459,466,467,482],alonso:[410,411],alpha:[6,12,51,195,238,274,282,287,355,363,366,369,378,382,384,385,387,392,397,398,409,414,418,442,444,474,477],alpha_:444,alpha_c:406,alpha_i:[429,444],alpha_ialpha_j:444,alpha_lj:406,alphabet:[2,3,22,37,44,55,63,173,184,194,334,342,356,375,438,456],alphanumer:[3,63,194,281,289,332,356,482],alreadi:[3,7,8,12,42,165,166,168,189,199,203,206,207,210,212,216,242,280,282,307,330,356,357,382,391,393,400,408,437,446,449,452,456,457,461,466,482],also:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,22,29,36,37,38,39,40,41,42,44,54,55,56,58,59,61,63,66,71,73,75,77,81,87,89,90,93,103,104,105,106,107,112,114,116,117,119,140,141,142,143,144,145,146,147,148,149,151,152,153,154,155,157,158,159,160,161,162,163,165,166,167,168,169,171,173,184,185,186,188,189,190,191,192,194,195,196,197,199,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,222,225,226,227,228,229,231,232,235,236,237,238,248,249,251,252,253,254,255,256,257,262,265,266,268,269,270,271,273,274,275,277,278,279,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,300,301,304,305,307,310,311,312,313,314,318,319,320,321,323,325,328,330,332,334,339,342,345,347,348,350,351,352,355,356,357,358,359,361,362,368,372,373,375,379,380,381,382,384,385,386,389,390,392,393,394,402,406,407,409,413,415,417,418,419,420,423,424,426,432,433,435,436,437,438,439,440,441,442,443,444,451,453,454,455,456,457,458,459,460,461,463,464,465,466,468,469,470,471,474,475,476,477,478,480,481,482,483,484,486],alter:[3,6,8,9,11,12,41,59,143,144,145,146,148,151,152,153,154,157,158,165,169,188,190,192,195,196,203,211,212,213,214,216,250,251,287,290,292,294,301,307,315,322,329,354,357,393,456,461,463,466,482,483,486],altern:[1,6,8,11,12,17,18,91,165,188,194,216,232,236,251,281,292,314,315,322,335,338,347,354,355,363,364,378,384,385,387,395,398,406,409,410,411,415,419,420,429,439,441,443,454,456,457,469,471,474],although:[29,42,185,241,251,279,283,292,314,346,463,477,486],aluminum:449,alwai:[0,6,11,12,17,18,54,57,63,71,163,191,204,206,207,208,212,215,227,229,233,284,287,292,307,324,328,329,333,347,348,353,355,356,358,359,362,371,374,384,401,421,422,430,440,441,443,449,451,456,457,459,461,468,470,473,477,482,483],amap:191,amatrix:229,amaz:11,amazingli:13,amber2lmp:[],amber:[],ambient:190,ambigu:[3,63,194,482],amd:[17,362],amend:11,amino:9,amit:9,among:[16,141,201,238],amorph:[165,442],amount:[1,3,6,12,59,88,115,163,167,187,190,201,214,215,227,231,235,251,273,279,292,299,307,312,315,320,322,330,347,362,382,417,456,459],amplitud:[216,248,300,325,341,459,482],amu:227,analag:[6,482],analalog:6,analog:[6,140,167,185,390],analys:[7,461],analysi:[7,9,13,63,64,73,192,288,289,297,331,429,456,466],analyt:[1,3,13,118,159,164,295,347,368,394,395,400,419],analyz:[6,8,13,357],andersen:295,anderson:[277,382],andr:[7,9,13],andrew:13,andzelm:437,ang:273,angl:[],angle1:291,angle2:291,angle_coeff:[],angle_cosineshift:27,angle_cosineshiftexp:[26,174],angle_cutof:392,angle_cutoff:392,angle_hybrid:29,angle_info:422,angle_styl:[],angle_typ:40,angleangl:[3,333,339,456],angleangletors:[3,172,456],anglecoeff:3,angletors:[3,172,178,456],angletyp:212,angmom:[],angmomi:[113,188,309],angmomx:[113,188,309],angmomz:[113,188,309],angstrom:[6,10,59,71,118,154,164,165,187,188,190,191,199,206,207,216,217,227,232,233,248,285,290,324,326,327,329,348,350,353,359,363,364,373,384,406,409,415,420,421,422,443,449,459,465,481,483],angular:[3,6,40,61,66,82,83,84,85,106,113,140,144,157,158,165,188,194,235,241,247,248,253,254,256,257,259,260,261,264,266,267,268,271,290,292,295,300,309,363,368,377,390,407,408,409,419,438,441,442,456,466,482,483],angularm:260,anharmon:[27,53,174,287,470],ani:[1,3,6,7,8,9,10,11,12,13,14,15,16,17,22,29,38,39,40,41,42,44,55,56,58,59,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,143,144,145,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,168,169,171,173,185,187,188,189,190,191,194,197,198,199,201,203,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,222,224,227,230,231,233,235,238,241,247,248,251,255,273,275,277,278,279,281,283,284,285,287,289,290,292,294,295,296,300,301,304,306,307,308,309,318,319,324,325,326,327,328,329,330,331,332,334,346,347,348,350,352,353,355,356,357,359,360,361,362,364,368,372,373,377,378,381,382,384,385,387,389,393,394,395,396,402,413,419,421,422,423,429,438,439,440,441,442,443,444,445,450,451,453,454,456,457,459,460,461,462,463,464,465,466,467,468,469,470,474,475,477,478,480,481,482,483,484,485,486],anihil:406,anim:[2,4,7,11,13,190,357],anion:387,aniso:[3,214,216,251,252,253,254,255,256,257,279,292],anisotrop:[235,389,423],ann:412,annot:[7,439,441,442,443,456],annual:[451,470],anoth:[1,3,4,6,7,8,11,12,17,29,40,63,71,87,116,119,189,190,194,195,201,203,205,206,207,208,213,216,217,228,231,235,236,241,251,252,255,278,281,292,293,310,311,312,319,329,332,353,355,357,358,361,378,382,386,387,389,392,393,397,398,406,421,423,430,437,441,442,443,450,451,454,457,463,465,477,482,486],ansi:12,answer:[3,4,8,12,292,359,360],anthoni:317,antiquewhit:191,antisymmetr:[9,40,365],antisymmetri:386,antonelli:[316,317],antonio:418,anymor:317,anyon:7,anyparticl:86,anyth:[8,11,165,216,234,439,441,443,467],anywai:[168,362,477,484],anywher:[12,165,375,409,429,482],aoff:[356,456],aparam:[87,195,196],apart:[3,166,241,304,358,367,430,456,465],aperiod:274,api:[11,12,192,394,454],appar:3,appear:[2,3,6,11,12,13,39,40,41,77,87,108,115,116,140,148,165,166,168,188,190,191,203,206,207,210,214,217,220,227,232,278,289,290,318,330,332,333,347,355,356,357,376,384,409,413,440,452,453,454,456,457,458,461,463,477,482,486],append:[],appendix:[29,381],appl:[214,251,252],appli:[2,3,4,5,6,8,12,17,18,33,41,50,57,59,61,63,71,87,88,105,116,140,141,145,151,153,155,159,164,165,167,171,173,178,184,188,191,194,195,196,197,198,200,203,209,210,214,215,216,218,221,222,225,226,227,228,229,230,232,233,235,236,237,238,242,251,252,255,256,257,263,268,271,272,273,275,279,282,290,291,292,294,295,296,297,300,304,305,306,308,310,311,312,313,315,317,318,319,322,330,347,350,355,356,357,367,369,371,373,378,381,386,390,391,392,393,395,398,404,408,413,416,421,424,425,426,427,428,437,444,448,456,457,459,460,461,465,466,468,473,477,482,483,484,485],applic:[1,6,9,12,17,192,200,213,217,218,225,229,232,273,278,291,296,304,315,322,347,362,443,466,477],applyt:3,appopri:17,approach:[6,7,9,14,188,200,228,274,275,287,292,314,315,317,319,322,347,368,378,380,383,389,393,423,425,427,437,446],appropri:[1,2,3,6,8,11,12,13,15,17,33,38,42,50,56,61,73,88,91,116,117,144,145,173,178,184,185,188,191,203,204,206,207,208,213,214,216,225,226,229,238,246,248,249,251,253,254,255,256,257,268,269,271,275,278,279,282,287,292,307,310,311,312,315,322,324,325,327,328,329,339,348,357,364,368,372,376,377,378,385,390,393,395,402,406,420,421,422,439,440,441,442,443,446,456,457,458,460,461,469,470,473,482,483],approri:230,approxim:[6,9,118,122,164,227,229,238,275,293,295,314,347,353,354,355,370,380,386,389,407,408,413,420,423,448,470,477],april:11,aprpopri:451,apu:[407,408],aqua:[190,191],aquamarin:191,ar_therm:200,ar_ttm:200,ara:13,arbitrari:[6,40,58,188,190,192,215,216,230,251,275,283,439,454,467,482],arbitrarili:[11,59,116,140,187,214,251,378,482],arcco:3,arch:[1,12,14,15,17],architect:345,architectur:[16,362],archiv:[6,7,11,12,309,375,463],arcsin:3,area:[6,41,91,112,116,163,210,216,238,315,322,383,390,418,445,453,466],aren:[281,332],arflag:12,arg:[3,11,12,22,40,41,44,55,59,63,71,87,117,153,159,163,165,168,169,173,187,188,189,191,194,195,196,197,199,201,203,204,205,206,207,208,209,210,211,212,215,216,217,222,225,227,230,231,232,233,241,248,253,254,278,291,292,293,294,297,300,301,303,314,317,324,325,326,327,329,330,334,345,357,362,369,370,371,373,374,375,380,381,386,391,393,398,402,406,407,408,416,424,426,428,438,453,454,456,459,461,463,465,467,469,474,475,482,483,485,486],argon:227,argonn:12,argument:[2,3,6,8,11,12,17,20,21,22,23,24,25,26,27,28,29,30,31,32,35,38,40,41,42,43,44,45,46,47,48,49,51,53,54,56,59,63,73,87,91,109,112,116,140,141,143,147,152,153,154,159,163,165,166,167,169,171,172,173,174,175,176,177,179,180,182,183,185,188,191,194,195,196,197,199,202,203,204,205,206,207,208,209,210,214,215,216,223,225,226,229,230,234,235,241,248,251,253,254,255,256,257,258,266,268,269,271,277,278,280,284,289,292,293,294,295,307,310,312,319,321,323,325,327,330,332,333,334,335,336,337,338,339,341,343,345,346,348,349,350,352,357,361,362,363,364,366,367,368,369,370,371,372,373,374,375,376,377,378,380,381,382,384,385,387,388,389,390,391,392,393,394,395,396,398,399,400,401,402,403,404,405,406,407,409,410,411,413,414,415,416,418,419,421,422,423,424,429,430,438,439,440,441,442,443,444,445,447,448,449,450,451,452,453,454,455,456,457,459,461,464,465,466,467,471,473,474,482,483,485],aris:[12,448],arithmet:[3,6,347,373,376,396,401,413,444,445],arkansa:9,arl:9,armv8:17,arnold:347,around:[1,3,4,6,12,42,57,58,59,66,70,73,77,116,140,144,160,163,165,167,187,190,191,198,199,214,216,217,233,248,251,281,283,287,292,300,304,307,324,325,328,346,356,456,459,466,467,477,482],aroung:3,arrai:[],arrang:140,arrheniu:470,art:[9,283,451,470],artefact:229,articl:6,articul:[7,277],artifact:[88,163,477],artifici:[249,282,432,433,435],arun:13,arxiv:[140,189,429],ascend:[41,191,232,241,292,461],asci:7,ascii:[13,293,318,357,384,387,409,456],ash:[407,408],asid:[8,165,409],asin:482,ask:[3,11],askari:418,askoos:13,asoci:190,aspect:[6,7,59,216,227,389,423,445,456,466,470],aspect_ratio:293,asper:4,aspher:[],asq:[407,408],assembl:4,assign:[1,2,3,6,7,11,12,14,15,17,18,33,39,40,41,50,57,59,61,63,66,71,72,75,90,93,104,106,110,113,114,118,140,141,145,160,162,164,165,168,178,188,189,190,191,192,194,195,196,199,203,205,210,212,213,214,217,219,227,232,235,236,237,238,248,251,253,254,255,256,257,266,268,269,270,271,275,278,279,281,283,289,292,293,310,311,312,313,330,339,348,350,352,356,357,361,362,368,384,387,389,392,393,422,423,449,453,454,456,457,458,459,460,465,466,471,474,482,483],assignemnt:[6,465],assing:281,assist:[7,249],associ:[3,5,6,8,9,12,22,37,39,40,44,55,59,66,74,75,81,87,89,90,93,99,101,103,104,106,130,160,173,184,188,190,191,195,196,197,201,214,216,222,225,227,228,234,238,248,251,277,287,291,292,293,305,307,331,332,334,342,350,355,357,361,362,375,378,382,383,384,386,392,393,395,398,402,425,427,437,438,440,454,457,464,477,479,482],associd:67,assum:[2,3,4,6,11,12,16,39,59,67,71,88,96,102,104,143,144,145,146,147,148,150,151,152,153,154,155,157,158,159,163,165,168,191,195,196,201,203,204,205,206,207,208,214,216,224,232,234,238,241,253,254,256,257,259,261,264,266,267,268,271,273,274,278,279,280,283,292,294,296,304,315,318,319,324,327,330,347,348,356,357,362,368,370,372,375,376,383,386,392,393,397,402,407,408,445,451,453,454,456,458,461,466,470,473,474,477,483],assumpt:[163,232,363,413],astar:409,astart:430,asterisk:[22,44,61,77,87,116,159,169,173,191,195,196,241,292,334,352,375,392,437,450,453,466,481],astop:[355,430],asu:384,asub:409,asubrama:13,asymmetr:[127,327,368,384],asynchron:[15,16],atan2:482,atan:482,atc:[],atc_fe_output:200,athomp:[0,7,9,13],atm2pa:6,atmospher:481,atol:12,atom1:[277,291,356,456],atom2:[277,291,356,456],atom3:[277,291,356,456],atom4:[291,356,456],atom:[],atom_element_map:200,atom_forc:422,atom_info:422,atom_modifi:[],atom_styl:[],atom_vec:8,atom_vec_atom:8,atom_vec_electron:8,atom_veloc:422,atom_weight:200,atomey:[6,7,11,13,188,190,191],atomfil:[3,71,281,330,361,466,482],atomic_charg:200,atomic_numb:419,atomid:456,atomist:[6,200,314],atomperbin:3,atomt:191,atomvec:8,attach:[6,207,275,296,304,456],attatch:317,attempt:[3,6,41,59,71,187,201,210,211,212,213,217,227,278,279,307,327,347,351,357,393,454,471,474,482],attend:200,attent:[15,18],attogram:481,attrac:409,attract:[],attribut:[3,6,7,8,11,39,40,42,58,63,71,87,113,114,115,117,144,159,188,190,191,194,195,196,202,203,205,206,207,213,214,251,253,254,255,256,257,259,260,268,269,271,279,292,293,309,310,311,312,350,356,368,386,393,456,457,458,466,474,482],atw:[407,408],atwat:442,atwt:409,atyp:[115,159,212,378,398,402,406],au1:164,au3:164,aug:[],augment:[12,113,214,281,409],augt1:409,auo:289,auoh:289,author:[3,8,9,13,189,384,385,477],auto:[6,8,11,12,91,161,194,204,296,321,347,356,362,453],autocorrel:[63,91,235],autom:[12,190],automag:7,automat:[3,6,12,14,15,16,17,18,19,36,128,185,199,227,229,238,292,296,320,347,362,377,384,393,409,425,426,427,428,449,456,469,477,482],auxiliari:[1,6,9,11,12,13,188,274,292,457,461,484],avail:[1,3,5,6,7,8,9,11,12,13,15,16,17,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,61,63,87,109,112,113,140,143,152,163,171,172,174,175,176,177,179,180,182,183,185,188,190,194,197,203,205,206,207,208,209,214,215,216,223,226,228,230,232,235,251,252,253,254,255,256,257,258,266,268,269,271,284,286,292,293,294,295,310,312,317,323,327,333,335,336,337,338,341,343,345,348,362,363,364,366,369,370,371,372,373,374,376,377,378,381,382,384,385,386,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,408,409,410,413,414,415,416,418,419,421,422,423,424,429,430,439,440,441,442,443,445,447,448,449,457,465,469,482],availab:9,ave_chunk:6,aveforc:[],avendano:412,averag:[3,6,7,12,15,41,63,64,71,87,91,103,105,116,118,142,145,153,161,164,188,191,194,196,200,202,203,204,205,206,207,208,209,210,214,227,229,231,235,236,241,251,252,255,274,279,282,288,289,292,293,296,333,364,386,409,444,457,461,474,477,482],averi:307,avesq:117,avg:12,avi:190,avoid:[1,3,6,12,36,39,59,165,166,185,190,199,204,205,208,220,227,229,236,273,275,283,287,292,293,321,328,360,368,386,406,409,422,440,458,464,465,477],awai:[3,6,61,116,188,190,213,217,230,233,250,273,296,304,318,324,358,378,398,402,461],awar:[362,385,453],awpmd:[],axel:[7,9,13,18],axi:[3,6,41,118,130,144,164,165,167,187,190,210,227,230,233,248,278,300,304,319,325,337,343,350,456,459,466],axial:255,azimuth:[190,230],azur:191,b_k:429,ba2:164,babadi:423,back:[1,6,7,11,12,13,14,15,17,146,147,148,152,153,154,155,157,165,169,188,191,192,195,196,215,220,225,232,233,235,236,251,256,257,268,269,271,290,292,310,311,312,316,317,326,327,329,346,347,348,357,390,454,456,457,458,459,460,463,469,470,482,483],backbon:[213,295,341],backcolor:[191,485],backend:17,background:[9,87,88,112,141,191,210,216,235,307,315,319,322,357,376,407,408,409],backtrack:[353,355],backward:[9,12,192,357,470,482],baczewski:228,bad:[3,12,59,61,233,357,456,461,473],badli:[3,214,251],bal:314,balanc:[],balasubramanian:270,ball:[140,407,408],ballenegg:347,bammann:200,band:[4,6,7,140,194,250,354,357,368],bandwidth:[1,10,18,40],bandwith:190,bar:[87,190,481],barashev:384,bare:[220,234,236],barost:[220,477],barostat:[],barostt:6,barr:377,barrat:287,barrett:67,barrier:[3,4,6,250,343,357,377,388,470],bartel:274,bartok2010:429,bartok2013:429,bartok:[9,140,420,429],bartok_2010:420,bartok_phd:420,bary:481,barycent:303,basal:[],base:[3,4,6,8,9,11,12,13,14,15,20,63,64,71,78,87,91,111,118,145,147,164,165,167,188,189,190,191,194,200,206,207,210,211,212,216,217,221,232,235,239,241,263,274,275,281,283,285,292,293,296,297,307,314,348,362,364,366,368,382,386,389,392,393,394,398,407,410,411,416,418,419,439,442,443,451,453,456,457,458,460,463,466,467,470,471,474,481,482,483,486],bash:375,bashford:[6,20,171,373,468],basi:[3,6,12,40,140,145,165,199,235,237,274,307,324,350,466,482],basic:[6,7,8,12,17,41,113,141,190,191,200,210,251,252,273,328,363,365,450,458,477],basin:[86,357,451,470],bask:[384,409,419],bath:[9,282,287],batom1:[69,115,117,188,191],batom2:[69,115,117,188,191],bayli:[6,171,468],bb13:172,bcc:[3,4,7,64,70,73,350,409,411],bcolor:[3,190,191],bdiam:[3,190,191],be2:164,bead:[5,7,10,13,40,45,46,157,198,213,275,437],beam:217,bear:[6,228],becau:13,becaus:[0,1,3,6,8,12,17,18,29,40,41,59,64,71,77,116,128,140,145,150,155,165,166,167,171,188,189,190,191,192,197,203,210,211,212,213,214,216,222,226,228,229,234,235,236,237,248,251,252,263,269,278,282,283,287,292,304,309,314,315,318,319,322,326,327,328,329,330,336,347,353,355,357,358,361,362,373,375,378,380,382,386,387,389,390,391,392,393,396,397,406,407,408,409,413,423,437,438,444,445,453,454,456,458,459,460,463,465,466,468,470,477,482,483,484,486],beck:[],becker:[363,384],beckman:232,becom:[1,2,3,6,7,8,18,39,41,54,57,59,71,167,188,190,191,210,211,212,213,216,227,229,238,250,251,289,290,310,311,324,325,327,328,329,347,348,353,357,364,376,378,384,386,389,398,413,419,423,439,448,456,457,459,466,482],been:[1,2,3,6,7,8,9,12,13,16,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,43,45,46,47,48,49,51,53,54,56,57,59,60,63,65,69,71,87,109,112,113,114,115,117,119,143,144,145,146,147,148,152,153,154,155,157,158,166,167,168,169,171,172,174,175,176,177,179,180,182,183,185,187,188,190,191,192,197,199,201,202,203,204,205,206,207,208,209,210,213,214,215,216,217,223,226,227,230,232,233,235,236,238,239,240,241,242,246,248,249,251,253,254,255,256,257,258,266,268,269,271,277,278,279,282,284,286,289,290,292,294,295,303,308,310,311,312,319,320,321,323,324,325,326,327,329,330,333,335,336,337,338,341,343,346,347,348,355,358,362,363,364,366,369,370,371,372,373,374,376,377,378,381,382,383,384,385,386,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,408,410,411,414,415,416,418,421,422,423,424,430,437,439,440,441,442,443,445,447,448,449,451,453,454,456,457,458,459,460,462,466,470,473,474,482,483,484,485],befor:[1,2,3,6,8,9,12,14,17,22,29,39,40,41,44,59,66,71,74,75,81,89,90,93,103,104,105,106,114,145,148,153,154,160,165,166,168,169,173,186,187,191,195,196,197,198,199,201,203,205,206,207,208,209,210,214,219,220,226,227,232,234,235,236,238,241,248,251,256,257,268,271,274,281,282,283,286,287,292,293,294,308,310,311,312,318,324,325,326,330,334,352,353,355,357,362,387,390,406,409,438,446,451,453,454,457,458,459,460,461,463,464,466,470,473,474,477,482,483,484,485,486],began:[5,12],begin:[3,8,12,38,39,56,71,117,119,166,185,187,188,191,195,196,200,202,203,204,205,206,207,208,210,216,220,236,263,277,290,293,307,309,312,321,326,329,330,344,346,347,348,349,351,354,356,357,358,361,362,384,413,419,426,428,430,437,440,444,449,451,456,463,470,472,474,477,481,482,484],behalf:3,behav:[3,27,174,354,355],behavior:[3,169,185,188,190,192,213,214,217,227,228,229,232,235,236,237,251,278,282,287,307,310,311,319,354,368,386,409,449,450,458,462,482,484],behaviour:[6,235],behind:[8,234,249,282,307,347],beig:191,belak:7,believ:11,bellott:[6,20,171,373,468],bellow:337,belong:[2,3,40,71,120,168,201,203,206,227,241,292,330,356,425,456],below:[1,2,3,5,6,8,9,11,12,15,16,17,22,38,39,41,42,44,54,56,59,60,63,65,68,69,71,77,79,91,92,112,113,116,117,118,140,141,145,151,153,159,163,164,165,168,169,171,173,184,185,188,190,191,194,195,197,198,200,203,204,205,206,207,209,210,212,213,214,216,217,222,225,230,231,233,235,236,241,248,249,251,255,256,257,268,271,273,278,281,282,283,290,291,292,294,295,301,304,307,308,309,310,311,312,315,316,317,319,322,324,325,330,332,334,345,347,350,352,353,355,356,357,359,362,363,364,365,368,369,370,373,374,375,376,378,381,384,386,387,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,408,409,412,413,418,421,422,423,424,429,430,438,440,445,447,448,449,450,451,454,456,457,458,459,461,463,464,466,468,469,470,472,473,474,476,477,482,483,486],bench:[1,6,11,12],benchmark:[1,7,10,11,12,13,14,15,16,17,18,41,210,347,469],beneath:217,benefici:[61,359],benefit:[1,228,465],bennet:87,beowulf:7,berardi:[389,423],beraun:319,berendsen:[],berensen:292,berkelei:163,berkowitz:347,berlin:[7,9,296],bern:[3,275,283,284,377,389,438,465],bernendsen:6,beryllium:386,besid:[8,294,459],best:[1,6,8,14,15,16,17,18,19,251,269,270,291,292,362,368,378,398,402,413,440,457,465,470],beta:[6,9,274,282,363,366,384,385,387,409,441,442,443,474,482],beta_:368,beta_k:429,beta_pi:368,beta_sigma:368,beta_t:442,better:[3,6,7,8,12,14,16,27,140,174,196,210,227,238,251,263,283,290,292,307,348,357,362,441],betwe:367,between:[],beutler:406,bewteen:[108,204,307,315,322,393,453],beyon:465,beyond:[3,5,6,12,17,61,71,87,163,188,191,205,206,227,251,347,359,388,404,413,470,474,482],bgq:17,bi3:164,bi5:164,bia:[3,6,8,112,141,144,145,146,147,148,152,153,154,155,157,158,203,215,216,227,235,236,251,256,257,268,269,271,287,310,311,312,314,483],bias:[6,9,215,483],biaxial:144,biersack:[409,438,443,449],big:[3,4,12,188,282,287,307,358,376],bigbig:[3,12],bigint:[3,225],bilay:[4,10,304],bilayer1:304,bilayer2:304,bill:7,billion:[3,7,10,12,39,227,464],bin:[3,6,11,12,39,63,66,71,75,90,93,104,106,114,116,145,153,160,162,188,191,203,205,206,207,274,282,287,307,358,359,362,383,417,457,485],binari:[3,6,7,9,12,13,16,33,37,50,55,178,184,188,189,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,239,240,241,242,243,244,245,247,248,249,250,251,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329,339,342,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,416,418,419,420,421,422,423,424,429,430,431,432,433,434,435,436,437,439,440,441,442,443,445,447,448,449,457,458,463,484,486],binary2txt:[],binchunk:203,bind:[17,18,189,206,368],binsiz:[39,191,358,362],binstyl:153,bio:[40,358],biolog:[6,7],biologi:177,biomolecul:[277,292,347,348,373],biomolecular:465,biophys:232,biosym:13,bird:383,bisect:[41,210,445],bisector:[6,378,398,402],bispectrum:[63,140,429],bisqu:191,bit:[3,12,17,39,225,236,413,440,464,477],bitmap:[3,440,446],bitrat:[190,191],bitzek:354,bkgd_dyn:409,bla:12,black:191,blais:[9,13],blanchedalmond:191,blank:[2,3,12,38,56,107,185,190,277,292,356,357,368,385,409,415,429,439,440,441,442,443,453,454,456,482],blast:319,blend:409,block:[2,3,6,91,140,165,167,168,278,328,350,362,368,386,419,429,459,470,477],blocksiz:362,blow:[3,263,324,328,430],blown:3,blue:[2,190,191,213],bluegen:[188,347],blueviolet:191,board:[348,381],bodi:[],body_nparticl:8,bodyflag:456,bodyforc:238,bodyforcei:238,bodyforcex:238,bodyforcez:238,bodystyl:[241,292],boff:[356,456],bogaert:314,bogu:[3,148,214],bogusz:88,bohr:[384,386,443,481],boltzmann:[6,7,9,87,91,112,143,145,146,147,148,151,152,153,154,155,157,203,213,235,238,239,240,241,242,255,323,382,471,481],bond:[],bond_coeff:[],bond_graph_cutoff:422,bond_harmon:[8,48,49],bond_harmonicshift:49,bond_info:422,bond_interact:200,bond_styl:[],bond_typ:[169,437],bondangl:[3,21,33,456],bondbond13:[3,172,456],bondbond:[3,21,33,456],bondchk:422,bondcoeff:3,bondtyp:[211,212,356,437],bonu:[3,484],book:448,bookkeep:413,bookmark:0,boost:[1,3,12,64,358],bop:[],border:[3,7,16,61,319,483],boresch:87,boreschkarplu:87,born:[],boron:386,borrow:296,bose:287,botero:[7,9,13,386],both:[1,3,6,7,8,9,11,12,14,15,16,17,18,27,37,39,40,54,55,57,59,61,62,63,68,69,71,83,87,88,108,113,115,116,128,142,144,145,150,153,155,158,165,167,168,169,174,184,185,188,190,193,194,195,196,201,203,204,206,207,208,211,212,213,214,215,216,221,227,229,231,233,235,236,238,239,247,248,251,252,256,257,263,268,271,277,281,282,283,289,292,295,296,304,307,311,315,316,317,319,322,324,325,327,328,329,332,333,342,348,352,355,356,357,358,360,362,364,368,369,370,371,372,373,374,376,381,382,384,385,386,389,390,392,393,394,398,400,402,403,404,406,407,408,412,413,416,423,424,439,441,442,443,451,453,454,456,457,458,459,463,468,473,474,477,482,484,485,486],bottleneck:[1,3,454,475],bottom:[8,9,148,191,216,226,238,269,315,322,350,468],bottomwal:209,bounc:[3,307],bound:[3,6,17,26,27,41,42,57,59,71,154,167,174,187,188,191,205,206,210,216,217,221,227,236,251,278,307,324,325,326,327,328,329,347,355,386,456,459,470,477,482,483],boundar:3,boundari:[],boundary_dynam:200,boundary_faceset:200,boundary_integr:200,bount:11,box:[],boxcolor:[190,191],boxxlo:11,bpa:362,bpclermont:[9,13],bptype:437,br1:164,bracket:[2,3,6,41,63,71,117,119,194,202,203,204,205,206,207,208,210,321,474,482],bragg:[118,164],branc:11,branch:11,branicio:73,breakabl:[7,44,55],breakag:[78,211],breakdown:[1,12,15,88,107,421,422,451,470],brennan:437,brenner:[364,438],brick:[3,41,61,62,153,167,210,456,458,460,482],brief:[1,5,6,7,8,12,234,364,368,422,470],briefli:[6,10,275,377],brilliantov:390,bristol:[5,7],brittl:418,broader:454,broadli:8,broken:[2,54,65,69,70,78,107,115,169,211,251,368,458,468,475,484],brook:6,brought:187,brown:[7,9,13,15,16,118,141,191],brownain:370,brownian:[],brownw:7,brows:0,browser:[4,190],bryantsev:392,bsd:12,bstyle:[40,42],btype:[69,115,166,188,378,398,402,406,437],buc:371,buck:[],buckingham:[7,195,196,283,348,369,371,372,380,438],buffer:[3,8,190,191,473],bufi:190,bug:[],bui:190,build:[],builder:[7,13],built:[1,2,3,4,6,8,9,11,12,13,14,15,16,17,20,21,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,40,43,45,46,47,48,49,50,51,53,54,55,56,64,67,78,80,83,86,87,96,97,98,99,100,101,105,109,111,112,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,144,149,151,152,156,157,159,163,171,172,174,175,176,177,178,179,180,182,183,184,185,188,189,192,194,197,198,199,201,209,211,212,213,215,216,217,222,223,224,226,227,228,229,230,232,234,235,237,238,239,240,241,242,244,245,249,250,251,252,253,254,255,256,257,258,259,260,261,262,264,266,267,268,269,270,271,273,274,275,277,278,281,282,283,284,285,286,287,288,289,292,294,295,296,297,298,299,300,301,303,307,310,312,313,314,315,316,317,319,320,322,323,325,326,327,331,332,333,335,336,337,338,339,341,342,343,348,357,358,359,362,363,364,366,367,368,369,370,371,372,373,374,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,398,399,400,401,402,403,404,405,406,407,408,409,410,411,414,415,416,417,418,419,420,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,451,454,457,459,465,469,470,471],bulatov:[410,411],bulk:[4,6,10,70,238,273,279,379,409,413,418,425,427,460],bullet:7,bump:235,bunch:8,bundl:[9,190,192],burlywood:191,bussi1:311,bussi2:311,bussi:[229,311],buyl:[9,189],bybe:9,bypass:6,c1060:14,c11:[204,409],c12:204,c13:204,c1n:204,c2050:14,c21:204,c22:204,c23:204,c2n:204,c31:204,c32:204,c33:204,c34:204,c3n:204,c41:204,c42:204,c43:204,c44:204,c_0:[319,435,436],c_1:[68,69,117,118,164,188,191,228,281,293,330],c_2:[69,117,118,161,163,164,188,293,321,330],c_3:[117,293],c_cluster:6,c_cstherm:6,c_dist:117,c_doubl:11,c_e:319,c_flux:91,c_forc:117,c_gauss:388,c_hb:392,c_id:[6,63,71,87,117,119,188,202,203,204,205,206,207,208,293,309,321,474,482],c_ij:6,c_ijkl:6,c_index:117,c_k:228,c_ke:315,c_msdmol:119,c_my_stress:202,c_mycentro:[203,206],c_mychunk1:114,c_mychunk2:114,c_mychunk:[6,66,75,90,93,104,106,145,160,162],c_mycom:205,c_mycomput:203,c_myf:[188,485],c_myrdf:[116,208],c_mytemp:[8,204,205,208,321,474,482],c_n_k:228,c_p:141,c_pe:110,c_peratom:[110,141],c_pi:368,c_press:117,c_prop:6,c_radiu:163,c_reax:[421,422],c_sa:293,c_sigma:368,c_size:6,c_stress:188,c_tatom:236,c_tdrude:[220,236,477],c_thermo_press:[8,204,205,208],c_thermo_temp:208,c_xrd:205,ca2:164,cach:[17,39,413,469],cacul:295,cadetblu:191,cai:477,calcforc:238,calclat:91,calcluat:[103,105,110,112,141,378],calcualt:[91,203],calcul:[],caldwel:[6,171,468],calhoun:275,call:[],callabl:[3,11],callback:[3,8,11,142,194,225,454],caller:3,calori:481,caltech:[6,7,9,13,386],calucl:6,calul:[11,12,145,348],cambridg:[9,420],campa:274,can:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,341,342,343,344,345,346,347,348,350,351,352,353,355,356,357,358,359,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,463,464,465,466,467,468,469,470,471,472,473,474,475,477,481,482,483,484,485,486],cancel:[194,292,483],candid:[169,201,227],cannot:[1,2,3,6,11,12,13,15,16,17,39,40,41,54,57,58,59,68,71,82,84,88,104,117,119,142,144,145,166,168,169,187,188,189,190,191,202,203,204,205,206,207,208,210,213,214,216,217,227,228,229,235,236,237,241,248,251,253,254,256,257,259,260,261,266,268,271,278,279,282,287,289,292,293,294,297,307,315,319,321,322,324,325,328,329,330,332,347,350,355,357,360,361,362,371,372,374,384,389,391,398,402,404,406,413,416,421,423,424,425,427,437,438,440,451,453,454,456,457,459,460,462,465,466,468,470,473,481,482],canon:[194,201,227,229,251,252,268,269,270,271,275,311,314,317,418],cao1:275,cao2:275,cao:275,capabl:[5,7,9,11,14,16,17,18,326,332,348,362,364,374],capac:[9,40,101,151,287,319,432,456,466],capit:[219,456],capolungo:[118,164,293],captur:[6,320,364,372,386,390,402,409,477],carbid:378,carbon:[7,190,341,364,377,395,409],card:[12,14,16,22,44,77,87,116,173,195,196,292,334,352,375,392,450,458,463,484,486],care:[3,6,59,71,165,168,187,203,206,207,211,212,217,229,234,238,251,278,292,314,367,454,456,459,460,465,466],carefulli:[11,12,54,289,330,393,395,461],carlo:[6,7,9,194,201,213,227,292,314,383,438],caro:[201,384],carpent:[7,13],carri:[16,244,281,319,390,422],cart:[3,453],carter:[9,17],cartesian:[3,62,363,453],carv:168,cascad:[221,319],cash:7,cast:[229,482],cat:[15,190],catastroph:283,cate:238,categori:[],cation:387,cauchi:[133,138],caus:[1,2,3,6,8,12,16,17,165,167,168,169,188,191,199,214,221,227,263,273,290,292,295,324,326,327,328,329,332,346,348,355,357,361,392,398,404,407,408,413,450,454,455,456,457,460,461,463,464,482,486],caution:[1,348],cautiou:[211,212],cautious:364,caveat:[364,465],cbecker:[363,384],cc1:[6,14,66,75,90,93,104,106,114,145,160,162,203,206],cc2:14,ccc:[385,439,441,443],ccflag:[12,16,17,18,19,188],ccm6:384,ccsi:[385,439,441,443],ccu:368,cd2:164,cdeam:384,cdennist:9,cdll:11,cdof:[6,145,203],cdte:368,cdte_bop:368,cdtese:368,cdzn:368,cdznte:368,ce3:164,ce4:164,ceas:354,ceil:482,cell:[3,6,59,88,116,118,163,164,165,188,199,214,215,227,232,249,251,252,255,274,282,285,319,347,348,350,383,386,474],cella:[6,474],cellalpha:[6,474],cellb:[6,474],cellbeta:[6,474],cellc:[6,474],cellgamma:[6,474],center:[3,6,25,42,63,66,71,74,75,86,89,90,98,103,104,105,114,116,118,145,146,147,150,153,157,160,162,165,190,191,194,195,196,198,203,205,206,207,214,216,217,218,220,227,228,233,235,236,241,247,251,256,257,268,269,271,274,278,283,289,290,292,293,296,304,305,307,309,310,311,312,314,315,317,324,328,333,350,356,367,385,386,389,390,396,407,408,409,410,411,439,441,442,443,445,459,466,477,482],centimet:481,central:[3,61,70,76,77,116,122,140,241,273,295,305,356,415,421,422,456],centro:[],centroid:[3,275,445,466],cerda:347,ceriotti2:229,ceriotti:[13,229,234],certain:[1,2,3,6,8,12,17,39,71,113,117,119,169,188,190,202,203,204,205,206,207,208,213,225,226,292,294,308,321,332,339,346,358,393,413,422,444,458,462,477,482],certainli:233,cerutti:348,cfg:[3,6,7,13,188,189,190,191,192],cfile:422,cfl:[128,297],cfor:296,cg_type:424,cgiko:2,cgikot:2,cgkio:2,cgko:2,cgkot:2,cgo:2,cgot:2,ch2:295,ch2lmp:[],ch3:295,ch5md:189,chain3:358,chain:[],challeng:[6,296],chalopin:287,champaign:[232,347,348,407],chandler:[363,384],chandrasekhar:[6,398],chang:[1,2,3,6,8,9,11,12,14,15,16,17,39,40,41,46,55,57,59,62,71,80,87,116,126,128,147,148,149,165,166,167,169,185,187,188,189,190,191,192,194,195,196,197,198,200,201,206,207,209,210,211,212,213,214,215,216,217,221,222,224,226,229,231,232,233,235,237,238,239,241,247,248,249,251,252,253,254,255,256,257,263,268,269,270,271,273,274,278,279,281,282,286,289,290,291,292,294,295,296,307,310,311,312,313,315,316,317,318,319,320,322,325,328,330,348,353,355,357,360,362,382,386,390,393,407,408,409,413,421,422,438,451,452,453,454,456,457,458,459,460,461,462,464,465,466,467,468,471,474,478,480,481,482,483,484],change_box:[],changeabl:188,channel:[4,197],chapter:[275,348],charact:[2,3,6,12,38,41,56,63,185,188,190,191,192,194,210,281,289,332,356,361,386,397,419,421,422,440,453,454,458,463,464,482,484,485,486],character:[6,67,70,116,140,429,451,470],characterist:[236,307,316],charg:[1,3,4,5,6,7,9,11,15,40,87,88,113,118,164,165,188,192,194,195,196,201,217,222,227,281,283,284,285,289,309,322,347,348,356,369,371,377,378,380,381,384,386,387,393,398,402,406,416,421,422,438,443,444,446,448,449,456,457,461,466,468,477,481,482],charmm2lammp:13,charmm:[],chartreus:191,cheap:307,cheaper:[221,389,423],check:[3,6,8,11,12,15,17,39,41,71,91,185,201,206,210,211,212,217,224,227,233,234,291,295,307,315,317,322,330,332,346,355,356,357,358,359,362,383,394,397,413,422,437,451,453,454,456,464,470,473,474,482],checkf:185,checkqeq:422,checku:185,chem:[6,13,20,21,25,39,40,43,45,46,87,88,112,141,171,172,182,215,220,228,229,236,238,250,251,252,269,270,275,279,282,284,292,296,307,310,311,314,315,316,317,324,333,341,343,347,348,354,357,364,369,373,374,377,378,379,381,382,386,388,389,391,392,398,402,403,406,409,412,413,416,437,444,465,468,470,477],chemic:[9,118,159,164,188,200,201,227,283,288,289,314,348,421,422,433],chemistri:[9,282,283,285,368,386,421,422],chen:319,cheng:377,chenoweth:[421,422],chenoweth_2008:[421,422],chi:[92,154,187,273,283,285,387,389,483],chiefli:420,child:8,chip:[7,12,17,362,469],chipot:215,chiral:341,chmod:[11,12],cho:409,chocol:[7,191],choic:[3,6,12,15,16,18,40,41,54,87,141,144,158,169,185,203,206,207,210,213,216,217,229,235,238,249,251,275,283,292,314,342,348,353,354,357,359,362,393,406,413,417,456,465,466,469,470,476,477,481],choos:[1,3,6,7,8,12,16,17,18,29,39,54,87,117,155,156,190,211,212,213,214,217,224,235,238,249,251,253,254,255,256,257,279,307,311,325,347,348,354,446,451,453,465,471],chose:[441,443],chosen:[2,3,6,12,17,140,165,168,177,185,190,196,201,214,217,224,227,228,236,238,249,251,255,275,278,289,307,311,314,315,320,322,323,329,348,349,354,362,386,390,396,397,400,424,441,451,465,470,477],chri:163,christian:[7,9,14,17],christoph:7,chunk:[],chunkid:[66,75,90,93,104,106,114,145,160,162,203],chute:[4,10,230],ciccotti:295,cieplak:[6,171,468],cii:204,cij:204,circl:303,circular:[3,6,144,186],circumst:18,circumv:287,citat:[],cite:[3,7,8,12,235],cko:2,cl1:164,clarendon:[29,381],clarifi:[7,441,443],clariti:332,clark:416,class2:[],classic:[0,3,5,6,7,8,9,225,275,282,287,319,343,386],classifi:[9,438],claus:454,clean:[6,12,14,15,17,464],cleanli:[455,485],clear:[],clearli:7,clebsch:140,clermont:[9,13],clever:460,click:[2,11,22,37,44,55,165,173,184,190,232,334,342,357,375,438],client:[232,234],climb:[250,357,470],clinic:[7,13],clo:[154,187,483],clock:[12,451,470],clockwis:325,close:[3,6,11,12,13,39,41,67,141,168,188,212,213,214,229,236,238,251,269,292,295,325,328,346,348,351,353,354,357,362,364,368,378,379,409,413,425,427,443,460,466,477,479],closer:[3,41,116,163,187,188,210,214,218,316,357],closest:[212,273,292,322,389,423,437,446],cloud:477,clovertown:18,clsuter:72,clump1:[277,292],clump2:[277,292],clump3:[277,292],clump:292,cluster:[],clutter:[3,9],cmap:456,cmatrix:229,cmax:409,cmd:[11,12,275,467],cmin:409,cmm:[],cn1:204,cn2:204,cna:[],cnn:204,cnr:[9,13],cnt:[393,460],co2:[40,164,295,356],coars:[7,9,29,36,40,54,177,277,292,307,391,424,468],coarser:[348,482],coarsest:140,code:[],coeff:[3,7,8,12,21,22,33,44,50,171,172,173,178,333,334,339,375,393,397,413,426,428,430,456,458],coeffcient:456,coeffici:[],coefficienct:382,coefficient0:384,coefficient1:384,coeffieci:[6,366],coeffincientn:384,coexist:[9,227,386],cohes:[6,387,409],coincid:[122,328,373,407,408,451],colberg:189,cold:[6,150,231,358,477],coldest:315,coleman8:9,coleman:[9,118,164,293],colin:9,collabor:[7,8,9,15],collect:[3,6,7,8,9,13,40,42,66,75,83,90,93,98,104,106,114,145,153,160,162,165,188,191,203,215,241,247,277,287,290,292,330,347,356,358,376,396,456,463,469,475,486],collid:[221,307,329],colliex:164,collinear:[3,277],collis:[3,238,307,325,329,383,390,449],colllis:307,colloid:[],colombo:39,colon:[192,330,457],color1:191,color2:191,color:[3,9,41,188,190,191,210,228,282,287],column:[3,6,9,12,13,42,63,65,66,67,68,69,71,75,77,79,81,90,92,93,104,106,108,110,113,114,115,116,117,119,140,141,145,153,160,162,163,164,185,188,191,194,202,203,204,205,206,207,208,241,248,249,282,292,308,309,319,329,388,392,421,422,457,471,473,482],colvar:[],colvarmodul:12,com:[],comamnd:216,comand:[213,458],comannd:362,comb3:[],comb:[],comb_1:284,comb_2:284,combiant:379,combin:[3,6,7,9,11,13,36,40,63,65,69,79,87,92,108,115,144,158,188,190,200,205,232,241,251,275,281,311,320,328,331,333,347,348,350,354,362,376,378,379,386,387,393,405,406,429,439,441,443,448,459,464,469,477,482],come:[],comfort:[12,13],comm:[0,3,12,61,73,189,232,234,235,348,357,362,382,413,418,440],comm_modifi:[],comm_modift:61,comm_styl:[],command:[],comment:[2,7,11,12,38,56,171,185,188,236,292,319,356,357,363,384,385,387,397,409,415,422,429,439,440,441,442,443,453,454,456,477,482],commerci:7,commmand:[3,6,12,59,107,270,450,451,453,470,485],common:[],commonli:[3,6,12,17,25,57,59,105,167,188,190,192,343,391,400,429,441,443,456,459,468],commun:[1,3,6,7,8,10,11,12,14,15,16,18,40,41,58,61,62,71,168,169,190,191,210,211,212,214,215,216,232,234,238,240,241,242,251,274,281,283,284,285,292,307,319,330,345,347,358,359,360,362,383,417,453,454,458,465,466,482,484,486],communc:347,comp:[7,189,234,235,295,348,357,386,413,418,423,436,440,442],compact:[63,194,375,438],compani:[5,7],compar:[1,3,4,6,8,12,17,39,86,110,118,148,163,164,173,184,191,220,283,330,332,347,348,355,357,409,451,470,471,477,481],comparison:[],comparison_of_nvidia_graphics_processing_unit:14,compass:[7,21,22,37,43,44,55,172,173,184,333,334,342,374,438],compat:[3,5,7,8,9,11,12,13,17,18,41,71,117,119,176,188,192,196,202,203,204,205,206,207,208,210,274,286,311,314,321,324,327,347,362,394,413,440,453,454,482],compens:[6,211,212,290,358,386],compet:318,competit:348,compil:[3,7,8,9,10,12,13,14,15,16,17,18,19,163,188,189,190,192,232,318,348,362,456,457,461,482],compl:17,complain:[12,17],complement:409,complementari:[7,378,398],complet:[3,6,9,12,15,41,59,71,191,206,210,215,241,275,278,281,307,318,320,332,346,357,362,387,426,428,445,451,456,461,464,468,470,473,477,482],complex:[6,8,11,12,13,25,40,42,62,140,142,153,165,166,238,303,328,345,357,386,440,454,456,459,482],compli:[314,318],complic:[6,7,9,12,13,201,227,454],complier:12,compon:[3,6,8,12,61,63,66,67,73,81,88,89,90,91,93,94,97,104,105,106,107,108,109,110,112,113,117,127,130,131,132,133,136,137,138,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,157,158,160,161,162,188,190,191,197,198,202,203,204,205,206,207,208,209,213,214,216,217,222,225,230,234,235,238,241,243,247,248,250,251,252,255,256,257,268,269,271,272,274,275,276,279,290,292,294,295,296,300,301,304,307,310,311,312,314,321,322,327,328,329,347,350,354,355,356,357,362,382,386,390,407,408,426,428,429,456,457,466,474,482,483],componenet:6,composit:[6,201,238,384],compound:[377,386,387],compres:[71,114,203],compress:[3,6,9,12,59,71,114,168,188,190,191,203,216,249,255,279,282],compris:[40,328,396,423,445],compton:[118,164],comptu:[3,6],compuat:348,comput:[],computation:[3,6,211,212,319,368],computational:477,compute_arrai:8,compute_fep:[196,406],compute_group_group:227,compute_inn:8,compute_ke_atom:8,compute_loc:8,compute_modifi:[],compute_peratom:8,compute_sa:[118,293],compute_scalar:8,compute_temp:8,compute_ti:196,compute_vector:8,compute_xrd:164,concaten:[2,3,485],concav:328,concentr:384,concept:[6,145,155,203,465],conceptu:[3,6,71,153,214,216,357,378,393,409,461],concern:[6,73,87,189,228],concis:[11,318],conclud:12,concret:8,concurr:[9,16,348,482],conden:[319,441,443],condens:[6,147,319,364,380,384,398],condit:[],conducit:6,conduct:[],cone:459,confid:[3,470],config:[12,188,453],configfil:215,configur:[1,2,6,12,15,17,38,59,122,167,185,187,188,190,194,214,215,216,217,221,227,234,235,263,275,283,318,345,355,357,364,368,385,409,439,441,443,451,456,458,459,470],confin:[456,470],conflict:[3,12,40,413,454],conform:[3,6,13,59,213,214,250,291,296,318,341,357,386,468],confus:3,conjuct:382,conjug:[7,8,235,354,386,421,422],conjunct:[6,7,71,86,87,114,148,153,159,165,169,191,195,196,235,238,242,263,278,279,283,284,285,287,292,307,315,322,327,347,348,357,369,371,375,378,382,386,392,398,413,416,424,444,456,459,463,477,486],connect:[3,6,87,150,168,213,232,277,292,295,304,357,379,390,437,443,453,454,460,477],conput:3,consecut:[3,11,12,39,71,165,191,195,196,217,232,233,378,398,402,451,457,459],consequ:[1,6,201,319,397,470],conserv:[3,194,201,213,220,221,228,231,235,237,238,242,247,249,251,263,292,295,310,311,315,322,323,327,357,381,382,390,404,465,470],consid:[6,9,70,71,78,87,115,147,150,151,168,188,191,195,196,202,204,206,210,212,213,217,239,252,274,292,314,315,318,319,322,348,375,386,393,422,423,437,451,452,454,457,458,459,461,464,466,474,477,482],consider:[6,8,235,236,310,311,312,362,465],consist:[3,6,8,9,11,12,40,42,65,69,79,92,104,108,111,112,115,145,148,150,165,177,187,192,197,198,203,216,217,220,222,225,228,235,236,237,248,251,253,254,255,256,257,258,259,261,262,263,264,266,267,268,269,270,271,279,282,287,289,291,292,310,311,312,313,323,347,348,350,356,357,362,364,368,370,376,378,386,389,393,407,408,409,413,423,426,428,440,446,454,456,457,459,460,461,468,477,482],consistent_fe_initi:200,consit:292,constant:[],constitu:[3,6,241,292,324,328,376,423],constitut:[426,428],constrain:[3,6,8,143,144,145,146,148,151,152,153,154,155,157,158,194,203,217,227,228,233,241,245,277,278,290,292,295,305,315,322,355,356,386,461,468,477],constraint:[],construct:[6,8,12,14,38,54,56,61,64,67,70,72,73,77,118,140,164,214,251,274,291,328,358,362,381,413,437,439,440,459,460,475,482],constructor:8,consult:422,consum:[1,287,417,482],consumpt:345,contact:[],contact_stiff:[425,427],contain:[0,1,2,3,4,6,8,9,11,12,13,17,18,19,38,40,41,56,63,87,91,116,118,140,145,153,163,164,165,167,171,173,184,185,188,190,191,192,194,195,196,200,202,203,204,205,206,207,208,210,215,217,222,229,233,234,235,236,238,249,263,273,274,277,278,280,282,285,289,292,293,297,307,314,318,319,328,329,332,346,348,356,357,360,361,363,364,365,368,377,378,381,384,385,386,393,394,409,415,419,420,421,422,429,439,440,441,442,443,444,451,452,453,454,456,457,458,459,461,463,465,468,470,473,474,477,482,484,486],content:[12,18,422,472,474],context:[3,6,8,12,17,117,191,211,212,217,277,289,323,354,448,456,463,472,481,482,483],contibut:70,contigu:453,contin:16,continu:[0,2,3,5,6,9,12,13,14,41,71,81,103,104,161,191,194,195,196,201,203,204,205,206,207,208,210,213,214,215,216,217,227,228,229,231,232,233,235,236,237,243,248,249,251,253,254,255,256,257,268,269,270,271,276,278,281,282,292,293,296,306,307,309,316,317,319,325,328,332,346,361,362,368,382,383,400,403,421,422,423,426,428,442,451,454,456,458,459,464,470,473,474,482,484],continuum:[6,7,9,200,319,426,428],contour_integr:200,contract:[59,214,216,251,279,292],contradictori:3,contrain:295,contraint:263,contrari:[229,236],contrast:[1,6,42,55,64,150,216,330,426,428,448,485],contrib:319,contribut:[3,5,6,7,8,9,12,13,17,63,66,68,70,71,74,75,77,80,84,87,88,89,90,91,93,102,104,106,107,108,109,110,112,114,117,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,196,201,202,203,204,205,206,207,208,214,227,235,238,241,242,246,252,269,270,277,278,286,289,292,293,295,321,347,355,357,365,382,383,384,386,393,407,408,413,421,422,468,474,477],contributor:12,control:[3,5,6,7,8,9,11,13,16,27,29,41,87,91,122,140,174,188,190,194,200,201,210,214,215,216,231,232,235,236,251,253,254,255,256,257,279,284,292,298,299,310,311,312,319,323,345,347,359,386,389,421,422,425,427,439,443,451,453,465,471,472],control_typ:200,controlfil:422,convect:91,conveni:[6,12,29,188,192,208,293,350,429,482],convent:[3,8,9,29,176,183,184,191,291,304,331,384,386,482],converg:[3,6,41,88,188,190,192,197,210,213,214,222,225,255,282,284,287,291,295,353,354,355,357,377,378,398,451,463,470],convers:[3,8,140,190,191,201,204,279,347,378,379,380,386,398,402,406,416,454,470,481],convert:[2,3,4,5,6,7,8,12,13,20,21,24,28,32,35,36,59,63,71,91,165,172,188,190,191,208,249,330,333,335,338,341,350,357,363,384,441,443,449,454,456,457,458,463,473,477,481,482,484,486],convex:328,convinc:[7,12],cook:9,cooki:7,cool:[7,155,231,290],cooordin:188,cooper:[5,7],coord123:114,coord1:[3,114,203,206,207],coord2:[3,114,203,206,207],coord3:[3,114,203,206,207],coord:[],coordiat:355,coordin:[1,3,4,6,7,8,11,13,14,15,17,40,41,42,59,61,62,63,66,68,71,74,75,77,81,87,89,90,93,103,104,106,113,114,116,134,140,148,154,160,162,163,165,169,187,188,189,190,191,192,194,197,202,203,205,206,207,210,211,212,213,214,215,216,217,220,222,223,225,227,230,231,232,233,234,235,236,248,250,251,253,254,256,257,269,272,273,274,277,278,279,289,290,292,294,295,296,301,304,305,306,307,309,317,318,319,326,327,329,330,350,355,356,357,362,363,364,367,385,451,456,457,459,461,464,466,470,477,482,483],coordn:[114,203],coorind:104,copi:[0,3,4,8,11,12,15,17,40,119,190,319,357,375,421,454],copper:449,coproccesor:16,coprocessor:[1,4,7,9,16,17,362,469],coproprocessor:17,copy_arrai:8,copyright:[7,8,277],coral:191,core:[],core_shel:147,coreshel:[6,9,371,378,380],cornel:[6,171,468],corner123i:113,corner123x:113,corner123z:113,corner1i:113,corner1x:113,corner1z:113,corner2i:113,corner2x:113,corner2z:113,corner3i:113,corner3x:113,corner3z:113,corner:[3,6,40,113,190,328,329,350,445,456],cornflowerblu:191,cornsilk:191,corpor:16,corr:377,correct:[3,6,9,11,12,16,17,59,87,88,102,110,116,147,152,159,190,216,229,235,251,252,269,277,279,282,318,324,328,347,357,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,379,380,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,416,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,445,447,448,449,456,471,474,477],correction_max_iter:200,correctli:[3,8,9,11,17,71,81,102,103,143,144,146,148,150,151,152,153,154,157,158,161,188,191,197,217,222,225,236,245,251,252,285,292,295,304,306,325,328,357,358,362,380,408,453,454,456,466,481,483],correl:[],correspond:[1,2,6,8,11,12,14,20,21,22,23,24,25,26,27,28,29,30,31,32,35,38,40,43,44,45,46,47,48,49,51,53,54,56,70,71,87,96,97,109,112,113,114,115,118,119,127,130,131,132,133,134,136,137,138,140,143,144,152,159,164,171,172,173,174,175,176,177,179,180,182,183,185,188,190,191,195,196,197,203,205,206,207,209,212,214,216,223,225,226,230,235,238,239,247,248,249,251,253,254,255,256,257,258,263,266,268,269,271,274,275,279,284,292,294,295,310,312,314,323,324,325,327,328,329,331,333,334,335,336,337,338,341,343,348,352,354,356,357,363,364,366,369,370,371,372,373,374,375,376,377,378,381,382,384,385,386,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,409,410,413,414,415,416,418,419,421,422,423,424,429,430,439,440,441,442,443,445,447,448,449,451,453,454,456,457,459,469,470,471,473,474,477,482],correspondingli:[407,408,465],cosin:[],cosineshift:27,cosmo:[229,234],cossq:[],cost:[1,6,10,11,12,17,39,41,71,109,118,141,164,190,191,203,206,207,210,211,212,224,251,284,319,347,348,360,378,398,402,413,439,453,465],costheta0:[439,441,443],costheta:419,costli:[11,88,229,358],couett:4,coul:[],could:[2,3,6,9,11,12,17,33,41,50,59,66,71,75,87,90,93,104,106,109,112,114,145,155,160,162,178,188,190,191,195,196,203,204,206,210,216,225,234,281,282,283,287,290,292,294,307,308,314,318,319,320,324,328,330,332,339,344,346,353,355,358,362,365,388,392,393,421,422,452,453,454,456,458,460,463,464,472,477,482,483],coulomb:[3,5,6,7,8,9,10,12,14,15,18,88,107,108,116,141,166,170,283,285,320,347,348,355,362,369,371,372,373,374,377,378,379,380,381,386,390,391,393,398,402,406,413,416,421,422,424,438,443,444,448,461,468,474,477,481],coulommb:6,cound:3,count:[1,3,6,8,10,11,12,41,63,68,77,91,114,116,117,153,163,169,197,198,201,203,205,206,207,209,210,217,222,224,227,233,251,263,278,295,310,311,328,348,355,356,357,359,362,388,392,413,474,482],counter:[325,451,462,464,470],counterbal:231,counterpart:[188,292,451],counterproduct:18,coupl:[],courant:297,cours:[3,8,126,128,159,188,195,196,228,291,304,318,324,326,327,329,330,348,407,430,453,456,469,477,482,484],courtesi:350,coval:[6,29,386,409,477],covari:229,cover:[6,71,185,191,200,238,386,396,445],coverag:[71,206],cpc:234,cpp:[1,3,6,8,9,11,12,13,87,188,195,196,225,295],cpu:[1,3,4,9,10,12,14,15,16,17,18,63,71,191,194,220,236,320,345,348,362,375,438,451,469,470,473,474,475,482],cpuremain:474,cr2:164,cr3:164,crack:[4,358],crada:[5,7],crai:[5,7,13,18,188],crash:[3,12,358,477],craympi:362,creat:[],create_atom:[],create_bond:[],create_box:[],create_elementset:200,create_faceset:200,create_group:189,create_nodeset:200,createatom:[],creation:[],crimson:191,critchlei:277,criteria:[3,116,166,190,191,211,212,213,246,355,418,445,458,461,482],criterion:[12,41,121,163,165,168,201,210,213,227,263,284,297,325,330,355,357,377,386,390,461,470,471],criterioni:470,critic:[48,49,249,314,319,355],cross:[3,12,22,71,89,144,173,188,190,202,206,212,216,248,250,269,292,300,304,306,315,322,334,350,357,373,382,383,384,391,392,393,398,400,402,419,424,426,428,441,443,449,456,460,466,484],crossov:1,crossterm:456,crozier:[0,7,13],crucial:282,crystal:[4,6,13,73,273,274,317,350,358,460,474,477],crystallin:[6,274,350,442,477],crystallis:314,crystallogr:[118,164],crystallograph:[350,474],crystallographi:[118,164,350],cs1:164,cs_chunk:6,cs_im:[40,456],cs_re:[40,456],csanyi:[140,420,429],cscl:409,csequ:6,csh:[11,12,375],cshrc:[11,12],csic:[385,439,441,443],csinfo:6,csisi:[385,439,441,443],csld:[],cst:384,cstherm:6,cstyle:453,csvr:[],ctcm:[363,384],ctemp_cor:220,cterm:296,ctr:9,ctype:11,cu1:164,cu2:164,cu3au:409,cube:[6,41,163,168,210,220,328,350,477],cubic:[],cuda:[],cuda_arch:15,cuda_get:15,cuda_hom:15,cuda_prec:15,cufft:14,cuh:368,cummul:[3,6,208,211,212,213,215,224,229,235,237,307,310,311,312,313,315,322,392,474],cumul:[6,201,203,205,206,207,221,227,235,249,251,255,263,292,293,357],curli:2,current:[0,1,3,5,6,7,8,9,11,12,13,15,16,17,18,40,41,42,59,61,63,71,73,81,87,102,108,116,117,130,141,145,153,155,161,163,166,169,188,189,190,191,192,195,196,200,203,206,207,208,210,211,212,213,214,215,216,217,221,222,225,227,229,232,233,235,241,248,251,252,256,257,263,268,269,271,277,283,284,286,289,290,291,292,295,296,297,298,299,300,301,303,305,306,307,310,311,312,318,319,322,323,324,325,326,327,329,330,332,345,346,347,348,351,352,354,355,356,357,362,368,375,377,381,384,386,387,390,394,397,407,408,409,410,411,413,419,421,422,425,426,427,428,430,441,443,444,446,451,452,453,454,456,457,458,459,460,462,463,464,466,468,470,471,473,474,482,483,484,485,486],curv:[6,165,227,274],curvatur:[389,423,449],custom:[],cut0:454,cut1:465,cut2:465,cut:[],cuthi:[273,285],cutinn:[370,407,408],cutlo:[273,285],cutmax:419,cutoff1:[374,381,398,402,406,416,424],cutoff2:[369,371,372,374,380,381,398,402,406,416,424],cutoff:[3,6,10,16,18,39,45,46,54,55,61,70,72,73,77,87,108,115,116,140,163,166,168,212,213,218,273,282,283,285,287,289,292,307,320,324,328,330,345,347,348,355,358,359,360,362,363,364,365,366,367,368,369,370,371,372,373,374,376,378,379,380,381,382,383,384,385,386,387,388,389,391,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,421,422,423,424,429,430,431,432,433,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,454,458,461,465,477,482],cutoffa:385,cutoffc:385,cuu3:384,cval:164,cvd:314,cvel:296,cvff:[],cwiggl:[3,248,324,327,329,482],cyan:[2,190,191],cycl:[3,227,249,251,252,255],cyclic:[3,185],cygwin:12,cylind:[3,4,190,233,278,325,328,459],cylindr:[6,233,304,325],cypress:362,cyrot:368,cyrstal:274,d3q15:238,d3q19:238,d_double_doubl:15,d_e:319,d_flag2:281,d_flag:281,d_name:[113,188,281,309,466],d_single_doubl:15,d_single_singl:15,d_sx:281,d_sy:281,d_sz:281,daan:317,dai:12,daili:12,daivi:269,damag:[],dammak:287,damp:[3,6,194,199,235,236,237,242,251,252,255,279,282,287,292,310,311,323,325,326,354,355,357,369,371,373,378,381,386,390,398,406,416,424,438,444,470,477],damp_com:236,damp_drud:236,dampen:[292,477],dampflag:[325,390],dan:17,danger:[3,12,227,330,382,474],dangl:168,daniel:9,darden:[348,381],darkblu:191,darkcyan:191,darken:190,darkgoldenrod:191,darkgrai:191,darkgreen:191,darkkhaki:191,darkmagenta:191,darkolivegreen:191,darkorang:191,darkorchid:191,darkr:191,darksalmon:191,darkseagreen:191,darkslateblu:191,darkslategrai:191,darkturquois:191,darkviolet:191,dasgupta:283,dash:[390,473],dat:[6,91,185,200,452],data2xmovi:[],data:[],data_atom:8,data_atom_hybrid:8,data_bodi:8,data_vel:8,data_vel_hybrid:8,databas:[],datafil:[12,13,293],dataset:293,datatyp:3,date:[0,6,12,13,421,422,482],datom1:115,datom2:115,datom3:115,datom4:115,datum:[3,6,42,65,68,69,79,92,108,115,188,204],davi:324,david:[9,19,347,348,441,443],daw:[384,419],dbg:14,dcd:[3,6,7,188,189,190,191,192,275,457,461],ddim:187,deactiv:406,dealt:234,debug:[6,7,11,12,13,14,17,118,122,164,165,275,280,345,347,362,394,413,446,454,455,458,463,466,473,482],deby:[],decai:[378,449],decid:[3,6,12,16,71,248,281,292,320,471],decipher:350,declar:189,declin:307,decod:190,decompos:[87,429],decomposit:[3,5,7,18,62,200,275],decoupl:[6,477],decreas:[3,188,197,198,213,216,222,225,235,318,347],decrement:296,deepli:344,deeppink:191,deepskyblu:191,def:[12,13,454],defaul:61,defect:[6,70,163],defgrad:2,defin:[2,3,5,6,7,8,11,12,17,20,21,22,23,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,51,53,54,55,56,57,58,59,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,171,172,173,174,175,176,177,179,180,182,183,184,185,186,187,188,189,190,191,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,220,221,222,225,226,227,230,233,234,235,236,237,238,246,248,250,251,252,253,254,255,256,257,259,260,261,264,266,267,268,269,270,271,273,274,275,277,278,279,281,283,285,290,292,293,294,295,297,301,305,307,309,310,311,312,313,315,316,317,319,321,322,324,325,326,327,328,329,330,332,333,334,335,336,337,338,341,342,343,345,347,348,350,352,354,355,356,357,358,359,360,361,362,364,365,366,367,369,370,371,372,373,374,375,376,378,379,381,382,383,385,386,388,389,390,391,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,412,413,414,415,416,418,419,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,453,454,456,457,459,460,461,462,465,466,467,468,470,471,473,474,477,478,479,480,481,482,483],definit:[2,3,6,8,12,13,78,80,116,140,191,203,204,205,206,207,208,216,233,255,293,309,321,324,327,329,331,342,345,356,365,368,376,386,396,419,426,428,429,445,454,456,458,465,467,481,482],defint:474,deform:[],deg2theta:164,deg:477,degener:[3,277],degrad:[8,18,274,348,465],degre:[3,6,8,20,21,24,28,29,32,35,36,38,65,79,92,94,96,97,99,101,102,112,143,144,145,146,147,148,149,150,151,152,153,154,155,157,158,164,165,171,172,175,176,183,185,187,190,203,213,220,227,229,230,235,236,241,251,252,255,256,257,268,269,271,275,277,291,292,295,310,311,312,317,333,335,338,341,343,355,381,384,392,466,474,477,483],degress:[145,203],del:470,delai:[3,6,12,358,383,474],deleg:393,delet:[2,3,7,8,12,54,57,60,63,163,168,169,194,203,204,205,206,207,208,211,213,224,227,251,293,310,311,330,332,346,356,358,361,413,456,457,459,467,468,473,478,480,482,483],delete_atom:[],delete_bond:[],delete_el:200,deli:187,delimit:[454,482],deloc:[252,386],delr:409,delt_lo:470,delta:[],delta_1:368,delta_3:368,delta_7:368,delta_conf:3,delta_ij:[409,419],delta_mu:3,delta_pi:368,delta_r:419,delta_sigma:368,delx:187,delz:187,demand:287,demo:11,demon:272,demonstr:[282,409],den:278,dendrim:392,denniston:[9,238,240,241,242,274],denomin:[7,170],denot:[118,220,236,274,285,287,378,391,393,422,426,428],dens:[71,213,386],densiti:[3,6,7,9,18,40,41,59,100,116,126,140,151,163,165,195,196,200,203,206,207,210,216,225,238,241,244,245,274,278,279,283,319,324,350,352,356,363,368,384,409,410,411,419,423,432,434,435,436,456,465,466,474,481],density_continu:428,density_summ:428,depart:[0,7],departur:[249,282],depend:[1,2,3,6,8,9,11,12,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,43,44,45,46,47,48,49,51,53,54,56,61,63,65,68,69,70,71,79,92,108,109,112,113,114,115,119,140,143,148,152,153,159,165,166,171,172,173,174,175,176,177,179,180,182,183,184,185,187,188,190,191,194,195,196,197,198,201,203,205,206,208,209,210,212,214,216,222,223,226,229,230,231,233,235,236,238,240,241,248,251,253,254,255,256,257,258,266,268,269,271,273,284,287,289,292,294,295,301,307,310,311,312,314,316,318,319,321,323,324,327,328,329,330,332,333,334,335,336,337,338,341,343,348,350,355,356,358,359,360,362,363,364,366,367,368,369,370,371,372,373,374,375,376,377,378,379,381,382,384,385,386,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,409,410,412,414,415,416,418,419,421,422,423,424,429,430,438,439,440,441,442,443,444,445,447,448,449,451,453,456,458,459,462,466,468,470,473,474,476,482,483],dependend:6,depflag:12,dephas:[451,470],depos:217,deposit:[],deprec:283,depth:[51,144,190,319,389,423],dequidt:9,der:[87,107,376,377,406,421,422,448,477],deriv:[6,7,8,38,56,63,87,140,159,185,204,214,216,227,235,248,251,253,254,255,256,257,273,279,283,287,316,317,319,324,325,328,354,356,364,368,376,381,386,387,391,400,404,405,409,421,422,438,440,448,477],derjagin:448,derlet:273,descend:191,descent:[7,354],descib:[40,283],describ:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,38,39,40,41,42,56,62,63,68,70,71,73,88,110,113,116,118,130,140,141,144,145,149,150,153,156,158,159,163,164,165,167,168,177,182,185,188,189,194,195,196,203,204,205,206,207,208,210,213,214,215,216,217,219,220,228,229,232,233,234,235,236,237,238,240,241,242,246,250,251,252,255,262,270,273,275,280,281,282,283,284,285,292,296,304,307,308,309,310,311,312,313,314,315,316,317,322,324,325,327,332,347,348,350,353,354,355,356,357,361,364,365,367,369,370,371,373,374,375,376,377,378,381,384,386,387,389,390,391,393,398,399,400,401,402,403,404,405,406,407,408,409,412,418,419,420,421,422,423,424,429,430,437,438,439,440,441,442,443,444,447,448,449,451,453,454,456,457,459,460,466,469,470,473,482,483,484],descript:[],descriptor:[140,188,394],deserno:348,design:[0,3,6,7,8,9,11,13,14,15,17,118,147,150,164,200,213,219,220,251,252,273,274,293,314,319,365,366,367,370,373,378,380,386,406,407,408,410,411,419,422,440,465],desir:[2,3,6,7,11,12,14,15,16,18,33,40,50,59,71,88,91,112,117,141,147,165,178,187,203,208,214,216,225,227,228,235,236,237,241,251,269,277,278,279,280,283,287,292,295,307,310,311,312,313,318,325,339,344,347,348,350,353,355,356,357,382,384,392,407,408,439,441,443,452,453,454,456,460,465,470,471,473,474,482,483,484],desk:7,desktop:[4,6,7,10,12,17,190],despit:477,destabil:368,destre:341,destroi:[11,39,211,212],detail:[1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,22,37,40,41,42,55,63,66,67,68,71,75,78,90,91,93,102,104,106,107,109,111,112,114,117,119,140,141,143,144,145,148,158,159,160,162,165,166,169,170,173,184,188,190,191,194,195,196,200,203,204,205,206,208,210,212,213,214,215,216,217,225,227,228,229,230,232,233,235,237,238,242,248,249,250,251,252,253,254,255,256,257,261,263,268,269,270,271,274,277,278,279,281,282,284,285,286,292,295,307,310,311,312,313,314,315,317,318,319,320,321,322,323,330,332,334,342,347,348,351,355,356,358,359,362,363,364,365,367,368,370,372,373,374,375,376,377,378,381,382,386,387,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,408,409,412,413,418,421,422,423,429,430,438,445,447,448,454,456,457,458,459,461,462,465,466,468,471,474,475,482,483,486],detect:[2,3,12,61,63,86,226,278,318,357,377,392,397,451,453,456,467,470,482],determ:362,determin:[1,3,6,8,12,15,39,40,42,51,57,58,59,61,62,68,71,87,102,107,109,112,118,119,127,141,153,154,163,164,165,187,188,190,191,192,193,197,198,199,202,203,204,205,206,207,208,209,210,214,216,217,220,222,227,230,231,233,235,236,241,246,248,249,251,256,257,268,269,271,273,275,279,282,289,290,291,292,293,294,297,299,301,307,310,311,312,314,320,321,324,325,326,327,328,329,330,342,347,348,350,356,358,359,362,364,365,372,377,381,383,384,388,390,393,394,402,409,413,422,423,437,440,444,448,453,456,457,459,461,463,466,470,472,473,475,481,482,483],detil:108,devan:[9,424],devanathan:443,develop:[0,3,5,6,7,8,9,11,12,14,15,16,17,18,19,42,232,255,277,282,283,286,364,368,386,411,458],devemi:9,deviat:[249,255,273,388],deviator:9,devic:[1,3,12,15,17,232,362],device_typ:362,devin:[284,377],devis:411,dfactor:190,dff:477,dfft_fftw2:12,dfft_fftw3:12,dfft_fftw:12,dfft_none:12,dfft_singl:[3,12,348],dfft_xxx:12,dfftw:12,dfftw_size:12,dft:[9,286],dhi:[59,187,216,278],dhug:[249,282],dhugoniot:[249,282],dia:409,diagnost:[],diagon:[3,6,83,140,141,142,214,251,279,292,322,426,428],diagonalstyl:429,diagram:[41,118,164,184,210,275],diallo:392,diam:[190,191,278,356],diamet:[3,6,40,113,165,188,190,191,195,196,235,278,292,307,323,325,356,376,389,390,396,400,423,445,448,456,457,466],diamond:[350,386,409],diamter:[40,278],dick:6,dicsuss:248,dictat:[201,249],did:[3,12,355,382,383,384,390,413,441,443,464],didn:3,die:18,diel:[],dielectr:[],diff:[3,6,12,161,321,347],differ:[1,2,3,4,6,7,8,9,10,11,12,14,15,16,17,18,22,37,38,39,41,42,54,55,56,61,64,68,70,71,87,94,96,97,120,140,143,144,145,146,148,151,152,153,154,155,157,158,159,165,166,168,173,184,185,187,188,190,191,194,196,199,201,203,205,210,211,212,213,214,215,216,220,226,227,228,229,230,231,232,235,236,238,248,251,252,253,254,256,257,259,261,264,266,267,268,271,273,275,277,279,282,283,284,287,290,292,295,296,304,305,307,310,311,312,315,316,317,319,322,323,324,325,328,332,333,342,344,346,347,348,350,351,353,354,356,357,359,360,361,362,363,364,368,372,373,375,376,377,382,384,386,389,390,391,393,396,398,399,401,402,409,410,411,412,413,415,419,421,422,423,424,425,426,428,429,430,438,439,440,441,443,445,448,450,451,453,454,456,458,459,460,461,464,465,466,468,470,471,473,474,475,477,481,482,483,484],differenti:[1,3,6,29,185,347,378,419,442],difficult:[214,275,362,392,465],difficulti:[295,421],diffract:[],diffus:[],digit:[2,3,191,332],dih_table1:185,dih_table2:185,dihedr:[],dihedral_coeff:[],dihedral_cosineshift:27,dihedral_styl:[],dihedralcoeff:3,dihedraltyp:212,dihydrid:386,dij:295,dilat:[],dim1:3,dim2:3,dim:[3,59,71,143,146,147,148,151,152,153,154,155,157,165,187,206,216,233,325,350,409,459,481,482,483],dimdim:482,dimems:274,dimens:[],dimension:[3,39,112,118,140,143,145,146,147,148,151,152,153,154,155,157,164,186,203,206,250,274,319,350,353,357,419,456,466],dimensionless:[105,121,122,124,127,129,131,136,140,319,348,429,448],dimentionless:135,dimer:[6,292,409],dimgrai:191,dimstr:[41,210],dinola:[279,310],dintel_offload_noaffin:16,dipol:[],dipolar:[4,29,40,188,309,477],dir1:467,dir2:467,dir:[1,3,4,8,11,12,249,273,282,306,419,421,422,454,467,482],dirac:140,direc:419,direct:[],directli:[3,6,8,9,11,12,87,113,140,142,188,189,190,197,222,229,233,238,274,293,311,323,325,326,327,328,350,354,362,363,364,369,371,372,378,381,384,386,398,402,413,416,424,437,454,466,467,468,474,482],directoi:14,directori:[0,1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,19,60,192,215,234,277,283,286,303,307,316,317,357,361,363,364,368,375,377,378,384,385,387,394,395,406,409,410,411,415,419,420,421,422,429,439,441,442,443,454,456,457,458,467,482],disabl:[3,12,16,319,397,454,469,482],disadvantag:[6,210],disallow:[188,216,251],disappear:458,discard:[2,3,41,71,206,210,320,328,453,458,459],discontinu:[9,185,355,404],discourag:409,discov:[13,320],discret:[6,8,40,42,190,191,235,238],discuss:[],disk:[6,84,85,158,186,217,227,278,454],disloc:70,disord:[39,70],disp:[],dispar:423,disperion:[381,402],dispers:[3,6,7,9,163,274,347,348,372,381,402,407,413,422,440],displac:[],displace_atom:[],displace_box:59,displacemet:459,displai:[11,13,22,37,44,55,173,184,188,190,334,342,375,438],dispters:3,dissip:[6,228,235,274,316,317,370,382,390,407,408,438],dissolut:211,dist:[6,69,91,108,117,188,275,291,383,437,451,483],distanc:[3,6,7,9,12,20,21,29,39,43,45,46,47,48,49,51,53,54,55,56,58,59,61,63,64,66,69,71,72,73,74,75,76,77,81,86,89,90,93,103,104,105,106,108,114,115,116,117,118,120,134,140,154,160,163,165,166,167,168,172,187,188,190,191,199,203,206,207,211,212,213,214,216,217,218,221,227,233,238,248,249,250,251,255,263,273,274,278,282,283,290,291,292,295,296,300,304,305,306,307,314,315,317,318,319,322,324,325,326,327,328,329,333,347,348,350,353,355,357,358,359,362,365,366,367,368,369,370,371,372,373,374,376,378,379,380,381,382,383,384,385,386,388,389,390,391,392,396,397,398,399,400,401,402,403,404,405,406,407,408,409,412,413,414,415,416,417,418,419,421,422,423,424,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,451,454,456,459,465,466,470,474,477,481,483],distinct:[6,220,289,347,423],distinguish:[6,86,140,241,386,455],distort:363,distrbut:363,distribut:[],distro:[111,375,418,419],ditto:[8,11,12,14,15,16,17,18,115,212,449,454],div:8,divd:117,diverg:[3,12,39,292,317,458,477,484],divid:[3,6,16,41,91,112,117,126,128,141,162,163,173,184,191,203,204,205,210,216,273,315,322,327,347,355,357,387,422,465,473,482],divis:[6,238,368,396,406,453,456,474,482],dl_poli:7,dlambda:159,dlammps_async_imd:232,dlammps_bigbig:[12,39],dlammps_ffmpeg:[3,12,190],dlammps_gzip:[3,12,188,190,318,456,457,461],dlammps_jpeg:[3,12,190],dlammps_longlong_to_long:12,dlammps_memalign:[12,16],dlammps_png:[3,12,190],dlammps_smallbig:12,dlammps_smallsmal:12,dlammps_xdr:[12,188],dlen:466,dlmp_intel_offload:[12,16],dlo:[59,187,216,278],dlopen:6,dlvo:[7,376,448],dm_lb:238,dmax:[307,353],dna:7,doc:[0,1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,22,37,40,42,55,57,59,63,66,68,75,87,90,93,102,104,105,106,107,109,111,112,114,117,119,141,144,145,158,160,162,165,166,167,173,184,188,189,190,191,192,194,195,196,201,202,203,204,205,206,207,208,217,227,235,236,246,251,252,256,257,261,268,269,270,271,278,281,292,304,307,310,311,312,321,325,328,330,332,334,342,346,355,356,357,362,363,364,367,375,377,378,384,385,387,392,393,395,396,409,410,411,413,415,418,419,420,429,438,439,441,443,445,454,456,457,458,459,461,464,465,466,473,474,482,483,484,485],docuement:423,dodgerblu:191,doe:[0,1,2,3,5,6,7,8,9,11,12,14,15,16,17,18,29,33,38,39,41,50,54,56,59,62,63,67,70,71,87,88,91,104,110,116,117,118,142,144,145,147,148,153,155,159,164,165,166,167,169,171,173,178,184,185,187,188,189,190,191,194,200,201,203,206,209,210,212,213,214,216,220,222,224,227,228,231,233,235,236,238,241,247,251,252,253,254,256,257,268,269,270,271,279,280,281,285,287,290,292,307,310,312,314,315,319,322,323,324,327,328,329,330,335,336,338,339,341,346,347,348,349,350,356,357,358,363,364,365,366,367,368,370,372,373,374,376,377,378,379,381,382,383,384,385,386,388,389,390,391,393,394,395,396,397,400,401,403,404,405,407,408,409,410,411,413,419,420,421,422,423,425,426,427,428,429,430,431,432,433,434,435,436,437,439,440,441,442,443,444,445,447,448,449,451,452,453,454,456,457,458,459,460,463,464,466,467,468,469,470,473,474,477,482,486],doegenomestolif:7,doesn:[3,7,8,12,165,188,201,206,207,304,356,358,362,364,377,385,395,421,422,439,441,442,443,456,458],dof:[3,8,112,144,145,158,203,292,483],dof_per_atom:[145,203],dof_per_chunk:[145,203],doff:[356,456],doi:[6,215],domain:[3,6,7,12,13,18,39,41,42,58,61,62,71,118,154,164,167,187,189,190,191,194,201,210,214,216,217,231,234,238,251,252,275,287,292,319,324,325,347,348,357,362,383,413,451,453,456,460,473],domin:[1,386,470],don:[0,8,11,12,13,116,168,197,222,236,281,328,409,454,456],donadio:311,done:[1,3,6,7,8,12,14,15,16,17,18,19,38,39,41,56,59,62,71,159,162,165,168,185,188,190,191,200,201,203,205,206,207,208,210,211,212,213,214,216,217,225,227,232,233,235,236,243,251,256,257,268,269,271,272,274,275,276,281,289,292,293,295,307,310,311,312,314,316,317,330,332,346,347,348,355,357,358,361,362,364,372,384,393,394,395,402,408,409,413,421,437,440,445,451,452,453,454,457,460,461,464,474,475,477,482,483],donor:392,dot:[141,161,197,222,230,250],doti:[368,419],doubl:[1,2,3,6,8,9,11,12,14,15,16,17,39,87,216,225,280,328,332,346,348,361,362,368,387,391,421,422,452,456,460,464,469,482,483],dover:200,down:[3,6,7,8,11,39,71,214,235,307,323,362,386,413,455,475],downhil:[353,354],download:[5,7,8,9,11,12,13,17,232,394,420],downsid:6,downward:289,dozen:[8,12,107,194,421,422],dpack_arrai:12,dpack_memcpi:12,dpack_point:12,dpd:[],dpde:244,dproduct:365,dr_ewald:[118,293],drag:[],dragforc:238,drai:[249,282],drain:[231,323,355],dramat:[59,187,211,212,213,214,216,251,307,310,311,348,362,413,453],drautz:368,draw:190,drawback:281,drawn:[188,190,191,228,451],drayleigh:[249,282],dreid:[],drfourth:105,drho:[113,363,384],drift:[6,103,105,228,229,235,236,247,290,307,465,473,477],drive:[11,12,198,214,216,230,251,273,279,292,326,357],driven:[6,177],driver:[6,12,14,15,194,225,232],drop:[3,191,382],droplet:393,drsquar:105,drude:[],dry:224,dsecriptor:394,dsf:[],dsmc:[],dstyle:278,dt_collis:238,dt_lb:238,dt_md:238,dt_srd:307,dtilt:[59,216],dtneb:470,dtqm:282,dtype:[115,212],dual:[17,307,362],dudarev:164,due:[1,3,6,9,10,12,16,17,19,40,54,57,58,61,66,70,71,74,75,81,86,88,89,90,93,102,103,104,105,106,110,116,118,126,140,141,143,144,146,148,151,152,153,154,155,157,158,160,164,165,168,169,188,190,194,197,198,205,209,211,212,213,214,215,216,217,222,223,224,225,228,229,232,233,235,236,237,238,241,242,243,247,248,249,250,251,255,263,273,276,278,290,291,292,294,304,306,307,308,310,311,312,313,314,316,317,319,323,324,326,327,328,330,348,353,355,357,358,359,379,382,384,388,389,393,407,408,413,419,421,423,424,437,440,441,443,446,448,449,451,453,456,457,458,465,470,473,474,475,477,482,483],duffi:319,duin:[9,283,288,421,422],duke:348,dummi:[12,29,442],dump1:461,dump2:461,dump2vtk_tri:134,dump:[],dump_atom:8,dump_custom:8,dump_h5md:189,dump_modifi:[],dumpcustom:8,dumptimestep:461,dunbrack:[6,20,171,373,468],dunweg:[235,237],duplic:[2,3,14,15,16,17,18,19,41,42,166,210,229,273,456,481],dupont:[5,7,13],durat:[37,55,143,144,146,147,148,150,151,152,153,154,157,158,184,191,203,227,287,319,342,390,438],dure:[2,3,6,8,9,12,16,17,38,39,41,56,71,87,126,128,142,147,166,169,185,188,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,239,240,241,242,243,244,245,247,248,250,251,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,300,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,348,355,357,361,362,382,406,413,422,440,451,452,454,456,459,461,463,464,466,468,470,471,474,475,482,485,486],dvector:8,dvlo:448,dvx:6,dx_lb:238,dy3:164,dyamic:12,dyanam:6,dyanmic:470,dynam:[],dynamo:[5,363,384,409],dyne:481,dyre:403,dysam:459,e28637:29,e_1:368,e_2:368,e_b:387,e_e:386,e_hbond:392,e_i:[6,368,387],e_j:[6,368],e_k:[368,386],e_kl:6,e_lj:[364,381],e_n:[368,386],e_nn:386,e_pr:386,e_rebo:364,e_tors:364,eaa:333,eaat:172,each:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,57,59,61,62,63,64,66,67,68,70,71,72,73,74,75,76,77,78,80,81,83,85,87,89,90,93,94,95,96,97,98,99,100,101,102,103,104,105,106,109,110,111,112,113,114,115,116,117,118,119,120,134,140,141,142,144,145,146,147,148,149,152,153,154,155,157,158,159,160,161,162,163,164,165,168,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,187,188,189,190,191,192,193,194,195,196,197,198,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,247,248,249,250,251,253,254,255,256,257,258,259,260,261,263,264,265,266,267,268,269,270,271,273,274,275,276,277,278,279,280,281,283,284,285,287,289,292,293,294,295,296,300,301,303,304,305,306,307,308,309,310,311,312,314,317,318,319,320,321,322,323,324,325,327,328,329,330,332,333,335,336,337,338,339,341,342,343,346,347,348,350,354,355,356,357,358,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,386,387,388,389,390,391,392,393,396,397,398,399,400,401,402,403,404,405,406,407,408,409,412,413,414,415,416,418,419,421,422,423,424,425,429,430,431,432,433,434,435,436,437,438,439,440,443,444,445,446,447,448,449,450,451,453,454,456,457,458,459,460,461,463,464,465,466,468,470,471,473,474,475,477,481,482,483,484,486],eacn:[41,210],eam0d:274,eam3d:274,eam:[],eam_databas:13,eam_gener:13,eangl:474,earli:[41,203,205,206,207,208,210,286,293],earlier:[7,8,12,59,191,357,390,409,413,470],earliest:470,earth:386,easi:[6,7,8,9,11,13,87,141,188,195,196,197,198,206,209,222,230,231,233,235,236,294,301,310,311,312,324,327,329,356,456,459,464,466,483],easier:[8,9,13,16,188,190,274],easili:[8,11,190,191,323,357,453,463,472,482],eastwood:[347,348],eat:172,eatom:330,eaxmpl:6,eba:21,ebb13:172,ebb:21,ebond:[220,236,473,474],ebt:172,ec_ii:409,ec_ij:409,ec_jj:409,echo:[],eco:[421,422],ecoa:[421,422],ecoul:[107,220,236,421,422,474],ecp:[386,456],edg:[2,3,6,41,59,71,118,163,164,167,168,189,190,199,206,233,294,324,327,328,329,330,350,456,459,466],edge_histo:163,edge_threshold:163,edih:474,edim:315,edip:[],edit:[3,8,12,13,14,15,16,17,18,19,477],editor:13,edu:[7,9,11,13,384,407,418,421,422],edward:[9,17],eebt:172,eff:[],effect:[1,2,3,6,8,9,11,12,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,66,71,74,75,81,89,90,93,103,104,105,106,109,112,141,143,147,152,153,160,163,169,171,172,174,175,176,177,179,180,182,183,184,185,187,188,190,191,195,196,197,200,201,204,207,208,209,211,212,213,214,216,217,223,226,228,229,230,231,232,233,235,236,250,251,253,254,255,256,257,258,266,268,269,271,272,273,275,278,279,281,282,283,284,287,291,292,294,295,306,307,310,311,312,314,315,317,319,322,323,324,325,326,327,328,329,330,333,335,336,337,338,341,343,347,348,350,354,355,356,357,358,363,364,366,368,369,370,371,372,373,374,376,377,378,381,382,384,385,386,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,410,413,414,415,416,418,423,424,425,427,430,438,439,440,441,442,443,445,447,448,449,451,453,454,458,459,461,465,466,468,474,475,481,482,484],efffect:460,efficaci:39,effici:[0,1,3,6,7,8,10,12,15,17,18,39,58,61,67,112,142,188,189,190,191,214,216,220,229,251,275,277,287,292,295,307,347,348,353,358,362,368,376,378,393,398,402,423,463,486],effort:[5,7,457],efftemp:[96,97,151],efi:[421,422],efield:[],eflux:231,eggebrecht:378,ehb:[421,422],eigensolv:3,eigenvalu:[274,275,347],eigtol:3,eik:159,eim:[],eimp:474,einstein:[287,317],either:[1,2,3,4,6,8,9,11,12,14,15,16,17,22,33,41,44,50,59,63,71,107,113,116,118,140,141,145,147,148,164,165,168,173,178,185,188,189,190,191,194,202,204,205,207,208,210,213,214,215,216,217,227,233,234,238,242,248,249,251,252,255,269,273,289,292,294,295,296,304,307,314,321,325,328,332,334,345,347,348,350,354,355,359,362,368,370,376,384,393,394,396,407,408,409,413,417,419,441,443,445,451,454,456,458,459,460,463,465,468,471,473,482],ejtehadi:[376,389,423],elaplong:[195,196,233,459,474,482],elaps:[3,195,196,197,198,209,216,222,230,231,233,235,236,248,278,294,301,310,311,312,324,325,327,329,430,451,459,461,462,466,470,474,482],elast:[],elba:29,electr:[6,194,200,222,236,347,348,387,421,422,449,477,481],electrolyt:[9,448],electron:[3,6,7,9,13,40,96,97,113,118,149,151,156,194,200,219,220,236,237,252,262,270,285,313,319,354,356,363,365,377,381,384,386,387,409,419,420,443,449,456,477,481],electron_integr:200,electron_temperatur:200,electron_unit:386,electroneg:[6,283,284,285,377,387],electronic_dens:3,electronic_specific_heat:3,electronic_thermal_conduct:3,electrostat:[6,9,16,18,201,227,283,285,286,320,347,348,376,381,386,398,406,408,422,448],eleftheri:292,elem1:[387,409,429],elem2:[387,409,429],element1:[289,363,384],element2:[289,363,384],element:[3,6,7,8,12,13,63,81,89,103,105,112,117,119,134,140,141,142,143,144,145,146,147,148,152,153,154,155,157,158,161,188,189,190,191,192,194,200,204,205,208,274,289,314,321,363,364,368,377,384,385,386,387,393,394,395,409,410,411,415,419,420,421,422,429,439,441,442,443,477,482,485],elementn:[363,384],elementset:200,elev:470,elif:[140,332],elig:[3,201,211,212,224,227,392],elimin:[3,6,71,228,235,236,292,295,316,317,451],elj:381,ellad:9,elliot:9,elliott:9,ellips:[4,6,9,82,144,186],ellipsoid:[3,4,6,7,13,40,42,82,113,130,144,165,186,188,235,253,256,259,260,268,292,307,352,355,389,408,423,438,456,466,484],ellipsoidflag:456,elong:[220,236,474],elp:[421,422],els:[3,7,8,12,71,107,116,117,119,189,190,202,203,204,205,206,207,208,227,251,292,307,319,320,321,330,332,347,393,455,467,482,485],elsewher:[8,248,307,409,420,421,422,468,474,482],elt:409,emac:[],email:[0,3,5,7,8,11,387],emb:[3,9,328],emb_lin_neg:409,embed:[3,5,7,11,12,13,29,88,142,163,319,363,384,387,406,409,410,411,419,438,446,454],embt:172,emi:[7,9],emol:[421,422,474],emphas:390,empir:[200,311,364,386],emploi:[9,274,287,442],empti:[3,57,71,167,292,347,358,397,456,467,468,482],enabl:[3,6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,35,37,38,39,40,43,45,46,47,48,49,50,51,53,54,55,56,60,61,62,64,67,78,80,83,87,96,97,98,99,100,101,105,109,111,112,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,144,147,149,151,152,156,157,159,163,171,172,174,175,176,177,178,179,180,182,183,184,185,188,189,191,192,194,195,196,197,198,199,201,207,209,211,212,213,215,216,217,222,223,224,225,226,227,228,229,230,232,233,234,235,236,237,238,239,240,241,242,244,245,247,249,251,252,253,254,255,256,257,258,259,260,261,262,264,266,267,268,269,270,271,273,274,275,277,278,282,283,284,285,286,287,288,289,291,292,294,295,296,297,298,299,300,301,303,304,306,307,310,312,313,314,315,316,317,319,320,322,323,324,325,326,327,328,331,333,335,336,337,338,339,341,342,343,348,355,357,361,362,363,364,366,367,368,369,370,371,372,373,374,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,413,414,415,416,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,454,457,458,463,465,475,482,486],enclos:[2,6,12,167,188,280,332,409,452,454,464,482],encod:[13,39,42,188,190,191,281,393],encompass:[3,6,40,57,59,116,166,303,321,438,459],encount:[3,8,12,59,205,361,461,482],encourag:[7,8,286,305],end12i:113,end12x:113,end12z:113,end1i:113,end1x:113,end1z:113,end2i:113,end2x:113,end2z:113,end:[1,2,3,5,6,8,11,12,15,16,17,18,19,38,40,41,57,59,71,113,168,169,172,187,188,190,191,192,195,196,204,205,207,208,213,216,220,228,233,235,236,237,250,251,252,263,279,291,292,296,307,310,311,312,313,315,318,319,322,326,329,330,346,347,356,357,361,362,382,384,389,423,426,428,429,430,444,446,451,454,456,457,458,459,461,463,464,468,472,474,477,482,486],end_of_step:8,endbondtors:[3,172,178,456],endif:8,energet:[213,364,422],energi:[0,1,2,3,4,5,6,7,8,9,12,13,20,21,23,24,25,26,27,28,29,30,31,32,35,36,38,40,43,45,46,47,48,49,51,53,54,56,63,65,69,82,83,84,85,86,87,88,91,94,95,96,97,98,99,101,102,107,108,109,110,112,123,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,165,169,171,172,173,174,175,176,177,179,180,182,183,184,185,188,191,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,333,335,336,337,338,341,343,347,348,353,354,355,357,358,362,363,364,366,367,368,369,370,371,372,373,374,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,418,419,421,422,423,424,429,430,431,432,437,438,439,440,441,442,443,445,446,447,448,449,451,454,456,461,465,466,468,470,472,473,474,477,481,482,485],energy_update_freq:422,enforc:[6,57,58,104,187,188,189,190,192,194,201,213,216,251,272,274,284,292,295,332,347,398,453,482,483],enforce2d:[],eng:[11,65,69,108,188,225,330,332,377,411],eng_previ:332,engin:[200,216,277,296,316,384,410],engr:[421,422],enhanc:[196,200,451],enlarg:[59,190],enough:[3,40,61,86,165,166,168,210,236,278,282,287,292,320,324,325,328,358,362,378,417,456,460,461],enpub:384,enrti:[],ensembl:[],ensight:6,ensur:[3,6,140,188,201,214,227,228,251,297,318,348,368,383,406,437,439],enter:[57,155,387,470],enthalpi:[123,253,254,384,473,474,482],entir:[0,2,3,6,11,14,15,41,42,63,88,109,110,112,116,118,141,145,164,165,191,194,195,196,203,206,207,210,213,215,224,227,228,231,235,236,247,251,253,254,255,256,257,273,275,277,290,292,305,319,321,332,362,381,402,413,440,456,464,465],entireti:[396,445],entiti:[6,8,40,42,188,292],entri:[3,8,12,38,42,56,65,69,79,92,108,115,118,127,130,131,132,133,134,136,137,138,163,185,191,205,206,207,215,282,330,356,368,385,409,415,422,429,439,440,441,442,443,482],entropi:470,entry1:[38,56,191,375,440],entry2:191,entryn:191,enumer:[166,188],enumuer:6,env:362,environ:[1,3,6,11,12,16,17,18,190,229,234,273,362,363,368,375,377,385,386,419,441,453,467,482],epair:[107,191,388,392,421,422,474],epen:[421,422],epfl:[229,234],epp:381,epq:381,eps0:448,eps14:406,epsilon0:443,epsilon:[3,6,36,45,46,50,53,54,87,171,195,196,227,292,307,324,328,353,355,367,373,374,376,378,379,380,381,389,391,392,393,396,397,398,399,400,401,402,403,404,405,406,412,416,423,424,433,439,445,447,448,465,477,481],epsilon_0:449,epsilon_14:373,epsilon_:423,epsilon_d:379,epsilon_i:[389,413,423],epsilon_i_:423,epsilon_i_a:[389,423],epsilon_i_b:[389,423],epsilon_i_c:[389,423],epsilon_ij:413,epsilon_j:[389,413,423],epsilon_j_:423,epsilon_j_a:[389,423],epsilon_j_b:[389,423],epsilon_j_c:[389,423],epsilon_lj:423,epton:418,eqch:160,eqeq:[421,422],eqp:381,eqq:381,equal:[2,3,6,8,11,12,17,39,41,54,63,65,68,69,76,79,86,87,91,92,108,110,115,117,119,141,144,159,161,165,190,191,194,195,196,197,198,201,204,205,208,209,210,214,216,217,222,227,228,230,231,233,235,236,238,241,242,248,249,255,265,273,275,278,280,282,283,284,287,289,291,292,294,296,301,303,310,311,312,315,316,317,319,321,322,324,327,329,330,332,346,350,355,357,358,359,361,362,377,382,388,389,392,407,412,419,421,422,423,425,426,427,429,430,440,445,449,452,453,454,456,458,459,463,464,467,470,472,474,482,483],equat:[3,6,7,8,9,91,112,118,164,173,184,194,214,220,221,229,235,236,238,241,249,250,251,252,255,269,273,275,282,283,287,295,307,315,319,322,324,325,327,329,341,347,348,376,381,382,386,387,390,395,407,408,409,413,423,426,428,432,433,435,436,444,449,477],equi:252,equidist:250,equil:[3,283,351,463,486],equilater:466,equilibr:[3,4,5,6,7,9,59,91,165,194,201,204,213,214,227,249,251,252,269,270,282,283,284,285,315,316,317,322,377,378,421,422,452,466],equilibria:322,equilibribum:[211,212],equilibrium:[1,3,4,6,7,21,24,26,27,28,29,32,35,36,38,43,47,48,49,51,53,56,59,148,149,172,174,214,216,227,228,229,236,238,251,255,269,282,287,291,295,296,304,307,314,315,317,322,333,335,338,341,377,409,415,477],equilibrium_angl:8,equilibrium_dist:8,equilibrium_start:200,equival:[6,12,13,59,61,124,125,133,138,163,167,191,205,208,214,216,227,235,251,269,279,291,292,327,382,386,441,443,456,459,464,465,474,477],equlibrium:6,equliibr:[283,285],er3:164,eradiu:[40,113,386,456],eras:[294,316],erat:[216,408],erc:378,erfc:[378,398,413],erforc:113,erg:481,erhart:[201,384,441,443],ermscal:365,ernst:9,eror:3,eros:409,erose_form:409,erot:[],errata:[441,443],erratum:324,erron:3,error:[],erta:390,ervel:[113,456],escap:[217,477],especi:[8,11,16,153,165,194,201,210,227,282,287,290,291,362,453],espresso:[9,286],essenti:[8,11,12,27,88,128,146,147,148,151,152,153,154,155,157,174,204,255,274,323,348,364,378,398,443,461,474],essex:29,establish:[87,231],estim:[1,3,6,10,12,38,41,56,91,141,200,210,221,249,307,314,347,348,353,413,422,440,470,474],esu:481,esub:409,eta:[6,238,251,282,283,285,323,385,387,389,419,442,481],eta_dot:251,eta_ij:419,eta_ji:387,etag:[40,456],etail:474,etap:251,etap_dot:251,etc:[1,2,3,6,7,8,9,10,11,12,13,15,16,17,39,40,42,54,61,68,89,90,91,94,109,110,113,115,141,143,145,146,147,148,149,151,152,153,154,155,157,159,165,167,168,169,178,188,190,191,194,200,201,202,203,205,206,207,208,211,212,216,217,225,227,228,235,251,278,289,293,319,320,328,332,346,347,355,356,357,358,360,384,385,393,406,408,417,421,422,439,441,443,451,454,456,457,458,463,465,466,470,472,473,474,475,477,481,482,484,486],ethernet:18,etol:[355,357,451,470],etot0:282,etot:[6,94,96,97,110,141,151,191,220,236,249,282,473,474],eu2:164,eu3:164,euler:[355,357],eulerian:200,euqat:431,europhi:238,ev_tal:8,evalu:[2,3,11,12,38,56,71,87,88,91,107,117,140,142,145,155,163,165,188,190,191,195,196,197,198,200,202,203,204,205,206,207,208,209,216,222,228,230,231,233,234,235,236,274,280,283,294,297,301,310,311,312,321,324,327,329,330,332,347,348,353,355,362,413,419,425,427,440,451,452,454,458,459,461,463,464,465,466,470,472,474,482,483],evalut:[332,454],evan:[153,269],evanseck:[6,20,171,373,468],evapor:[],evaul:[8,355],evdwl:[107,421,422,474],even:[3,6,8,12,15,16,17,18,34,39,41,52,57,59,61,63,70,71,119,166,167,181,185,188,191,194,195,196,201,202,203,205,206,207,208,210,211,212,214,216,217,220,233,236,249,251,252,274,287,289,292,293,303,307,315,319,322,324,328,330,340,347,353,355,357,362,367,386,387,390,393,413,423,446,456,457,459,461,462,463,465,466,468,471,473,474,475,477,486],evenli:[3,41,141,185,210,238,396,446,456],event:[],eventu:[3,6,12,15,167,283,470],ever:[54,56,234,307],evera:[376,389,423,438],everi:[0,1,2,3,6,8,11,12,15,16,39,41,71,72,91,113,119,128,153,168,188,189,190,191,192,194,195,196,197,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,221,224,225,227,229,231,232,233,238,239,247,251,252,255,272,273,274,278,279,280,281,282,283,284,285,287,289,290,292,293,295,296,307,309,310,311,312,313,314,315,318,319,320,321,322,330,332,346,348,357,358,359,362,382,383,393,406,421,422,434,450,451,452,456,458,460,461,463,464,465,470,471,472,474,482,486],everyth:[8,107],everywher:[116,400],eviri:386,evolut:[229,238,275,451],evolv:[238,275,320],ewald:[2,3,5,6,7,8,12,88,110,118,141,320,347,348,355,369,371,372,378,381,386,398,402,416,424,438,440,458],ewald_disp:381,ewalddisp:3,exact:[22,41,44,71,122,159,168,173,210,213,228,229,235,236,237,278,287,288,307,319,334,347,375,458,463,470,482,484,486],exactli:[3,6,12,14,17,38,41,56,59,71,91,116,144,149,156,165,185,195,196,205,210,216,221,228,235,236,237,252,262,263,270,274,282,307,312,313,326,362,375,382,384,390,393,396,407,413,440,458,459,466,470,482],exager:477,examin:[6,8,9,213,274],examp:[454,482],exampl:[],exce:[3,6,16,17,18,41,58,71,167,203,206,207,210,214,216,221,224,251,274,298,299,307,355,362,456,482],exceed:[3,41,59,210,216,251,307,464],excel:386,except:[1,2,5,6,8,11,14,16,20,21,22,23,24,25,26,27,28,29,30,31,32,35,37,38,40,41,43,44,45,46,47,48,49,51,53,54,55,56,59,60,71,89,90,108,109,112,117,141,143,144,145,146,147,148,149,151,152,153,154,155,156,157,158,165,169,171,172,173,174,175,176,177,179,180,182,183,184,185,187,188,191,194,197,203,204,205,209,210,214,216,223,226,227,230,233,235,237,251,252,253,254,255,256,257,258,262,263,266,268,269,270,271,275,284,285,292,294,295,304,307,310,312,313,319,323,327,330,332,333,334,335,336,337,338,341,342,343,347,348,350,352,356,357,358,360,361,362,363,364,366,369,370,371,372,373,374,375,376,377,378,380,381,382,384,385,386,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,408,410,414,415,416,418,421,422,423,424,430,438,439,440,441,442,443,445,447,448,449,451,453,454,456,458,459,461,464,465,466,467,468,470,474,477,481,482,483,485],excess:386,exchang:[2,3,6,8,9,61,62,194,200,201,227,235,284,292,315,319,322,347,362,386,471],exchange:347,excit:[9,386],exclud:[3,6,9,12,16,17,63,71,112,140,145,152,153,169,188,203,206,211,212,239,247,277,290,292,314,325,330,355,356,358,370,390,393,407,408,413,437,468],exclus:[1,3,9,12,16,87,362,377,413,465,475],excurs:451,exectubl:12,execut:[1,2,3,4,6,8,11,12,17,60,166,190,232,286,332,346,349,361,452,454,464,467,470,482],exemplari:228,exemplifi:386,exert:[6,233,236,287,326,327,328,348],exhaust:[200,361,482],exhibit:[251,354,386,465],exist:[3,6,7,8,11,12,13,37,55,59,68,70,122,165,166,184,189,190,191,194,199,209,212,214,217,227,277,278,280,330,333,335,336,338,342,351,356,362,393,421,446,452,454,456,457,458,467,468,469,482,483,484],exit:[2,3,11,12,41,57,188,210,346,361,454,455,464,473,482],exlanatori:3,exp:[],expand:[],expans:[12,140,188,467,482],expect:[1,3,8,12,13,14,15,16,17,18,19,41,42,71,102,146,157,163,185,210,222,227,229,248,273,279,281,282,287,292,330,348,358,375,409,413,451,454,456,458,461,465,470,482],expens:[6,10,71,191,273,277,292,319,330,347,348,358,362,454],experi:[6,13,15,17,209,217,232,241,250,279,291,292,353,357,382,413,465,470],experienc:[6,12,240,241],experiment:[347,362,470],expert:12,expertis:7,explain:[1,3,6,8,11,12,16,18,41,59,63,65,68,69,71,72,73,76,77,79,86,92,145,153,185,188,190,191,194,203,204,208,210,212,214,216,251,273,281,292,304,330,332,346,347,350,356,357,361,367,384,396,430,445,454,457,458,461,463,466,477,482,486],explan:[3,6,59,113,140,188,203,250,273,393,450,453,454,456,465],explanatori:[3,8,117,188,202,203,205,206,207,292,356,453,482],explantori:[3,288],explic:412,explicit:[6,9,11,22,44,77,87,113,116,159,173,195,196,216,298,299,334,352,364,365,368,373,375,384,386,397,407,444,450,453,457,460],explicitli:[3,6,8,12,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,71,109,112,143,152,155,163,165,171,172,174,175,176,177,179,180,182,183,185,188,191,197,206,209,216,223,226,228,230,235,251,253,254,255,256,257,258,266,268,269,271,281,282,284,292,294,295,310,312,313,319,323,327,333,335,336,337,338,341,343,356,362,363,364,366,369,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385,387,388,389,390,391,392,393,396,397,398,399,400,401,402,403,404,405,406,407,410,413,414,415,416,418,423,424,430,431,432,433,434,435,436,438,439,440,441,442,443,444,445,447,448,449,456,458,465,466,468,469,475,477],explictli:[16,469],exploit:[9,15,17,275],explor:[118,164],expon:[3,283,285,384,389,392,406,412,424],exponenti:[87,419,439,449,470,482],expos:11,exposit:[200,382,383],express:[6,140,151,165,195,196,214,248,273,283,319,325,332,368,384,386,400,409,429,438,482],expressiont:368,extend:[],extens:[3,6,9,17,44,45,46,53,55,63,82,83,84,87,88,91,94,97,98,107,109,117,119,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,194,197,198,201,208,209,215,218,222,225,226,227,229,230,231,233,235,237,249,251,255,263,273,274,290,291,292,294,296,301,304,306,310,311,312,313,314,316,317,319,321,324,328,329,389,409,422,423,429,473,474],extent:[1,3,41,45,57,71,163,167,188,199,206,210,233,326,329,347,350,364,425,427,440,453,456,459],exterior:[3,6,328],extern:[],extra:[3,6,8,12,16,17,40,41,46,61,71,102,109,110,112,118,141,143,144,146,148,151,152,153,154,155,157,158,164,165,166,167,171,191,205,210,212,251,280,281,282,292,307,355,356,359,360,381,390,393,396,409,413,453,454,456,459,468,477,482],extract:[3,6,11,13,36,63,87,107,115,117,119,195,196,285,357,378,387,409,429,454,461,473],extract_atom:11,extract_comput:[11,454],extract_fix:11,extract_glob:11,extract_vari:11,extramak:[12,15],extrapol:1,extrem:[1,3,6,17,58,190,214,216,251,317,386,442,477],extrema:406,extrins:200,f77:[5,7,12],f90:[5,7,12],f_1:6,f_5:[161,321],f_a:[441,442,443],f_ave:117,f_c:442,f_f:443,f_fix_id:282,f_harm:317,f_i:419,f_id:[6,71,117,119,188,194,202,203,204,205,206,207,208,246,309,321,474,482],f_ij:419,f_indent:208,f_int:316,f_jj:91,f_k:419,f_langevin:319,f_max:[282,287],f_msst:249,f_r:[236,441,442,443],f_sigma:368,f_solid:317,f_ss:6,f_temp:236,face:[3,6,57,59,71,153,163,167,199,206,207,324,326,327,328,329,350,389,409,423,456,459],face_threshold:163,facet:163,facil:[0,12],facilit:[6,13],fact:[6,8,16,229,307,317,390,468],factor:[1,3,6,12,18,24,28,32,35,36,39,41,46,47,57,58,59,87,91,102,108,115,116,118,140,159,164,167,171,182,188,190,191,195,196,204,210,214,216,217,227,232,235,237,238,249,251,252,255,275,279,291,295,297,299,307,311,315,322,323,324,328,338,348,350,362,364,365,368,369,371,373,378,379,380,382,386,390,393,397,398,409,413,415,416,422,424,430,439,444,453,456,459,460,465,468,470,471,474,477,481,482],factori:[3,454],factoriz:347,fail:[3,11,12,59,169,214,217,347,355,357,380,422,454],failur:[121,426,455,482],fairli:[11,413,465,470],faken:73,falcon:232,fall:[3,6,191,205,278,454,482],fals:[86,330,332,482],fame:8,famili:453,familiar:[0,11],fan:419,far:[3,6,12,17,57,59,61,86,188,191,192,210,211,212,214,217,251,273,291,292,307,324,335,338,353,357,358,445,454,456,461,474],farago:235,farrel:[441,443],farther:188,fashion:[6,8,41,71,165,191,194,195,196,201,206,210,212,217,227,229,233,248,249,251,253,254,255,256,257,265,268,269,270,271,281,282,284,292,296,300,306,309,317,319,323,324,325,327,329,357,393,407,459,468,482,485],fasolino:395,fast:[6,7,9,12,13,17,39,188,260,282,320,347,348,370,407,408,438,440,458,463,465,474,483,486],faster:[1,6,9,10,11,12,14,15,17,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,41,43,45,46,47,48,49,51,53,54,56,61,63,105,109,112,143,152,171,172,174,175,176,177,179,180,182,183,185,188,191,194,197,209,210,216,223,226,230,234,235,251,253,254,255,256,257,258,266,268,269,271,279,283,284,292,294,295,307,310,312,314,316,319,323,327,333,335,336,337,338,341,343,347,348,359,360,362,363,364,366,368,369,370,371,372,373,374,375,376,377,378,381,382,384,385,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,410,414,415,416,418,423,424,430,438,439,440,441,442,443,445,447,448,449,451,465,469,477],fastest:[6,14,17,153,206,319,320,362,453],fatal:[3,473],fault:[70,422],faulti:12,fava:389,favor:213,favorit:7,fbmc:314,fcc:[],fcm:[265,482],fdirect:220,fdotr:394,fdti:87,fe2:164,fe3:164,fe_md_boundari:200,featu:8,featur:[],fecr:384,feedback:[7,232],feel:[7,232,233,241,273,328,330,357,413],felling:411,felt:328,femtosecond:481,fene:[],fennel:[378,398],fep:[],ferguson:[6,171,468],fermi:[1,12,15,151,362,443],fermion:[9,386],ferrand:[9,13],few:[1,3,4,5,6,7,10,11,12,13,14,17,18,39,192,202,203,204,205,206,207,208,236,251,278,281,283,295,321,347,355,356,357,364,453,456,461,465,467,475,482,484],fewer:[1,3,11,15,16,61,241,465],fewest:3,fextern:225,feynman:275,fff:454,ffield:[377,387,421,422],ffmpeg:[3,12,190],ffplai:190,fft:[1,3,7,12,14,15,88,109,110,141,274,347,348,465],fft_inc:[12,348],fft_lib:12,fft_path:12,fftbench:[347,475],fftw2:12,fftw3:12,fftw:[11,12],fhg:[7,9],fictiti:[6,197,198,222,225,229,275,291,378,398,402,437],field1:[457,461],field2:457,field:[],fifth:[304,415],figur:[1,3,8,11,12,282,453,454],fij:381,file0:273,file1:[11,13,273,318,332,356,461,463,467],file2:[11,13,318,332,356,461,463,467],file:[],file_from:189,filenam:[3,12,13,38,41,56,185,188,190,191,192,200,203,204,205,206,207,208,210,215,273,277,280,283,284,285,288,289,292,293,318,319,344,345,346,357,363,364,368,378,384,385,387,395,409,410,411,415,419,420,421,422,429,439,440,441,442,443,452,453,454,457,458,463,467,474,482,484,485,486],filennam:463,filep:[3,188,191,458,463,486],filepo:289,fill:[7,165,190,278,319,350,358,368,422,459],filter:[191,200],final_integr:8,final_integrate_respa:8,finchham:[6,147,380],find:[0,3,4,6,7,8,11,12,13,14,16,38,39,56,61,71,73,87,117,168,185,192,201,213,214,224,227,250,273,279,287,291,353,355,357,358,378,393,398,402,409,438,440,477,482],find_custom:8,fine:[16,17,169,197,222,317,358,362,482],finer:[140,165,482],finest:347,finger:[165,187,248,459],finish:[6,11,41,210,332,344,346,347,359,361,362,445,461,482,483],finit:[],finni:[7,384,438],finvers:220,fiorin:[9,215],fire:[353,354,355,357,470],firebrick:191,first:[0,1,2,3,5,6,8,9,11,12,14,15,16,17,21,38,39,41,42,45,46,54,56,57,59,61,62,71,81,88,91,103,104,105,112,116,117,127,130,133,134,138,141,150,153,159,161,163,164,166,167,168,172,185,188,189,190,191,192,194,203,204,205,206,207,208,210,213,216,227,228,233,238,248,249,250,251,273,275,280,281,282,284,289,292,295,296,304,305,307,308,309,316,317,318,319,321,325,330,332,333,339,350,355,356,357,358,361,362,363,364,367,368,369,371,373,375,377,378,384,386,387,390,391,394,395,397,398,402,407,408,409,411,413,415,419,421,422,429,437,439,440,441,442,443,449,451,452,453,454,456,457,458,461,463,465,468,469,470,473,474,477,482,483,484,486],fischer:[6,9,19,20,171,373,468],fit:[3,6,9,12,38,56,185,291,307,364,368,395,409,413,433,440,442,464,482],five:[73,151,282,356,368,410,456,470],fix:[],fix_adapt:[159,196,406],fix_atom_swap:[],fix_bal:62,fix_deposit:[3,201,278],fix_evapor:201,fix_flux:200,fix_gcmc:[201,356],fix_gl:229,fix_gld:229,fix_grav:278,fix_id:[3,214,249,251,253,254,255,256,257,279,282],fix_modifi:[],fix_mov:[187,325],fix_nh:8,fix_npt:229,fix_nvt:[201,227],fix_poem:[3,6],fix_pour:[3,217],fix_qbmsst:9,fix_qeq:[3,377],fix_rattl:295,fix_reax_bond:421,fix_rigid:[241,367],fix_saed_vtk:293,fix_setforc:8,fix_shak:295,fix_srd:3,fix_styl:255,fix_temp_rescal:313,fixedpoint:[214,251],fixextern:225,fixid:200,fji:381,flag1:[219,360],flag2:[219,360],flag:[3,8,11,12,14,15,16,17,18,40,66,74,75,81,86,89,90,93,103,104,106,118,160,164,168,188,190,191,192,208,213,215,219,232,235,239,241,247,248,274,281,292,304,306,307,314,318,327,330,345,348,356,360,361,362,364,392,397,409,437,451,453,454,456,457,458,460,461,462,466,482],flag_buck:372,flag_coul:[372,381,402],flag_lj:[381,402],flagfld:[370,407,408],flaghi:[3,370,407,408],flaglog:[370,407,408],flagn:219,flagvf:[370,407,408],flat:[6,319,324,325,329],flavor:[2,7,12],fld:[9,324,370,407,408],flen:365,flex_press:365,flexibl:[3,6,8,166,190,203,206,215,229,252,315,322,386,442,474],flip:[3,6,216,251,326,327],floor:482,flop:12,floralwhit:191,flow:[],fluctuat:[6,64,87,214,227,228,235,238,251,255,273,274,317,319,341],fluid:[],fluid_veloc:242,flush:[3,191,473],flux:[],flv:190,fly:[7,9,12,41,190,194,200,217,220,292,295,320,368,474,477],fmackai:9,fmag:218,fmass:275,fmax:[355,474],fmomentum:220,fmsec:[2,191,235,236,248,251,279,292,310,311,465,476,481,483],fname:346,fno:12,fnorm:[355,474],fnpt:220,fnvt:220,foce:393,fock:365,focu:295,fogarti:[9,285,422],foil:[140,273,429],fold:[305,465],folk:7,follow:[0,1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,19,20,23,24,25,26,27,28,29,30,31,32,35,36,38,41,42,43,45,46,47,48,49,51,53,54,56,59,63,64,70,71,73,91,96,97,113,116,117,119,140,141,144,145,151,153,158,161,163,165,166,171,174,175,176,177,179,180,182,183,185,188,189,190,191,194,200,201,202,203,204,205,206,207,208,210,215,216,217,220,221,225,227,228,229,232,234,235,236,238,241,249,251,255,256,257,268,269,271,274,275,277,280,281,282,283,285,287,289,291,292,293,295,309,310,311,312,315,316,317,318,319,321,322,330,331,335,336,337,338,341,343,345,350,352,355,356,357,362,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,379,380,381,382,383,384,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,418,419,420,421,422,423,424,426,428,429,430,431,432,433,434,435,436,437,439,440,441,442,443,444,445,447,448,449,451,453,454,456,457,458,459,461,463,464,465,468,470,471,472,477,482,483,485],foo:[4,8,11,12,188,190,225,454,467,482],foot:6,footprint:[12,362],fopenmp:[12,16,18],forc:[],force_uvm:17,forceatom:241,forcefield:[291,392],forcegroup:238,forcezero:353,ford:381,forestgreen:191,forev:71,forget:[236,477],forgiv:251,fork:[12,188],form:[2,3,6,8,12,16,19,22,44,54,63,66,74,75,77,81,87,89,90,93,103,104,106,116,140,141,159,160,169,173,191,194,195,196,212,228,229,235,237,241,248,269,274,285,287,291,292,319,324,328,333,334,341,352,354,356,357,364,365,368,375,384,386,388,392,393,397,409,411,415,416,419,421,422,423,429,430,438,440,441,442,443,448,450,453,454,456,461,466,473,477,482],formal:[6,78,80,91,228,229,235,251,275,307,315],format:[2,3,6,7,8,9,12,13,22,38,41,44,56,68,77,173,185,188,189,190,191,192,203,205,206,207,208,210,212,274,277,281,283,285,288,292,293,303,318,319,330,331,334,352,356,357,363,364,368,375,384,387,397,409,411,420,421,422,424,429,440,446,453,454,456,457,458,461,472,473,474,482,484],former:[6,12,16,39,41,191,210,319,323,368,370,462,468,482],formerli:[7,13],formul:[1,40,64,141,197,222,235,251,269,283,285,291,295,318,347,364,368,384,386,389,409,418],formula:[2,3,6,7,13,21,22,37,44,54,55,70,73,87,89,90,91,94,96,97,106,112,118,141,143,144,145,146,147,148,149,151,152,153,154,155,156,157,158,164,165,170,172,173,184,188,195,196,197,198,203,204,205,208,209,216,222,230,231,233,235,236,248,273,274,280,289,294,301,305,307,310,311,312,321,324,327,329,330,332,333,334,336,342,350,356,364,365,367,368,373,374,375,376,381,382,384,385,389,390,391,392,394,397,398,400,401,402,404,405,407,408,409,412,413,414,423,424,430,438,439,441,442,443,447,448,452,456,459,466,473,474,481,482,483],forth:[1,6,11,12,13,14,15,361,454,459,463],fortran:[3,6,9,11,12,13,225,384,393,409,421,422],fortun:8,forward:[3,8,87,346,357,362],foster:[368,418,419],foul:168,found:[3,6,9,12,73,159,188,213,215,227,232,238,274,314,320,332,346,358,375,378,381,451,457,458,473],four:[6,11,54,81,103,104,140,161,249,319,341,356,357,451],fourier:[],fourth:[6,105,291,304,314,373,415],fox:[6,118,171,436,468],fphi:[38,56,440],fpic:12,fplo:[38,56,440],fprime:440,fqdn:234,fqq:381,frac:[220,236,444,477],fraction:[1,3,6,8,12,16,39,41,80,109,141,168,187,190,191,201,211,212,213,214,249,278,282,289,290,307,312,313,350,357,362,368,370,390,407,408,461,466],fragment:[42,232,289],frame:[83,140,191,200,249,282,326,389],framer:[190,191],framework:[5,229,363,429],franc:9,fraunhof:9,free:[5,6,7,9,13,29,60,63,70,87,159,196,273,307,316,317,318,319,354,357,365,386,406,419,448,453],freedom:[3,6,8,94,96,97,99,101,102,112,143,144,145,146,147,148,149,150,151,152,153,154,155,157,158,203,213,220,227,229,235,236,241,251,252,255,256,257,268,269,271,275,277,292,295,310,311,312,317,355,381,474,477,483],freeli:[0,6,7,12,144,158,163,190],freez:[],frenkel:[227,317],freq:199,frequenc:[3,6,16,39,191,263,274,275,282,287,345,382,386,422,451,465,470,482,485],frequent:[3,64,67,70,72,73,77,88,140,191,211,212,224,315,322,413,463],fri:[249,282],friction:[4,5,6,10,42,194,229,235,282,287,292,319,323,325,390,466],friedrich:297,from:[],front:[249,282,326],frontend:[190,286],frozen:[6,112,169,226,228,236,358,388],fs2:[6,91],fscale:232,fstr:482,fstring:454,ftol:[355,357,451,470],fuchsia:191,fuction:378,fudg:295,fugac:227,fugacity_coeff:227,fulfil:6,full:[1,2,6,9,12,17,38,39,40,91,190,204,215,238,273,347,348,362,368,384,386,387,389,444,456,458,463,464,468,470,475,477,485],full_energi:[3,227],fuller:355,fulli:[3,6,9,78,229,234,273,355,357,378,419,420,484],fulton:384,fumi:369,func:[454,482],funcfl:384,functino:[],functionaliri:215,fund:[0,7],fundament:[307,481],funnel_flow:303,further:[3,6,8,12,13,61,63,71,86,105,107,116,190,191,194,203,205,206,207,208,211,217,221,238,242,275,283,293,297,307,319,321,330,348,353,355,356,357,358,363,367,377,437,451,470,471,482],furthermor:[27,174,386],furthest:61,futher:3,futur:[],g_ewald:3,g_ewald_6:3,g_ewald_disp:3,g_jik:419,g_p:319,ga3:164,gaa:368,gahler:354,gai:[3,389,438],gain:314,gainsboro:191,galindo:412,game:232,gamma0:29,gamma:[3,6,29,235,238,242,274,282,283,285,287,323,382,385,389,409,412,432,435,436,439,441,443,474],gamma_:[3,319,325],gamma_ijk:441,gamma_n:[325,390],gamma_p:[3,319],gamma_t:[325,390],gammaa:412,gammafactor:238,gammar:412,gan:[419,439,441,443],gan_sw:419,gan_tersoff:419,ganzenmuel:[7,9],ganzenmul:9,gao:[6,20,171,373,468],gap:[185,407,408,420,429],gap_2014_5_8_60_17_10_38_466:420,gap_exampl:420,gaseou:7,gass:227,gather:[11,464],gather_atom:11,gather_scatter_loop_unrol:12,gathert_atom:11,gauch:177,gaug:12,gauss:[],gaussian:[6,40,63,91,103,105,228,229,235,275,291,307,311,329,347,382,383,386,388,420,438,451,482,483],gave:[3,413],gaybern:[],gcc:17,gcmc:[],gcore:220,gd3:164,gdot:408,gdrude:220,ge4:164,gec:[441,443],gen:[251,252],gener:[],genom:7,gentler:[324,327,329],gentli:385,geom:[6,347,383,451,483],geometr:[3,6,7,8,42,57,59,71,155,156,165,167,188,191,197,206,207,209,210,217,222,231,251,256,257,268,269,271,292,294,301,310,311,312,328,330,347,350,357,367,370,374,376,378,381,386,389,391,396,398,399,400,401,402,403,404,405,406,407,408,412,413,423,430,444,445,447,448,456,458,459,466,474,482],geometri:[3,6,7,9,13,25,41,71,153,165,206,210,211,212,214,217,233,350,413,456,459],georg:[7,9],georgia:13,gerber:406,germani:[9,14],germann:[255,400,451,470],germano:389,gerolf:13,get:[],get_natom:[11,454],getenv:482,gettimeofdai:12,gewald:[6,347],gezelt:[378,398],gf100:14,gf104:14,gf200:14,gflop:12,gflp:12,ghost:[3,6,7,12,16,58,61,62,73,163,168,214,216,236,251,281,292,293,345,347,358,362,382,383,386,390,397,461,466,477],ghostwhit:191,ghz:10,giacomo:9,gif:[4,190],gifsicl:190,gigabit:18,gillan:429,gingold:[432,433,435],gio:2,git:[7,12],github:[13,17,215,229,234,420],give:[0,1,2,3,5,6,7,8,9,10,11,12,14,15,16,17,29,54,71,113,145,148,152,165,188,191,197,199,203,204,205,208,214,216,229,251,269,273,274,279,287,289,292,321,347,348,355,358,359,362,364,368,383,386,392,393,409,413,423,441,442,443,451,453,454,456,466,470,477,483],given:[3,5,6,7,9,10,11,12,16,17,22,27,37,44,55,61,63,64,67,71,113,123,124,125,127,128,131,132,133,134,135,136,137,138,139,140,141,159,163,167,173,174,184,185,188,189,191,194,201,203,206,211,212,214,216,217,221,227,228,229,230,232,238,245,248,250,251,255,272,273,274,275,282,283,289,291,295,303,304,305,307,309,314,319,320,323,324,325,328,334,342,347,348,362,363,364,368,369,371,372,374,375,376,377,378,379,382,383,384,386,387,389,392,398,399,400,402,409,410,411,412,413,415,416,419,423,424,426,428,429,437,438,449,451,454,456,458,459,466,470,481,485,486],gjf:235,gjwagn:7,gko:2,gld:[],gle4md:[229,234],gle:[],glitch:3,glob:467,global:[],glosli:348,glotzer:[292,382],glue:11,gmail:[7,9,13],gmake:[12,17],gmask:[3,482],gnu:[0,7,12,17,18],gnuplot:[11,13],goal:[5,12,39],goddard:[6,9,25,283,284,285,343,386,392,421,422,468],goe:[12,54,140,165,187,248,300,355,358,381,385,391,400,403,430,449,459,463],gold:[70,191],goldenrod:191,goldman:282,gone:3,good:[1,3,6,12,17,41,73,118,163,164,210,235,249,251,283,289,295,314,347,357,358,363,376,383,384,413,440,451,465,470,474],googl:232,gordan:140,gordon:6,gould:[6,171,468],gov:[0,7,9,13,363,384,387,481],govern:238,gpl:[0,7,8,12],gpu1:362,gpu:[],gpuid:362,gpun:362,grab:[3,6],gracefulli:3,grad:[6,197,222,250],gradient:[6,7,8,12,13,122,127,214,222,230,231,250,269,284,315,319,353,354,357,408,422,440],gradient_correct:428,graduat:277,graft:213,grai:191,grain:[5,6,7,9,29,36,40,54,67,165,168,177,194,273,277,292,307,391,424,468],gram:[203,206,207,384,481],grama:[9,285,422],gran:[],grand:[3,194,201,227],granflow:5,granular:[],graph:11,graphen:460,graphic:11,grasp:5,gravit:230,graviti:[],grdient:200,great:[3,13,282],greater:[1,3,10,61,86,163,191,214,228,251,273,312,326,362,367,369,371,372,413,451,453,456,459,465,470,482,483],greathous:13,greatli:[118,470],green:[2,6,91,130,131,190,191,274,275,315,368],green_kubo:6,greenyellow:191,greffet:287,greg:[7,9],grest:[45,46,213,307,348,372,390,402,468],grew:71,grid:[3,12,41,62,118,153,164,167,210,238,287,307,319,320,345,347,348,450,453,456,458,460,465],grigera:6,grime:40,grmask:[3,482],gromac:[],gronbech:[235,347],groot:382,ground:[6,386],group1:[147,168,358],group2:[88,142,147,166,168,358],group2ndx:[],group:[],group_id:11,groupbig:307,groupid1:[241,292],groupid2:[241,292],groupid:456,groupnam:358,grouptyp:227,grow:[3,6,8,199,216,217,233,235,251,273,321,390,456,468],grow_arrai:8,grow_reset:8,growth:[6,314],grueneisen:9,gsmooth_factor:409,gstyle:[3,453],gtl:7,gtx285:14,gtx450:14,gtx460:14,gtx470:14,gtx560:14,gtx580:14,guarante:[65,69,79,92,108,115,165,168,188,221,283,346,350,466],guess:[3,188,279,457],gui:[7,11],guid:[1,17,40,78,80,99,100,101,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,194,244,245,297,298,299,300,303,320,418,426,428,431,432,433,434,435,436,466],guidelin:[1,8,14,15,16,17,18,19,347,440],guidlin:17,gullet:409,gumbsch:354,gunsteren:[279,310,406],gunzenmul:7,gunzip:12,guo:[6,20,171,177,373,468],gwald:3,gyrat:[],gzip:[3,12,188,190,191,318,357,456,457,461],h12:389,h2o:[40,356],h5cc:189,h5md1:189,haak:[279,310],had:[3,6,11,13,59,63,188,191,192,205,208,213,214,228,229,231,235,236,237,249,251,253,254,255,256,257,268,269,271,278,279,307,310,311,312,319,382,383,390,437,458,462,465,471,474],hafskjold:6,half:[1,3,6,8,16,17,39,41,58,59,167,190,202,210,216,235,251,319,324,328,358,362,365,368,376,386,425,427,456,458,459,466,477],halfwai:[41,190,191],halsei:390,halt:[41,191,210,231,332,473],halv:190,ham:[38,56],hamak:[324,328,376,423],hamilton:70,hamiltonian:[229,251,252,311,386,465],hammond:[347,348],han:384,hand:[3,6,19,54,142,165,183,187,190,238,248,350,378,386,456,459,466,469],handl:[3,9,16,190,215,285,362,365,386,407,422,454,470],hang:[3,12,453,454],happen:[3,6,8,12,15,18,61,116,169,191,201,204,358,362,454,457,464],happi:8,haptic:232,hara:442,hard:[1,241,285,291,292,383,459],harden:[9,430],harder:[324,328,477],hardi:[200,236,347,348,477],hardwar:[1,12,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,109,112,143,152,171,172,174,175,176,177,179,180,182,183,185,197,209,216,223,226,230,235,251,253,254,255,256,257,258,266,268,269,271,284,292,294,295,310,312,323,327,333,335,336,337,338,341,343,347,348,362,363,364,366,369,370,371,372,373,374,376,377,378,381,382,384,385,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,410,414,415,416,418,423,424,430,439,440,441,442,443,445,447,448,449,469],hardwir:[3,17,325],hardy2:348,harm:365,harmon:[],harmonic_fix_wal:408,harpertown:18,harrison:364,hart:307,hartre:[365,384,386,481],hasan:9,hash:[39,456],hassl:291,hat:[6,10,250],have:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,42,43,45,46,47,48,49,51,53,54,56,57,59,63,64,65,66,67,69,70,71,72,73,75,77,81,86,90,91,93,103,104,105,106,109,112,113,114,115,116,130,140,141,142,143,144,145,146,148,152,154,157,158,160,161,162,163,165,166,167,168,169,171,172,174,175,176,177,179,180,182,183,185,187,188,189,190,191,192,197,199,201,202,203,204,206,207,208,209,210,211,212,213,214,216,217,222,223,224,226,227,228,229,230,231,232,233,235,236,237,238,241,246,248,249,251,253,254,255,256,257,258,263,266,268,269,270,271,273,275,277,278,279,281,282,283,284,287,290,292,294,295,301,303,307,308,310,311,312,313,314,318,319,320,321,323,324,325,326,327,328,329,330,331,332,333,335,336,337,338,339,341,343,347,348,350,353,354,355,356,357,358,359,362,363,364,365,366,368,369,370,371,372,373,374,376,377,378,381,382,383,384,385,387,388,389,390,391,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,409,410,411,413,414,415,416,418,419,421,422,423,424,428,430,439,440,441,442,443,445,447,448,449,450,451,453,454,456,457,458,459,460,461,462,463,464,465,466,468,470,471,473,474,475,477,481,482,483,484,485,486],haven:454,hayoun:287,hayr:235,hbcut:421,hbnewflag:421,hbond:[],hbond_cutoff:422,hcp:[64,67,73,350,409],hdf5:[9,189],he1:164,head:[6,21,172,333,388,392,421,422,471],header:[3,6,7,8,12,166,188,190,191,192,203,204,205,206,207,208,249,282,289,293,319,356,363,368,384,453,456,466,473],heal:465,heat:[],heatconduct:[],heavi:307,heavili:[41,210],heavisid:319,hecht:307,heenen:9,height:[190,217,278,357,388],heisenberg:9,held:[6,71,307,357,390],helic:177,helium:366,helix:[],hello:454,help:[3,8,12,14,15,16,17,18,19,188,214,216,249,345,368,441,443,484],henc:[1,3,13,20,21,26,32,35,36,70,71,108,145,147,155,172,203,251,285,307,323,324,328,330,333,335,338,341,348,378,388,406,419,458],henderson:53,hendrik:9,henin:[9,215],henkelman1:[250,357],henkelman2:[250,357],henkelman:[250,354,357],here:[1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,22,37,41,44,55,63,68,69,70,71,118,145,163,164,173,176,184,188,190,191,194,203,210,213,216,227,228,236,238,273,282,285,287,293,319,324,327,329,330,332,334,342,346,355,357,361,362,364,365,368,375,387,389,392,393,397,419,423,426,428,438,440,449,454,461,477,482],herist:320,herrmann:307,hertizian:325,hertz:[],hertzian:[6,325,390,438],hertzsch:390,hess:347,hessian:[5,354],heterogen:105,heurist:[320,457],hex:[3,17,165,350],hexagon:[67,409],hey:[110,141],hf4:164,hfo:377,hftn:[354,355,357],hg1:164,hg2:164,hgrid:307,hibb:275,hidden:[17,454],hienergi:330,hierarch:[7,465],hierarchi:[348,372,373,398,399,402,412,465],higdon:[9,407,408],high:[1,3,6,7,9,12,19,41,185,188,190,210,214,221,236,249,315,319,322,348,354,355,362,368,386,389,423,440,449,453,465,470,477],higher:[1,14,140,168,191,203,208,211,212,217,233,278,287,314,327,329,355,386,394,482],highest:[217,332,356,357,482],highli:[3,6,7,9,165,190,216,235,251,263,282,292,353,355,386,451,470],highlight:[6,7,10,13],hight:388,hilger:[347,348],hill:275,hill_height:13,him:9,hint:12,histo:[],histogram:[1,6,12,63,116,163,194,204,205,208],histor:387,histori:[],hit:[3,307,326],hmaktulga:[7,9],ho3:164,hoc:341,hocknei:[347,348],hofl:189,hoh:[6,378,398,402],hold:[6,33,59,71,178,203,216,243,276,291,292,304,355,357,390,406,448,467],holdem:291,holder2:348,holder:[347,348],hole:304,holian:[255,400],holm:[273,348],holonom:318,home:[11,12,192],homebrew:12,homepag:[190,232],homogen:[269,413],hone:275,honeydew:191,honor:192,hook:[],hookean:390,hoomd:192,hoover:[6,7,8,155,194,220,235,236,251,252,253,254,255,256,257,268,269,270,271,275,279,287,292,310,311,312,317,382,477],hop:[213,357,368],hope:[5,13,17,41,42,210,464],hopefulli:[8,355],horizon:418,horn:6,host:[3,12,16,17,215,362],hot:[6,231,252],hotpink:191,hottest:315,hour:12,hourglass:[2,9,122],hove:409,how:[],howev:[1,2,3,6,7,11,12,15,16,17,36,39,41,71,88,91,104,118,140,164,185,188,190,191,204,208,210,213,214,217,220,227,228,229,234,235,236,237,238,241,251,273,275,278,281,282,287,292,293,307,308,310,311,314,315,319,320,321,322,323,348,350,352,353,357,362,374,376,384,385,390,393,409,417,419,428,439,440,443,451,453,454,457,464,470,473,474,477,482,483],howto:[6,63,71,143,144,146,148,151,152,153,154,155,157,158,194,235,236,251,279,310,311,312,378,392,398,402,483],hoyt:200,hpc:[1,15],hsw:17,htm:384,html:[0,4,8,11,12,15,142,234,388,408,465,466],htmldoc:0,htst:470,http:[0,6,7,9,11,13,14,15,215,229,232,234,363,384,407,420,421,422],htype:[378,398,402,406],hubbard:379,huge:[12,167,263,307,456,461,473],huggin:[7,369,371,438],hugh:200,hugoniostat:[4,194,255],hugoniot:[249,255,282],hull:163,hummer:347,hundr:[7,14],hura:6,hwloc:[12,17],hybrid:[],hydrat:388,hydrocarbon:[364,377,386],hydrodyanm:40,hydrodynam:[7,9,40,99,101,238,240,241,242,370,407,408,426,428,438,466],hydrogen:[3,6,7,224,287,364,368,378,386,392,398,402,406,421,422,438,456,465,477],hydrostat:[3,9,214,251,255,279,292],hynninen:[379,388],hyoungki:411,hyper:275,hyperbol:379,hyperspher:140,hyperthread:[16,17],i_0:319,i_1:419,i_csid:6,i_flag1:281,i_mpi_pin_domain:16,i_myflag1:281,i_myflag2:281,i_n:419,i_nam:[113,188,281,309,466],ialloi:409,iatom1:115,iatom2:115,iatom3:115,iatom4:115,ibar:409,ibead:275,ibm:[188,347],icc:[10,12,16],icm:[9,232],ico:64,icosohedr:73,ictp:13,id1:[292,357,397,456,459],id2:[292,296,304,357,397,456,459],id_press:[214,249,251,253,254,255,256,257,279],id_temp:[213,214,249,251,253,254,255,256,257,268,269,271,279,310,311,312],idea:[1,3,6,11,12,41,141,190,191,210,233,273,296,307,315,348,413,464,477],ideal:[6,9,12,40,73,116,122,220,227,273,350,407,432,477],idealga:[],ident:[1,3,9,12,39,40,71,140,188,191,205,214,215,228,229,235,236,248,251,273,275,279,287,289,292,348,356,357,362,369,371,378,380,384,398,400,406,415,421,422,429,449,451,454,457,470,481,482,483,485],identi:362,identif:67,identifi:[1,3,6,12,38,40,56,70,163,165,185,289,307,330,392,397,409,440,451,453,456,459,470,471,473,475],idl:[18,470],idn:[292,357],idr:482,ielement:409,ieni:13,ifdef:[8,12],iff:236,iffp:454,ignor:[3,6,11,16,41,61,71,83,87,98,107,119,169,188,190,191,195,196,204,205,206,208,210,214,215,216,217,227,230,234,235,248,251,255,260,265,279,280,281,291,292,293,307,310,311,312,318,319,321,324,328,329,330,339,349,352,356,357,362,363,374,375,376,384,385,387,389,396,397,409,415,419,423,439,440,441,442,443,445,451,453,456,457,461,466,468,470,473,482],ihl:307,iii:[6,9,25,283,285,343,392,468],ijk:[337,341,343,368,419,453],ijl:341,ikeshoji:6,ill:[145,155,203,283],illeg:3,illinoi:[232,347,348,407],illog:454,illustr:[1,6,8,11,12,17,273,275,357,393,454,482],ilmenau:[7,9,14],ilya:[7,9],imag:[],image2pip:190,imageint:3,imagemagick:[4,190],imagin:[304,318,368,385,393,394,410,411,415,419,439,441,442,443,468],imaginari:[6,227,275,456],imbal:[1,12,41,210,362,475],imbalanc:[41,210],imbu:307,imd:[],img:190,immedi:[0,2,3,8,12,165,211,212,217,295,303,308,309,326,453,454,456,458,470,482,485],immens:3,immers:[238,292],impact:[1,4,6,8,221,314,475],impart:[3,6,230,307,329],impei:[6,398],implement:[1,3,6,8,9,12,17,18,27,78,87,118,147,153,164,165,173,174,184,203,215,219,229,232,235,238,240,241,242,249,269,272,274,275,281,282,283,285,286,287,295,296,307,314,319,323,341,346,347,348,355,357,362,363,365,368,377,378,380,382,384,385,386,393,398,402,406,409,418,421,422,423,441,443,453,454,465,470,477,482,484],impli:[3,6,40,59,87,141,190,195,196,197,216,222,235,291,310,312,313,347,350,375,454],implicit:[],implicitli:8,implict:379,imporop:356,importannt:248,important:317,important_not:59,impos:[2,6,71,112,154,187,194,197,198,209,222,223,225,230,233,242,243,250,263,273,276,294,301,304,306,307,314,315,316,317,322,323,324,327,328,329,355,357,359,450,464],imposs:1,improp:[],improper_coeff:[],improper_styl:[],impropercoeff:3,impropertyp:212,imprort:97,improt:[195,196],improv:[0,1,9,39,41,191,210,251,274,362,392,398,413,422,439,442],in3:164,inaccur:[1,3,6,168,249,347],inaccuraci:328,inact:392,inappropri:165,incid:[118,164,217],includ:[],includig:[332,346],inclus:[],incom:232,incompat:[3,11,394],incomplet:[3,11,456],incompress:[252,386],inconsist:[3,169,213,457],inconveni:350,incorpor:[282,368,379],incorrect:[3,148,235,409],incorrectli:[3,350,390,482],increas:[1,3,6,10,18,38,56,57,59,109,118,141,185,188,190,191,211,212,213,216,235,279,290,291,292,315,318,322,347,348,357,362,386,389,422,440,442,454,465,470,482],increasingli:386,increment:[3,11,128,197,198,209,210,217,222,224,251,296,297,330,346,361,396,451,454,468,470,482],incur:[14,17,203,206,207,224,319,453],inde:148,indefatig:7,indefinit:316,indent:[],independ:[4,6,9,11,12,16,17,41,59,63,91,117,119,151,165,187,194,202,203,204,205,206,207,208,210,213,214,215,216,217,228,230,235,236,238,241,251,274,279,283,287,292,293,296,306,317,319,350,390,451,454,473,483],indetermin:[188,191],index:[0,3,6,8,11,12,38,39,40,56,68,69,117,119,185,188,191,202,204,232,234,275,293,319,330,331,332,352,361,413,421,422,440,446,456,471,482],indianr:191,indigo:191,indirectli:[6,482],indistinguish:235,indium:429,individu:[],induc:[],industri:7,ineffici:[3,6,40,64,67,70,72,73,77,140,153,190,216,251,274,347,359],inelig:201,inerti:408,inertia:[],inexpens:[229,465],inf:[2,3,12,322,459],infer:[3,94,96,97,159,197,198,210,211,212,222,232,277,307,315,322,350,375,387,456,468,474],infil:[3,13,292,453],infin:[3,355,461,474],infininti:190,infinit:[3,217,226,233,235,238,274,307,319,325,326,348,350,386,460,481],infinitesim:6,inflect:[379,400],influenc:[3,9,41,80,147,248,278,347,348,413,441,442,443],inform:[0,1,2,3,6,7,8,9,11,12,13,15,17,39,41,42,59,61,62,63,68,88,115,117,118,164,165,171,188,189,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,223,224,225,226,227,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,247,250,258,259,260,261,262,263,264,265,266,267,272,273,274,276,277,278,279,280,281,283,284,285,286,287,288,289,290,291,292,293,294,295,297,304,305,307,308,310,311,312,313,314,315,316,318,321,322,323,324,326,327,328,329,331,345,347,348,351,354,355,356,357,358,360,362,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,416,418,419,420,421,422,423,424,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,445,447,448,449,453,454,456,457,458,460,461,463,468,470,471,473,475,482,484,485,486],infrequ:[6,382,451,470],infti:[379,407,408],ingtegr:368,inher:[347,355,413],inherit:[6,444],inhomogen:[18,319,413],inidividu:355,init:[3,8,290],init_fil:319,init_list:8,init_on:8,init_styl:8,initi:[2,3,4,6,7,8,11,12,13,38,39,40,41,56,57,59,62,71,80,81,86,87,103,104,130,161,166,167,185,187,188,190,191,192,195,196,199,200,204,210,212,213,214,216,223,227,228,232,233,234,235,236,238,243,247,248,249,250,251,255,263,274,275,276,281,282,287,290,291,292,294,306,307,309,314,316,317,318,319,320,321,324,325,326,327,329,330,332,347,351,354,355,357,364,365,381,382,383,420,421,422,440,451,453,454,456,458,459,461,463,464,466,470,471,474,477,482,483,484,486],initial_integr:8,initial_integrate_respa:8,initialis:420,initialt:319,inlclud:11,inlcud:482,inlin:454,inner2:[373,391],inner:[3,8,16,188,233,332,346,353,354,355,357,361,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,379,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,416,418,420,421,422,423,424,429,430,431,432,433,434,435,436,437,439,440,441,442,443,445,446,447,448,449,465,470,482],inner_distance_cutoff:392,innergroup:241,innermost:[38,56,360,440,465],innernod:241,innner:404,inordin:320,inorgan:6,inp:[215,332,429],input1:[65,68,69,79,92,108,113,114,115,117,119,309],input2:[65,68,69,79,92,108,113,114,115,117,119,309],input:[],input_doubl:3,inquir:297,insensit:12,insert:[3,5,7,8,12,59,165,194,217,227,233,278,347,429,437,454,460,477],insid:[2,3,6,8,11,71,129,135,165,188,191,202,206,207,217,218,224,227,233,238,241,278,292,307,324,326,327,328,329,330,345,350,400,454,455,456,458,459,466,470,482],insight:[6,13],instabl:[238,381,428],instal:[],instanc:[6,11,215,229,326,388,393,413,419,454,477],instantan:[6,63,213,214,228,229,251,255,274,279,282,287,289,292,314,462,474],instanti:[6,11,12,200,393,453],instead:[1,3,6,8,9,11,12,13,17,18,40,41,59,61,63,70,71,90,117,144,147,169,185,188,196,203,205,206,207,208,210,214,215,235,238,241,242,274,280,290,292,309,327,345,347,348,351,358,362,371,372,384,397,399,406,409,451,459,463,470,472,477,482],institut:[9,232,277],instruct:[3,6,8,11,12,13,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,109,112,143,152,163,171,172,174,175,176,177,179,180,182,183,185,186,190,197,209,216,223,226,230,235,251,253,254,255,256,257,258,266,268,269,271,284,292,294,295,310,312,323,327,333,335,336,337,338,341,343,348,362,363,364,366,369,370,371,372,373,374,376,377,378,381,382,384,385,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,410,414,415,416,418,423,424,430,439,440,441,442,443,445,447,448,449,465,477],insuffici:[3,6,12],insult:251,insur:[3,6,11,12,17,39,40,61,73,102,104,165,166,185,188,190,191,197,211,212,217,222,223,224,225,227,230,235,247,280,281,290,292,307,319,324,328,329,330,332,346,356,358,362,376,389,393,417,423,440,453,454,456,457,461,464,465,473,474,482,483],int_max:3,integ:[3,6,8,11,12,39,40,42,64,68,70,71,113,115,117,119,140,163,165,168,169,171,175,176,180,185,187,188,190,191,201,203,206,207,211,212,213,217,219,225,227,228,229,232,235,236,237,238,274,277,278,281,282,287,292,307,309,311,314,318,319,337,347,350,370,382,383,396,409,421,422,426,428,429,451,453,454,455,456,464,465,466,470,473,482,483],integr:[],integrate_ulsph:298,intel:[],intel_cpu:[12,16],intel_phi:[12,16],intend:[3,8,12,13,36,228,420,456],intens:[1,3,6,9,63,66,74,75,86,89,90,91,93,103,104,105,106,112,114,116,117,118,119,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,160,161,162,164,194,203,204,205,206,207,208,210,211,212,213,221,224,231,241,249,251,255,289,292,293,307,315,319,321,322,473,474],intepol:482,inter:[14,18,42,61,62,145,168,169,188,213,235,237,250,284,292,347,357,368,466,477,482,484,486],interact:[1,3,6,7,8,9,10,11,12,14,15,16,17,22,29,33,37,39,42,44,50,54,55,57,61,63,65,69,77,79,87,88,92,107,108,110,112,115,116,122,123,124,125,127,128,129,130,131,132,133,135,136,137,138,140,141,142,144,158,159,163,166,167,168,169,170,171,173,177,178,184,188,194,195,196,211,212,213,226,227,232,233,235,237,241,263,273,275,277,283,285,291,292,298,299,307,308,314,319,323,324,325,328,329,334,335,336,338,342,347,348,355,356,357,358,359,360,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,416,418,419,422,423,424,426,428,429,430,437,438,439,441,442,443,444,445,446,447,448,449,451,454,456,458,460,461,465,466,468,473,474,477,484],interatom:[3,4,7,165,188,250,316,317,363,368,384,386,394,409,442,482],intercept:118,interchang:6,interconnect:18,interconvert:386,intereract:39,interesect:328,interest:[1,5,7,8,9,11,13,71,164,275,314,317,348,385,408,421,422,454,482],interf:362,interfac:[],interfer:[12,251,364],interg:[6,477],intergr:[465,469],interi:408,interior:[3,6,41,328,459],interlac:409,interleav:[6,165,464],intermedi:[6,12,59,190,250,273,341,357,454,455,464,468],intermix:451,intermolecular:364,intern:[0,2,3,5,6,9,11,16,20,21,24,28,32,35,36,39,40,42,63,87,99,101,118,141,145,147,164,172,185,190,191,194,195,196,200,212,216,220,232,244,245,249,251,255,274,292,296,333,335,338,341,345,355,356,431,432,440,454,456,458,461,470,473,474,481,482,483,484],internal_element_set:200,internal_quadratur:200,internet:234,interpenetr:409,interpentr:[432,433,435],interpol:[6,15,38,56,100,185,190,191,200,238,273,347,348,357,368,413,422,434,440,441],interpret:[2,6,11,190,205,390,430,451,454,470,482],interrupt:282,intersect:[3,6,118,191,328,330,459],intersert:328,interspers:355,interstiti:163,intertia:[3,93],interv:[3,6,91,189,204,235,282,287,288,299,434,451,470,482],intestieti:118,intial:[6,362,364],intiial:[41,461],intiti:[3,306],intra:292,intra_energi:227,intramolecular:[29,227],introduc:[6,9,190,251,282,287,292,341,347,363,378,386,398,402,406,439,470,482],introduct:[],intsal:[],intuit:350,inv:[118,164,293],invalid:[3,12,71,89,168,263,357,407,408,458],invari:[133,138,140],invent:295,invers:[],invert:[6,169,274],invis:328,invoc:[163,213,362,426,428,454],invok:[1,3,6,7,8,11,12,13,14,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,41,43,45,46,47,48,49,51,53,54,56,59,63,66,71,74,75,81,87,88,89,90,93,103,104,106,109,110,111,112,117,143,152,159,160,163,165,166,168,169,171,172,174,175,176,177,179,180,182,183,185,188,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,219,221,222,223,224,225,226,227,228,230,231,232,233,235,236,237,238,239,240,241,242,243,244,245,247,248,250,251,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,283,284,285,286,287,288,289,290,292,293,294,295,296,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,333,335,336,337,338,341,343,346,347,348,349,350,355,357,362,363,364,366,369,370,371,372,373,374,376,377,378,381,382,384,385,387,388,389,390,391,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,410,413,414,415,416,418,423,424,426,428,429,430,439,440,441,442,443,445,446,447,448,449,450,453,454,455,457,459,461,464,465,467,468,470,473,474,477,482,483],invokd:3,involv:[3,6,7,8,12,63,108,115,116,117,145,169,194,201,211,227,238,277,280,285,307,347,354,355,357,367,383,389,439,441,443,452,453,459,461,465,470],ioff:[356,456],ion:[6,7,147,272,304,319,348,368,379,387,388,409,438,443,449,456,477],ionic:[6,9,369,371,379,386,387,416,477],ioniz:[9,377,386],iparam:[3,212],ipi:[],ipp:[],ir3:164,ir4:164,irregular:[6,41,58,210,214,216,251,292],irrelev:415,irrespect:[407,408],irrevers:220,is_act:482,is_avail:482,is_defin:482,isbn:448,isel:[347,348],isenthalp:[251,252,253,254],ismail:[347,348,372,402],isn:[3,8,11,12,231],iso:[3,214,220,236,251,252,253,254,255,256,257,279,287,292,477],isobar:[251,252,256,257],isodem:386,isol:[3,168,330],isomorph:275,isotherm:[227,251,252,256,257,279],isotrop:[6,235,279,347,348,370,389,407,408],isovolum:293,isralewitz:296,issu:[1,3,6,9,11,12,13,14,15,17,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,59,71,73,81,103,109,112,143,152,171,172,174,175,176,177,179,180,182,183,185,190,197,200,209,213,214,216,217,222,223,226,227,230,235,249,251,253,254,255,256,257,258,266,268,269,271,275,279,281,284,292,294,295,306,310,311,312,317,323,327,329,332,333,335,336,337,338,341,343,348,356,357,360,363,364,366,369,370,371,372,373,374,376,377,378,381,382,384,385,387,388,389,390,391,392,396,398,399,400,401,402,403,404,405,406,407,410,414,415,416,418,423,424,430,437,439,440,441,442,443,445,447,448,449,456,458,465,468,473,474,482,483],ital:[421,422],itali:13,item:[6,7,8,41,188,191,210],iter:[3,6,12,39,41,63,189,197,198,209,210,214,220,222,225,233,274,283,284,292,295,314,330,332,346,353,354,355,357,361,451,461,465,470,474,482],ith:[71,117,119,202,203,204,205,206,207,208,309,321,474,482],itself:[2,3,4,6,7,8,9,11,12,13,18,42,59,91,107,156,188,189,190,191,192,204,215,220,236,246,250,286,292,319,330,332,356,357,378,387,389,393,394,440,454,460,463,464,468,482,486],ityp:[3,115,116,165,199,212,285,446],itype1:116,itype2:116,itypen:116,ivector:8,ivori:191,ixcm:292,ixi:[42,93,292,356,482],ixx:[42,93,292,356,482],ixz:[42,93,292,356,482],iycm:292,iyi:[42,93,292,356,482],iyz:[42,93,292,356,482],izcm:292,izrailev:296,izumi:442,izz:[42,93,292,356,482],j0jt:91,j20:204,j_m:140,jac:[6,171,468],jackson:412,jacobi:3,jacobsen:354,jagreat:13,jame:[9,19],janssen:273,januari:409,jaramillo:[7,9,13,386],jarzynski:296,jatempl:9,jcc:9,jcp:324,jec:13,jeff:13,jello:251,jensen:[235,347],jeremi:[9,411],jerom:9,jewett:13,jiang:[236,477],jiao:[9,13],jiht:[7,9],jik:368,jim:7,jku:7,jmake:12,jmm:140,joannopoulo:249,job:[12,60,295,464],jochim:[251,252],john:[7,13,189],johnson:[9,13],join:[6,459],joint:[3,277,392],jon:[9,70],jonathan:9,jone:[1,3,6,7,9,10,12,13,45,46,64,87,107,110,194,200,279,307,324,328,348,350,355,364,367,371,372,373,374,376,381,389,391,392,393,396,397,398,399,400,402,403,405,406,412,413,419,423,424,433,438,445,468,477],jonsson:[73,250,354,357],jorgensen:[6,182,378,398,402],joul:481,journal:[159,177,200,285,348,384,421,422,432,433,435],jparam:[3,212],jpeg:[3,12,190],jpeglib:12,jpg:[4,8,12,188,190,191,485],jpg_inc:12,jpg_lib:12,jpg_path:12,jpl:[7,9],jth:482,jtype1:116,jtype2:116,jtype:[3,116,212,446],jtypen:116,judg:470,judici:6,julien:9,jump:[],june:192,just:[3,6,8,9,11,12,13,17,19,22,29,42,44,59,61,91,107,110,116,141,144,158,173,188,203,206,207,216,220,224,241,248,279,281,292,314,319,330,332,334,356,357,362,364,367,375,393,419,445,454,458,460,461,463,464,475,477,482,485,486],justo:385,jusufi:[379,388],jut:328,jzimmer:9,k11:91,k22:91,k33:91,k_b:236,k_d:477,k_sigma:368,k_ub:20,kadiri:67,kamberaj:292,kappa:[6,91,315,378,398,447,448],kappa_:319,karplu:87,karttunen:238,kate:[],kayser:379,kbit:191,kboltz:307,kbp:191,kbt:287,kcal2j:91,kcal:[232,465,477,481],kde:13,ke_eta_dot:251,ke_etap_dot:251,ke_omega_dot:251,keblinski:378,kecom:145,keef:118,keep:[3,7,12,59,71,183,206,212,216,233,274,290,317,322,347,355,378,406,429,451,456,462,464,470,474,482],keflag:3,kei:[6,17,59,307,470],keir:13,kelchner:70,kelkar:322,kelvin:481,kemper:[284,377],kepler30:17,kepler32:17,kepler35:17,kepler37:17,kepler:[1,12,14,15,17,362],kept:[6,194,255,316,317,477],kernel:[7,13,17,40,100,129,135,200,228,229,299,431,432,433,434,435,436,466],kernel_radiu:456,keword:190,keyboard:12,keyword:[],keywrod:386,kforc:477,khaki:191,khersonskii:140,kick:[197,198,199,222,326],kilogram:481,kim:[],kimviri:[3,394],kind:[1,2,3,6,7,8,9,11,12,17,39,40,41,42,61,62,63,73,117,119,145,188,194,201,203,204,205,210,213,215,219,227,230,248,292,295,307,314,329,357,359,361,368,386,421,422,446,451,455,456,461,462,469,470,477,482],kinemat:[9,407,408],kinet:[3,6,8,9,63,82,83,84,85,87,91,94,95,96,97,98,112,141,143,144,145,146,147,148,150,151,152,153,154,155,157,158,194,201,203,214,220,231,235,247,249,251,252,253,254,255,256,257,279,282,307,315,322,323,355,386,451,470,474,477],kiss:12,kjl:341,klahn:318,klapp:347,klein:[6,9,200,215,251,252,270,292,398,424],kloss:7,kmax:[3,118,293,347],knc:17,knock:319,know:[3,11,12,41,63,107,116,194,220,234,236,263,307,355,385,394,444,454,457,460,465,477],knowledg:[4,8,190,394],known:[3,12,140,190,274,283,292,316,453,470,483],kohlmey:[7,9,13,18,347,348],kokko:[],kokkos_arch:17,kokkos_cuda:[12,17],kokkos_cuda_opt:17,kokkos_debug:17,kokkos_devic:17,kokkos_omp:[12,17],kokkos_pg:17,kokkos_phi:[12,17],kokkos_use_tpl:17,kolafa:348,kollman:[6,171,468],kondor:420,kone:[316,317],kong2011:274,kong:[9,13,274],konglt:9,koning00a:316,koning00b:316,koning96:[316,317],koning97:317,koning99:316,kooser:13,koskinen:354,kosztin:296,krau:13,kremer:[45,46,468],kress:[410,411],kspace:[],kspace_modifi:[],kspace_styl:[],kspce:12,kspring:250,kstart:291,kstop:291,kth:[228,275],kub:20,kubo:[6,91,315],kumagai:442,kumar:[9,407,408],kuronen:419,kurt:277,l12:409,l_box:386,l_skin:319,la3:164,lab:[5,7,12,111,418],label:[],laboratori:[0,249,282],lack:[3,249,386],lackmann:368,ladd:[269,317],lafitt:412,lag:319,lagrang:[130,131],lagrangian:[6,122,123,124,125,127,128,129,130,131,132,133,135,136,137,138,200,249,282,283,298,299,426,428,477],lagrangian_posit:[249,282],lagrangian_spe:[249,282],lai:450,lambda1:[441,442,443],lambda2:[441,442,443],lambda3:[441,443],lambda:[87,111,118,159,164,238,293,316,317,319,363,385,406,439],lambda_fin:316,lambda_initi:316,lamda:[3,53,307],laminar:436,lamm:6,lammps2pdb:[6,13],lammps_clos:6,lammps_command:6,lammps_extract_atom:6,lammps_extract_comput:6,lammps_extract_fix:6,lammps_extract_glob:6,lammps_extract_vari:6,lammps_fil:6,lammps_gather_atom:3,lammps_get_coord:6,lammps_get_natom:6,lammps_n:[6,12],lammps_open:6,lammps_potenti:[375,377,467],lammps_put_coord:6,lammps_quest:[6,225],lammps_scatter_atom:3,lammps_set_vari:6,lammps_sppark:6,lammps_vers:6,lammpsplot:13,lammpspotenti:375,lammpstrj:[457,461,477],lammpsviri:[3,394],lamoureux:[6,220,444,477],lane:1,lang:477,langevin:[],langevin_drud:[150,219],languag:[6,11,12,17,454,482],lanl:9,lapack:12,laps:320,laptop:7,larg:[0,1,3,5,6,7,8,9,10,12,13,14,16,18,39,40,41,58,59,70,71,109,116,141,145,148,153,165,166,167,177,185,187,188,190,191,203,206,207,210,213,214,216,217,221,227,238,251,263,269,274,277,278,282,287,289,290,291,292,295,304,307,315,319,320,322,324,328,341,347,348,353,355,358,362,376,382,386,389,390,397,413,417,423,440,451,454,456,458,459,463,465,470,473,475,477,483,486],larger:[1,2,3,6,11,12,13,39,41,56,59,70,71,116,165,167,190,204,205,208,217,231,238,251,269,270,278,283,287,291,292,293,303,307,314,319,323,324,325,328,347,348,353,354,355,357,358,359,362,368,376,378,379,386,390,398,402,408,413,417,438,445,456,460,461,464,465,470,482],largest:[3,6,12,39,71,163,165,221,347,355,359,437,440,456,458,464,465,476,482],laroch:287,laser:319,last:[1,2,3,5,6,11,12,15,16,19,38,56,59,61,71,110,117,141,163,185,188,190,191,192,193,203,204,205,206,207,208,210,221,250,290,293,304,307,332,345,355,356,357,358,362,366,367,368,369,376,377,382,384,388,389,391,392,396,399,401,403,404,405,408,412,414,423,430,437,440,444,445,447,448,451,452,454,456,457,461,463,464,468,470,471,474,475,482],lat:409,late:5,latenc:[10,232],later:[6,11,12,16,17,40,59,71,104,167,169,204,217,255,269,277,296,314,330,332,347,355,356,361,362,364,368,454,456,458,460,470,473,482,484],latest:[7,203,204,205,206,207,208,293,458],latex:8,latgen:274,latitud:140,lattc:409,latter:[2,6,11,12,14,15,16,17,18,41,42,87,144,191,195,196,202,203,206,207,210,214,233,242,251,253,254,256,257,277,279,281,283,285,292,307,323,328,346,356,368,370,371,372,373,374,381,398,402,406,416,424,444,451,453,454,459,462,473,482,485],lattic:[],launch:[1,3,6,11,12,18,362,453,454],laupretr:341,lavend:191,lavenderblush:191,lavgevin:216,law:[6,249,360,426,428],lawngreen:191,layer:[6,9,71,194,206,315,319,322],layout:[1,3,17,167,345,453,456,465],lb_fluid:238,lbl:[7,9,163],lbnl:9,lbtype:238,lcbop:[],ld_library_path:[11,12],ldfftw:12,ldrd:7,lead:[2,3,6,12,22,25,39,41,44,59,61,77,87,116,159,163,169,173,191,195,196,205,210,217,229,238,255,282,292,295,307,314,315,322,334,341,347,352,357,362,375,378,398,402,404,428,450,456,466,477,482,483],least:[3,6,12,18,71,118,164,189,201,206,229,277,281,323,358,362,393,440,445,454,482],leav:[3,7,11,12,16,17,21,41,57,141,155,172,210,214,217,251,253,254,256,257,279,292,295,333,413,456,460,468],lechman:307,lectur:296,led:[3,5],lee2:409,lee:[200,409],left:[6,11,12,41,107,142,184,190,191,213,233,272,307,330,332,350,444,456,458,463,482,486],leftmost:[41,210],legaci:12,legal:7,lehoucq:418,leimkuhl:327,leiu:382,lemonchiffon:191,len:466,lenart:[379,388],length:[3,6,8,11,12,18,21,38,39,40,41,44,53,54,55,56,58,59,61,65,68,69,71,74,79,80,82,87,88,89,90,91,92,103,105,107,108,112,114,115,117,118,119,128,130,143,144,145,146,147,148,149,150,152,153,154,155,156,157,158,161,163,164,167,172,185,188,190,191,194,201,205,207,208,210,211,212,213,214,216,227,230,238,249,250,251,252,255,263,273,279,289,292,293,295,304,307,314,318,319,321,324,328,348,350,353,355,357,358,360,365,368,369,371,378,379,383,386,388,392,396,398,409,413,421,422,431,440,441,447,448,456,459,464,466,473,474,477,482],lengthi:227,lennard:[1,3,6,7,9,10,12,45,46,87,107,110,194,279,307,324,328,348,350,355,364,367,371,372,373,374,376,381,389,391,392,393,396,397,398,399,400,402,403,405,406,412,413,423,424,433,438,445,468,477],lenoski:[410,411],less:[1,3,6,13,14,15,16,17,18,38,41,56,57,58,59,76,108,115,116,144,158,185,191,203,205,206,207,208,210,212,213,214,216,217,224,233,249,251,273,285,287,293,307,326,327,329,348,350,355,359,362,368,373,389,390,407,408,413,423,439,440,443,448,456,482,483],let:[1,11,12,38,56,148,176,185,204,295,307,325,362,376,440,465,469,477,484],lett:[140,153,229,236,238,249,287,296,316,317,354,368,384,386,389,406,429,477],letter:[2,12,41,57,59,191,210,219,220,236,275,332,361,420],leuven:9,level:[2,3,8,11,12,14,17,188,190,195,196,232,248,250,251,332,345,348,361,368,372,373,398,399,402,412,421,422,453,465,470,475,482],lever:437,levin:390,lewi:297,lexicon:7,lgr_po:[249,282],lgr_vel:[249,282],lgvdw:422,li1:164,liang:377,lib:[1,3,9,11,12,14,15,17,286,362,377,394,454,457],libatom:[9,420],libcolvar:12,libdir:11,libfftw3:12,libgpu:15,libjpeg:12,liblammp:[11,12],liblammps_foo:[11,12],liblammps_g:[11,12],liblammpscuda:14,libmpi:11,libmpi_stub:12,libmpich:12,libpackag:12,libpng:12,librari:[],librt:17,licens:[0,7,8,12,190],lie:[6,293],lieu:347,life:7,lifo:8,ligand:304,liggght:7,lightblu:191,lightcor:191,lightcyan:191,lightest:314,lightgoldenrodyellow:191,lightgreen:191,lightgrei:191,lightli:304,lightpink:191,lightsalmon:191,lightseagreen:191,lightskyblu:191,lightslategrai:191,lightsteelblu:191,lightweight:307,lightyellow:191,like:[3,4,6,7,8,9,11,12,14,16,17,18,39,42,54,59,149,156,190,192,197,214,215,217,220,222,232,235,236,237,249,251,252,256,257,262,263,268,269,270,271,273,279,281,282,283,287,292,293,307,309,310,311,312,313,314,315,322,323,324,327,328,329,332,347,350,354,357,362,368,376,381,382,386,387,390,392,393,403,404,409,429,440,443,447,448,453,454,456,457,458,459,461,466,471,474,475,477,482,483],likelihood:[118,164,213],likewis:[1,6,10,12,15,18,39,41,71,88,115,200,210,211,212,227,235,236,251,252,255,270,287,307,310,311,312,348,357,363,367,368,378,384,387,438,454,456,468,482],lime:191,limegreen:191,limit:[],limit_eradiu:386,limit_veloc:[298,299],lindahl:347,line:[],linear:[],linearli:[10,117,191,216,274,324,326,327,329,356,357,359,456,482],lineflag:[6,456],lineforc:[],linen:191,linesearch:[8,12,353],ling:[9,13],lingo:[11,394],link:[5,6,7,8,9,11,12,13,14,15,17,18,22,37,44,55,63,173,184,190,194,212,232,236,277,286,288,296,304,334,342,365,375,409,420,421,422,438,444,454],linker:12,linkflag:[12,16],linux:[10,11,12,15,190,192,232],linuxamd64:457,liouvil:251,lip:13,lipid:[4,9,10,13,29,292],lipton:277,liquid:[6,7,9,29,39,40,41,59,87,141,151,163,210,214,216,227,251,279,282,287,314,381,413,416,442,465],lisal:437,lism:9,list:[],listen:[232,234],listfil:397,liter:[456,467],literatur:[8,409,439],lithium:386,littl:[1,3,12,64,251,358,451,459],littmark:[409,438,443,449],liu:[392,422],lj1043:[],lj126:[],lj12_4:424,lj12_6:424,lj1d:274,lj6:3,lj93:[],lj96:[],lj9_6:424,lj_flag:364,llnl:[5,7],lmp1:11,lmp2:11,lmp2arc:[],lmp2cfg:[],lmp2vmd:[],lmp:[11,454,477],lmp_auto:12,lmp_cuda:[14,17],lmp_foo:12,lmp_g:[6,11,12,13,17,346],lmp_gpu:15,lmp_ibm:[12,346],lmp_inc:12,lmp_intel_cpu:16,lmp_intel_phi:16,lmp_kokkos_cuda:17,lmp_kokkos_omp:17,lmp_kokkos_phi:17,lmp_linux:[4,6,12],lmp_mac:12,lmp_machin:[1,12,14,15,16,18,19,362],lmp_mpi:[12,275],lmp_mvapich:17,lmp_omp:18,lmp_openmpi:17,lmp_opt:19,lmp_win_mpi:12,lmp_win_no:12,lmpptr:[11,454],lmpqst:225,lmpsdata:13,lmptype:[3,12,225],load:[1,3,4,6,7,9,11,12,16,17,18,41,190,192,194,210,232,282,362,377,453,454,475],loadabl:11,loca:191,local:[],localhost:232,localized_lambda:200,localonli:12,localvector:63,locat:[3,6,8,9,11,12,27,61,116,118,163,164,174,185,188,217,218,238,306,317,328,353,375,378,387,388,398,400,402,444,453,456,457,459,466,468],lock:[3,361,482],lockstep:[214,251,279,292],log:[],logarithm:[136,137,482],logfil:[0,3,6,12,280,351,452],logfreq2:482,logfreq:[191,463,472,482],logic:[7,11,12,17,41,165,210,330,332,451,453,454,457,465,470,482],lomdahl:[255,400],london:[13,227,422],lone:[421,422],longer:[1,3,6,8,12,13,54,116,188,191,202,203,204,205,206,207,208,211,227,235,273,277,282,292,295,314,324,328,330,353,362,364,390,453,461,465,470,479],longest:[41,210,211,358,445],longitudin:304,look:[1,3,6,8,11,12,18,54,61,188,190,193,375,429,440,477,482],lookup:[3,39,185,413,440],lookup_t:293,loop:[3,4,6,7,11,12,18,39,42,65,68,69,79,88,92,108,115,116,141,190,203,206,207,211,212,221,314,330,332,346,349,355,357,358,360,361,383,451,452,454,460,461,464,465,470,475,476,482,483],loopa:[332,346,361],loopb:[332,346,361],loopvar:482,lopez:[251,252],lorant:283,lorentz:164,lose:[6,58,59,167,214,216,236,251,390,456],loss:[6,481],lossi:190,lossless:190,lost:[3,12,13,57,102,217,290,297,307,413,456,457,458,465,473],lot:[18,296,347],low:[1,3,6,7,12,41,148,163,188,190,210,220,236,269,287,292,315,322,348,422,440,448,470,477],lower:[2,3,6,9,11,12,41,57,59,71,88,142,154,187,190,191,204,205,206,207,210,214,220,232,235,236,238,251,282,287,315,322,324,325,330,331,347,350,361,379,409,470,478,480,483],lowercas:190,lowest:[140,332,356,466,470,471,482],ls_:134,lsfftw:12,lsurfac:319,lu3:164,lubric:[],lubricateu:[],lubricuteu:260,lucki:12,luigi:13,lumped_lambda_solv:200,lussetti:315,lustig:[7,13],lybrand:348,lyulin:341,m4v:190,m_c:477,m_d:477,m_eff:[325,390],m_fill:3,m_i:305,m_lambdai:418,m_taubi:418,m_u:238,m_v:238,m_yield_stress:418,mac:[12,14],mac_mpi:12,mach:[9,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,297,298,299,300,303,466],machin:[1,3,4,6,7,10,11,12,14,15,16,17,18,19,188,190,232,320,347,353,355,360,362,453,458,463,464,465,483,486],mackai:[9,238,240,241,242],mackerel:[6,20,171,236,373,468,477],maco:190,macro:17,macroparticl:383,macroscop:[7,230,249,418],made:[3,6,11,12,15,16,33,41,42,50,64,166,178,188,190,192,194,195,196,201,210,217,221,232,241,278,286,290,292,317,330,339,358,362,389,390,393,421,423,430,453,458,460,466,469,478,480,483,484],madura:[6,398],magazin:384,magda:324,magenta:191,magic:[3,11],maginn:[159,322],magnitud:[6,70,105,108,113,142,165,187,188,191,217,218,230,231,233,235,296,304,306,307,314,325,348,355,381,390,466],mai:[0,1,2,3,6,7,8,11,12,13,14,15,16,17,18,29,38,39,40,41,56,58,59,61,63,65,68,69,71,79,86,87,88,89,90,92,102,103,105,107,108,109,110,112,113,114,115,117,118,119,140,141,144,145,153,154,158,159,163,164,165,166,167,168,169,184,185,187,188,189,190,191,192,194,195,196,197,199,201,203,204,205,206,207,208,209,210,211,212,214,216,217,220,221,222,224,227,228,229,231,232,233,235,236,237,238,239,241,246,247,248,249,251,252,255,263,266,274,275,278,279,280,281,282,284,287,289,290,291,292,293,294,295,296,298,299,301,307,309,310,311,314,315,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,345,346,347,348,350,353,354,355,356,357,358,359,360,362,365,367,368,376,382,386,390,393,394,404,406,408,409,410,411,413,421,422,424,429,437,440,449,451,452,453,454,456,457,458,459,460,461,462,463,464,465,466,468,470,473,474,477,482,483,484,486],mail:[3,7,9,12,330],main:[3,6,8,12,232,238,292,316,317,384,444,454,471],mainboard:1,mainli:[362,416],maintain:[8,9,13,39,150,212,216,269,307,320,354,363,384,465,468],major:12,make:[],makefil:[3,7,9,11,12,13,14,15,16,17,18,19,188,348,362,454],makelist:12,maks:390,malloc:[3,12],manag:[5,8,12,188,232,275,309,465],manbi:429,mandadapu:200,mandatori:[8,188,215],manh:368,mani:[1,2,3,4,5,6,7,8,9,12,13,14,15,16,17,18,38,39,41,42,56,61,63,68,71,88,91,102,116,142,145,165,166,185,187,188,189,190,191,192,194,195,196,197,201,202,203,204,205,206,207,208,210,211,212,213,214,216,217,224,227,228,231,232,238,239,247,249,251,252,255,263,272,273,274,278,281,283,284,285,287,289,292,293,295,307,318,319,321,330,332,347,355,356,357,358,360,362,375,377,383,386,388,392,393,429,438,440,441,443,454,456,458,460,461,463,464,465,466,468,469,470,471,475,482,483,486],manipul:[12,41,210,232,378,419,467],manner:[2,3,6,9,11,17,41,141,161,195,196,197,198,205,210,216,221,222,225,231,235,236,251,256,257,268,269,271,286,310,311,312,315,316,317,322,324,328,332,348,356,357,361,362,384,386,393,396,407,445,451,453,456,457,458,459,461,465,470],manolopoulo:234,mantissa:3,manual:[0,1,3,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,58,63,68,71,109,112,118,143,144,146,147,148,151,152,153,154,155,157,158,164,171,172,174,175,176,177,179,180,182,183,185,188,190,192,197,206,209,216,223,226,230,234,235,236,250,251,253,254,255,256,257,258,261,264,266,267,268,269,271,279,281,284,292,293,294,295,310,311,312,322,323,327,332,333,335,336,337,338,341,343,348,357,361,362,363,364,366,367,369,370,371,372,373,374,376,377,378,380,381,382,384,385,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,410,414,415,416,418,423,424,430,439,440,441,442,443,445,447,448,449,451,465,469,470,471,474,482],manybodi:[3,7,8,9,12,141,142,355,363,364,368,377,384,387,393,395,415,419,439,441,442,443,468,482],map:[2,3,11,12,17,18,39,59,64,71,118,122,140,153,164,165,187,190,191,200,206,274,291,347,348,350,357,363,364,368,377,384,385,387,393,394,395,409,410,411,413,415,419,420,421,422,429,437,439,440,441,442,443,453,456,458,470,482],map_fil:274,mapflag:12,march:409,margin:470,mari:13,mark:[391,406,426,428],marker:280,maroon:191,maroonmpi:11,marrink:391,marsaglia:[3,228,229,235,236,287],marseil:9,martin:[274,409],martinez:201,martyna:[251,252,292,465],mashayak:17,mask:[3,273,482],mask_direct:200,mass:[],mass_matrix:200,massdelta:295,massiv:[0,190,238,275,315,322],massless:[6,236,348,378,398,402,406,477],masstot:292,master:[3,357,451,470],mat:[67,200,377,442],match:[3,6,8,9,11,12,17,38,41,56,59,71,116,148,185,191,192,210,213,216,232,251,252,269,289,293,307,314,347,348,368,392,404,409,420,421,422,440,450,454,456,457,458,461,465,470,477,482],mater:[73,363,411,419],materi:[6,7,9,59,70,124,125,168,199,200,216,227,233,249,273,279,287,315,319,325,378,384,385,386,390,394,409,410,418,421,422,425,426,427,428,451,456,470,477,481],material_fil:200,math:[],mathemat:[118,140,164,165,195,196,197,198,209,214,222,228,230,231,233,235,236,280,294,301,310,311,312,324,327,329,429,452,459,466,483],mathrm:236,mathtt:236,matlab:[],matric:[9,140,229,274,389],matrix:[3,6,9,91,163,204,214,229,274,283,347,350],matter:[6,9,12,39,57,59,71,147,206,319,358,364,380,384,386,409,424,441,443,449],mattson:[112,141],max2theta:164,max:[3,6,8,12,15,18,71,117,191,205,210,212,214,217,278,295,307,332,350,353,355,357,358,362,451,456,470,474,482],max_alpha:8,max_cell_s:383,max_group:3,max_nn:299,max_travel:300,max_vel:[298,299],max_veloc:299,maxangl:227,maxbodi:3,maxbond:[3,212],maxedg:163,maxev:[355,451,470],maxfoo:8,maxim:[314,357],maximum:[3,6,8,12,15,17,25,41,42,45,53,54,57,59,61,116,117,118,121,163,164,166,167,187,188,199,204,205,210,212,216,217,221,227,263,273,278,283,295,297,298,299,307,320,347,348,353,357,358,362,365,368,383,388,407,408,456,459,464,474,482,483],maxit:[283,355,451,470,474],maxsize_restart:8,maxwel:[17,272],maxwell50:17,maxwell52:17,maxwell53:17,maxx:419,mayb:13,mayer:[7,369,371,438],mayo:[6,7,13,25,343,392,468],mbt:172,mbyte:[12,287],mcdlt:[155,231],mcgraw:275,mdash:477,mdregion:200,mdump:[41,210],meain:6,meam:[],meam_sw_splin:411,meamf:409,mean:[1,2,3,4,6,7,8,10,11,12,17,22,34,37,38,39,41,42,44,52,54,55,56,57,59,61,63,68,71,76,77,82,84,85,87,91,103,104,105,112,113,114,115,116,117,140,141,143,144,146,147,148,151,152,153,154,155,157,158,159,165,166,168,169,171,173,181,184,185,186,187,188,190,191,192,194,195,196,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,222,225,227,228,229,230,231,233,235,236,237,241,248,251,253,254,255,256,257,263,268,269,271,273,275,277,278,279,281,287,289,290,292,294,295,296,301,304,307,309,310,311,312,314,315,318,319,321,322,323,324,325,326,327,328,329,330,334,335,336,338,340,342,347,348,350,352,353,355,356,357,358,360,362,365,369,371,372,373,375,378,382,383,384,386,389,390,392,393,396,398,399,402,409,412,413,416,417,419,421,422,423,424,439,440,441,442,443,445,448,450,451,453,454,456,457,458,459,460,461,462,463,464,465,466,467,468,470,471,473,474,477,481,482,483,484,486],meaning:[116,124,125,127,130,134,393],meaningless:[67,314],meant:[6,292,444,460],measur:[],meaur:475,mech:418,mechan:[6,8,9,11,12,17,126,142,200,231,275,286,368,386,394,400,426,428,450,454,456],mechanic:286,mechanim:122,media:190,medium:448,mediumaquamarin:191,mediumblu:191,mediumorchid:191,mediumpurpl:191,mediumseagreen:191,mediumslateblu:191,mediumspringgreen:191,mediumturquois:191,mediumvioletr:191,mee:314,meet:[3,12,166,190,191,212,213,320,461],mehl:363,meloni:39,melros:[407,408],melt1:192,melt2:192,melt3:192,melt:[4,10,213,274,368,442],mem:15,member:[168,277,368],membran:[29,272,448],memori:[1,3,5,6,7,8,9,12,15,16,17,18,39,40,60,71,191,203,206,207,228,229,287,319,345,358,362,368,413,417,422,453,456],memory_usag:8,mendelev:384,mention:[1,6,7,11,42,216,231,238,255,324,350,357,364,421,422,458,482],menu:[190,232],mep:[250,357],mer:[4,10,213],meremianin:140,merg:[3,5,456],merz:[6,171,468],mescscop:418,mesh:[1,2,3,6,7,8,10,12,40,41,42,118,134,164,200,210,238,293,303,347,348,383],meshless:9,meso:[],meso_:[],meso_cv:466,meso_rho:[],meso_t:[],mesocop:40,mesoscal:7,mesoscop:[7,99,100,101,244],mess:[3,466],messag:[],met:[8,41,116,210,332,346,348,355,357,361,445,464],metadynam:[9,13,215],metal:[3,5,7,10,40,59,71,154,165,199,200,206,207,216,217,231,233,282,283,287,323,324,326,327,329,348,350,359,363,364,368,377,384,385,386,387,393,395,409,410,411,419,420,439,441,442,443,459,473,474,476,481],meter:[359,481],methan:[282,287],methanol:4,methin:341,method:[1,3,5,6,7,8,9,11,12,13,16,17,19,38,39,40,41,56,64,87,91,110,141,185,194,195,196,200,210,215,225,235,238,242,246,249,251,274,275,282,283,284,285,287,292,295,296,314,315,316,317,322,347,348,353,354,355,357,362,363,365,368,377,378,384,386,387,409,410,411,413,419,438,440,451,453,454,456,457,459,470,477],methodolog:[6,73,141,275,347],metin:[7,9],metric:[3,10,64,459,474],metropoli:[201,227,471],mezei:87,mf1:192,mf2:192,mf3:192,mg2:164,mglob_default_function_attr:12,mgoh:415,miai:287,mic:[12,17],micel:[4,13,305],micelle2d:[],michael:[9,13,411],michel:13,micro:[3,481],microcanon:[258,259,261,262,264,266,267],microelast:418,micromet:481,micropor:227,microscal:407,microsec:481,microsecond:481,mid:[5,59,216,437],middl:[3,6,8,16,22,41,44,77,87,116,154,159,163,169,172,173,191,195,196,202,210,278,290,291,292,315,322,333,334,352,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,411,412,414,416,418,420,421,422,423,424,429,430,431,432,433,434,435,436,437,439,440,441,442,443,445,447,448,449,450,454,464,465,466,482],middlebondtors:[3,172,456],midnightblu:191,midpoint:437,mie:[],might:[3,4,6,7,8,12,14,25,71,147,225,227,229,292,454,464,482],migrat:[3,8,17,41,42,59,61,65,69,79,92,108,115,188,194,210,273,281,287,307,347,359,362,464,484,486],mikami:[6,251,252],mike:[7,9,13,15,16],mil:[9,384],mill:354,miller:292,million:[3,7,10,39,41,71,210],mimic:[6,11,42,54,236,249,278,378,388,398],mimim:[214,357],min2theta:164,min:[3,4,6,8,12,117,140,191,205,347,350,437,451,470,482],min_cap:3,min_cg:8,min_clearstor:8,min_dof:8,min_modifi:[],min_nn:299,min_popstor:8,min_post_forc:8,min_pre_forc:8,min_pushstor:8,min_setup:8,min_setup_pre_forc:8,min_step:8,min_stor:8,min_styl:[],minarea:163,mincap:422,mind:[7,228,274],mine:[12,88,155,156,194,330,479],minim:[],minima:[177,343],minimi:[357,445],minimizaiton:357,minimizi:287,minimum:[3,12,25,26,27,42,45,57,59,86,105,117,163,164,166,168,174,187,188,190,199,205,214,215,221,234,250,289,291,293,297,299,303,307,324,328,332,343,347,350,353,354,355,357,358,373,386,389,391,392,398,400,402,407,408,422,424,437,451,464,470,482,483],minlength:163,minmiz:[8,214],minn:9,minord:[3,347],mintcream:191,mintmir:[7,283,378,438],minu:[12,59,145,216,332,357,482],minut:[4,8],mirror:[61,326],misc:[],miscellan:[2,200],mise:[133,138],mishin:[363,438],mismatch:[3,6],miss:[3,5,12,168,205,227,263,287,307,397,413,473,474],mistak:[3,482],mistakenli:3,mistyp:3,mistyros:191,mitchel:[6,111,147,347,348,380,418],mitchell2011:418,mitchell2011a:418,mitur:366,mivi2:287,mix:[1,3,6,9,14,15,16,71,115,147,205,206,320,347,348,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,416,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,454,456,469,477,484],mixtur:[6,40,251,292,307,329,376,409,456],mixture_ref_t:409,mjpeg:190,mkdir:467,mkl:12,mkmk:274,mkv:190,mldivide3:3,mlpark:7,mlutipl:208,mn2:164,mn3:164,mn4:164,mo3:164,mo5:164,mo6:164,mobil:[6,105,141,143,144,146,151,158,190,292,330,331],moccasin:191,mod:[],mode:[1,3,6,9,11,12,13,14,15,16,17,18,61,66,75,88,90,93,104,106,114,116,117,142,145,160,162,163,164,188,190,191,205,208,215,216,225,229,251,275,287,296,307,345,347,359,362,378,386,453,458,463,465,474,481,482,486],model:[],model_ar_p_mors:394,modern:[12,235,237],modest:[1,360],modif:[6,13,87,409,423,443,477],modifi:[],modify_param:8,modin:200,modul:[3,9,11,12,13,215,287,454],modular:8,modulo:[3,482],modulu:[279,390,409,418,425,427],mofil:457,mol1:482,mol:[3,9,71,113,165,167,168,188,191,215,217,227,232,235,278,281,292,295,303,309,381,389,424,465,466,477,482],molchunk:[66,75,90,93,104,106,145,160,162,203],mole:[201,384,481],moleclu:[211,212,217,224],molecul:[],molecular:[0,2,3,5,6,7,8,9,12,13,39,40,53,71,108,113,115,143,144,146,148,151,152,153,154,157,158,165,166,167,168,169,177,188,189,192,200,212,215,227,234,274,275,282,286,287,291,296,318,319,348,356,365,366,368,372,383,386,393,438,456,457,458,460,461,465,466,468,474,476,477,482],molfil:[],molfrac:[217,278],molnar:296,molp:109,moltempl:[],mom:[6,91,291,483],momementum:[144,253,256,259,260,261,268],momemtum:66,moment:[3,6,40,42,82,84,85,106,113,144,158,165,186,188,235,238,241,266,278,292,305,356,381,385,456,466,477,481],momenta:[229,260,322,386],momentum:[],momon:213,monaghan:[9,432,433,435],monitor:[3,6,12,96,97,148,214,216,217,224,232,235,249,251,278,280,282,292,295,307,355,357,381,474],mono:[73,407],monodispers:[3,325,370,390,407,408],monom:[13,54,213],monoton:[3,296,318,357,470],monoval:348,mont:[6,7,9,194,201,213,227,292,314,383,438],montalenti:[451,470],month:0,moor:[17,141],more:[0,1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,58,59,61,62,63,64,65,67,68,69,70,71,72,77,78,79,80,83,86,87,88,90,92,96,97,98,99,100,101,102,103,105,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,147,148,149,151,152,153,154,156,157,158,159,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,187,188,189,190,191,192,194,195,196,197,198,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,223,224,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,264,266,267,268,269,270,271,273,274,275,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,294,295,296,297,298,299,300,301,303,307,309,310,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,341,342,343,345,347,348,350,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,413,414,415,416,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,451,452,453,454,456,457,459,460,461,462,463,464,465,466,467,468,469,470,471,473,475,477,482,483,484,485,486],morefoo:8,moreov:[211,212],morri:[],morriss:[153,269],mors:[],morse_f:440,mosel:354,mosi2:409,moskalev:140,most:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,18,19,37,39,41,55,71,108,153,163,184,188,190,191,203,205,206,207,208,210,211,212,214,231,251,252,275,280,281,282,283,292,293,320,322,330,332,342,348,354,358,360,362,364,386,389,409,420,421,422,443,451,452,453,458,465,470,474,475,482,484],mostli:[8,9,11,13,71,167,190,358,456,465,468,482,485],motiion:6,motion:[3,6,7,9,42,86,97,143,144,146,148,150,151,152,153,154,155,157,158,216,220,229,238,241,242,248,251,252,255,269,273,275,277,287,291,292,315,319,325,328,357,381,386,407,408,459,465,477],motiv:273,mous:232,mov:190,move:[],move_tri_surf:134,movement:[3,6,12,248,314,355,474],movi:[],mp4:190,mpeg:190,mpg:190,mpi4pi:11,mpi:[],mpi_allreduc:[292,454],mpi_barri:1,mpi_cart:453,mpi_cart_cr:453,mpi_cart_get:453,mpi_cart_rank:453,mpi_cart_shift:453,mpi_comm:6,mpi_comm_world:11,mpi_get_processor_nam:453,mpi_inc:12,mpi_lib:12,mpi_lmp_bigint:3,mpi_lmp_tagint:3,mpi_path:12,mpi_wtim:12,mpicc:11,mpich2:12,mpich:[12,14,15,16,17,18,362],mpicxx:[12,16,17],mpiexec:[12,14,15,16,17,18,362],mpiio:[3,188,191,458,463,486],mpirun:[6,11,12,14,15,16,17,18,19,275,346,362],mplayer:190,msd:[],msi2lmp:[],msi:13,msm:[],msmse:[118,164,293],msst:[],mtchell2011:418,mtchell2011a:418,mtd:215,mth:[8,119,191,473],mtk:[251,252,255],mtotal:356,mu_j:29,muccioli:389,much:[1,3,6,11,39,142,188,190,214,282,314,358,359,362,389,423,451,454,470,475,477,482],mui:[113,188,222,309,456],mukherje:[7,9,277],mulder:318,muller:[6,91,194,315,322,412],mult:8,multi:[],multibodi:[3,61,277],multicent:386,multicor:[1,453,469],multidimension:13,multielectron:365,multilevel:[347,348],multiphys:11,multipl:[],multipli:[3,87,91,116,173,184,195,196,204,235,238,273,279,350,355,364,456,482],multiprocessor:362,multiscal:11,multisect:[41,210],multistag:87,multitud:7,mundi:270,munich:9,murdick:368,murti:442,murtola:347,must:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,56,57,59,61,62,71,82,84,86,87,104,107,109,112,115,116,117,118,119,144,147,154,158,163,164,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,185,186,187,188,189,190,191,192,195,196,197,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,220,222,225,227,228,229,231,232,233,234,235,236,238,239,240,241,242,246,247,248,249,250,251,252,253,254,255,256,257,259,260,261,263,266,268,271,273,277,278,279,280,281,282,283,285,287,289,290,291,292,293,294,295,301,303,304,306,307,310,311,312,314,315,317,318,319,321,322,324,325,326,327,328,329,330,332,333,334,335,336,337,338,339,341,343,347,348,350,352,355,356,357,358,359,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,426,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,451,452,453,454,456,457,458,459,461,463,464,465,466,467,470,471,473,474,477,481,482,483,484,486],mutli:6,mutlipl:456,mutual:[3,350,475],mutut:465,muvt:227,mux:[113,188,190,222,309,456],muz:[113,188,222,309,456],mv2_comm_world_local_rank:12,mvapich2:[17,362],mvapich:12,mxn:[12,275],my_ga:227,my_one_wat:227,my_post_process:467,my_qeq:283,my_setup:467,my_swap_region:201,myblock:[217,278],mybox:167,mychunk1:114,mychunk2:114,mychunk:[6,66,75,90,93,104,106,145,160,162],mycmap:456,mycom:205,mydump:[188,191],myer:[5,7],myfil:[453,482],myfix:[201,471],myflux:91,myforc:[188,485],myhug:255,myke:91,mymol:[40,295,356],mympi:11,mymultipli:[454,482],myn:454,mype:91,mypi:482,mypress:246,myramp:141,myrdf:[116,208],myreg:350,myregion:330,myrigid:[83,98,278],mysocket:234,myspher:[191,328],mystr:332,mystress:91,mytemp:[2,102,143,144,146,148,149,151,153,158,246,332,346,361,473,483],myz:456,n_dephas:451,n_element:189,n_f:[282,287],n_hbond:392,n_ij:390,n_ion:319,n_k:228,na1:164,nabla:319,nacl:[4,6,409],nacl_cs_x0:6,nakano:[283,285,357],namd:[7,9,188,232],name1:[159,216],name2:[159,216],name:[0,1,2,3,5,6,8,9,11,12,13,33,42,50,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,178,188,189,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,247,248,249,250,253,254,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,274,275,276,277,278,279,280,281,282,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,320,321,322,323,324,325,326,327,328,329,330,331,332,339,345,346,348,349,351,356,357,361,363,364,368,371,384,385,387,389,390,393,394,395,397,409,410,411,415,419,421,422,429,439,441,442,443,444,446,453,454,456,457,458,459,463,466,469,471,472,474,477,482,483,484,485,486],namespac:[6,8,12],nan:3,nangl:[3,456],nangletyp:[356,456,466],nano:[292,481],nanoindent:70,nanolett:292,nanomet:[188,191,481],nanoparticl:[210,292],nanosec:481,nanosecond:481,nappli:225,narea:3,narrow:[6,185],narulkar:[441,443],nasa:7,nasr:274,natdef:3,nation:[0,7,12,111,418],nativ:[1,6,7,12,16,17,188,192,457],natoli:[9,19],natom1:115,natom2:115,natom:[6,11,39,356,454,456,473,474,482],nattempt:278,natur:[6,9,140,216,251,273,287,325,384,386,387,409,419,453,482],navajowhit:191,navi:[191,384],navier:238,nb3:164,nb3b:[],nb3bharmon:415,nb5:164,nbin:[116,205,206,207,315,322],nbodi:[241,292],nbond:[3,113,456],nbondtyp:[191,356,456,466],nbot:368,nbounc:307,nbrhood_cutoff:422,nbtype:115,nbuild:474,ncall:225,nchar:191,nchunk:[3,6,66,71,75,90,93,104,106,114,145,160,162,203],ncoeff:429,ncount:[203,204],nd3:164,ndanger:474,nden:[6,91],ndihedr:[3,456],ndihedraltyp:[356,456],ndim:206,ndirango:292,ndof:[251,255],ndoubl:456,ndp:477,ndx:331,neal:292,nearbi:[7,62,166,217,248,284,307,328,358,364,407,408,438,448,477],nearest:[3,70,71,73,163,166,238,250,273,314,328,347,397,409,440,482],nearli:[6,18,54,59,210,235,307,386,413,451,454,460,468],neb:[],neb_combin:357,neb_fin:357,neb_log:470,neb_step:470,neb_styl:470,necessari:[6,9,11,12,13,15,17,33,61,87,173,178,184,192,210,214,215,227,228,286,307,320,330,347,362,406,413,456,457,461,464,465,466,470,477,485],necessarili:[12,287,314,335,336,338,350,413,483],necessit:281,need:[1,2,3,5,6,7,8,9,11,12,13,14,15,16,17,18,19,33,37,38,39,40,41,42,50,54,55,56,58,61,63,64,67,70,72,73,77,82,91,102,104,109,112,128,140,141,143,144,145,146,148,151,152,153,154,155,157,158,165,167,171,173,178,184,185,187,188,189,190,191,195,196,197,198,200,201,203,204,205,206,207,208,210,211,212,214,215,216,220,222,225,226,227,231,232,234,235,236,238,244,245,251,263,274,278,279,281,287,291,292,296,303,307,315,318,319,321,322,323,324,330,339,342,347,348,356,357,358,359,362,363,364,365,366,368,369,370,371,372,373,374,376,377,378,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,429,430,431,432,433,434,435,436,437,439,440,441,442,443,445,447,448,451,454,456,457,458,459,461,463,464,466,468,469,470,477,482,484,485,486],needless:[6,358],neeed:9,neelov:348,neg:[3,6,12,27,46,65,69,89,102,108,115,140,141,167,169,174,176,185,190,214,216,217,228,255,273,296,304,318,322,324,329,347,354,387,401,409,438,456,459,475],neglect:[392,408],neglig:[11,87,251,439],neigh:[2,3,12,15,362],neigh_modifi:[],neighbor:[],neighborhood:[26,122,429],neighbour:236,neighobr:[6,378,398,402],neither:[2,3,12,41,63,200,213,216,217,364,370,386,407,408,461],nelem:429,nelement:[363,384],nemd:[],nest:[2,332,344,361,482],net:[3,6,11,39,86,88,146,157,231,273,283,292,408,422],netpbm:190,network:[12,188,211,212,232,453],neumann:347,neutral:[3,88,227,347,378,398],never:[7,12,63,71,194,204,214,227,251,273,295,309,320,324,327,329,347,358,384,409,429,453,456,470,473,482],neveri:[3,8,71,197,202,203,204,205,206,207,208,211,212,213,238,239,274,283,284,285,288,289,293,315,321,322,357,461,470],newatom:217,newer:[12,203,409,482],newfil:[344,346],newli:[217,477,483],newlin:191,newn:292,newt:152,newtemp:[63,102],newtion:[368,419],newton:[],newtonian:228,newtyp:[3,212],next:[],neyt:314,nfile:[3,38,56,185,188,191,440,458,463,486],nfirst:461,nfirt:461,nfreak:293,nfreq:[39,71,202,203,204,205,206,207,208,210,289,293,461],nghost:[3,12],ngp:105,ngpu:362,nguyen:[15,368],nharmon:[],nhc:275,nht:292,ni2:164,ni3:164,ni_000:[118,293],nialh_jea:384,nialhjea:[375,393],nice:[6,8],nickla:411,nimprop:[3,456],nimpropertyp:[356,456],nine:[127,134,387],ninteg:456,nissila:238,nist:[363,384,481],niter:[41,210],nitrid:378,niu3:[375,384,393],nkb:282,nlast:461,nline:356,nlocal:[3,8,11,12,225],nlog:348,nmax:42,nmin:42,nmol:456,nmpimd:275,nn2:409,nneighmaxdef:3,no_affin:[16,362],no_gradient_correct:428,no_histori:6,no_velocity_gradi:428,noced:355,nocheck:397,nocit:12,nocoeff:484,nodal:[6,38,56,185,200,319,440],node:[1,3,12,14,15,16,17,18,41,118,122,164,189,210,232,238,319,362,397,453,469],node_area:238,node_group:200,nodeless:386,nodeset:200,nodeset_to_elementset:200,nof:185,noforc:[],nois:[6,228,229,235,236,237,238,282,287,292,311,319],nomenclatur:[6,71,206,350],nomin:[188,251],non:[],nonbond:[4,12,415,438],none:[],noneq:229,nonequilibrium:[9,316,317,386],nonetheless:235,nongauss:[],nongaussian:105,nonlinear:[],nonloc:[418,466],nonperiod:3,nonzero:3,noordhoek:377,nopreliminari:185,nor:[2,3,41,59,200,297,298,299,300,301,303,377,425,426,427,428,456,459],nord:[419,441,443],norder:453,nordlund:[419,441,443],norm:[6,12,63,117,194,203,206,207,293,298,299,355,357,437,473,474,481],normal:[3,6,9,10,11,12,39,41,58,61,63,67,70,71,73,88,91,102,112,116,117,150,153,165,166,167,185,191,194,203,204,205,206,207,210,214,216,217,226,227,231,235,236,248,251,263,273,275,276,283,287,289,290,296,307,308,310,311,312,319,324,325,328,329,333,335,336,338,352,354,355,357,362,376,377,389,390,393,437,449,450,451,454,456,458,459,461,462,466,470,473,474,475,477,481,482,485],norman:319,nornal:3,nose:[6,7,8,155,194,220,235,236,251,252,253,254,255,256,257,268,269,270,271,275,279,287,292,310,311,312,317,382,477],noskov:[444,477],noslip:[307,329],nosync:475,notabl:[5,39],notat:[6,61,63,70,140,159,194,248,251,384,482],note:[1,2,3,6,7,8,11,12,13,14,15,16,17,18,22,24,25,28,29,32,33,35,36,37,38,39,40,41,42,44,47,54,55,56,58,59,60,61,62,63,65,66,68,69,71,73,75,79,87,89,90,91,92,93,97,104,105,106,108,110,112,113,114,115,117,118,119,140,141,145,147,148,149,153,155,159,160,162,163,164,165,166,167,168,169,171,173,176,178,182,184,185,188,189,190,191,192,194,195,196,197,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,220,221,222,224,225,227,229,230,231,233,234,235,236,237,238,246,247,248,249,251,253,254,255,256,257,263,268,269,271,275,277,278,279,281,282,283,285,290,291,292,293,296,304,305,307,310,311,312,315,318,319,321,322,323,324,325,328,329,330,332,333,334,335,336,338,342,346,347,348,350,352,355,356,357,358,362,363,364,368,369,371,372,373,375,376,378,379,381,382,383,384,387,389,390,391,392,393,396,397,398,400,402,406,407,408,409,410,411,412,413,415,419,421,422,423,424,426,428,429,430,433,437,439,440,441,443,445,448,449,451,453,454,456,457,458,459,460,461,463,464,466,468,470,471,473,474,477,481,482,483,485,486],noth:[201,234,349,362,454,467],notic:[0,6,7,8,12,317,319,477],noutcol:8,noutput:274,noutrow:8,novemb:409,novik:13,novint:232,now:[2,3,6,9,11,12,13,46,61,62,71,188,195,196,212,228,232,233,292,325,328,348,350,384,386,390,421,422,430,452,457,477,483],nowait:232,nozforc:347,np3:164,np4:164,np6:164,npair:[116,204],nparticl:[3,40,42,367],npartit:474,npernod:[14,15,16,17,18,362],nph:[],nphi:[16,362],nphug:[],npoli:278,nproc:[3,188],npt:[],npt_aspher:[253,257,268],npt_sphere:[254,271],nrecomput:383,nrepeat:[71,202,203,204,205,206,207,208,289,293,461],nreset:[214,251,252,255],nreset_ref:214,nrho:[363,384],nrl:384,nsampl:383,nsbmax_most:3,nsec:476,nskip:[119,461],nsq:[3,359,417],nstart:[119,204,205,208,293,456,461],nstat:273,nstep:[3,13,214,251,330,434,454,457],nsteplast:454,nstop:[119,461],nswap:[315,322],ntabl:[38,56,185,440],nterm:296,nth:[12,77,116,117,188,191,205,216,461,471],ntheta:368,nthread:[3,362],ntild:274,ntpc:362,ntptask:362,ntype1:115,ntype2:115,ntype:[3,140,165,188,191,283,285,386,392,419,456,466],nuclear:[9,96,97,151,229,252,282,287,356,386,449],nuclei:[9,96,97,149,151,156,237,252,262,270,313,365,386,456],nucleu:[96,97,283,443,477],nudg:[4,6,7,194,250,354,357],nulcear:9,num:2,num_of_collis:3,numa:[1,3,12,362,453],numactl:16,number:[1,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,22,27,38,39,40,41,42,44,56,63,64,65,66,68,69,70,71,73,75,76,77,78,79,80,87,90,91,92,93,102,104,106,108,111,112,113,114,115,116,117,118,119,129,135,140,143,144,145,146,147,148,150,151,152,153,154,155,157,158,159,160,162,163,164,165,166,167,168,169,173,174,184,185,187,188,189,190,191,192,194,195,196,199,201,203,204,205,206,207,208,210,211,212,213,215,216,217,224,225,227,228,229,231,232,233,234,235,236,237,238,241,248,251,252,255,263,273,274,275,277,278,281,282,283,287,289,292,295,299,307,308,309,311,314,315,316,317,319,320,321,322,324,326,327,329,330,332,334,345,347,348,350,352,353,355,356,357,358,359,362,363,364,368,370,375,377,382,383,384,385,386,387,392,393,394,395,396,409,410,411,413,415,419,420,421,422,423,426,428,429,437,439,440,441,442,443,445,446,449,450,451,453,454,456,457,458,459,460,462,463,464,465,466,468,470,471,473,474,475,477,481,482,483,486],number_of_a:3,number_of_b:3,number_of_typ:[],numbond:3,numer:[1,2,3,6,9,11,12,22,38,41,42,44,56,71,77,87,116,159,169,173,185,188,190,191,195,196,197,199,200,203,206,208,222,228,231,235,248,251,275,292,295,319,324,326,327,329,330,334,352,355,356,375,381,393,409,413,421,422,428,440,449,450,454,455,456,463,466,472,473,474,482],numpi:11,nvalu:[203,206,207,208,454],nvaluelast:454,nvc_get_devic:15,nvcc:[1,12,17],nve:[],nve_aspher:[253,256,268],nve_spher:[254,257,271],nvida:17,nvidia:[1,3,9,12,14,15,17,362,469],nvt1:477,nvt2:477,nvt:[],nvt_aspher:[253,256,271],nvt_sphere:[254,257],nvtfe:200,nwait:274,nwchem:7,nxnode:319,o_cor:147,o_shel:147,oascr:7,obei:[3,216,350,451],ober:7,obj_shared_foo:12,obj_target:12,object:[6,8,11,12,15,40,42,190,214,232,238,241,278,296,303,355,454,459],observ:[251,282,310,311,314,315,322],obsolet:13,obstacl:[4,233],obtain:[1,3,9,12,29,73,87,163,192,196,226,229,238,255,274,275,314,347,364,381,409,413,420,441,443,465],obviou:[12,449,482],obvious:[190,471,482],occ:388,occasion:[3,451],occlus:190,occup:[3,163,362,388],occur:[1,3,6,9,11,12,14,17,39,57,59,61,62,71,86,105,163,166,168,185,188,191,201,210,213,214,216,227,230,233,241,249,263,283,292,307,316,329,330,332,347,358,362,383,386,406,422,451,453,454,461,465,470,473,482],occurr:[341,456,470,482],octahedr:25,octant:453,odd:[41,191,210,251,292,310,311,319,471],off:[1,3,6,12,14,15,16,17,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,37,38,39,40,43,44,45,46,47,48,49,50,51,53,54,55,56,59,61,65,69,71,107,108,109,112,113,115,140,141,143,148,152,163,164,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,188,190,191,194,197,201,208,209,212,213,216,223,226,227,228,230,232,235,236,241,251,253,254,255,256,257,258,263,266,268,269,271,277,279,280,284,292,294,295,307,310,312,322,323,324,327,328,333,334,335,336,337,338,339,341,342,343,347,348,355,357,358,360,362,363,364,366,369,370,371,372,373,374,376,377,378,380,381,382,384,385,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,408,409,410,413,414,415,416,418,422,423,424,426,428,430,437,438,439,440,441,442,443,445,447,448,449,451,452,453,456,458,463,465,468,469,470,475,479,481,482,484,486],offend:[3,454],offer:[6,14,18,168,354,378,451,465],offic:7,offload:[1,12,16,17,232,362],offset:[3,6,57,165,190,216,217,227,278,356,378,398,402,438,456],offsit:8,often:[1,3,6,7,12,13,14,15,16,17,18,37,55,71,159,184,190,197,205,208,210,214,225,232,251,275,293,342,350,354,355,357,358,359,362,377,382,398,441,443,451,470,477,481],ohio:411,old:[3,6,9,194,214,217,251,409,421,430,457,460,464,467,481,484],older:[3,5,12,13,17,191,203,214,251,430,482],oldlac:191,oleinik:368,olfason:[6,25,343,392,468],oliv:191,olivedrab:191,ollila:[238,240,241,242],olmst:[200,273],omega0:343,omega:[],omega_dot:251,omega_ijk:443,omega_ik:441,omegai:[113,188,309],omegax:[113,188,309],omegaz:[113,188,309],omgea:6,omiss:[0,7],omit:[185,191,326,372,381,402],omp:[],omp_num_thread:[3,16,18,362],omp_proc_bind:17,ompi_comm_world_local_rank:12,on_the_fli:200,onc:[0,1,2,3,6,11,12,16,40,41,59,60,63,71,91,104,171,189,190,191,194,195,196,210,211,212,217,225,227,229,236,274,281,292,307,315,320,322,330,353,356,357,358,389,391,393,394,419,423,453,454,463,470,473,477,482],onelevel:453,onewai:[],ongo:232,oniom:[9,286],onli:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,59,60,61,63,64,65,66,67,68,69,70,71,72,73,75,78,79,80,83,86,87,88,90,92,93,96,97,98,99,100,101,102,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,148,149,151,152,153,155,156,157,158,159,160,162,163,164,165,168,169,171,172,174,175,176,177,178,179,180,182,183,184,185,188,189,190,191,192,194,195,196,197,198,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,220,222,223,224,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,264,266,267,268,269,270,271,272,273,274,275,276,277,278,279,281,282,283,284,285,286,287,288,289,292,293,294,295,296,297,298,299,300,301,303,307,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,335,336,337,338,339,341,342,343,345,347,348,350,352,355,356,357,358,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,453,454,456,457,458,460,461,463,464,465,466,467,468,470,471,472,473,474,475,477,482,483,484],only_group:163,onn:465,onset:[282,341],ontario:9,onto:[140,167,213,217,238,437],onward:2,open:[],opencl:[1,3,7,15,362],opengl:6,openkim:9,openmp:[1,3,7,9,12,16,17,18,345,362,469],openmpi:[12,14,15,16,17,18,362],opensourc:7,oper:[],opl:[],oppos:[6,39,186,188,291,326,348,356,456],opposit:[6,70,199,235,242,273,292,322,357,378,406,444,454],opt:[],optic:144,optim:[],option:[],optionn:17,orang:[2,190,191],orbit:[283,285,368,378,386,438],orchid:191,order:[1,2,3,6,9,11,12,14,16,27,38,39,41,56,59,65,69,71,79,87,89,90,92,93,108,112,115,130,140,141,143,144,145,146,147,148,151,152,153,154,155,157,158,169,174,184,185,188,190,191,194,197,202,204,205,206,207,208,209,211,212,213,214,215,220,222,227,229,231,232,234,238,239,241,249,251,273,281,282,286,289,290,291,292,293,294,295,296,301,303,308,314,318,319,320,321,331,332,333,335,336,338,341,342,347,356,357,363,364,365,368,377,383,384,386,387,389,390,393,395,398,406,409,421,422,423,438,439,440,441,442,443,444,446,451,453,454,456,457,461,463,465,466,470,473,477,482,486],orderomg:3,ordinari:[111,392,418],org:[6,7,11,12,13,14,420],organ:[0,3,6,7,8,377],organis:[426,428],organometal:25,orient:[],orienti:42,origid:203,origin:[3,6,7,9,12,71,81,103,104,114,118,161,165,167,187,190,191,194,195,196,203,206,207,211,212,216,220,236,248,251,269,275,278,288,292,293,300,306,317,344,346,347,350,354,363,364,366,368,378,381,382,383,384,392,395,409,418,421,422,441,443,444,445,453,456,457,458,459,460,461,481,484],origin_i:207,origin_x:207,origin_z:207,ornl:[7,9,15],orsi:29,ortho:[3,59,167,456],orthogon:[],orthograph:190,orthong:59,orthongon:[59,292],orthonorm:217,orthorhomb:282,os4:164,oscil:[6,9,150,212,216,219,220,236,248,249,251,282,287,292,324,325,327,329,356,365,444,477,482],oscillatori:[248,300],oserror:11,other:[],otherwis:[1,3,12,14,16,17,18,37,39,55,71,102,111,118,144,145,158,166,184,191,192,201,203,211,212,216,225,227,229,236,251,292,342,343,355,362,370,393,397,407,408,419,446,451,454,456,457,477,482],otyp:[378,398,402,406],ouml:477,our:[5,6,7,8,13,238,295,413,441,443,477],out:[1,2,3,6,7,8,11,12,13,14,18,19,21,41,64,66,71,75,90,91,93,94,97,103,104,105,106,107,114,115,143,144,145,146,148,149,151,152,153,154,155,157,158,160,162,168,172,188,190,191,192,194,206,210,211,212,215,223,226,227,233,235,238,243,263,274,276,277,278,287,288,289,292,304,319,328,330,331,332,333,335,338,345,346,350,353,357,361,386,393,438,450,451,453,454,456,459,460,461,463,464,465,467,470,472,473,474,478,480,482,483,484,485,486],outcom:[292,483],outer2:[373,391],outer:[3,8,16,221,233,332,346,353,355,361,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,379,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,416,418,420,421,422,423,424,429,430,431,432,433,434,435,436,437,439,440,441,442,443,445,446,447,448,449,451,464,465,470,476,482],outer_distance_cutoff:392,outermost:[38,56,195,196,248,251,358,440,465],outfil:[13,453],outlin:[6,190],outmost:232,outpt:[],output:[],output_frequ:200,outputss:127,outsid:[3,57,59,71,155,165,187,188,189,190,191,192,205,206,217,227,233,292,293,307,312,313,326,327,329,330,345,357,369,371,378,386,398,400,416,424,454,456,457,459,466,473,483],outuput:203,outut:6,outward:[163,324,328,329,456,465],over:[1,3,5,6,7,9,12,16,18,27,39,41,42,55,60,65,68,69,71,79,80,87,88,89,90,92,101,103,105,108,115,116,125,126,132,137,140,141,145,148,151,159,161,174,185,190,192,194,195,196,202,203,204,205,206,207,208,209,210,211,212,216,217,225,228,229,233,235,236,237,241,249,250,251,252,253,254,256,257,268,269,270,271,273,278,279,282,289,290,291,292,293,296,304,307,310,311,312,313,315,318,321,322,324,326,327,328,329,330,333,346,349,357,358,359,362,376,382,384,385,386,387,392,407,409,419,429,430,438,439,441,442,443,452,453,454,459,461,462,464,465,470,473,474,482,483],overal:[6,18,25,59,159,214,220,251,252,275,295,307,332,353,386,392,393,429],overalap:292,overcom:[263,307],overflow:[3,356,358],overhead:[6,11,19,41,191,203,206,207,210,224,281,358,359,459,475],overkil:292,overlai:[],overlaid:7,overlap:[3,13,16,62,76,165,168,185,191,199,202,203,205,206,207,208,217,221,263,278,283,289,292,293,307,325,329,347,350,353,355,356,362,382,386,390,393,396,406,425,427,430,445,456,459,465],overload:1,overrid:[3,12,14,17,22,44,71,151,165,173,190,191,195,196,214,221,246,251,334,347,358,375,392,393,409,413,421,453,454,466,468,473,482],overridden:[6,165,190,255,292,407,413,430,438,464,482,484],overview:[],overwrit:[11,12,22,44,173,191,203,204,205,206,207,208,293,334,345,351,375,409,454,457],overwritten:[280,318,345,392,393,451,452,457],own:[3,4,6,7,8,11,12,13,15,17,39,41,59,61,63,65,66,69,71,73,75,79,90,92,93,104,106,113,114,115,117,119,145,148,160,162,163,188,191,194,200,202,203,204,205,206,207,208,210,213,214,216,225,228,229,235,236,238,246,249,251,253,254,255,256,257,268,269,271,275,279,287,292,293,310,311,312,321,347,357,362,364,368,377,385,395,419,421,422,439,441,442,443,453,466,473,483],oxford:[29,87,381],oxid:[377,378],oxygen:[6,40,224,378,398,402,456],oxygen_c:147,p_e:319,p_ik:419,p_pi:368,pacakg:[3,4,12,40,362],pack:[5,8,67,325,362,368,409],pack_bord:8,pack_border_bodi:8,pack_border_hybrid:8,pack_border_vel:8,pack_comm:8,pack_comm_bodi:8,pack_comm_hybrid:8,pack_comm_vel:8,pack_exchang:8,pack_restart:8,pack_revers:8,pack_reverse_comm:8,pack_reverse_hybrid:8,packaag:362,packag:[],packakg:15,packet:[7,9,40,190,365,386],pad:[3,188,190,191,275,482],padua:[9,13],page:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,22,37,40,42,44,55,57,59,63,66,68,75,87,90,93,102,104,105,106,107,109,112,114,117,119,141,144,145,158,160,162,165,166,167,173,184,188,189,190,191,192,194,195,196,201,202,203,204,205,206,207,208,217,227,234,235,236,246,251,252,256,257,261,268,269,270,271,278,281,292,304,307,310,311,312,321,325,328,330,332,334,342,346,355,356,357,358,362,363,364,367,375,377,378,384,385,387,392,393,395,396,409,410,411,413,415,419,420,429,438,439,441,443,445,454,456,457,458,459,461,464,465,466,468,473,474,482,483,484,485],pai:[15,18],pair:[],pair_:[87,195,196],pair_airebo:395,pair_charmm:406,pair_class:8,pair_coeff:[],pair_eam:363,pair_eff:151,pair_foo:8,pair_hybrid:[393,444],pair_interact:200,pair_list:397,pair_lj:406,pair_lj_cut:8,pair_lj_soft_coul_soft:87,pair_modifi:[],pair_sph:[431,432,433,434,435,436],pair_styl:[],pair_tally_callback:8,pair_writ:[],paircoeff:3,pairfoo:8,pairij:[3,456],pairkim:3,pairstyl:8,pairwis:[],palegoldenrod:191,palegreen:191,paleturquois:191,palevioletr:191,pan:190,panagiotopoulo:[379,388],pandit:[9,285,422],papaconstantopoulo:363,papayawhip:191,paper:[3,6,7,8,9,13,39,40,64,140,153,159,177,235,238,242,250,277,283,285,292,307,315,319,322,347,354,357,364,372,378,390,392,395,400,402,418,421,422,441,443,451,470],paradyn:5,paraemt:423,paragraph:[71,153,324,350,457],parallel:[],parallelepip:[6,167,350,456,459],parallelipip:[167,274],paralleliz:277,param:[3,283,285,453,459],paramet:[],parameter:[118,164,364,368,377,378,384,385,386,387,395,409,410,411,419,421,422,439,441,442,443],parameter_fil:200,parameterizaion:378,parametr:[6,9,36,385,420,424],paramt:[105,283,326,423],paramter:377,paratem:406,paraview:293,parent:[3,8,330],parenthes:[38,56,185,390,440,482],parenthesi:[2,203,332,482],parinello:[6,7],pariticl:210,paritlc:3,park:[3,7,9,200,296,411,418],parrinello1981:214,parrinello:[214,229,249,251,252,282,311],pars:[],parser:[12,482],part:[0,1,2,3,6,7,8,9,11,12,17,20,21,23,24,25,26,27,28,29,30,31,32,35,36,37,38,40,41,43,45,46,47,48,49,51,53,54,55,56,64,67,70,71,72,78,80,83,96,97,98,99,100,101,105,107,108,109,111,112,115,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,147,149,151,152,156,157,159,163,168,171,172,174,175,176,177,179,180,182,183,184,185,188,189,191,192,194,197,198,199,201,207,209,210,211,212,213,214,215,216,217,219,222,223,224,225,226,227,228,229,230,232,233,234,235,236,237,238,239,240,241,242,244,245,246,249,251,252,253,254,255,256,257,258,259,260,261,262,264,266,267,268,269,270,271,273,274,275,277,278,282,283,284,285,286,287,288,289,291,292,294,295,296,297,298,299,300,301,303,304,306,307,310,312,313,314,315,316,317,318,319,320,322,323,324,325,326,327,328,330,331,332,333,335,336,337,338,341,342,343,347,348,355,356,357,358,362,363,364,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,414,415,416,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,453,454,456,457,458,459,463,464,465,468,474,482,486],partai:[9,420],parti:9,partial:[],partic:6,particip:[212,367,396,445],particl:[],particleenergi:3,particleviri:3,particular:[1,3,6,8,10,12,16,40,63,65,69,70,71,79,92,108,113,115,116,140,165,187,188,194,199,206,210,213,228,233,234,238,248,251,273,278,291,292,295,314,325,330,333,348,350,353,356,362,367,368,369,371,373,374,376,380,385,386,389,391,393,398,402,406,415,416,423,424,438,439,441,442,443,451,453,456,457,458,463,464,466,474,482,483,485,486],particularli:[6,7,9,12,15,16,25,39,190,214,292,348,386],partilc:307,partit:[],partitoin:62,partner:[3,7,61,211,212,213,236,307,322,444,466,471,477],pascal:[9,13,481],pass:[6,7,8,11,66,74,75,81,89,90,93,103,104,105,106,160,188,191,192,214,215,225,227,248,249,251,281,307,324,346,358,362,393,421,437,454,456,457,461,467,482,485],passphras:12,past:[],patch:[0,12],patchi:292,path:[3,6,7,11,12,13,15,192,234,250,275,296,307,314,319,357,363,364,368,375,384,385,387,395,409,410,411,415,419,420,421,429,439,441,443,457],patient:12,patom1:115,patom2:115,patrick:442,pattern:[3,7,12,62,73,458],pattnaik:292,paul:[0,7,13,235,237],pauli:[9,386],paus:464,paves:275,payn:[140,420,429],pb2:164,pb4:164,pbc:[324,365],pchain:[251,252,255,292],pcie:1,pd2:164,pd4:164,pdamp:[251,252,255,279,292],pdb:[6,13,192],pdebuyl:9,pdf:[0,8,9,13,17,40,99,100,101,111,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,215,234,244,245,297,298,299,300,303,418,431,432,433,434,435,436,466],pdim:322,pdlammp:[78,80,418],pdlammps_ep:[111,418],pdlammps_v:418,pe_eta:251,pe_etap:251,pe_omega:251,pe_strain:251,peachei:13,peachpuff:191,peak:388,pearlman:87,peculiar:12,pedersen:348,peform:[39,284],penalti:[14,421,422],pencil:[6,71,153,206],pend:3,penetr:[42,120,425,427,466],penetret:40,peng:164,penn:13,pentium:10,peopl:[7,8,9,12],peptid:[4,9,215],per:[],peratom:[3,110,141],perceiv:190,percent:[3,12,16,214,362,439],percentag:[1,12,214,251,278,279,292],percol:212,perfect:[6,41,70,73,210,273,357],perfectli:[41,210,457],perfom:[6,357],perform:[],performac:1,pergamon:[409,443,449],perhap:350,peri:[],peridyma:78,peridynam:[3,4,6,7,9,40,63,78,80,111,418,438,466],perimitt:379,period:[],perioid:324,perl:[6,13],perm0:481,perman:[3,39,54,71,169,211,212,232,291,330,362,392,460,468],permeabl:272,permiss:[212,454],permit:[6,238],permitt:[379,443,448,449],permut:[12,385,439,441,443],perpendicular:[6,144,190,216,233,243,248,250,273,276,300,324,325,354,456],perram:[348,389],persepct:190,persist:[3,8,71,225,292,362,453,454,462,482],person:9,persp:[3,190],perspect:190,pertain:[375,438],perturb:[9,13,70,87,247,290,324,327,329,461],peru:191,peskin:238,pessimist:348,petersen:[307,348],pettifor:[368,438],pettifor_1:368,pettifor_2:368,pettifor_3:368,pfactor:190,pforc:454,phantom:232,pharmaceut:7,phase:[3,12,16,251,314,322,368,398,442,453],phd:420,phenol:477,phenomena:386,phi0:[183,291],phi1:172,phi2:[172,385,439],phi3:[172,385,439],phi:[1,3,4,7,9,12,16,17,79,140,184,185,190,230,274,291,336,362,363,368,384,387,409,410,411,469],phi_ij:[368,387,419],philadelphia:9,phillip:[236,382,477],phillpot:[284,377,378],philosoph:384,philosophi:[6,7,234],phonon:[],phophor:429,phosphid:429,phy:[6,7,13,20,21,25,39,43,45,46,64,70,73,87,88,110,112,140,141,147,153,171,172,182,189,201,214,215,220,228,229,234,235,236,237,238,249,250,251,252,255,269,270,274,275,279,282,284,287,292,295,296,307,310,311,314,315,316,317,319,322,324,333,341,343,347,348,354,357,364,368,369,373,374,376,377,378,379,380,381,382,384,385,386,388,389,390,391,392,395,398,400,402,403,406,407,408,409,411,412,413,416,418,419,423,429,437,439,440,441,442,443,444,451,465,468,470,477],physic:[3,6,9,12,14,16,17,18,40,53,59,120,147,159,200,216,229,235,237,238,240,241,242,249,274,283,285,318,319,348,350,357,362,364,366,372,376,384,392,393,420,421,422,425,432,433,435,436,451,453,465,466,471,481],physica:[407,408],physik:[7,9],pic:9,picki:8,picocoulomb:481,picogram:481,picosecond:[191,216,474,481],picosend:386,pictur:7,piec:[3,11,140,191,251,463,486],pierr:9,pieter:13,pimd:[],pin:16,pink:191,pipe:[6,188,190],pipelin:[3,6],pisarev:319,pishevar:382,piston:[],pitera:6,pixel:190,pizza:[4,6,7,11,13,41,188,190,210],pjintv:13,pka:319,place:[3,6,7,9,11,12,33,41,50,71,87,159,165,169,178,185,188,190,191,193,194,195,196,212,213,216,227,228,229,231,234,235,236,237,239,241,242,251,256,257,268,271,278,281,290,292,310,311,312,319,324,327,329,346,375,392,438,445,453,454,457,464,466,474,482],placehold:[33,178,363,364,377,384,387,394,395,409,410,411,415,419,421,422,429,437,439,441,442,443],placement:[350,398],plai:[190,314],plain:[9,406,454],plan:[3,5,6,16,17,167,456],planar:[6,40,42,233,273,325,341,343],planck:[227,275],plane:[3,6,9,41,42,57,59,67,71,190,194,200,206,210,230,233,243,273,276,286,304,306,319,325,333,335,336,337,338,343,350,408,445,459,466],planeforc:[],plasma:[9,88,252,319,386],plastic:[],plastic_strain:121,plastic_strain_r:124,platform:[1,3,7,9,12,13,15,17,188,190,192,458,463,486],plath:[6,91,194,315,322],player:190,pleas:[0,3,7,11,12,13,200,229,238,242,274,277,288,314,330,385,387,418,426,428],plen:365,plimpton:[0,5,7,70,112,141,213,273,307,390,418],plo:29,plog:[3,12,465],ploop:[251,252,255],plot:[7,11,13,282,404,406,440,446],plu:[3,11,12,39,59,68,96,168,191,209,214,216,217,255,292,359,386],plug:9,plugin:[9,13,192,457],plum:191,pm3:164,pmb:[],pme:348,pmf:[215,296,304],png:[3,12,188,190],pni:190,poariz:6,poem:[],point1:456,point2:456,point3:456,point:[],point_data:293,pointer:[3,7,8,11,225,454],pois:481,poiseuil:[4,197,230],poisson:[59,216,348,390],poisson_solv:200,polak:354,polar:[6,7,140,147,164,200,219,377,378,398,444,477],polar_off:377,polar_on:377,polariz:[],poli:[],pollock:[7,348],polya:330,polybond:13,polychain:292,polydispers:[3,370,376,390,407,408,438,448],polygon:[6,163],polym:[],polymer:7,polymorph:[],polynomi:[9,38,56,185,384,404,413,433,440],polytechn:277,poor:[16,17,41,210,269,270,295,362,404],poorli:[354,355],pop:[3,8],popen:12,popul:[12,287,350,383,456],popular:[12,188,385],pore:304,poros:168,porou:[238,241],port:[232,234],portabl:[7,9,12,188,189,215,421,458],portion:[1,3,9,11,12,15,16,41,54,71,88,91,107,108,110,113,141,142,155,188,191,202,203,205,206,207,208,210,214,224,238,251,253,254,256,257,284,289,290,292,293,332,346,358,362,369,371,372,373,374,378,379,381,382,386,388,389,391,392,398,402,406,416,423,424,443,446,455,456,461,465,466,475,482],poschel:390,posfreq:289,posit:[3,6,14,27,39,40,41,42,46,57,59,70,71,81,89,90,103,104,108,117,118,122,140,141,148,163,164,165,167,168,169,174,176,185,187,189,190,191,194,195,197,199,201,202,203,205,206,207,210,211,212,213,214,215,216,217,220,222,227,228,229,230,232,233,235,236,237,238,240,241,244,245,248,249,251,252,253,254,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,273,274,275,277,278,279,282,283,287,289,290,292,295,296,300,303,304,306,307,309,310,311,312,314,316,317,318,319,322,324,325,326,327,328,329,330,333,347,350,357,364,365,367,370,382,383,386,388,396,401,422,437,440,445,451,456,459,466,477,482,483],posix:232,posix_memalign:12,possibl:[1,3,6,8,9,11,12,15,38,40,41,55,59,63,70,71,87,113,115,140,141,144,158,187,188,189,191,194,196,200,201,206,210,211,212,213,217,219,229,236,273,286,287,289,292,303,307,309,319,320,337,346,348,355,358,359,362,383,392,409,422,426,428,440,454,460,469,470,471,474,477,482,483,485],post:[],post_forc:8,post_force_integr:8,post_force_respa:8,post_integrate_respa:8,postit:[206,207,263],postiv:86,postma:[279,310],postprocess:13,pot:[390,422],potentail:387,potenti:[],potentiel:406,potetni:393,potpourri:9,pour:[],pourtoi:314,pow:216,powderblu:191,power7:17,power8:17,power:[3,9,11,105,140,191,287,347,362,368,454],pparam:[87,195,196],ppm:[12,188,190],ppn:[14,15,16,17,18,362],pppm:[],pppm_disp:3,pppmdisp:3,pproni:[3,228],pr3:164,pr4:164,practic:[3,12,214,251,252,274,281,453],prb:[441,443],prd:[],pre:[],pre_exchang:8,pre_forc:8,pre_force_respa:8,pre_neighbor:8,prec_tim:14,prece:428,preced:[2,6,59,202,203,204,205,206,207,208,234,289,293,332,350,357,362,368,392,470,473,474,482],preceed:[11,12,71,153,204,324,454,482],precipit:163,precis:[1,3,9,12,13,14,15,16,17,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,109,112,143,152,165,171,172,174,175,176,177,179,180,182,183,185,188,191,197,203,208,209,214,216,223,226,230,235,251,253,254,255,256,257,258,266,268,269,271,283,284,285,292,294,295,310,312,323,327,333,335,336,337,338,341,343,347,348,355,362,363,364,366,369,370,371,372,373,374,376,377,378,381,382,384,385,387,388,389,390,391,392,396,398,399,400,401,402,403,404,405,406,407,410,414,415,416,418,421,423,424,430,439,440,441,442,443,445,447,448,449,458,465,466,469,474,477,481,482,483],precv:453,predefin:[183,191,330,386],predict:[1,6,10,12,263,292,362],preexponenti:470,prefactor:[24,25,28,32,35,36,159,173,184,195,196,204,324,335,338,341,355,376,388,415,423,424,430,448],prefer:[7,8,12,291,320,364],prefix:[11,12,190,215,274,450,453],preliminari:[38,56,185,440],prematur:355,prepar:[9,286,307,467,477],prepend:421,preprint:[140,429],preprocessor:232,prerecord:215,prescrib:[6,8,144,145,158,194,195,200,203,217,248,265,320],presenc:[188,211,212,238,241,407,408,448,484],present:[1,3,12,16,18,163,185,189,190,217,228,229,234,238,239,241,242,287,303,325,328,377,386,397,406,422,423,453,477],preserv:[3,59,214,216,251,295,307,329,457],press:[],pressdown:209,pressur:[],pressure_with_eviri:386,presum:[73,154,194,195,196,216,357,393,459],prevent:[2,3,6,40,120,217,226,307,318,341,347,353,355,357,362,382,393,417,432,433,435,437,454,458,464,466,477,482],previou:[],previouli:217,previous:[3,11,59,61,71,86,102,117,119,154,165,167,169,187,188,189,191,199,201,202,203,204,205,206,207,208,216,217,227,233,246,248,278,290,292,294,295,319,321,324,325,326,327,329,330,349,390,438,451,454,458,459,469,471,473,474,478,479,480,482,483],prevoiu:325,price:[6,381],primari:[0,9,319],primarili:[5,7,9,17,142],primaritli:17,prime:[220,236,391,396,441,443,453],primit:[3,6,327,328,350],princip:[3,232],principl:[6,9,11,232,252,283,386,394,439,453],prinicp:[42,292,356],print:[],printabl:2,printflag:394,printfluid:238,prior:[163,186,349,485],priori:465,prioriz:362,prism:[3,6,153,167,459],priveleg:3,privileg:[12,232],prob:[211,212],probab:430,probabl:[3,8,12,40,71,155,168,169,171,201,210,211,212,213,217,227,236,251,278,324,330,355,413,451,470,477],probe:482,problem:[],problemat:227,proc:[1,3,8,11,12,15,113,188,346,453],proce:[41,54,169,210,221,357,463,471,474],procedur:[6,12,39,41,191,201,210,227,235,236,237,251,253,254,255,256,257,268,269,270,271,274,310,311,312,313,316,317,355,357,364,370,457,477],proceed:12,procesor:[41,453],process:[],processor:[],processsor:[41,210,453],procp1:188,procsessor:475,procssor:465,produc:[1,3,4,6,7,9,12,13,14,15,16,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,41,42,43,45,46,47,48,49,51,53,54,56,63,65,68,69,71,79,92,108,109,110,112,113,114,115,117,119,141,143,152,171,172,174,175,176,177,179,180,182,183,185,188,191,194,197,202,203,204,205,206,207,208,209,210,213,216,223,225,226,228,229,230,235,236,237,246,248,251,253,254,255,256,257,258,266,268,269,271,278,282,283,284,287,292,293,294,295,308,309,310,312,319,320,321,323,324,327,332,333,335,336,337,338,341,343,348,355,357,360,362,363,364,366,369,370,371,372,373,374,376,377,378,381,382,384,385,386,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,410,414,415,416,418,419,422,423,424,430,439,440,441,442,443,445,447,448,449,451,453,458,461,462,465,470,482,483],product:[16,17,18,140,216,269,283,320,362,365,386,422,453,482],proessor:362,prof:277,profi:154,profil:[],program:[3,4,6,7,9,11,12,13,17,142,188,190,191,192,194,215,225,232,238,286,384,454,455,467,482],programm:[13,17],progress:[1,41,210,232,249,282,354,355,357,474,477],prohibit:466,project:[6,7,12,13,14,354,438],promis:7,promot:368,prompt:[8,11,12,232,467],proni:[3,228,229],proofread:8,prop:[6,281],propag:[4,9,199,251,282,297,386,393],propens:6,proper:[213,273,409,454],properati:281,properli:[197,222,292,303,356,357,454,483],properti:[],propoerti:307,proport:[6,39,41,87,103,104,161,210,235,236,237,282,315,322,323,390],proportion:235,propos:[6,140,201,214,227,251,269,287,398,411,442,444],prospect:7,protect:307,protein:[7,10,165,290,292,305,456,464],protocol:232,proton:[443,449,481],prototyp:[10,42,418],prouduc:[208,321],prove:238,proven:269,provid:[1,3,4,6,7,8,9,11,12,13,14,15,16,17,18,29,40,42,61,67,70,118,139,142,159,164,165,189,192,202,203,208,213,214,215,216,225,227,232,234,238,242,249,251,274,282,283,286,287,292,296,314,316,317,320,321,332,345,347,348,353,357,362,364,368,370,375,377,378,382,385,386,390,392,395,397,406,407,409,411,419,420,421,422,429,437,438,439,441,442,443,453,458,464,466,469,470,474,475,482],proxim:187,psa:327,pscreen:[3,12,465],pscrozi:[0,7,13],psec:[191,216,231,235,236,251,279,292,310,311,476,481],psend:453,pseudo:[386,451,456,461],pseudodynam:314,psf:6,psi:[387,448],psi_ij:387,pstart:[3,251,252,255,279,292],pstop:[3,251,252,255,279,292],pstyle:[87,107,195,196],psu:[421,422],psuedo:461,pt2:164,pt4:164,ptarget:214,pthread:[12,17],ptr:[6,11,225,454],ptype1:115,ptype2:115,pu3:164,pu4:164,pu6:164,publicli:5,publish:[7,238,242,283,378,409,441,443],pull:[296,304],puls:319,pump:[407,408],punctuat:[2,451,470],purchas:190,purdu:[9,13],pure:[11,307,393,410,411,441,443,465],purg:[3,457],purpl:[2,191],purport:11,purpos:[3,6,7,12,42,61,71,118,128,134,148,149,164,165,167,169,185,188,206,208,213,214,235,273,275,278,280,291,307,347,362,372,396,402,413,445,456,458,459,463,466,468,469,482,486],push:[3,8,197,209,216,233,250,273,290,296,355,390,430],pushd:233,put:[3,6,8,11,12,13,39,59,153,165,188,217,221,326,327,330,350,421,454,456,460],putenv:[467,482],px1:465,px2:465,pxx:[214,251,279,292,347,348,473,474],pxy:[3,6,474],pxz:[3,6,474],py1:465,py2:465,pydir:11,pyi:[214,251,279,292,347,348,474],pymol:[7,11,13],pymol_aspher:[],pympi:11,pypar:11,python:[],pythonpath:11,pyz:[3,6,474],pz1:465,pz2:465,pzz:[214,249,251,279,282,292,347,348,474],q_c:477,q_d:477,q_i:[387,406,444],q_j:406,qbmsst:[],qcore:283,qdist:[378,398,402,406],qeq1:283,qeq2:283,qeq:[],qfile:[283,378],qin:231,qmin:354,qmmm:[],qmol:286,qout:231,qtb:[],quad:[12,18,362,453],quadrat:[],quadratur:[87,200],quadrupl:363,quadruplet:[181,184,333,335,336,338,340,341,342],qualifi:[3,234],qualiti:[7,9,190,191],quantit:[74,81,103,104,105,161,390],quantiti:[],quantum:[6,9,140,225,229,275,282,286,287,368,386,438],quantum_temperatur:282,quartic:[],quartic_spher:200,quartz:[282,287],quasi:275,quat:466,quaternion:[3,6,40,82,113,130,144,165,253,256,259,260,261,268,389,456,466],quati:[113,456],quatj:[113,456],quatk:[113,456],quatw:[113,456],queen:13,quench:[330,451,470],queri:[3,11,54,265,454,482],quest:[6,225],question:[8,9,12,13,273,330,418,482],quick:[0,9,12,14,15,16,17,18,19],quickli:[3,4,8,12,13,39,210,216,232,307,354,355,357],quickmin:[353,354,355,357,470],quicktim:[4,190],quip:[],quit:[],quot:[2,3,12,189,241,280,332,409,451,452,454,464,482],r10:368,r12:389,r_1:140,r_2:140,r_c:[379,381,388,443],r_cut:368,r_d:477,r_e:387,r_ewald:293,r_fu:[407,408],r_i:[29,140],r_ii:140,r_ij:[29,368,386,419,449],r_ik:419,r_j:29,r_jik:419,r_max:207,r_me:379,r_mh:388,r_min:[207,380],r_ub:20,r_x86_64_32:12,ra2:164,rad2theta:164,rad:330,radhi:459,radial:[63,96,97,113,116,140,149,151,156,207,237,252,262,270,304,313,355,386,392,413,456,459],radian:[20,21,24,28,32,35,36,38,164,172,183,185,291,333,335,338,341,456,459,466],radiat:[118,164,319],radic:[167,456],radii:[76,140,213,217,376,384,389,390,407,408,425,427,448,459],radit:386,radiu:[2,3,6,40,63,76,84,85,89,90,113,118,120,129,130,135,140,158,163,188,190,194,207,233,238,252,254,257,262,266,270,271,285,299,303,304,305,307,309,324,325,328,330,354,368,370,376,386,387,390,398,406,407,408,409,425,427,429,443,448,456,459,466,482],radlo:459,rafferti:322,rahman:[6,7,214,249,251,252,282,418],rai:[9,17,164],ram:443,ramp:[],ran:[3,4,6,10,11],random:[3,6,39,165,168,187,190,199,201,211,212,213,215,217,224,227,228,229,235,236,237,238,247,275,278,282,287,290,292,307,311,314,319,323,326,370,382,383,451,466,471,477,482,483],random_se:451,randomli:[165,168,201,217,227,235,278,307,329,470,471],rang:[1,3,6,7,8,9,10,12,14,15,16,18,38,39,56,61,71,77,88,108,109,110,112,116,117,121,140,141,151,159,164,166,169,170,177,185,188,190,191,200,201,212,216,217,227,229,278,293,307,308,314,315,320,322,347,348,355,358,359,362,364,366,368,369,370,371,372,373,374,376,378,379,380,381,382,383,384,386,389,391,392,393,395,398,399,400,401,402,403,404,405,406,407,408,409,412,413,414,416,419,422,423,424,437,438,440,443,447,448,449,450,454,465,466,474,485],rangecoulomb:6,rank:[6,11,12,232,320,345,453],rankin:255,raphson:3,rapid:[4,6,11],rapidli:[3,8,12,71,213,235,249,251,292,310,311,323,378,382],rapp:[283,284,285],rappe_and_goddard:284,rare:6,rasmol:[6,7],rasmussen:389,raster3d:[6,7],rate:[2,6,12,125,132,136,137,148,191,200,216,217,231,232,233,278,282,315,316,317,318,322,353,354,383,407,408,451,470,474],rather:[1,2,6,9,12,40,41,62,112,148,190,210,216,228,229,292,311,319,323,325,326,327,330,386,421,440,457,461,466,468,473,482],ratio:[6,10,59,87,101,140,201,210,216,235,237,307,315,322,323,347,360,389,390,423,432,445,453,456,466,470],rational:[320,468],rattl:[],rattle_debug:295,ravelo:[255,400],rayleigh:[249,282],rb1:164,rbg:191,rcb:[3,41,210],rcm:[89,90],rcmx:[89,90],rcmy:[89,90],rcut:61,rcutfac:[140,429],rd1:357,rdc:17,rdf:[],rdn:357,rdt:357,rdx:4,reach:[6,12,41,119,210,212,214,236,255,300,307,314,332,346,361,379,477,482],react:6,reactant:386,reaction:[296,305,318,329,357,386],reactiv:[9,289,364],read:[2,3,6,7,8,9,11,12,13,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37,38,40,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,59,115,163,165,166,168,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,188,190,191,192,193,194,200,201,213,214,216,217,227,229,232,248,249,251,253,254,255,256,257,268,269,270,271,274,275,277,278,280,281,285,292,295,296,300,303,306,309,317,318,319,325,333,334,335,336,337,338,340,341,342,343,344,346,352,356,357,361,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,416,418,419,420,421,422,423,424,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,445,446,447,448,449,451,453,456,457,458,460,461,462,463,464,466,467,468,470,482,483,484,486],read_data:[],read_dump:[],read_restart:[],read_restart_set:8,readabl:[190,356,463,486],reader:[3,13,457],readi:[11,12,166,168,169,232,466,477,484,485,486],readm:[1,4,6,8,9,11,12,13,163,188,192,286,394,421,422,454],real:[3,6,7,11,27,30,31,59,71,91,140,154,165,174,187,191,199,206,207,216,217,220,232,233,236,248,275,282,287,290,323,324,326,327,329,337,347,348,350,353,359,378,413,421,422,443,456,459,465,473,476,481,483],realist:[3,217,460],realiz:[71,194,454],realli:[1,3,8,12,112,122,141,191,233,358,393,468],realloc:3,realtim:232,reamin:[324,328],rearrang:357,reason:[3,6,7,11,12,19,39,146,157,165,203,206,207,235,279,292,316,317,320,330,356,357,362,375,379,386,387,388,408,413,445,446,460,465,483],reax:[],reax_def:3,reaxc:[],reaxff:[3,4,5,7,9,13,194,283,285,288,289,393,421,422,438,468],rebal:[41,210],rebalanc:[41,210],rebo:[],rebuild:[11,12,14,15,16,227,358,382,474],rebuilt:[3,12,188,189,190,192,358,362],recalcul:[71,87,307],receiv:[3,209,232,234,273,453],recent:[],reciproc:[6,12,118,164,274,347,369,371,372,378,381,386,398,402,416,424,470],recog:12,recoginz:3,recogn:[3,12,16,73,167,211,212,251,356,384,409,421,454,456,463,464,477],recommend:[7,9,11,12,14,16,190,191,282,317,347,386,393,407,408,422,423,426,428,465,475],recompil:[1,3,9,12,192,295],recomput:[102,128,169,221,296,383,468],reconstruct:[3,215],record:[192,215,296],recov:[214,251],rectangl:[41,210,350],rectangular:[7,41,62,167,210,227,350,456,458,460],rectilinear:[118,164],rector:53,recurs:[41,210,368,445],recust:41,recv:453,red:[2,10,190,191,213,275],redefin:[3,458,464,482],redirect:12,redo:12,reduc:[],reduct:[18,19,117,118,164,249,282,347],redund:387,ree:433,reed:[249,282],rees:[7,9,13],ref:[316,317,354],refactor:6,refer:[],referenc:[3,6,12,63,68,71,114,188,194,204,208,227,281,321,348,378,392,415,423,454,474,482],reflect:[],reformat:7,refresh:200,reg:459,regard:[6,59,248,295,300,418,422],regardless:[15,71,165,168,187,205,206,216,235,251,253,254,256,257,279,292,301,307,362,453,459,466],regim:[6,315,322,379,465],region:[],region_spher:8,region_styl:328,regist:[8,116,142,303,421,422],regoin:6,regress:482,regspher:165,regstrip:330,regul:6,regular:[1,3,9,41,62,88,163,167,188,201,210,227,319,348,379,437,453,456,458,460],reigon:482,reinhardt:[316,317],reject:[165,213,421,471],rel:[1,6,14,27,36,41,59,71,122,130,140,144,147,148,150,165,174,191,194,201,206,210,216,217,220,227,233,247,248,269,273,278,287,289,290,296,304,307,309,314,315,319,326,330,347,348,355,386,389,390,407,408,409,423,448,457,465,470,474,477,483],relat:[],relatic:[220,236],relationship:[6,283,332,347,448,477,482],relax:[],releas:[0,5,7,8,13,211],relect:[3,413],relev:[2,6,12,41,78,80,111,128,165,169,191,195,196,199,200,201,202,203,204,205,206,207,208,209,210,211,212,216,217,218,221,223,224,226,227,228,231,232,238,239,240,242,243,244,245,247,248,250,258,259,260,261,262,263,264,265,266,267,272,276,277,278,280,281,284,286,288,289,290,293,294,295,296,301,305,307,308,309,314,315,318,319,320,321,322,323,324,325,326,327,329,330,347,355,365,366,370,376,378,379,381,382,383,386,388,389,390,391,392,397,399,400,401,403,404,405,407,408,413,414,418,423,430,437,440,447,448,449,453,469,483],reli:[3,12,284,386,422,449,456,466],reloc:12,remain:[7,12,33,37,41,50,55,59,71,87,104,145,146,147,148,152,153,154,155,157,168,178,184,185,188,195,196,201,203,204,206,207,214,216,235,236,243,251,252,256,257,268,269,271,276,277,299,307,310,311,312,318,319,330,332,339,342,356,368,386,393,406,413,438,451,456,457,461,466,468,470,474,477,482,483],remaina:368,remaind:[165,188,217,278,307,320,443,456],remap:[3,6,12,59,61,71,148,165,187,206,216,233,248,269,347,456,457,458],remedi:[6,477],rememb:2,remov:[2,3,6,8,9,13,54,71,77,114,116,140,144,145,146,147,148,152,153,154,155,157,158,165,168,169,194,203,206,211,224,235,236,241,247,249,251,256,257,268,269,271,277,283,292,293,295,307,310,311,312,314,330,347,357,381,408,456,459,467,468,482,483],remove_bia:8,remove_bias_al:8,remove_molecul:200,remove_sourc:200,remove_speci:200,ren:164,renam:[12,331,467],render:[12,13,188,190,191],rendon:[251,252],reneighbor:[3,8,12,39,57,71,206,210,227,307,320,330,382,473,474],renssela:277,renumb:71,reorder:[3,12,39,453],repeat:[2,6,190,191,206,213,214,227,300,350,368,441,443,445,451,470],repeatedli:2,repel:233,repes:188,replac:[2,3,6,11,12,41,63,89,90,117,143,144,145,146,147,148,151,152,153,154,155,157,158,188,190,191,192,203,204,205,206,207,208,210,213,217,235,255,280,287,289,378,400,457,458,463,464,474,482,483,484,486],replic:[],replica:[],replica_fil:12,report:[],repositori:[7,12,394,420,421,422],reprens:319,repres:[1,3,6,8,9,12,15,40,41,42,59,67,71,90,113,116,177,185,188,190,203,204,205,206,207,208,214,220,228,230,235,238,251,275,277,279,287,292,293,296,304,319,321,328,348,357,363,368,389,396,406,407,408,409,410,411,416,419,421,422,444,445,451,453,456,466,468,471,477,482,484],represent:[3,6,8,57,59,134,167,188,228,229,275,319,368,386,389,423,456,459,477],reprocess:461,reproduc:[3,251,325,378,384,390],repul:409,repuls:[6,7,9,36,40,45,46,108,233,283,324,325,328,364,368,376,378,382,386,390,392,406,409,412,437,443,448,449,466],reqir:[283,285],request:[3,6,8,12,41,168,185,188,232,238,290,307,309,345,347,413,421,422,451,461,466,470,482,483,484],requir:[],rerun:[],rescal:[],research:[5,7,238,242,451,470],resembl:287,reserv:[12,232,477],reservoir:[91,227,231,235,319],reset:[],reset_atomic_reference_posit:200,reset_dt:8,reset_target:8,reset_tim:200,reset_timestep:[],resid:13,residu:232,residue1:358,resist:[6,232],resolut:440,resolv:[214,275,307,408],resort:3,resourc:[7,363,384],respa:[3,16,221,232,251,360,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,379,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,411,412,414,416,418,420,421,422,423,424,429,430,431,432,433,434,435,436,437,439,440,441,442,443,445,447,448,449,464,465,476,482],respect:[1,6,9,10,13,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,42,43,45,46,47,48,49,51,53,54,56,59,70,71,87,89,96,97,109,112,118,122,143,147,150,152,159,163,164,171,172,174,175,176,177,179,180,182,183,185,190,191,206,207,212,213,214,216,230,233,235,236,238,251,253,254,255,256,257,258,266,268,269,271,283,284,292,293,296,304,306,319,324,327,333,335,336,337,338,341,343,345,347,348,352,355,356,361,362,363,364,366,368,369,370,371,372,373,374,376,377,378,381,382,384,385,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,409,410,413,414,415,416,418,423,424,428,429,430,439,440,441,442,443,444,445,447,448,449,453,457,465,466,469,477,482,484,486],respon:9,respond:[6,7,148,216,386,418],respons:[6,7,249,315,322],resquar:[],rest:[6,8,12,281,285,291,368,408,409,473,474,477],restart1:275,restart2:275,restart2data:[],restart:[],restartfil:[12,13],restor:[3,8,60,61,165,195,196,281,296,304,309,473,474],restore_bia:8,restore_bias_al:8,restrain:[],restraint:[9,215,249,291,306,397],restratin:291,restrict:[],result:[1,2,3,6,7,9,11,12,13,15,16,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,43,45,46,47,48,49,51,53,54,56,63,64,66,67,71,75,87,90,91,93,104,106,109,110,112,114,115,116,117,118,119,141,143,145,148,152,159,160,162,164,165,168,171,172,174,175,176,177,179,180,182,183,185,188,190,191,194,197,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,220,223,226,227,228,230,235,236,238,242,249,251,253,254,255,256,257,258,266,268,269,270,271,274,275,283,284,289,290,292,294,295,307,310,312,315,316,317,319,320,321,323,324,325,327,329,332,333,335,336,337,338,341,343,347,348,357,360,362,363,364,366,369,370,371,372,373,374,376,377,378,381,382,384,385,386,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,408,409,410,413,414,415,416,418,422,423,424,430,439,440,441,442,443,444,445,447,448,449,451,453,456,458,459,460,461,465,466,467,468,470,481,482,483],resum:482,retain:[2,211,212,368,453],retart:[33,50,178,339],retreiv:8,retriev:[6,8,225,410,411,482],reus:[3,468],rev:[6,13,64,70,110,140,141,153,201,229,235,237,249,251,252,255,269,274,284,287,292,296,307,311,314,316,317,322,354,368,376,377,378,381,384,385,386,389,390,395,400,407,408,409,411,419,423,429,439,441,442,443,451],revers:[2,6,8,87,176,213,233,251,272,273,283,300,315,316,322,357,406,465,477],review:[140,283,296,314,420,429,451,470,477],rewind:346,rewrap:188,rewrit:[5,12],rewritten:19,rezwanur:418,rfac0:[140,429],rfactor:307,rfile:292,rg0:305,rgb:191,rh3:164,rh4:164,rhaphson:3,rheolog:6,rhi:440,rho0:[409,426,428,435,436],rho0_meam:409,rho:[40,113,238,318,363,369,371,372,384,409,410,411,423,432,434,481],rho_0:[435,436],rho_alpha_beta:384,rho_bkgd:409,rho_colloid:324,rho_e:319,rho_fin:318,rho_i:[410,411],rho_initi:318,rho_ref_meam:409,rho_wal:324,rhodo:10,rhodopsin:[1,10],rhosum:[],ribier:354,richardson:292,richi:[9,19],rick:[283,284,377],rick_and_stuart:284,ridg:[9,19],right:[3,6,11,12,41,142,165,183,184,187,210,213,233,238,248,272,332,350,378,444,456,459,466,482],rightmost:[41,210],rigid:[],rigidifi:292,rii:[89,90],rij:[211,212,273,382,437],rin:[392,403,404],ring:[],rino:73,rinv:347,rirj:[325,390],rise:29,risi:[140,429],risk:[8,291,465],rix:[89,90],rjk:[211,212],rjone:[7,9,13],rlo:440,rmask:[3,482],rmass:3,rmax:[166,211],rmdir:467,rmin0:[140,429],rmin:[166,212,400],rmsd:318,rnemd:6,robin:191,robust:[353,354,355],rock:409,rockett:419,rod:292,rodata:12,rodnei:287,roi:7,role:314,roll:12,room:[57,59],root:[11,87,89,90,189,314,318,362,384,463],rosati:39,rose:409,ross:409,rosski:275,rosybrown:191,rot:[6,91,275,291,314,483],rotat:[],rotaton:459,rough:[6,165,190,329],roughli:[7,10,12,41,148,163,190,227,235,236,250,251,263,279,292,307,310,311,314,348,357,362,425,427,458,465],round:[1,3,12,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,71,109,112,143,152,171,172,174,175,176,177,179,180,182,183,185,191,197,209,216,223,226,230,235,251,253,254,255,256,257,258,266,268,269,271,284,292,294,295,310,312,323,327,333,335,336,337,338,341,343,348,360,363,364,366,369,370,371,372,373,374,376,377,378,381,382,384,385,387,388,389,390,391,392,396,398,399,400,401,402,403,404,405,406,407,410,414,415,416,418,423,424,430,439,440,441,442,443,445,447,448,449,458,465,481,482],rous:228,rout:[87,392,406],routin:[5,6,8,11,15,16,38,39,56,88,169,171,238,420,440,469],roux:[6,220,236,444,477],row:[6,65,66,68,69,75,79,90,92,93,104,106,108,114,115,116,119,145,153,160,162,164,203,204,205,206,207,208,241,292,319,321,329,386],royalblu:191,rozero:409,rperp:[248,300],rpi:277,rpm:12,rrespa:[1,3,5,7,8,16,195,196,248,251,358,363,364,365,366,367,369,370,371,372,373,374,376,377,378,379,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,407,408,409,410,411,412,414,416,418,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,439,440,441,442,443,445,447,448,449,465],rspace:3,rsq:[440,446],rsurfac:319,ru3:164,ru4:164,rub:20,rubia:[410,411],rudd:[413,440],rudra:[7,9],rudranarayan:[7,277],ruiz:201,rule:[],run1:[6,361,482],run2:[6,344,346,361,482],run3:[6,361,482],run4:[6,361,482],run5:[6,361,482],run6:[6,361,482],run7:[6,361,456,457,461,482],run8:[6,361,482],run:[],run_styl:[],runloop:346,runtim:[12,17,190,362],russia:9,rutherford:319,rutuparna:[441,443],ryan:9,ryckaert:[295,341],rycroft:163,s00:418,s0st:6,s2050:1,s2629:384,s319:200,s_fact:297,s_i:[6,386],s_ij:6,sack:7,saddl:[250,357],saddlebrown:191,sadigh:[201,384,410,411],saed_vtk:118,safe:[12,190,220,236,362],safe_zon:3,safest:[3,307],safeti:297,safezon:422,safran:448,sagui:[348,381],sai:[1,3,12,13,191,421,422,454],said:355,sakai:442,salmon:191,salt:[379,388,409,456],same:[1,2,3,4,6,8,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,38,39,40,41,43,44,45,46,47,48,49,50,51,53,54,56,57,59,62,63,65,69,71,72,77,79,81,82,84,85,87,88,89,90,91,92,94,97,103,104,105,108,109,110,112,113,115,116,117,140,141,142,143,144,145,146,147,148,151,152,153,154,155,157,158,159,161,163,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,185,186,187,188,189,190,191,194,195,196,197,200,201,203,205,206,207,208,209,210,211,212,213,214,216,217,221,222,223,226,227,228,229,230,231,232,233,234,235,236,237,238,241,248,251,253,254,255,256,257,258,266,268,269,270,271,273,274,275,277,278,279,282,283,284,285,287,288,289,290,291,292,294,295,296,301,304,306,307,308,309,310,311,312,313,314,315,316,317,318,319,321,322,323,325,326,327,328,330,332,333,334,335,336,337,338,341,343,347,348,350,351,352,356,357,358,359,360,361,362,363,364,366,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,412,413,414,415,416,418,419,423,424,430,437,438,439,440,441,442,443,445,447,448,449,451,453,454,456,457,458,459,461,464,465,466,467,468,469,470,474,477,481,482,483,485],sampl:[1,2,4,6,9,10,11,12,14,91,144,158,163,187,190,203,204,206,207,215,217,225,227,229,231,251,252,275,278,287,289,293,304,305,307,311,314,317,329,358,368,383,456,470],sample_frequ:200,san:418,sandia:[0,5,7,9,13,14,17,70,111,387,409,418],sandybrown:191,saniti:[291,358],satellit:[6,147],satifsi:482,satisfi:[3,12,73,118,140,163,164,214,238,255,295,327,355,358,390,470],satur:379,save:[6,8,12,19,40,59,185,190,213,228,229,235,236,237,278,287,319,348,358,360,368,458,461,468],sb3:164,sb5:164,sc3:164,scalabl:[],scalar:[],scale:[0,1,3,4,5,6,9,10,13,18,40,59,63,91,113,116,117,140,151,159,185,188,190,191,194,195,196,200,201,204,214,216,227,231,232,233,235,237,238,249,251,253,254,255,256,257,275,279,282,283,292,298,299,307,309,311,314,316,317,319,323,330,347,348,350,359,363,364,365,379,383,386,390,393,407,408,409,418,425,427,444,457,459,461,465,468,470,473,474,482,483],scale_factor:[425,427],scalegamma:238,scalexi:[3,214,251,255],scalexz:[214,251,255],scaleyz:[214,251,255],scan:[191,212,346,457],scatter:[11,118,164],scatter_atom:11,scatter_coord:11,scenario:[6,40,61,213,281,290,307,320,328,358,460,461,465,473],scf:477,schaik:406,schedul:451,schell:442,schemat:213,scheme:[6,9,18,228,229,251,275,287,295,319,347,444],schlitter1:318,schlitter2:318,schlitter:318,schmid:382,schneider:[235,237],schoen:347,schr:477,schroding:386,schroeder:477,schulten:[236,296,348,477],schunk:307,schwen:9,sci:[73,327,377,411,419],scienc:[8,200,213,232,296,316,384,410,442],scientif:[140,384],scm:11,scratch:[12,41,210],screen:[],screenshot:11,scripe:11,script:[],scripta:67,scsl:12,sdk:[],sea:11,seagreen:191,seamlessli:281,search:[0,2,3,8,12,166,168,191,192,307,353,354,355,357,359,451,457,458,470,482],seashel:191,sec:[12,476,481],second:[1,3,6,9,10,11,12,16,17,54,57,59,61,71,88,91,105,112,133,134,138,141,142,153,159,163,164,166,167,168,187,188,191,194,203,204,205,206,207,208,213,227,228,233,248,250,275,289,291,292,295,296,304,305,307,316,317,319,330,347,350,354,355,357,358,362,367,368,369,371,372,377,378,384,386,387,390,391,393,397,400,409,413,415,439,442,443,444,449,451,452,453,454,456,458,463,465,469,470,474,477,481,482,483,484,486],secondari:[3,177],sectinn:485,section:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,58,59,63,64,65,66,67,68,69,71,74,75,78,79,80,81,83,86,87,88,89,90,91,92,93,96,97,98,99,100,101,103,104,105,106,107,108,109,111,112,113,114,115,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,144,145,146,148,149,150,151,152,153,154,155,156,157,158,159,160,161,163,164,166,171,172,173,174,175,176,177,178,179,180,182,183,184,185,188,189,190,192,194,197,198,199,200,201,203,204,205,206,207,208,209,210,211,212,213,215,216,217,219,220,222,223,224,226,227,228,229,230,232,234,235,236,237,238,239,240,241,242,244,245,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,264,266,267,268,269,270,271,273,274,275,277,278,279,281,282,283,284,285,286,287,288,289,292,294,295,296,297,298,299,300,301,303,307,310,311,312,313,314,315,316,317,318,319,320,322,323,325,326,327,330,331,333,334,335,336,337,338,339,341,342,343,348,349,350,352,356,357,359,361,362,363,364,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,413,414,415,416,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,451,452,453,454,456,457,461,464,465,466,467,469,470,471,474,475,477,482,483],section_acceler:[9,12,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,109,112,143,152,171,172,174,175,176,177,179,180,182,183,185,197,209,216,223,226,230,235,251,253,254,255,256,257,258,266,268,269,271,284,292,294,295,310,312,323,327,333,335,336,337,338,341,343,348,363,364,366,369,371,372,373,374,376,377,378,381,382,384,385,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,410,414,415,416,418,423,424,430,439,440,441,442,443,445,447,448,449,465],section_accerl:384,section_command:[0,1,9,332],section_error:[7,12],section_exampl:[2,6],section_histori:[7,12],section_howto:[6,8,9,11,12,40,42,57,59,64,66,67,68,70,71,72,73,75,76,77,78,80,81,82,83,84,85,86,87,89,90,93,94,95,96,97,98,99,100,101,104,106,109,110,111,114,116,117,120,135,136,137,138,140,141,145,147,159,160,162,163,167,186,203,250,261,264,267,322,367,380,451,456,459,470],section_modifi:[6,7,42,188,190,474],section_packag:12,section_perf:7,section_python:[6,12],section_start:[3,4,6,9,11,351,357,450,451,465,471,474],section_tool:[6,7],see:[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,271,273,274,275,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,294,295,296,297,298,299,300,301,303,304,306,307,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,330,331,332,333,334,335,336,337,338,339,341,342,343,344,347,348,350,351,352,354,355,356,357,358,359,361,362,363,364,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449,450,451,452,453,454,456,457,458,459,461,462,463,464,465,466,468,469,470,471,472,473,474,475,476,477,482,483,484,485,486],seed1:471,seed2:471,seed:[3,165,168,187,190,199,201,211,212,213,215,217,224,227,228,229,235,236,237,238,275,278,282,287,292,307,311,314,319,326,370,382,383,451,466,471,477,482,483],seed_com:236,seed_drud:236,seek:[41,210],seem:[6,214,320,354,409,465],seen:[12,238,328],segement:3,segment:[3,4,6,7,12,40,42,82,113,194,264,292,307,382,396,422,437,438,456,464,466],select:[6,12,15,17,59,61,71,117,118,154,159,164,165,185,190,192,199,201,206,207,216,217,224,227,232,233,248,296,306,314,315,320,322,324,326,327,329,345,347,353,357,359,362,392,397,409,453,457,459,465,466,470,475,482],self:[],sellerio:13,semi:[3,192,200,201,272,274,457],semiax:144,semimet:386,send:[0,3,5,7,8,11,12,191,232,453],sender:[3,453],sens:[1,3,6,7,18,39,41,42,59,184,188,203,205,206,207,208,210,213,216,228,229,234,235,236,237,278,282,287,293,307,314,315,319,322,330,357,378,398,402,441,442,443,451,456,461,465,468,473],sensabl:232,sensibl:104,sensit:[2,6,73,214,287,483],sent:[191,232,345],sep:[6,11,482],separ:[2,6,7,9,12,13,40,41,76,116,122,140,163,165,168,191,192,200,204,210,211,212,213,214,217,220,227,235,236,251,263,275,278,279,281,283,287,292,295,307,310,311,312,315,322,330,348,362,369,371,378,379,381,398,407,408,409,415,420,429,438,439,440,443,448,454,456,457,458,465,468,473,477,483,484,485],seper:379,sequec:482,sequenc:[2,3,12,41,59,188,190,191,192,210,229,250,330,350,357,393,419,471,482],sequenti:[59,60,191,419,457],sequestr:7,ser:274,seri:[3,4,6,13,18,140,188,190,191,204,208,228,229,278,361,364,389,409,413,423,430,440,454,463,464,473,474,482],serial:[],serial_icc:12,serious:8,serv:[6,128,167,307,437],server:[1,234,362],set:[],set_callback:225,set_energi:225,set_vari:[6,11,454],setarea:238,sete:[203,213],setenv:[11,12,375],setfl:[13,363,384],setforc:[],setgamma:238,setmask:8,settl:214,setup:[3,4,6,7,8,11,12,13,16,37,40,55,59,71,87,91,153,166,167,168,169,184,191,200,213,216,307,320,342,358,359,362,438,453,456,464,484,486],setup_pre_exchang:8,setup_pre_forc:8,setup_pre_force_respa:8,setvel:[],seven:411,seventh:[133,138],sever:[1,4,5,6,7,8,10,11,12,13,15,18,39,40,63,71,87,159,166,169,184,188,189,192,194,200,211,212,214,229,235,238,242,251,277,279,281,292,296,307,314,323,345,350,355,362,365,368,372,383,384,393,402,406,409,413,419,421,422,428,451,454,458,462,470,474,477,482,483],sfactor:[3,190,191],sfftw:12,sgi:12,sgmc:201,sgrid:307,sgroup:163,shade:190,shake:[],shan:[17,284,377],shanghai:[9,13],shape:[2,3,6,8,40,41,58,59,62,71,82,113,130,144,148,149,165,167,187,190,191,194,195,206,210,214,216,235,249,251,253,256,259,260,268,269,282,307,320,328,367,389,423,453,456,457,458,466],shapei:[113,456],shapex:[113,456],shapez:[113,456],shapshot:461,share:[],shared0:[],sharon:292,sharp:[328,409,443],shawn:9,shear:[3,4,5,6,7,9,59,61,148,187,214,216,238,251,269,307,322,325,390,407,408,418,426,428],sheet:460,shell:[],shen:9,shenderova:364,sheppard:354,shflag:12,shield:[],shift:[],shiftse:307,shiga:[6,251,252],shini:[190,485],shinoda:[6,9,251,252,424],shiny:190,ship:192,shlib:[11,12],shlibflag:12,shock:[4,9,194,199,249,255,282,326,400],shockvel:[249,282],shortcut:[214,251,279,292],shorter:[3,119,227,273,359,413,464],shortest:[190,359,365,465],shorthand:191,shoul:445,should:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,42,43,44,45,46,47,48,49,51,53,54,56,59,61,70,71,73,81,83,87,91,96,97,98,102,103,109,110,112,141,143,144,147,148,151,152,153,155,158,161,163,165,167,169,171,172,173,174,175,176,177,179,180,182,183,185,186,187,188,190,191,195,196,197,198,201,209,210,211,212,213,214,216,217,219,220,222,223,224,225,226,227,228,229,230,231,233,235,236,237,238,240,241,242,243,248,251,253,254,255,256,257,258,263,266,268,269,271,273,274,275,276,277,278,279,280,282,283,284,285,286,287,288,289,290,291,292,294,295,301,304,307,308,310,311,312,313,314,315,318,319,320,322,323,324,325,326,327,328,329,330,332,333,334,335,336,337,338,341,343,348,350,351,353,355,356,357,358,359,360,362,363,364,366,367,369,370,371,372,373,374,375,376,377,378,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,398,399,400,401,402,403,404,405,406,407,408,409,410,413,414,415,416,417,418,420,421,423,424,425,427,430,437,439,440,441,442,443,444,445,447,448,449,451,452,453,454,456,457,458,459,460,461,463,464,465,466,468,472,473,474,477,482,483,484],shouldn:[3,8],show:[6,11,12,116,273,357,392,409,440],shown:[1,12,17,41,96,97,118,140,151,164,184,210,213,235,251,269,275,278,287,314,347,386,387,389,390,406,423,456],shrank:71,shrink:[3,6,41,57,59,71,167,187,188,190,195,196,199,210,216,217,233,238,273,307,326,330,347,348,355,378,398,402,413,456,457],shrunk:71,shut:[6,11,358,455],si4:164,siam:327,sic:[4,378,393,409,415,439,441,443],sic_tersoff:419,sicc:[385,439,441,443],sicg:[441,443],sicsi:[385,439,441,443],side1:459,side2:459,side3:459,side4:459,side:[3,8,41,57,61,155,165,201,202,210,213,217,227,233,238,248,273,278,286,304,324,328,329,330,357,378,389,390,423,445,454,456,459,466],sidewai:4,sienna:191,siepmann:322,sigam:376,sigam_ii:396,sige:[441,443],sigma0:368,sigma14:406,sigma1:368,sigma2:368,sigma:[3,6,10,45,46,50,54,87,171,188,191,195,196,227,238,273,307,323,324,328,350,359,362,364,367,368,369,373,374,376,381,382,383,385,386,389,391,392,396,397,398,399,400,401,402,403,404,405,406,412,413,423,424,433,439,445,465,481,482,483],sigma_14:373,sigma_:379,sigma_c:376,sigma_cc:[364,376],sigma_h:388,sigma_i:[387,413],sigma_ii:[396,445],sigma_ij:[396,413,445],sigma_j:413,sigma_max:383,sigma_ss:376,sign:[3,6,12,176,184,272,304,327,332,464,473,482],signal:455,signicantli:17,signifi:[3,66,75,90,93,104,106,114,145,160,162],signific:[7,12,18,86,228,249,252,287,307,320,386,389,409,413,484],significantli:[1,6,39,141,163,238,251,291,386,439],sij:204,sikandar:17,silbert:390,silent:[191,454,467],silicon:[385,409,439,456],sill:418,silver:191,sim:[9,424],similar:[5,6,7,8,9,12,17,18,40,41,46,59,68,87,112,115,116,141,142,165,166,188,191,194,195,196,203,210,225,226,228,235,241,242,252,281,282,287,291,292,311,314,324,325,327,329,348,353,354,356,364,367,368,382,384,386,390,406,407,413,418,419,428,453,458,463,465,470,472,474,477,482,483,484,486],similarli:[3,6,7,8,59,112,161,167,169,187,188,190,191,202,203,205,206,207,208,212,216,222,233,251,253,254,256,257,277,279,292,293,295,307,314,315,322,328,333,348,350,357,360,372,390,402,439,453,456,459,460,465,466,470,485],simluat:[6,39,191,307,407,457,458],simlul:[292,319],simmul:322,simpl:[],simpler:[8,42,191,292],simplest:[3,8,40,66,75,90,93,104,106,114,116,145,160,162,283,477],simpli:[1,3,6,8,11,12,14,17,66,71,75,88,90,93,95,104,106,113,114,119,145,160,162,168,169,191,194,195,196,203,205,206,207,208,212,214,216,220,225,234,236,241,251,275,279,290,292,293,315,321,322,347,348,350,356,357,362,372,381,393,402,409,413,453,454,461,464,471,474,481,482],simplif:386,simplifi:[201,291],simplist:11,simualt:348,simul:[],simulatan:362,simulation_nam:422,simulatoin:[12,457],simult:362,simultan:[6,7,15,16,216],sin:[216,248,324,327,329,419,456,459,466,482],sinc:[0,1,2,3,6,8,9,10,11,12,13,15,16,21,22,33,39,41,44,54,59,61,64,67,71,73,89,90,110,116,118,144,145,155,163,167,168,170,171,173,178,188,190,191,194,195,196,197,198,201,202,203,204,205,206,207,208,209,210,213,214,215,216,217,221,222,227,229,231,234,235,237,238,248,251,253,254,255,256,257,260,263,269,273,275,278,280,281,287,290,292,296,306,307,315,319,320,321,322,324,325,328,329,330,331,333,334,346,348,355,356,357,358,361,362,363,364,368,371,372,373,374,376,377,381,382,383,384,385,389,390,391,393,394,395,397,398,400,401,402,403,404,405,406,407,408,409,410,411,413,416,419,420,421,422,423,424,429,430,439,440,441,442,443,449,451,453,454,456,457,458,459,461,464,465,466,467,468,470,474,477,481,482,483,485],sinclair:[7,384,438],sine:419,singapor:140,singh:363,singl:[1,2,3,6,7,8,9,11,12,14,15,16,17,18,40,41,42,57,59,61,63,65,66,68,69,75,77,79,87,88,90,92,93,104,106,108,113,114,115,116,117,119,142,145,160,162,163,165,188,190,191,192,194,199,202,203,204,205,206,207,208,210,212,213,214,217,220,224,226,231,238,241,248,251,252,255,263,275,277,278,280,291,292,293,295,297,303,307,309,319,321,324,325,327,329,330,332,347,348,353,356,357,358,359,361,362,363,364,368,373,375,377,383,384,385,386,387,390,391,392,393,394,395,409,410,411,415,416,419,420,421,422,423,429,430,439,441,442,443,451,452,454,456,463,464,465,466,467,468,469,470,473,482,485,486],singleel:368,singular:[406,407,408],sinnott:[284,364,377],sinusoid:[165,216,324,325,327,329],sio:377,sirk:[141,437],sisic:[385,439,441,443],sisisi:[385,439,441,442,443],sister:375,sit:[274,456],site:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,67,70,87,232,238,239,295,348,363,368,378,384,388,398,402,406,416,421,422,444],situat:[9,214,227,238,251,275,293,354,368],sival:164,six:[6,133,138,140,204,205,415,419],sixth:415,sixthpow:[374,413],size:[],size_restart:8,sizex:257,sjplimp:[0,7,11,12],sjtu:9,skew:[3,6,58,59,167,190,216,251,456,459],skin:[3,12,39,61,73,115,166,168,227,263,292,319,358,359,362,417,474,481],skip:[12,16,33,178,277,346,356,361,397,456,461,464,473,482],skyblu:191,slab:[3,6,71,153,206,278,304,347,348,358,413],slateblu:191,slategrai:191,slater:[],sleight:54,slepoi:409,slice:[],slider:11,slight:[3,12,319],slightli:[1,6,39,40,188,189,190,192,287,292,348,364,378,396,398,402,441,443,451,464,484],sligthli:381,sliozberg:437,slip:[3,194,307,323,329],sllod:[],slope:[6,103,104,315,317,322,379,482],slot:1,slow:[3,6,7,12,39,228,232,235,236,249,307,314,347,357,362,413,465,475,477,483],slower:[1,10,17,39,236,348,362,368],slowest:[319,453],slowli:[12,71,210,323,355,430,458],slurm:12,slurm_localid:12,sm3:164,small:[],smallbig:3,smaller:[1,3,6,12,16,17,39,56,59,61,71,119,163,167,188,190,191,201,217,221,227,238,274,292,307,317,332,347,348,353,362,396,413,438,445,446,456,463,465,482,486],smallest:[3,70,72,163,249,289,482],smallint:3,smallq:348,smallsmal:[3,12],smart:229,smd:[],smd_contact_radiu:466,smd_lammps_userguid:9,smd_mass_dens:466,smd_user_guid:[],smi:[3,362],smirichinski:9,smit:227,smith:416,smmoth:466,smooth:[],smoother:165,smoothli:[54,140,315,322,373,391,404,406,443,449],smpd:12,sn2:164,sn4:164,sna:[],snad:[],snap:[],snapcoeff:429,snaphot:461,snapparam:429,snapshot:[],snav:[],snb:17,snow:191,soc:392,socket:[12,17,18,234,453],soft:[],softer:[324,328],softwar:[1,6,11,12,14,15,16,17,18,19,163,232,277,293],sole:[211,212,357,419,426,428],solid:[4,6,7,9,10,39,40,41,59,70,73,91,141,163,200,210,214,216,221,241,251,253,254,256,257,273,274,279,292,314,317,348,350,369,400,418,426,428,456],solut:[3,6,13,163,214,221,249,290,295,307,328,482],solv:[3,9,12,18,238,283,295,317,319,348,354,408],solvat:[4,10,165],solvent:[4,7,13,61,71,166,168,210,224,228,229,235,251,290,292,304,307,315,322,323,373,376,378,379,388,398,407,408,423,438,456,466],solver:[],some:[1,2,3,4,6,7,8,10,11,12,13,16,17,18,39,40,41,55,61,63,71,102,105,107,113,117,119,144,145,146,157,158,159,165,168,173,176,184,186,188,190,191,194,195,196,199,201,202,203,204,205,206,207,208,210,212,213,214,215,224,227,249,251,252,280,281,283,285,292,296,308,314,319,320,321,323,324,330,345,346,347,348,353,354,355,356,357,358,359,362,365,367,368,375,378,384,386,393,413,421,422,438,440,451,453,454,455,456,458,461,462,463,464,465,466,468,470,473,474,481,482,483,486],somehow:3,someindex:331,someon:[7,11,355],someth:[2,3,7,8,11,12,59,214,251,324,327,329,358,393,454,463],sometim:[2,3,6,8,12,18,206,214,251,315,322,347,359],somewhat:[7,9,12,70,145,155,203,251,347],somewher:[17,252,386],soon:[201,213,224,227,232],sophist:[7,142],sorensen:470,sort:[3,13,16,39,71,188,191,192,232,357,358,362,383,457,458,485],sound:[128,238,249,297,435,436],soundspe:[435,436],sourc:[],source_integr:200,sourceforg:11,south:140,souza:315,space:[2,3,6,8,11,12,18,41,59,71,118,140,154,159,164,165,185,187,190,195,196,199,205,206,207,210,212,216,217,233,238,245,248,251,274,275,290,293,297,307,324,326,327,329,332,347,348,350,356,357,358,369,371,372,378,381,384,386,396,398,402,409,416,419,424,440,446,448,453,456,459,468,474,477,482,483],spahn:390,span:[2,12,38,71,195,196,206,233,292,347,363,364,368,377,384,387,394,395,409,410,411,415,419,429,439,441,442,443,450,451,459,460,482],spars:[71,185],spatial:[],spawn:232,spc:[],spcpu:474,speak:[17,307,314],spearot:[118,164,293],specfi:[12,107,233,459],speci:[],special:[],special_bond:[],specif:[1,2,3,6,7,8,9,10,12,13,15,17,18,22,29,33,40,41,42,50,63,71,108,113,115,116,145,147,150,165,173,178,188,190,191,192,194,195,196,199,200,203,204,205,206,207,208,210,213,215,224,225,227,228,232,238,246,278,280,281,284,292,314,319,320,324,330,334,348,355,357,362,364,367,368,380,384,389,390,393,394,395,396,409,413,421,422,423,438,439,444,445,453,456,457,461,462,463,465,466,472,473,474,481,482,483,484],specifi:[2,3,6,7,8,9,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,59,61,63,65,66,68,69,70,71,73,75,76,77,78,79,80,81,83,85,86,87,88,90,91,92,93,94,95,96,97,98,99,100,101,103,104,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,141,143,145,147,152,153,154,159,160,161,162,163,164,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,187,188,189,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,223,226,227,228,229,230,231,233,234,235,236,238,239,240,241,243,246,247,248,249,250,251,252,253,254,255,256,257,258,263,266,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,287,288,289,290,291,292,293,294,295,296,300,301,304,305,306,307,308,309,310,311,312,314,317,318,319,321,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,341,342,343,346,347,348,350,351,352,355,356,357,358,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,418,419,420,421,422,423,424,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,477,481,482,483,484,485,486],specifii:[229,238],speciti:465,spectral:429,spectrum:[9,140,282,287],sped:[39,249],speed:[1,3,6,9,12,14,15,16,17,18,19,39,41,128,188,191,210,235,238,249,282,297,307,314,320,326,347,348,357,362,368,378,413,435,436,441,451,465,471],speedup:[1,18,348,465],spefici:[165,190,392],speicifi:356,spell:459,spellmey:[6,171,468],spend:[12,202],spent:[1,12,13,15,451,470,475],sph:[],sph_lammps_userguid:9,sph_user_guid:[],sphere1:238,sphere:[],spheric:[],spheriod:[3,6],spherioid:307,spheroid:[6,292,307],spike:116,spin:[9,40,113,325,365,386,456],spirit:7,spit:3,spline:[],split:[1,3,6,12,18,41,203,206,210,236,251,327,347,362,445,450,453,465],splittol:[6,347],sppark:6,spread:[1,6,12,332,464],spring:[],springer:296,springgreen:191,sptial:71,sputter:217,sq2:[3,350],sqrt:[2,3,59,81,89,227,235,236,237,273,307,323,325,350,376,382,384,388,390,409,413,482],squar:[],squeez:[214,233,407,408],squibb:[5,7],sr2:164,src:[0,1,3,4,6,7,8,9,11,12,14,15,16,17,18,19,163,188,225,295],srd:[],srolovitz:384,srp:[],srun:12,ssao:[190,485],stabil:[6,9,235,251,368,421],stabl:[6,64,128,238,255,291,297,368,477],stabli:228,stack:[3,8,70],stage:[3,8,87,194,225,250,286,330,357,451,470,482],stagger:[1,3,191,348,463,472,482],stai:[3,14,17,195,196,249,265,282,362,456],stamp:[314,457],stamped:12,stan:17,stand:[0,6,7,12,13,288,421,422,454],standard:[],stanford:9,starikov:319,start:[],start_6:388,start_7:465,startstep:482,stat:[12,54,169,273,287,355,382],statcoul:481,statcoulomb:481,state:[],statement:[3,454,455],stationari:[],statist:[3,6,12,39,41,64,211,212,213,228,229,235,236,237,277,278,282,287,292,295,307,318,319,320,355,357,364,382,383,390,407,448,451,458,464,466,470,473,474],statu:[3,12,54,60,121,169,215,220,236,377,455,470],statvolt:481,std:12,stdin:[3,12,346],steadi:[6,249,255,282],steelblu:191,steep:440,steepest:[7,354],steer:[7,9,215,218,296],stegailov:319,steinhaus:477,stencil:[3,238,347],step:[1,2,3,6,8,10,11,12,13,14,15,16,17,18,19,39,71,91,96,97,110,116,117,128,141,151,161,163,188,189,190,191,192,194,195,196,200,201,203,204,205,206,207,208,210,211,212,213,214,216,217,220,221,224,225,227,229,232,233,236,249,263,273,274,280,281,282,283,284,285,293,295,296,297,307,309,312,313,314,315,316,317,318,319,320,321,322,329,330,332,346,347,353,355,357,358,382,388,392,409,421,422,451,453,454,458,460,461,463,464,465,470,471,473,474,477,482,486],stepani:296,stepwis:87,stesman:314,steve:[0,5,7,13],steven:213,stiff:[6,40,51,211,212,274,275,355,418,477],stile:379,still:[1,3,6,9,11,12,13,14,16,17,18,38,41,61,71,108,116,163,169,185,186,188,191,195,196,210,231,235,263,283,287,307,319,332,347,348,353,374,384,389,390,393,397,407,417,421,423,430,438,456,458,464],stilling:[3,5,7,15,88,142,385,411,419,438,439,468],stipul:232,stl:[9,71,300,303],stl_surf:303,stochast:[4,7,9,194,229,307,314,329,383],stoddard:381,stoke:[238,323],stoll:[235,237],stone:[9,19,348,381],stop:[],stopstep:482,stopthresh:[41,210],storag:[3,12,15,321,362,468],store:[],store_st:308,storm:12,stouch:7,str:482,straatsma:6,straddl:[3,59,61,155,233,292,304,330,456,460,466],straight:292,straightforward:[13,386,477],strain:[2,3,6,59,80,121,124,125,130,131,132,136,137,187,214,216,249,251,255,407,408],strang:[185,190,482],strategi:[],stratford:238,strcmp:332,stream:[3,6,112,141,145,148,149,190,200,216,228,229,235,236,269,278,287,307,483],streamlin:[12,464],streitz:[],streiz:378,strength:[3,9,140,159,170,190,291,324,328,393,422,423,468],stress:[],stretch:[3,54,59,117,211,296],strict:429,strictli:[6,41,185,210,249,282,314,456],stride2:482,stride:[191,229,463,472,482],strietz:378,strike:217,string:[2,3,6,11,12,41,165,188,189,191,203,204,205,206,207,208,210,227,280,293,332,349,361,409,419,420,421,429,452,454,456,466,467,473,474,482],strip:482,strong:[283,364],stronger:6,strongest:[407,408],strongli:[1,6,13,217,292,295,319,477],structrur:3,structur:[],structured_point:293,strucur:73,stuart:[283,284,364,377,438],stub:12,stuck:214,student:277,studi:[6,105,400],studio:12,stukowski:[201,384],style1:[33,50,178,339,393,456],style2:[33,50,178,339,393,456],style:[],style_nam:[251,252],stylist:8,sub1:467,sub:[1,3,4,6,7,8,9,11,12,13,18,33,37,39,40,41,42,50,55,58,61,63,68,87,91,107,140,159,167,178,184,189,190,191,195,196,210,214,216,251,252,255,274,282,287,292,295,319,320,328,330,339,342,350,352,362,367,377,383,389,390,392,393,413,421,422,423,444,445,449,453,456,459,465,473],subbox:[117,190,191],subdirectori:4,subdivis:238,subdomain:238,subequ:11,subgroup:[188,485],subinterv:189,subject:[6,41,168,210,444],submit:[],subramaniyan:13,subroutin:362,subscript:[11,319,333,387,482],subsequ:[6,11,12,41,59,166,191,210,214,227,314,319,320,321,350,361,384,438,454,456,457,463,466,467,476,482,486],subset:[6,11,12,16,41,80,140,188,191,210,247,251,253,254,255,256,257,278,279,283,292,357,362,364,368,393,413,450,453,456,458,461,465,482],substanti:[6,16,439,465],substep:251,substitut:[1,2,3,12,188,234,357,361,386,413,454,467,482],substract:378,substrat:[167,214,251,253,254,256,257,279,292,456],substyl:[406,465],subsystem:319,subtl:[94,96,97,229],subtleti:151,subtract:[3,6,54,63,91,94,97,102,103,105,112,141,143,144,145,146,147,148,149,151,152,153,154,155,157,158,188,194,203,227,228,231,235,236,237,239,243,247,269,276,292,330,358,405,456,466,474,482,483],succe:12,succeed:204,succesfulli:3,success:[2,6,11,12,14,15,116,188,191,201,204,214,217,227,263,278,292,307,314,332,355,357,454,455,463,464],successfulli:[3,11,188,217,454,467],successulli:11,successv:461,sucessfulli:3,sudden:36,suddenli:328,sudo:[11,12],sufac:42,suffer:[16,17,18,322,328,362],suffici:[2,3,7,17,18,41,61,71,189,206,210,249,251,274,307,314,321,324,332,397,413,456,477],suffix2:12,suffix:[],suggest:[0,7,12,249,282,454,477],suit:[7,9,13,196,238,386],suitabl:[4,12,13,17,54,87,188,213,281,311,368,375,390,406,409,421,422,451,470],sum:[3,6,8,9,12,40,70,71,76,80,83,88,89,90,94,98,103,105,107,109,110,112,116,117,123,139,140,141,143,145,146,147,148,151,152,153,154,155,157,159,161,162,163,203,204,205,206,207,208,217,225,228,235,236,241,273,274,278,282,287,292,293,296,306,317,319,321,324,328,330,347,348,355,367,378,382,386,387,396,398,401,409,421,422,429,445,454,474,477,482,483],summar:[6,387],summari:[],summat:[6,9,42,70,88,347,348,372,378,384,385,398,402,439,441,442,443],summer:[3,13,206,421,422],sumsq:117,sun:[21,43,172,333,374,413,422],sunderland:17,sup:[274,282,287,377,477],supercomput:[12,17,18,454],superpos:[393,438],superposit:7,supplement:[229,421,422],supplementari:[215,389,423],suppli:[12,185,227,249,319],support:[1,3,6,7,8,9,11,12,13,14,15,16,17,18,19,40,41,42,61,87,88,102,107,188,189,190,191,192,195,196,197,198,203,210,213,214,215,222,225,229,230,233,235,236,237,238,246,249,251,253,254,255,256,257,268,269,270,271,273,274,279,282,284,286,291,292,297,298,299,300,301,303,304,306,310,311,312,313,317,322,324,328,345,346,347,348,354,355,356,362,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,379,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,416,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,439,440,441,442,443,444,445,447,448,449,453,457,458,463,465,466,467,469,470,477,481,482,485,486],suppos:[3,8,387,482],suppress:[6,12,163],sure:[6,8,11,13,14,185,195,196,214,292,295,329,384,440],surf:166,surfac:[2,3,4,6,8,9,40,42,57,70,118,140,163,165,168,190,194,217,224,233,238,241,273,284,291,300,303,304,307,314,319,324,328,329,357,368,393,407,408,427,445,448,453,459],surface_mov:319,surfact:[379,388],surpris:386,surrog:9,surround:[38,56,70,165,185,191,214,251,253,254,256,257,273,279,292,440,477],suspect:3,suspens:[407,408],sustain:[188,214,390],suzuki:[251,292],svg:6,svn:[7,11,12],sw_exampl:420,swamp:292,swap:[],swegat:318,swiggl:[3,248,324,327,329,459,482],swiler:[140,429],switch7_section_start:388,switchflag:[140,429],swm4:477,swol:53,swope:6,sxx:191,sy0302:9,symbol:[6,12,118,164,289,368,386,429],symmetr:[6,70,87,93,112,131,132,133,136,137,138,141,195,196,214,251,252,315,322,363,375,381,384,441,443,482],symmetri:[3,5,6,7,8,63,64,70,167,188,249,273,333,348,363,456,477],sync:[3,6,475],synchron:[1,229,357,475],synechococcu:7,syntax:[],sysdim:274,sysstem:368,system:[],system_:275,systemat:[6,235],systemx:3,t10:471,t11:471,t12:471,t13:471,t14:471,t15:471,t3e:12,t_chain:3,t_corr:3,t_correl:451,t_dephas:451,t_e:319,t_e_min:319,t_equil:[316,317],t_event:[3,451,470],t_hi:470,t_infil:319,t_init:[282,319],t_iter:3,t_lb:238,t_lo:470,t_order:3,t_oufil:319,t_out:319,t_outfil:319,t_qm:282,t_switch:[316,317],t_target:370,ta06a:429,ta5:164,tab:[2,456],tabbernor:118,tabinn:413,tabul:[3,7,13,22,37,38,44,55,56,65,71,79,92,185,307,347,363,368,369,371,372,373,374,375,378,384,386,398,402,416,419,422,424,438,440,441,446,458],tabular:419,tabulate_long_rang:422,tad:[],tadmor:9,tag:[200,219,477],tagint:3,tail:[3,87,110,159,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,379,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,416,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,445,447,448,449,458,474,482],tailor:[71,320],tait:[9,435,436],taitwat:[],take:[1,2,3,6,11,12,17,20,21,22,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,42,43,44,45,46,47,48,49,51,53,54,56,59,77,87,89,91,109,112,113,116,117,141,143,152,159,163,169,171,172,173,174,175,176,177,179,180,182,183,185,188,190,191,195,196,197,209,210,214,216,223,226,230,234,235,236,251,253,254,255,256,257,258,266,268,269,271,284,292,294,295,304,305,306,307,309,310,311,312,320,323,327,330,333,334,335,336,337,338,341,343,347,348,352,362,363,364,366,368,369,370,371,372,373,374,375,376,377,378,381,382,384,385,387,388,389,390,391,392,396,398,399,400,401,402,403,404,405,406,407,410,414,415,416,418,421,422,423,424,430,437,439,440,441,442,443,444,445,447,448,449,450,454,457,464,465,466,473,474,475,482],taken:[6,59,147,165,187,213,217,227,228,229,235,236,237,238,278,282,285,319,337,384,386,389,439,451,465,466],talk:[6,7],talli:[8,9,41,107,113,203,205,206,207,210,212,235,237,252,307,315,322,386,388,392,421,422],tan:[191,482],tandem:[4,16,292],tangent:250,tangenti:[6,108,307,325,329,390],tanh:319,tantalum:[4,429],taper:[3,285],tar:12,tarbal:[0,8,11,12],target:[3,6,7,8,11,12,17,39,41,191,199,210,214,215,217,227,228,229,235,236,237,251,252,253,254,255,256,257,268,269,270,271,275,279,282,287,292,296,305,310,311,312,313,318,319,322,323,326,345,348,370,382,451,462,464,483],target_fil:318,task:[1,6,7,12,13,14,15,16,17,18,54,191,232,275,320,362,454,475],taskset:16,tatb:[4,288],tatom:477,tau:[3,154,235,236,238,251,279,292,310,311,316,317,319,476,481],tau_1:228,tau_k:228,tau_n_k:228,tb3:164,tbead:157,tbp:368,tchain:[251,252,255,269,270,292],tcl:287,tcom:236,tcsh:[11,12,375],tdamp:[235,251,252,255,292,310,311],tdephas:451,tdrude:[150,220,236,477],teal:191,tech:[7,9,13],technic:[6,7,9,238,285,307,422],techniqu:[6,7,9,87,194,214,249,282,292,323,326,348,413,440,477],technolgi:9,technolog:[9,14,19,232],tell:[2,6,11,12,37,55,184,194,274,342,358,421,422,438,454,458,477],telsa:17,temeperatur:11,temp:[],temp_drud:477,temp_eff:97,tempcom:[144,158],temper:[],temperar:275,temperatur:[],temperature_definit:200,tempfix:471,templ:[7,9,18],templat:[3,8,13,17,19,40,165,166,168,217,227,278,292,295,356,456],templeton2010:200,templeton2011:200,templeton:[9,200],tempor:228,temporari:[2,463],temporarili:[185,291,469,470],ten:14,tend:[29,251,273],tensil:[7,216],tensor:[3,6,8,63,82,83,89,90,91,93,106,112,127,130,131,132,133,136,137,138,140,141,142,143,144,145,146,147,148,149,151,152,153,154,155,156,157,158,214,238,241,251,252,255,277,279,292,322,347,348,356,386,407,408,426,428,474,482],tenth:[127,346],term:[0,1,3,5,6,7,8,9,12,20,21,22,27,38,40,45,46,61,87,88,89,91,110,112,141,142,144,153,158,159,172,173,174,185,191,195,196,202,204,205,208,216,222,228,229,230,235,236,237,238,250,251,252,253,254,255,256,257,268,269,271,275,279,282,291,292,305,310,311,312,319,321,323,325,333,334,343,347,355,358,363,364,368,369,370,371,372,373,374,376,377,378,379,380,381,382,384,385,386,387,389,390,391,398,402,405,406,407,408,409,410,411,413,416,423,437,439,441,442,443,448,465,466,468,474,477],termin:[118,251,355,357,426,428,455,464],termostat:311,terrel:354,terri:7,tersoff:[],tersoff_1:[441,442,443],tersoff_2:[441,442,443],tersoff_mod:442,tertiari:177,tessel:[9,163],test:[],test_descriptor_str:3,testf:185,testu:185,tether:[6,290,296,304,306,317,388],tex:8,texa:418,texas_holdem:291,text:[2,3,4,6,7,8,12,13,38,41,56,185,188,190,191,194,200,203,204,205,206,207,208,210,215,232,280,318,319,331,348,350,357,384,387,397,409,429,440,452,456,457,473,482,484],textur:17,tfactor:[3,191],tfinal:482,tfix:291,tfmc:[],th4:164,than:[1,2,3,6,8,9,11,12,13,14,15,16,17,18,27,38,39,40,41,42,56,57,58,59,61,63,68,71,76,86,88,105,108,112,115,116,119,141,163,166,167,168,174,185,187,188,189,191,194,199,201,203,205,206,207,208,210,211,212,213,214,216,217,218,221,224,227,228,229,230,233,234,235,238,249,273,274,278,279,280,281,282,283,285,287,290,291,292,293,296,297,303,304,305,307,311,312,314,315,319,322,323,324,325,326,327,328,329,330,332,347,348,353,354,355,356,357,358,359,362,367,368,369,371,372,373,384,386,389,390,396,407,408,409,413,421,422,423,430,438,439,440,443,445,446,448,449,451,452,453,454,456,457,458,459,460,461,464,465,468,470,471,473,482,483,484],thank:[232,441,443],thb:422,thb_cutoff:422,thb_cutoff_sq:422,thei:[0,1,2,3,4,6,7,8,11,12,13,15,16,17,20,21,23,24,25,26,27,28,29,30,31,32,35,37,38,39,40,41,42,43,45,46,47,48,49,51,53,54,55,56,57,59,61,63,64,66,68,70,71,74,75,81,82,84,87,89,90,91,93,103,104,106,108,109,112,114,115,116,117,119,140,143,144,145,147,148,151,152,158,160,162,165,167,168,169,171,172,174,175,176,177,179,180,182,183,184,185,188,190,191,194,195,196,197,199,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,222,223,226,227,228,230,231,232,235,236,238,241,248,251,253,254,255,256,257,258,259,260,261,266,268,269,271,277,278,279,280,281,283,284,291,292,293,294,295,307,308,310,311,312,314,318,319,321,322,323,325,327,328,330,332,333,335,336,337,338,341,342,343,345,347,348,350,352,354,355,356,357,358,361,362,363,364,366,367,368,369,370,371,372,373,374,375,376,377,378,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,396,398,399,400,401,402,403,404,405,406,407,408,409,410,411,414,415,416,418,419,421,422,423,424,429,430,437,438,439,440,441,442,443,444,445,446,447,448,449,452,454,456,457,458,459,460,461,465,466,468,469,474,477,482,484,485],them:[1,2,3,4,6,7,8,9,11,12,13,14,39,40,41,54,59,71,91,107,114,117,119,142,167,172,188,190,191,192,202,203,204,205,206,207,208,210,213,214,216,224,232,235,236,247,251,253,254,255,256,257,268,271,273,279,281,289,290,291,292,295,307,310,311,312,314,318,319,321,325,326,327,329,330,333,348,350,356,357,358,362,363,368,375,384,387,389,393,413,423,430,445,451,454,456,463,468,471,477,482,483],themselv:[6,11,168,195,196,210,236,347,348,357,359,363,368,378,384,406,409,410,411,429,482],theor:314,theorem:[228,235,368],theoret:[105,232,282,439],theori:[3,9,12,40,140,200,215,229,251,274,347,348,368,448,470],thereaft:[71,243,276,292,315,322,454],therebi:[320,407,408],therefor:[3,6,12,64,87,150,220,227,236,238,295,314,348,380,420,422,439,444,465,477],therein:[6,409],thereof:87,thermal:[],thermo:[],thermo_modifi:[],thermo_p:[3,63,109,454,474],thermo_press:[63,112,214,220,251,253,254,255,256,257,279,473,474,477],thermo_styl:[],thermo_temp:[63,112,143,213,214,227,251,253,254,255,256,257,268,269,271,274,279,310,311,312,473,474,477],thermoberendsen:6,thermochem:481,thermochemistri:386,thermodyam:[474,481],thermodyanm:[63,213,307,330,465],thermodynam:[],thermophys:413,thermost:[6,147,199,215,220,236,326,477],thermostat:[],thermostatequ:6,thesi:[347,348,407,420],thess:369,theta0:[20,21,24,26,27,28,32,33,35,36,140,174,291,341],theta0max:140,theta10:368,theta1:[172,333,368],theta2:[172,333,368],theta3:[333,368],theta4:368,theta5:368,theta6:368,theta7:368,theta8:368,theta9:368,theta:[3,6,26,27,37,38,63,65,80,140,164,165,174,187,190,230,287,291,319,333,341,392,419,442,456,459,466],theta_0:415,theta_:[341,368],theta_c:392,theta_ijk:368,theta_ijl:333,theta_jik:[410,411],theta_pi:368,theta_sigma:368,thex:283,thi:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,477,478,479,480,481,482,483,484,485,486],thick:[71,118,190,206,459],thie:110,thijss:314,thin:[116,190],thing:[3,6,11,12,54,68,71,214,251,279,292,307,453,454,458,482],think:[3,6,7,8,11,13,191,292,330,335,338,350,355,393,421,422,440,454,458,461,482],third:[6,9,12,29,91,134,140,141,163,203,204,205,206,207,208,228,289,304,305,319,377,387,409,415,444,451,452,454,456,459],thirumalai:177,thistl:191,tho:385,thole:[],thompson:[0,5,7,9,13,112,140,141,350,429],thoroughli:9,those:[1,2,3,4,5,6,7,8,12,13,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,35,38,39,40,43,45,46,47,48,49,50,51,53,54,56,61,71,77,87,91,108,109,110,112,116,140,141,143,145,152,155,165,169,171,172,174,175,176,177,178,179,180,182,183,185,187,188,190,191,201,202,203,204,206,207,208,214,216,217,224,227,230,232,233,234,235,241,250,251,253,254,255,256,257,258,266,268,269,271,278,281,284,292,309,316,317,321,325,326,327,330,331,333,335,336,337,338,339,341,343,347,348,355,357,358,362,363,364,366,369,370,371,372,373,374,375,376,377,378,381,382,384,385,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,409,410,413,414,415,416,418,421,422,423,424,429,430,438,439,440,441,442,443,445,447,448,449,451,453,454,456,458,459,460,461,463,465,466,468,470,473,474,475,477,482,485,486],though:[6,8,12,16,39,40,63,71,91,104,165,188,191,201,206,211,212,214,216,221,252,290,292,294,303,315,322,332,347,350,357,382,383,384,386,387,389,390,406,407,413,451,456,458,459,464,468,475,482],thought:[148,235,269,292,323,324,354,390,397,477],thread:[1,3,9,12,16,17,18,232,320,345,362,469,475],threads_per_atom:3,three:[3,6,54,63,74,87,91,105,117,118,119,130,140,144,164,165,177,194,213,214,219,239,251,255,274,279,292,307,314,316,319,337,341,347,348,356,362,363,364,368,384,385,387,389,390,394,397,409,410,411,415,419,422,423,429,439,441,442,443,454,456,459,482],threebodi:439,thresh:[41,188,190,191,210,454],threshhold:[3,41,190,210,330,454],threshold:[3,41,86,191,210,273,358,422,451,470],thrid:454,through:[3,6,7,9,11,12,63,165,188,192,214,225,227,232,233,238,240,241,242,251,252,275,283,300,314,319,324,346,353,364,385,386,390,398,424,430,437,444,451,454,457,467,473,477],throughout:[6,16,116,118,320,362,456],thru:[3,6,7,11,12,66,74,75,81,89,90,93,103,104,105,106,160,187,188,191,205,248,307,327,332,346,355,361,459],thrust:1,thu:[1,2,3,6,8,9,11,12,18,33,38,39,41,42,50,59,61,63,64,66,67,70,71,72,73,75,77,81,88,90,91,93,103,104,106,108,109,113,114,115,116,117,140,141,142,145,148,153,155,160,161,162,165,167,168,169,173,178,184,185,187,188,190,191,192,194,195,196,197,198,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,220,222,224,228,229,230,231,232,233,235,236,241,246,251,255,265,273,279,281,283,287,290,292,293,294,295,296,300,301,304,305,306,307,308,310,311,312,314,315,318,319,321,322,323,324,327,328,329,330,332,333,339,347,348,350,353,355,356,357,361,362,363,364,367,368,369,370,371,372,373,374,375,376,377,378,382,383,384,385,386,387,388,389,390,393,394,395,396,398,402,406,407,408,409,410,411,413,414,416,418,419,420,421,422,423,429,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,449,451,453,454,456,457,458,459,460,461,463,464,465,466,468,470,471,472,473,474,475,477,481,482,483,484,485],thumb:[8,10,17,165,187,248,292,362,376,459,465],thz:287,ti2:164,ti3:164,ti4:164,tight:368,tightli:281,tij:381,tildeslei:[29,87,381],tile:[3,6,41,62,165,210,396,445,453,482],tilt:[3,6,57,58,59,71,153,167,188,191,206,214,216,217,230,249,251,252,273,282,348,350,456,459,474],time:[],time_integr:200,timedelta:204,timelin:5,timer:[1,14],timescal:[3,202,203,204,205,206,207,208,249,282,287,386,451,465],timespan:[235,236,251,279,292,310,311],timestamp:[3,461],timestep:[],timesteppnig:295,tin:[377,378],tine:204,tinfoil:348,tini:[116,165,355,368,483],tinker:7,tip3p:[],tip4:6,tip4p:[],tip:[],tirrel:324,titan:15,titer:292,titl:[203,204,205,206,207,208,280,422],title1:[203,204,205,206,207,208],title2:[203,204,205,206,207,208],title3:[203,204,205,206,207,208],tji:381,tl1:164,tl3:164,tlbr_msw:419,tlo:470,tloop:[251,252,255],tlsph:122,tlsph_defgrad:122,tlsph_strain:[124,125],tlsph_strain_rat:[124,125,131],tlsph_stress:[121,131,132],tm3:164,tmax:[3,221,470],tmd:[],tmd_dump_fil:318,tmdatom:318,tmin:221,tmp1:[205,208,467],tmp2:[205,208,467],tmp3:467,tmp:[6,12,41,66,68,69,75,90,93,104,106,114,116,145,160,162,188,190,191,210,281,292,315,322,361,463,467,482],tobia:[251,252,292],todd:269,toe:159,toff:[356,456],togeth:[2,3,6,11,12,17,39,41,71,115,141,145,159,166,188,195,196,203,205,210,214,220,229,236,251,279,292,296,301,304,307,325,329,330,388,393,454,459,464,477,485],toggl:[59,169,463],togheth:3,togther:3,tol:[295,307,347,439],toler:[3,214,283,284,285,295,307,355,357,439,451,470],tomato:191,tong:[9,13],too:[1,3,6,7,39,41,64,67,70,72,73,77,88,140,153,166,168,190,210,211,212,214,217,224,227,231,251,274,279,283,287,289,295,307,314,315,319,322,348,357,358,362,382,451,459,470,473,477,482],took:[71,430],tool:[],toolkit:[6,7,13,14,15],top:[0,3,8,9,11,12,13,59,148,187,194,209,216,231,238,250,269,293,326,327,329,357,362,421,422,429,456,460,466],top_group:301,top_veloc:301,topic:[482,485],toplog:[3,453],topolgi:40,topolog:[2,3,6,7,8,12,13,39,40,87,108,115,168,169,191,211,212,232,277,356,393,413,453,456,457,458,460,461,468],topwal:209,torder:292,torqu:[],torsion:[6,172,173,184,364,421,422],torsion_flag:364,tosi:369,tot:287,total:[3,6,11,12,14,15,16,17,18,39,41,63,71,81,88,89,90,91,98,102,103,104,105,107,109,110,117,122,123,124,125,127,128,129,130,131,132,133,140,141,143,145,146,147,148,151,152,153,154,155,157,159,161,162,163,188,194,197,198,201,203,205,206,207,209,210,212,218,220,222,225,226,227,228,233,235,236,237,238,239,241,249,252,255,265,274,275,277,278,282,287,289,291,292,293,294,296,298,301,304,306,315,316,317,319,322,324,328,347,355,356,357,358,359,362,363,365,367,368,377,384,386,390,409,410,411,419,421,422,426,429,445,451,453,454,458,464,465,470,471,474,475,482],touch:[12,233,325],toukmaji:[348,381],toward:[9,29,163,190,194,217,218,233,238,250,255,273,290,304,318,320,341,357],toxvaerd:403,tpa:362,tparam:292,tpartial:145,tpc:362,tpcpu:474,tperiod:292,tptask:[16,362],tqx:[113,188,309],tqy:[113,188,309],tqz:[113,188,309],trace:386,track:[3,7,12,212,216,238,319,329,451,456,462,470,474,482],track_displac:200,tracker:232,trade:[6,12,284,347,348,378,398,402,465,470],tradeoff:413,tradit:[6,9,348],traffic:12,trail:[2,22,44,77,87,116,159,169,173,191,195,196,292,334,352,356,357,375,387,409,422,429,450,456,464,466],train:422,traingul:303,traj:215,traj_titl:422,trajectori:[3,6,12,39,87,188,232,251,253,254,256,257,258,259,261,262,264,266,267,268,269,270,271,275,292,295,296,300,320,329,382,413,422,458,466,477,481],tran:[176,177],transfer:[1,6,16,200,220,232,234,315,319,322,347,362,368,477],transform:[],transit:[6,86,250,296,318,357,379,406,411,443,451,470],translat:[3,6,61,63,94,95,96,97,98,144,145,149,158,203,227,231,235,236,241,251,256,257,268,271,275,292,310,311,312,314,350,386,456,474],transmiss:232,transmit:[6,232],transpar:[14,17],transport:[200,319,431],transpos:12,trap:[3,6,91,161,204,233,321,482],trapezoid:[204,482],trate:[3,216,232],travel:307,treat:[2,3,6,8,17,40,42,71,82,84,85,141,144,147,158,169,186,203,204,205,208,217,226,252,274,277,278,292,307,319,321,328,332,346,347,355,356,358,367,380,386,387,389,392,396,410,411,423,445,456,459,461,464,466,477,482],treatment:[9,287,380],tree:[3,277,406],tref:383,tri:[],tri_surfac:[120,303],trial:[217,227,365,465],triangl:[2,3,6,7,40,42,82,113,134,163,194,267,292,303,307,427,438,445,456,466],triangleflag:456,triangul:[2,6,13,303,427],triangular:[4,6,42,82,113,214,267,303,427,456],tricki:[453,477],triclin:[],triflag:6,trigger:[3,11,12,62,86,210,213,227,355,474],trigon:25,trilinear:238,trilino:17,trim:[3,457],tripflag:421,tripl:[2,140,216,368,421,452,454],triplet:[3,34,37,385,415,419,439,441,442,443],trivial:[8,11],trj:422,trott:[7,9,14,17,140,429],troubl:[11,12],truli:8,truncat:[3,5,6,12,71,281,287,324,328,354,366,378,386,390,398,400,403,413,418,466],trung:15,tscale:[3,249,282],tschopp:67,tsige:372,tsrd:[307,329],tstart:[228,229,235,237,251,252,292,310,311,312,313,382,462],tstat:[],tstop:[228,229,235,237,251,252,292,310,311,312,313,382,462,470],tsuzuki:73,tthi:127,ttm:[],ttm_mod:319,tucker:[140,429],tuckerman2006:251,tuckerman:[251,252,270,275,292,465],tune:[],tunnel:275,turn:[3,4,6,12,22,33,37,39,44,50,54,55,59,65,69,71,108,115,140,164,169,173,178,184,190,191,194,201,211,212,213,214,227,232,251,263,277,280,281,292,307,334,339,342,347,355,357,358,360,362,364,380,392,393,409,413,422,437,438,452,456,458,463,468,469,474,475,479,484],turquois:191,tutein:364,tutori:[6,9],tweak:[12,165,232,362],twice:[3,6,16,17,63,88,171,191,194,195,196,214,248,251,285,362,393,454,456,463],twin:67,twist:[407,408],two:[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,22,38,39,41,42,44,54,56,57,59,61,63,65,68,69,71,76,77,79,87,88,92,107,108,113,114,115,116,117,118,140,142,144,147,148,150,151,153,159,163,164,165,166,168,173,187,188,189,190,191,194,195,196,201,202,203,204,205,206,207,208,210,211,212,213,214,217,220,224,227,228,229,231,233,234,235,236,238,241,250,251,252,255,273,274,275,278,279,281,282,283,287,289,292,296,304,307,314,315,317,319,322,325,328,330,332,334,343,347,348,350,352,353,355,356,357,360,362,363,364,365,367,368,369,370,371,372,375,376,377,378,380,381,382,383,384,385,386,387,389,390,393,396,397,398,402,406,407,408,409,413,416,419,420,421,422,423,425,429,430,437,438,439,441,442,443,444,445,448,449,450,451,453,454,456,457,458,459,460,463,466,468,469,470,471,473,474,477,481,482,483,484,485,486],two_temperatur:200,twobodi:[441,443],twogrid:3,twojmax:[140,429],twolevel:[3,453],txt2html:8,txt:[8,12,13,188,192,280,281,319,345,356,397,446,461,482],typcial:[41,210],type1:[77,118,164],type2:[77,118,164],type:[],typen:[77,118,164],typic:[1,2,3,6,7,8,10,11,12,13,14,15,16,17,18,29,39,40,41,45,46,55,57,59,61,63,70,71,86,87,102,107,119,128,159,163,165,166,168,188,189,190,191,194,195,196,197,199,200,203,210,211,212,213,214,216,217,222,224,225,227,230,236,251,263,274,277,278,281,283,285,291,292,295,297,299,307,314,322,323,329,347,350,354,355,356,357,358,359,362,373,375,376,378,388,389,392,393,397,398,402,407,408,409,413,423,426,428,438,440,443,451,452,454,456,457,458,459,465,468,470,471,473,481,482,484,486],typicali:12,tzou:319,u_f:238,u_ij:419,u_prom:368,uberuaga:[250,357],ubiquit:[11,368],uhf:365,uiuc:[9,17],uloop:[3,275,357,361,482],ulpsh:[],ulsph:[],ulsph_num_neigh:129,ultim:470,ultra:163,umbrella:[],umin:[26,27,48,49,174],unabl:[3,11,41,210],unaffect:[188,214,251,292,457,468,473],unalt:[195,196,263],unambigu:[71,206],unari:[332,482],unbalanc:3,unbias:[153,386],unbond:[212,456],unbroken:80,uncertainti:40,unchang:[59,214,217,250,251,253,254,256,257,265,279,292,456,457,460,466],uncharg:[40,348],uncom:[1,4],uncompress:[12,71,190],uncomput:[],uncorrel:[228,314,451],uncoupl:275,undefin:[3,12],under:[0,5,6,7,8,9,10,12,18,21,22,44,140,172,173,190,232,249,278,282,283,333,334,352,386,406,422,429,454,470,477],underestim:163,underflow:190,undergo:[6,86,87,153,228,235,236,296,307],undergon:[213,307],underli:[6,9,12,17,70,190,251,319,350],undermin:39,underpredict:6,underscor:[2,3,63,194,213,214,249,251,253,254,255,256,257,268,269,271,279,281,310,311,312,332,356,482],understand:[1,6,8,227,252],understood:[188,368],undesir:[59,214,216,251,292],undetermin:307,undisturb:[407,408],undo:[169,232],undump:[],unexpect:[3,462],unfix:[],unfix_flux:200,unfold:305,unfortun:[320,464,465],uniaxi:[3,144,255],uniform:[7,16,41,88,116,200,210,211,212,235,238,241,252,314,383,389,423,451,453,482,483],uniformli:[59,116,187,238,278,319,419,440,483],uninstal:12,uninterrupt:[201,217,227,248,249,251,253,254,255,256,257,268,269,270,271,281,282,292,296,306,309,317,319,325],union:[3,6,40,191,328,330,456,459],uniqu:[3,6,7,8,9,12,39,71,122,228,229,235,236,255,281,287,289,357,384,386,456,482,483],unit:[],unit_styl:3,uniti:[385,413,433],unitless:[64,67,70,71,114,170,203,206,207,216,227,249,251,282,325,355,365,390,416,418,439,441,442,443,481],unitlesss:[78,80,111],univ:[9,13],univers:[3,6,9,12,13,18,87,232,347,348,357,361,407,411,418,420,443,450,453,482],universit:[9,13],unix:[12,17,234,467],unknown:[3,12,64,73,456],unless:[2,3,11,12,15,16,18,55,57,67,118,150,164,165,188,191,192,199,214,217,227,235,251,253,254,256,257,278,279,292,307,318,349,355,376,413,440,454,459,463,468,482],unlik:[12,33,50,59,89,104,155,165,178,188,235,251,255,279,285,287,310,311,312,339,346,347,363,368,384,387,392,393,397,409,410,411,422,429,438,453,458,463,468,482,486],unlimit:419,unlucki:3,unmark:7,unmodifi:308,unnecessari:16,unoccupi:319,unoptim:190,unpack:[0,8,11,362],unpack_bord:8,unpack_border_bodi:8,unpack_border_hybrid:8,unpack_border_vel:8,unpack_comm:8,unpack_comm_bodi:8,unpack_comm_hybrid:8,unpack_comm_vel:8,unpack_exchang:8,unpack_restart:8,unpack_revers:8,unpack_reverse_comm:8,unpack_reverse_hybrid:8,unpad:191,unperturb:87,unphys:[3,6,236,251,292,456],unpredict:[290,466],unrecogn:3,unrel:[8,9,13,171],unreli:413,unrestrain:291,unrestrict:365,unscal:[3,113,159,188,309,457],unset:[347,386],unshift:381,unsmooth:404,unsolv:[359,373],unsort:191,unspecifi:[216,456],unsplit:477,unstabl:[3,238],unstrain:216,unsuccess:[3,278],unsuffici:[],unsupport:3,untar:12,until:[2,3,6,12,14,38,39,41,56,71,119,185,190,210,214,217,227,232,278,300,307,309,316,332,346,347,358,361,362,368,390,440,451,457,461,462,464,470,481,482],untilt:459,unus:368,unusu:[3,8,358],unwant:[3,165,347],unwrap:[3,66,74,75,81,89,90,93,103,104,106,113,141,160,188,191,192,202,213,215,232,248,292,304,309,456,457,460,466],unwrapexpand:188,unzip:12,up_intern:190,updat:[0,3,6,8,12,13,123,124,125,135,136,137,138,188,194,201,211,212,220,225,228,235,236,238,240,241,244,245,248,249,251,252,253,254,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,277,279,281,282,287,292,299,300,309,310,311,312,314,319,330,362,368,381,413,421,422,428,451,456,458,466,467,470,477],upenn:[11,13],upgrad:12,upon:[6,201,232,368,444,470],upper:[2,3,41,57,59,71,88,103,105,142,154,161,187,191,204,206,207,210,214,220,236,238,251,282,287,324,325,330,331,355,390,459,483],upsid:6,upsilon:389,upto:[3,458,464],upward:217,urbana:[232,347,348,407],urey_bradlei:20,usa:9,usabl:[12,227,384],usag:[3,6,8,236,273,287,307,393,406,456],use_ldg:17,useful:362,user:[],user_misc:[30,31,35,175,180,183,337],userguid:9,usr:[11,12,14,457],usual:[2,3,6,9,12,14,17,18,24,28,32,35,36,47,61,71,87,117,144,145,150,158,163,182,188,195,196,201,203,213,214,215,216,227,230,235,237,249,255,274,282,283,289,291,292,307,315,319,322,324,328,332,338,345,357,358,362,373,376,379,381,389,393,394,397,406,407,408,413,415,425,426,427,428,429,439,444,451,455,457,461,465,467,470,473,474,482,486],util:[8,12,17,18,362,389,475],utilizi:12,utilz:[12,475],utsa:418,utsph_strain_r:137,uttormark:13,uuml:274,uwo:9,v11:6,v22:6,v33:6,v_0:[3,319],v_a:[8,216],v_abc:[454,474,482],v_area:[2,482],v_atomfil:466,v_c:159,v_cluster:281,v_dc:159,v_delta:87,v_dhug:[249,282],v_diff:[161,321],v_displac:216,v_dk:159,v_dlj:159,v_drai:[249,282],v_dx:[248,459],v_dy:[248,459],v_dz:248,v_e_hbond:392,v_ea:[421,422],v_eb:[421,422],v_eqeq:[421,422],v_espac:197,v_f:454,v_fac:454,v_flux:231,v_foo:[454,482],v_ij:419,v_increas:230,v_integr:321,v_jx:91,v_jy:91,v_jz:91,v_k11:91,v_k22:91,v_k33:91,v_k:159,v_ke:[188,485],v_left:459,v_lgr_po:[249,282],v_lgr_vel:[249,282],v_linear:[324,327,329],v_lj:159,v_mol:191,v_mu:407,v_myi:248,v_myindex:482,v_myke:117,v_mystep:463,v_myvar:[8,191],v_myx:248,v_n:238,v_name1:[159,216],v_name2:[159,216],v_name:[3,6,71,87,117,188,190,191,195,196,197,198,202,203,204,205,206,207,208,209,222,230,231,233,235,236,248,294,301,309,310,311,312,321,324,327,329,454,459,463,466,472,474,482,483],v_nstep:330,v_occ:388,v_omega:248,v_oscil:[197,198,209,222,294],v_phi:230,v_prefactor:[195,196,430],v_press:141,v_pressdown:[327,329],v_push:197,v_pxy:6,v_pxz:6,v_pyz:6,v_r0:233,v_r1:163,v_r2:163,v_r:[163,233],v_rad:330,v_radiu:233,v_ramp:[324,327,329],v_rate:[216,233],v_scale1:[195,196],v_scale2:[195,196],v_size:[195,196],v_t_qm:282,v_temp:315,v_theta:[230,459],v_tp:216,v_up:459,v_v0:482,v_v11:6,v_v22:6,v_v33:6,v_v:[248,482],v_valu:[190,454],v_vx:248,v_vy:248,v_vz:[248,483],v_wiggl:[324,327,329],v_x:[2,165,233,248,324,327,329,454,459,482],v_xave:6,v_xmax:6,v_xx:165,v_y:[165,233,459],v_yi:165,v_z:459,vacanc:[4,163,316],vacf:[],vacuum:[319,348,379,443,449],valanc:368,vale:3,valenc:[285,368,386,421,422],valent:368,valeriu:9,valid:[2,3,6,9,11,12,71,118,151,164,190,191,214,227,235,273,292,307,330,332,345,350,384,386,389,419,456,457,464,466,482],vallon:409,valon:409,valu:[],valuabl:475,value0:482,value1:[12,145,202,203,204,205,206,207,208,255,321,330,467],value2:[12,145,202,203,204,205,206,207,208,255,321,330,467],valuei:204,valuej:204,valuev:[7,9],valus:281,van:[9,53,87,107,279,283,288,310,376,377,406,409,421,422,448,483],vanderwa:[413,474],vanilla:[6,8,12],vanillia:42,vanish:[220,287,295],vapor:[41,210,227,473],vapour:314,var1:467,var2:467,varaibl:[3,459],varavg:12,vare:319,vari:[1,18,41,61,62,71,87,118,153,155,164,195,196,200,203,204,206,210,214,216,249,251,279,291,292,310,311,319,324,347,373,382,391,404,407,418,430,440,453],variabl:[],variable_hill_factor:13,variable_nam:422,varianc:[117,382,482],variant:[1,3,6,12,83,98,255,292,347,354,362,410,411,441,443,465,469,483],variat:[12,41,210,482],varieti:[1,2,6,7,9,13,15,71,190,232,345,350,393,409,421,422,438,482],variou:[],varreturn:454,varshalovich:140,varshnei:13,vartiabl:3,vbia:6,vcm:[],vdim:[154,315,322,483],vdisplac:[3,233,248,324,327,329,482],vdw:[3,377,422],vec1:[117,281],vec2:[117,281],vec:273,vector:[],vel:[3,6,61,203,206,207,216,236,278,296,326,382,386,390,451,458,459,461,477,482],veld:[13,307,348,372,402],veloc:[],velocit:[231,382,386,390],velocity_bottom:238,velocity_gradi:428,velocity_temp:483,velocity_top:238,vendor:12,verbatim:454,verbos:12,veri:[1,3,6,7,8,9,10,12,13,17,41,71,87,116,117,188,190,191,202,203,204,205,206,207,208,210,211,212,214,227,241,251,252,263,275,290,295,310,311,321,357,358,359,362,386,390,407,408,418,429,430,440,464,474,475,477,481,484],verifi:[8,362,413,465,471],verlag:296,verlet:[1,3,7,8,12,18,200,235,251,263,269,275,295,308,319,327,330,450,453,465],versa:[3,6,13,59,159,167,213,233,235,236,292,456,457,477],versu:[6,14,15,16,18,39,41,80,103,104,116,161,191,210,292,295,348,372,381,390,402,413,474,482],vertex:[134,303],vertic:[2,41,134,190,210,217,303,482],vfinal:482,vfrac:113,vhi:[154,483],via:[],vibrat:[6,9,217,229,273,282,287,341,386,451,465],vice:[3,6,13,59,159,167,213,233,235,236,292,456,457,477],video:190,view:[4,6,7,9,13,188,190,307,368,386,387],viewer:[188,190],viewpoint:190,vij:382,vika:13,vim:[],vincent:[9,19],violat:314,violet:191,virial:[3,63,91,112,140,141,159,195,196,214,220,251,252,253,254,255,256,257,277,279,292,295,347,362,365,382,383,386,394],virialmod:394,virtual:[6,7,8,12,439],virut:9,visa:7,viscoelast:[111,390,418],viscoelsat:418,viscos:[],viscou:[],viscous:292,visit:[293,421,422],vista:188,visual:[],viz:[11,13],viz_tool:11,vizplotgui_tool:11,vizualiziton:293,vlo:[154,483],vmax:[214,307],vmd:[6,7,9,11,13,188,192,232,457],vmdarch:192,vmdhome:192,vname:[165,482],voigt:[6,140],vol:[91,126,141,220,236,278,409,443,452,474],volfactor:347,volt:[420,481],volum:[2,3,6,40,41,58,59,63,80,87,91,100,112,116,118,126,130,139,141,163,164,165,168,201,203,206,207,210,214,216,217,227,238,249,251,252,255,258,259,261,262,264,266,267,268,269,270,271,278,279,282,292,296,319,324,328,330,347,350,356,370,407,408,418,435,436,449,452,453,456,459,466,474,477,481,482],volumetr:80,von:[133,138],voro:[3,9,163],vorobyov:477,voronoi:[],voter2:[451,470],voter:[410,411,451,470],voth:[40,275],vpz:326,vratio:482,vri:391,vrpn:232,vshear:325,vstream:6,vtarget:[3,322],vtk:[],vv0210:13,vx0:161,vxcm:292,vxhi:[217,278],vxlo:[217,278],vy0:161,vycm:292,vyhi:[217,278],vylo:[217,278],vz0:161,vzcm:292,vzhi:217,vzi:326,vzlo:217,w_1:140,w_2:140,w_i:140,w_ik:419,waal:[87,107,376,377,406,421,422,448],wadlei:[13,368],wag:[7,9,13],wagner:[7,9,200,238,409],wai:[1,2,3,6,7,8,11,12,15,18,22,44,59,63,65,66,69,71,75,77,79,87,90,91,92,93,104,106,108,114,115,116,140,141,143,144,145,146,147,148,151,152,153,154,155,157,158,159,160,162,165,168,173,185,187,188,190,191,194,195,196,203,205,206,208,209,212,213,214,216,225,228,233,235,236,238,249,251,255,263,275,279,281,290,292,293,296,304,307,309,310,311,312,315,318,319,321,324,327,329,330,334,335,336,338,341,348,350,352,355,357,358,362,363,364,375,378,379,382,383,384,385,387,389,392,393,395,398,409,410,411,413,415,419,420,423,429,430,437,439,441,443,450,451,454,456,457,459,460,461,464,465,466,482,483],wait:[1,12,232,274,451,453],walk:[3,228,235,236],wall:[],wall_surac:134,wall_surfac:[134,300],wallhi:324,wallstyl:325,wander:304,wang:[348,409,419],want:[0,1,2,3,5,6,7,8,9,11,12,17,38,40,56,63,66,68,71,75,81,90,93,103,104,106,107,109,110,112,114,116,141,145,160,161,162,165,168,171,185,188,190,191,194,195,196,197,202,203,210,213,216,217,220,222,225,227,233,236,246,265,273,278,281,291,292,294,304,306,308,315,317,322,324,328,330,332,348,350,357,363,364,368,376,377,382,384,387,393,394,395,409,415,419,421,422,430,439,440,441,443,445,452,454,456,457,458,459,461,463,464,474,477,482,484,486],ward:368,warm:[16,386],warn:[],warner:363,warp:[5,409],warranti:7,warren:382,wasn:3,wast:3,watanab:[316,317],watch:357,water:[],watkin:182,wave:[7,9,40,199,249,286,326,365,386],wavefunct:[9,365,386],wavelength:[118,164],wavepacket:[40,365,386,456],wavevector:274,wbodi:83,weak:283,web:[1,8,14,15,16,17,375],webb:200,weber:[3,5,7,15,88,142,385,411,419,438,439,468],websit:8,weckner:418,weight:[],welcom:454,well:[1,3,6,7,8,9,11,12,13,15,16,17,18,27,40,51,67,71,112,141,144,151,165,174,190,191,197,201,203,208,210,211,212,214,217,222,227,231,235,238,242,248,251,255,278,292,294,301,314,317,325,355,357,362,367,388,389,392,393,394,407,408,409,423,430,441,442,443,454,456,458,460,465,470,475,477,481,485],wennberg:347,went:[3,11],were:[3,4,5,6,7,11,12,13,15,16,18,19,34,41,42,52,56,60,70,71,109,112,116,143,145,165,168,169,181,188,191,194,197,203,205,206,207,208,210,216,222,224,231,232,263,269,293,325,326,330,340,347,359,361,386,390,393,397,418,422,451,453,454,456,457,458,459,461,463,471,474,482,483,485,486],weren:461,western:9,westview:448,what:[],whatev:[8,12,14,15,108,113,116,117,119,190,191,195,196,214,251,279,281,325,350,354,355,357,362,374,376,421,422,470,477,482],wheat:191,whelan:164,when:[0,1,2,3,4,6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,35,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,59,61,62,63,71,81,86,88,103,104,105,107,109,112,113,116,117,119,142,143,144,148,152,153,155,161,163,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,188,189,190,191,192,194,195,196,197,198,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,221,222,223,224,225,226,227,229,230,232,235,238,239,241,242,246,251,252,253,254,255,256,257,258,263,265,266,268,269,271,273,277,278,279,280,281,282,284,285,286,287,291,292,293,294,295,296,304,305,307,308,309,310,312,314,315,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,335,336,337,338,339,341,342,343,344,345,346,347,348,350,353,354,355,356,357,358,359,361,362,363,364,366,369,370,371,372,373,374,375,376,377,378,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,398,399,400,401,402,403,404,405,406,407,408,409,410,411,413,414,415,416,418,419,421,422,423,424,429,430,437,439,440,441,442,443,445,447,448,449,451,453,454,456,457,458,459,460,461,462,463,464,465,466,467,468,470,471,473,474,475,476,481,482,483,484,486],whenev:[0,8,12,14,71,191,202,207,292,350,392,454,465,469,482,486],whenth:3,where:[1,3,6,8,9,10,11,12,14,15,18,21,23,24,25,26,27,28,29,32,35,36,37,39,40,41,43,47,48,49,51,55,61,63,65,66,68,69,70,71,73,75,79,80,82,83,84,85,87,88,89,90,92,93,94,95,96,97,98,104,106,108,112,113,114,115,116,117,118,119,141,143,144,145,146,147,148,151,152,153,154,155,157,158,159,160,162,164,166,168,169,172,174,184,188,190,191,194,195,196,197,198,203,204,206,209,210,213,214,216,217,221,222,224,225,227,228,229,230,231,233,235,236,237,238,241,242,244,246,248,249,252,255,263,266,272,273,274,275,278,280,281,282,285,287,292,293,294,295,296,300,301,304,306,309,310,311,312,315,316,317,319,322,323,324,325,327,328,329,330,333,335,336,337,338,341,342,343,345,348,350,354,355,356,357,358,359,362,363,364,367,368,369,371,375,376,377,378,379,380,381,382,384,385,386,387,388,389,390,391,392,393,394,395,398,402,407,408,409,410,411,413,415,416,418,419,420,421,422,423,429,432,435,436,437,438,439,440,441,442,443,448,449,450,451,453,454,455,456,458,459,460,461,463,465,466,468,470,471,472,473,474,477,481,482,483,484,486],wherea:[6,11,201,228,251,283,314,319,477],wherebi:284,wherev:231,whether:[6,8,11,12,16,17,39,40,54,59,61,63,70,71,102,107,109,152,153,185,190,191,193,194,195,196,203,208,211,212,213,214,215,216,220,224,227,236,248,251,255,281,295,307,315,321,322,330,332,345,347,348,356,360,362,371,373,377,391,393,397,407,408,409,413,422,438,451,454,456,457,459,461,468,469,470,473,482,483],which:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,28,29,32,33,37,38,39,40,41,42,44,45,46,47,50,51,53,54,55,56,58,59,61,63,64,66,67,70,71,72,73,74,75,76,77,78,80,81,82,83,85,87,88,89,90,91,93,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,116,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,171,172,173,176,177,178,179,182,184,185,187,188,190,191,192,194,195,196,197,198,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,241,242,245,246,248,249,250,251,252,253,254,255,256,257,259,261,263,264,266,267,268,269,270,271,273,274,275,277,278,279,280,281,282,283,284,285,287,288,289,290,291,292,293,294,295,296,297,298,299,301,303,304,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,324,325,326,327,328,329,330,332,333,334,336,338,339,342,343,345,346,347,348,350,352,353,354,355,356,357,358,359,361,362,363,364,365,367,368,369,371,372,373,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,400,401,402,404,406,407,408,409,410,411,413,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,433,438,439,440,441,442,443,444,445,448,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,477,482,483,484,485,486],whichev:[12,361,451,470],white:[191,228,235,236,237,292,311,319,456,482,485],whitesmok:191,whitespac:[2,3,191,356,456],who:[0,3,6,7,8,9,13,363,384],whole:[220,232,274,287,296,477],wholli:217,whose:[3,6,7,8,19,38,39,56,59,76,87,150,168,185,190,191,201,216,233,234,248,251,253,254,256,257,273,274,290,291,295,307,321,328,330,350,357,358,386,400,425,427,439,440,441,443,477,482,483],why:[3,6,236,315,322],wide:[1,6,7,9,61,63,194,315,322,350,359,373,376,386,421,422],wider:1,width:[190,191,365,388],wiggl:[3,216,248,300,324,325,327,329,459],wigner:140,wih:6,wiki:14,wikipedia:[6,14],wild:[3,12,22,44,77,87,116,173,195,196,292,334,352,375,392,450,458,463,484,486],wildcard:[3,12,159,169,188,190,191,289,375,463,466,485,486],wildli:251,win:362,window:[3,4,12,13,71,188,190,192,203,204,205,206,207,208,232,293,312,313,375,457],wipe:[194,393,438,478,480],wire:291,wirt:191,wisconsin:13,wise:[3,12,382,439,465],wish:[2,3,5,6,7,8,11,12,14,17,57,58,59,71,117,141,145,166,167,169,171,188,191,202,203,204,206,207,208,212,216,217,224,227,233,238,242,278,281,292,295,307,308,324,325,350,357,362,371,392,393,409,413,421,440,454,456,457,458,464,468,474,482,483,486],within:[1,2,3,6,8,9,11,12,13,15,16,17,29,39,40,41,42,55,59,61,63,65,69,70,71,72,73,77,79,92,108,112,115,116,117,119,122,140,156,165,168,189,190,191,195,196,201,202,203,205,206,207,208,210,211,212,213,217,219,224,227,233,235,273,277,278,279,281,283,292,293,295,297,299,303,304,308,319,322,324,328,330,332,346,350,355,356,357,358,359,362,367,369,371,378,383,384,385,386,388,393,394,397,398,409,416,417,418,423,424,438,439,441,442,443,444,451,453,454,456,464,465,468,470,477,481,482],without:[1,2,3,4,6,7,8,9,11,12,14,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,59,87,109,112,143,147,152,166,171,172,174,175,176,177,179,180,182,183,185,188,190,191,192,194,197,203,205,206,207,208,209,214,216,223,226,228,230,232,235,248,251,253,254,255,256,257,258,266,268,269,270,271,278,281,283,284,286,290,292,293,294,295,300,307,310,312,323,327,331,333,335,336,337,338,341,343,346,347,348,357,358,362,363,364,366,369,370,371,372,373,374,375,376,377,378,381,382,384,385,386,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,410,413,414,415,416,418,422,423,424,430,438,439,440,441,442,443,445,447,448,449,454,456,464,465,474,477,481,482],witht:9,witi:15,wolf:[],wolff:[413,440],won:[3,290,408],wong:[200,368],word:[2,3,6,8,12,29,63,191,194,201,202,203,204,206,207,208,215,233,260,265,280,285,291,321,332,346,376,413,452,454,456,482,483],work:[1,3,6,7,8,9,11,12,14,16,18,39,54,59,60,88,117,118,144,146,147,148,152,153,154,155,157,158,163,164,188,190,192,195,196,203,206,207,213,225,234,235,236,238,242,248,251,256,257,268,269,270,271,289,291,293,295,310,311,312,317,346,358,362,375,377,380,382,393,407,408,409,413,451,453,454,457,458,460,464,465,467,470,482],workaround:[116,292,413,483],worker:[12,421,422],workhors:8,workstat:[362,454],world:[3,12,140,346,357,361,450,453,454,471,482],worlei:382,worri:17,worsen:18,worst:328,worth:[203,204,205,206,207,208,282,293],would:[1,3,4,5,6,7,8,11,12,22,29,37,40,41,42,44,55,70,71,89,91,116,141,145,153,165,166,167,168,173,184,188,191,192,194,195,196,198,201,203,210,213,215,216,220,221,224,227,230,231,232,236,248,251,252,263,273,275,279,281,283,287,290,307,314,318,326,327,330,332,333,334,335,336,338,339,342,347,350,352,354,355,357,358,361,362,363,364,368,375,376,377,378,382,383,384,385,387,393,394,395,409,410,411,415,419,421,422,426,428,429,439,441,442,443,451,454,456,459,460,461,463,464,465,466,467,471,473,474,477,482,483,485,486],wrap:[1,3,6,11,12,57,59,165,167,187,188,189,191,192,202,207,215,216,217,232,238,248,292,304,307,324,326,328,347,348,357,454,456,457,459,464],wrapper:[],wrigger:296,wright:355,writabl:3,write:[],write_atom_weight:200,write_data:[],write_dump:[],write_freq:422,write_head:8,write_restart:[],writen:293,written:[3,5,6,7,8,9,12,13,14,17,65,69,115,140,163,188,189,190,191,192,194,195,196,197,198,199,200,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,218,220,221,222,223,224,225,226,228,229,230,231,232,233,235,236,237,238,239,240,241,242,243,244,245,247,250,258,259,260,261,262,263,264,265,266,267,272,273,274,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,304,305,307,308,310,311,312,313,314,315,316,318,319,321,322,323,324,326,327,328,329,331,345,350,358,384,393,446,448,451,452,454,457,458,462,463,470,471,472,473,482,484,485,486],wrong:[3,11,214,251,272,324,328,329,358,422,458,463],wrote:[3,458],wt1:413,wt2:413,wt3:413,wurtzit:350,www:[0,2,3,4,5,6,7,8,10,11,12,13,15,363,384,407,420,421,422,481],x86:12,x_ij:419,x_ijkl:333,x_kjli:333,x_ljik:333,xave:6,xavx:16,xcm:[8,292,482],xdr:[12,188],xeon:[1,4,7,9,12,16,17,18,362,469],xflag:[152,153,239,241,247,292,314],xhe:103,xhi:[2,6,57,59,167,188,216,318,324,327,329,456,459,474,482],xhi_bound:[6,188],xhi_new:456,xhost:[12,16],xi_ij:419,xiaowang:[13,387,441,443],xiij:273,xlat:[165,216,233,474],xlo:[2,6,11,57,59,167,188,216,233,318,324,327,329,456,459,474,482],xlo_bound:[6,188],xlo_new:456,xmax:[6,199,221,263,482],xmgrace:[],xmin:482,xml:[192,420],xml_label:420,xmovi:[],xmu:[325,390],xplane:325,xplor:188,xpo:165,xrd:[],xsph:9,xsu:[3,188,457],xt3:188,xt4:[18,188],xt5:[18,188],xtc:[3,6,7,9,12,188,189,190,191,192],xtcdump:191,xvf:12,xwall:[326,327,329],xxx:12,xyz:[3,6,7,13,42,66,71,106,108,153,160,165,188,189,190,191,192,206,214,241,251,252,255,279,289,290,292,304,306,325,327,329,349,356,453,457,483,485],xzhou:[13,387],xzy:453,yang:419,yb2:164,yb3:164,ybox:216,ycm:292,year:[5,7],yeh:347,yellow:[190,191],yellowgreen:191,yet:[3,7,9,17,39,190,195,283,289,324,348,354,355,362,374,376,377,386,448,454,456,457,482,484,485],yflag:[152,153,239,241,247,292,314],yhi:[6,59,167,188,216,318,324,327,329,456,459,474],yhi_bound:[6,188],yield:[6,91,110,117,141,148,153,191,204,214,220,251,269,283,315,321,322,325,330,347,367,382,390,413,418,474,482],yip:316,ylat:[165,216,233,474],ylo:[6,59,167,188,216,318,324,327,329,456,459,474],ylo_bound:[6,188],ymax:[199,482],ymin:482,york:[275,348],yoshida:[251,292],you:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,35,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,56,57,58,59,61,63,66,68,71,73,74,75,77,81,87,88,89,90,91,93,102,103,104,106,107,109,110,112,114,116,117,140,141,143,144,145,148,152,153,158,159,160,161,162,163,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,187,188,190,191,192,194,195,196,197,198,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,220,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,246,248,251,253,254,255,256,257,258,263,265,266,268,269,270,271,274,275,277,278,279,281,283,284,287,290,291,292,294,295,296,304,306,307,308,310,311,312,313,315,316,317,318,319,321,322,323,324,325,327,328,329,330,332,333,335,336,337,338,339,341,343,346,347,348,350,352,354,355,356,357,358,361,362,363,364,366,368,369,370,371,372,373,374,375,376,377,378,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,409,410,411,413,414,415,416,417,418,419,420,421,422,423,424,429,430,431,432,433,434,435,436,439,440,441,442,443,445,447,448,449,450,451,452,453,454,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,473,474,475,477,481,482,483,484,486],young:[390,425,427],your:[0,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,59,61,107,109,112,143,144,148,152,158,163,165,166,167,168,169,171,172,174,175,176,177,179,180,182,183,185,187,188,189,190,197,200,204,205,208,209,211,212,213,214,216,217,223,226,227,230,232,235,248,251,253,254,255,256,257,258,266,268,269,271,278,281,284,290,292,294,295,296,309,310,312,315,319,321,322,323,324,325,327,328,329,330,333,335,336,337,338,341,343,348,350,356,357,358,361,362,363,364,366,368,369,370,371,372,373,374,375,376,377,378,381,382,383,384,385,387,388,389,390,391,392,393,394,395,396,398,399,400,401,402,403,404,405,406,407,409,410,411,413,414,415,416,418,419,421,422,423,424,430,439,440,441,442,443,445,447,448,449,450,453,454,456,458,459,460,463,464,465,466,467,468,469,473,474,481,482,484,486],yourself:[6,8,12,13,214,356],yplane:325,ypo:165,ysu:[3,188,457],yuan:9,yukawa:[],yukawa_1_1:446,yxz:453,yzx:453,z_i:[386,443,449],z_j:[443,449],z_meam:409,zachari:13,zannoni:389,zbl:[],zblcut:443,zblcutinn:429,zblcutout:429,zblexpscal:443,zblz:429,zcm:292,zcylind:325,zepeda:201,zero:[3,4,6,9,11,12,26,27,39,41,48,49,59,61,63,66,71,75,87,88,90,93,102,103,104,105,106,108,109,110,112,113,114,115,116,117,118,121,140,141,144,145,146,153,154,157,158,160,162,163,164,165,167,168,169,171,174,183,185,187,188,190,191,194,195,196,197,199,201,202,203,204,205,206,207,208,209,210,211,212,214,216,221,222,223,224,226,227,228,229,231,235,236,237,238,239,241,247,248,249,251,255,263,266,275,280,281,282,283,284,287,289,290,292,293,294,295,298,299,301,307,309,314,315,317,319,322,323,324,325,326,327,329,330,331,332,337,350,353,355,356,357,358,362,365,368,369,371,372,373,376,378,381,382,386,389,391,392,393,394,398,400,402,403,406,408,409,413,418,422,423,424,437,440,444,449,451,452,453,456,457,459,461,463,464,465,466,470,471,474,477,482,483,484,486],zeta:[3,238,283,387],zfactor:190,zflag:[152,153,239,241,247,292,314],zhang:[292,315,390],zhi:[3,6,167,188,199,318,324,327,329,456,459,474],zhi_bound:[6,188],zhou:[13,368,387,419,441,443],zhu:436,ziegenhain:13,ziegler:[277,409,438,443,449],zimmerman2004:200,zimmerman2010:200,zimmerman:[9,70,200,368],zlat:[216,233,474],zlib:188,zlo:[3,6,167,188,199,318,324,326,327,329,456,459,474],zlo_bound:[6,188],zmax:[199,238,482],zmin:[238,482],zn2:164,zone:[118,293],zoom:[3,188,190,191],zplane:325,zr4:164,zrest:306,zsu:[3,188,457],zwall:324,zwall_veloc:238,zxy:453,zybin:422,zyx:453},titles:["LAMMPS Documentation","5. Accelerating LAMMPS performance","3. Commands","12. Errors","7. Example problems","13. Future and history","6. How-to discussions","1. Introduction","10. Modifying & extending LAMMPS","4. Packages","8. Performance & scalability","11. Python interface to LAMMPS","2. Getting Started","9. Additional tools","5.USER-CUDA package","5.GPU package","5.USER-INTEL package","5.KOKKOS package","5.USER-OMP package","5.OPT package","angle_style charmm command","angle_style class2 command","angle_coeff command","angle_style cosine command","angle_style cosine/delta command","angle_style cosine/periodic command","angle_style cosine/shift command","angle_style cosine/shift/exp command","angle_style cosine/squared command","angle_style dipole command","angle_style fourier command","angle_style fourier/simple command","angle_style harmonic command","angle_style hybrid command","angle_style none command","angle_style quartic command","angle_style sdk command","angle_style command","angle_style table command","atom_modify command","atom_style command","balance command","Body particles","bond_style class2 command","bond_coeff command","bond_style fene command","bond_style fene/expand command","bond_style harmonic command","bond_style harmonic/shift command","bond_style harmonic/shift/cut command","bond_style hybrid command","bond_style morse command","bond_style none command","bond_style nonlinear command","bond_style quartic command","bond_style command","bond_style table command","boundary command","box command","change_box command","clear command","comm_modify command","comm_style command","compute command","compute ackland/atom command","compute angle/local command","compute angmom/chunk command","compute basal/atom command","compute body/local command","compute bond/local command","compute centro/atom command","compute chunk/atom command","compute cluster/atom command","compute cna/atom command","compute com command","compute com/chunk command","compute contact/atom command","compute coord/atom command","compute damage/atom command","compute dihedral/local command","compute dilatation/atom command","compute displace/atom command","compute erotate/asphere command","compute erotate/rigid command","compute erotate/sphere command","compute erotate/sphere/atom command","compute event/displace command","compute fep command","compute group/group command","compute gyration command","compute gyration/chunk command","compute heat/flux command","compute improper/local command","compute inertia/chunk command","compute ke command","compute ke/atom command","compute ke/atom/eff command","compute ke/eff command","compute ke/rigid command","compute meso_e/atom command","compute meso_rho/atom command","compute meso_t/atom command","compute_modify command","compute msd command","compute msd/chunk command","compute msd/nongauss command","compute omega/chunk command","compute pair command","compute pair/local command","compute pe command","compute pe/atom command","compute plasticity/atom command","compute pressure command","compute property/atom command","compute property/chunk command","compute property/local command","compute rdf command","compute reduce command","compute saed command","compute slice command","compute smd/contact_radius command","compute smd/damage command","compute smd/hourglass_error command","compute smd/internal_energy command","compute smd/plastic_strain command","compute smd/plastic_strain_rate command","compute smd/rho command","compute smd/tlsph_defgrad command","compute smd/tlsph_dt command","compute smd/tlsph_num_neighs command","compute smd/tlsph_shape command","compute smd/tlsph_strain command","compute smd/tlsph_strain_rate command","compute smd/tlsph_stress command","compute smd/triangle_mesh_vertices","compute smd/ulsph_num_neighs command","compute smd/ulsph_strain command","compute smd/ulsph_strain_rate command","compute smd/ulsph_stress command","compute smd/vol command","compute sna/atom command","compute stress/atom command","compute force/tally command","compute temp command","compute temp/asphere command","compute temp/chunk command","compute temp/com command","compute temp/cs command","compute temp/deform command","compute temp/deform/eff command","compute temp/drude command","compute temp/eff command","compute temp/partial command","compute temp/profile command","compute temp/ramp command","compute temp/region command","compute temp/region/eff command","compute temp/rotate command","compute temp/sphere command","compute ti command","compute torque/chunk command","compute vacf command","compute vcm/chunk command","compute voronoi/atom command","compute xrd command","create_atoms command","create_bonds command","create_box command","delete_atoms command","delete_bonds command","dielectric command","dihedral_style charmm command","dihedral_style class2 command","dihedral_coeff command","dihedral_style cosine/shift/exp command","dihedral_style fourier command","dihedral_style harmonic command","dihedral_style helix command","dihedral_style hybrid command","dihedral_style multi/harmonic command","dihedral_style nharmonic command","dihedral_style none command","dihedral_style opls command","dihedral_style quadratic command","dihedral_style command","dihedral_style table command","dimension command","displace_atoms command","dump command","dump h5md command","dump image command","dump_modify command","dump molfile command","echo command","fix command","fix adapt command","fix adapt/fep command","fix addforce command","fix addtorque command","fix append/atoms command","fix atc command","fix atom/swap command","fix ave/atom command","fix ave/chunk command","fix ave/correlate command","fix ave/histo command","fix ave/spatial command","fix ave/spatial/sphere command","fix ave/time command","fix aveforce command","fix balance command","fix bond/break command","fix bond/create command","fix bond/swap command","fix box/relax command","fix colvars command","fix deform command","fix deposit command","fix drag command","fix drude command","fix drude/transform/direct command","fix dt/reset command","fix efield command","fix enforce2d command","fix evaporate command","fix external command","fix freeze command","fix gcmc command","fix gld command","fix gle command","fix gravity command","fix heat command","fix imd command","fix indent command","fix ipi command","fix langevin command","fix langevin/drude command","fix langevin/eff command","fix lb/fluid command","fix lb/momentum command","fix lb/pc command","fix lb/rigid/pc/sphere command","fix lb/viscous command","fix lineforce command","fix meso command","fix meso/stationary command","fix_modify command","fix momentum command","fix move command","fix msst command","fix neb command","fix nvt command","fix nvt/eff command","fix nph/asphere command","fix nph/sphere command","fix nphug command","fix npt/asphere command","fix npt/sphere command","fix nve command","fix nve/asphere command","fix nve/asphere/noforce command","fix nve/body command","fix nve/eff command","fix nve/limit command","fix nve/line command","fix nve/noforce command","fix nve/sphere command","fix nve/tri command","fix nvt/asphere command","fix nvt/sllod command","fix nvt/sllod/eff command","fix nvt/sphere command","fix oneway command","fix orient/fcc command","fix phonon command","fix pimd command","fix planeforce command","fix poems","fix pour command","fix press/berendsen command","fix print command","fix property/atom command","fix qbmsst command","fix qeq/point command","fix qeq/comb command","fix qeq/reax command","fix qmmm command","fix qtb command","fix reax/bonds command","fix reax/c/species command","fix recenter command","fix restrain command","fix rigid command","fix saed/vtk command","fix setforce command","fix shake command","fix smd command","fix smd/adjust_dt command","fix smd/integrate_tlsph command","fix smd/integrate_ulsph command","fix smd/move_tri_surf command","fix smd/setvel command","<no title>","fix smd/wall_surface command","fix spring command","fix spring/rg command","fix spring/self command","fix srd command","fix store/force command","fix store/state command","fix temp/berendsen command","fix temp/csvr command","fix temp/rescale command","fix temp/rescale/eff command","fix tfmc command","fix thermal/conductivity command","fix ti/rs command","fix ti/spring command","fix tmd command","fix ttm command","fix tune/kspace command","fix vector command","fix viscosity command","fix viscous command","fix wall/lj93 command","fix wall/gran command","fix wall/piston command","fix wall/reflect command","fix wall/region command","fix wall/srd command","group command","group2ndx command","if command","improper_style class2 command","improper_coeff command","improper_style cossq command","improper_style cvff command","improper_style fourier command","improper_style harmonic command","improper_style hybrid command","improper_style none command","improper_style ring command","improper_style command","improper_style umbrella command","include command","info command","jump command","kspace_modify command","kspace_style command","label command","lattice command","log command","mass command","min_modify command","min_style command","minimize command","molecule command","neb command","neigh_modify command","neighbor command","newton command","next command","package command","pair_style adp command","pair_style airebo command","pair_style awpmd/cut command","pair_style beck command","pair_style body command","pair_style bop command","pair_style born command","pair_style brownian command","pair_style buck command","pair_style buck/long/coul/long command","pair_style lj/charmm/coul/charmm command","pair_style lj/class2 command","pair_coeff command","pair_style colloid command","pair_style comb command","pair_style coul/cut command","pair_style coul/diel command","pair_style born/coul/long/cs command","pair_style lj/cut/dipole/cut command","pair_style dpd command","pair_style dsmc command","pair_style eam command","pair_style edip command","pair_style eff/cut command","pair_style eim command","pair_style gauss command","pair_style gayberne command","pair_style gran/hooke command","pair_style lj/gromacs command","pair_style hbond/dreiding/lj command","pair_style hybrid command","pair_style kim command","pair_style lcbop command","pair_style line/lj command","pair_style list command","pair_style lj/cut command","pair_style lj96/cut command","pair_style lj/cubic command","pair_style lj/expand command","pair_style lj/long/coul/long command","pair_style lj/sf command","pair_style lj/smooth command","pair_style lj/smooth/linear command","pair_style lj/cut/soft command","pair_style lubricate command","pair_style lubricateU command","pair_style meam command","pair_style meam/spline","pair_style meam/sw/spline","pair_style mie/cut command","pair_modify command","pair_style morse command","pair_style nb3b/harmonic command","pair_style nm/cut command","pair_style none command","pair_style peri/pmb command","pair_style polymorphic command","pair_style quip command","pair_style reax command","pair_style reax/c command","pair_style resquared command","pair_style lj/sdk command","pair_style smd/hertz command","pair_style smd/tlsph command","pair_style smd/tri_surface command","pair_style smd/ulsph command","pair_style snap command","pair_style soft command","pair_style sph/heatconduction command","pair_style sph/idealgas command","pair_style sph/lj command","pair_style sph/rhosum command","pair_style sph/taitwater command","pair_style sph/taitwater/morris command","pair_style srp command","pair_style command","pair_style sw command","pair_style table command","pair_style tersoff command","pair_style tersoff/mod command","pair_style tersoff/zbl command","pair_style thole command","pair_style tri/lj command","pair_write command","pair_style yukawa command","pair_style yukawa/colloid command","pair_style zbl command","partition command","prd command","print command","processors command","python command","quit command","read_data command","read_dump command","read_restart command","region command","replicate command","rerun command","reset_timestep command","restart command","run command","run_style command","set command","shell command","special_bonds command","suffix command","tad command","temper command","thermo command","thermo_modify command","thermo_style command","timer command","timestep command","<no title>","uncompute command","undump command","unfix command","units command","variable command","velocity command","write_data command","write_dump command","write_restart command"],titleterms:{"break":211,"default":[37,39,40,55,57,58,59,61,62,71,87,88,102,103,105,107,118,122,123,140,145,153,154,158,164,165,168,170,184,186,187,188,190,191,192,193,195,196,197,199,200,201,203,206,207,208,211,212,214,215,216,217,221,224,227,228,233,235,236,237,238,239,241,246,249,251,252,255,269,270,274,275,278,279,280,281,282,284,287,289,290,292,293,307,309,314,315,316,317,320,322,324,326,330,342,345,347,348,350,351,353,354,356,358,359,360,362,365,368,370,386,407,408,413,421,422,437,438,451,452,453,456,457,459,461,463,464,465,468,470,472,473,474,475,476,481,483,484,485],"function":482,"long":[369,371,372,373,374,378,380,381,398,402,406,416,424],"new":8,"static":12,acceler:1,ackland:64,acknowledg:7,adapt:[195,196],addforc:197,addit:[12,13],addtorqu:198,adiabat:6,adjust_dt:297,adp:363,airebo:364,alloi:384,amber2lmp:13,amber:6,angl:[8,65],angle_coeff:22,angle_styl:[2,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],angmom:66,append:199,arrai:6,aspher:[6,82,144,253,256,259,260,268],atc:[9,200],atom:[6,7,8,64,67,70,71,72,73,76,77,78,80,81,85,95,96,99,100,101,110,111,113,140,141,163,199,201,202,281,482],atom_modifi:39,atom_styl:40,attract:5,aug:0,aveforc:209,awpmd:[9,365],balanc:[41,210],barostat:6,basal:67,beck:366,berendsen:[279,310],between:6,binary2txt:13,bodi:[6,8,42,68,261,367],bond:[8,13,69,211,212,213,288],bond_coeff:44,bond_styl:[2,43,45,46,47,48,49,50,51,52,53,54,55,56],bop:368,born:[369,380],boundari:[7,57],box:[6,58,214],brownian:370,buck:[371,372,380],bug:3,build:[11,12],calcul:6,call:12,categori:2,centro:70,ch2lmp:13,chain:13,change_box:59,charmm:[6,20,171,373,406],chunk:[6,66,71,75,90,93,104,106,114,145,160,162,203],citat:7,class2:[21,43,172,333,374],clear:60,cluster:72,cmm:9,cna:73,code:6,coeffici:6,colloid:[324,376,448],colvar:[9,13,215],com:[74,75,146],comb3:377,comb:[284,377],come:5,comm_modifi:61,comm_styl:62,command:[2,6,8,12,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,478,479,480,481,482,483,484,485,486],common:3,comparison:1,compos:6,comput:[2,6,8,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,482],compute_modifi:102,condit:7,conduct:[6,315],constant:6,constraint:7,contact:76,contact_radiu:120,coord:77,core:6,correl:204,cosin:[23,24,25,26,27,28,174],cossq:335,coul:[369,371,372,373,374,378,379,380,391,398,402,406,416,424],coupl:6,creat:212,create_atom:165,create_bond:166,create_box:167,createatom:13,creation:7,csld:311,csvr:311,cubic:400,cuda:[9,14,109,112,143,152,197,209,223,226,230,251,258,294,295,310,312,323,369,371,373,374,384,390,391,398,399,401,404,414,439,441],custom:8,cut:[49,365,371,374,378,381,386,388,398,399,406,412,416],cvff:336,damag:[78,121],data2xmovi:13,data:6,databas:13,deby:[378,398],deform:[148,149,216],delete_atom:168,delete_bond:169,delta:24,deposit:217,descript:[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,478,479,480,481,482,483,484,485,486],diagnost:7,diel:379,dielectr:170,diffract:9,diffus:6,dihedr:[8,79],dihedral_coeff:173,dihedral_styl:[2,171,172,174,175,176,177,178,179,180,181,182,183,184,185],dilat:80,dimens:186,dipol:[6,29,381],direct:220,discuss:6,disp:6,displac:[81,86],displace_atom:187,distribut:[7,12],document:0,dpd:382,drag:218,dreid:[6,392],drude:[6,9,150,219,220,236],dsf:[378,398],dsmc:383,dump:[6,8,188,189,190,192],dump_modifi:191,dynam:283,eam:[13,384],echo:193,edip:385,eff:[9,13,96,97,149,151,156,237,252,262,270,313,386],efield:222,eim:387,elast:6,emac:13,enforce2d:223,ensembl:7,erot:[82,83,84,85],error:3,evapor:224,event:86,exampl:[1,4,6,11,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,469,470,471,472,473,474,475,476,478,479,480,481,482,483,484,485,486],exp:[27,174],expand:[46,401],extend:[8,11],extern:225,fcc:273,featur:[7,8,482],fene:[45,46],fep:[9,13,87,196],field:[6,7],file:6,finit:6,fix:[2,6,8,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,482],fix_modifi:[195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,220,221,222,223,224,225,226,227,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329],flow:6,fluid:238,flux:[91,142],forc:[6,7,142,308],fourier:[30,31,175,337],freez:226,from:[6,11],futur:5,gauss:388,gaybern:389,gcmc:227,gener:[1,6,7,13],get:12,gld:228,gle:229,global:6,gpu:[15,366,369,371,373,374,376,378,381,382,384,388,389,391,398,399,400,401,412,414,423,424,430,439,440,441,447,448,449],gran:[325,390],granular:6,graviti:230,gromac:391,group2ndx:331,group:[88,330,482],gyrat:[89,90],h5md:[9,188,189],harmon:[32,47,48,49,176,179,324,338,415],hbond:392,heat:[91,142,231],heatconduct:431,helix:177,hertz:[390,425],histo:205,histori:[5,390],hook:390,hourglass_error:122,how:6,hybrid:[33,50,178,339,393],idealga:432,imag:[188,190],imd:232,implicit:373,improp:[8,92],improper_coeff:334,improper_styl:[2,333,335,336,337,338,339,340,341,342,343],includ:344,inclus:8,indent:233,indic:0,individu:2,induc:6,inertia:93,info:[0,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,220,221,222,223,224,225,226,227,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329,345],input:[2,6,8],instal:11,integr:[6,7],integrate_tlsph:298,integrate_ulsph:299,intel:[9,16,373,389,398,439],interfac:[6,11],internal_energi:123,introduct:7,invers:220,ipi:234,ipp:13,jul:[],jump:346,kate:13,keyword:413,kim:394,kokko:17,kspace:[2,8,320],kspace_modifi:347,kspace_styl:[6,348],label:349,lammp:[0,1,2,6,7,8,11,12],langevin:[235,236,237],lattic:350,lcbop:395,librari:[6,11,12],limit:[263,312],line:[12,264,396],linear:405,lineforc:243,list:[2,397],lj1043:324,lj126:324,lj93:324,lj96:399,lmp2arc:13,lmp2cfg:13,lmp2vmd:13,local:[6,65,68,69,79,92,108,115],log:351,lubric:407,lubricateu:408,make:12,mass:352,math:482,matlab:13,meam:[409,410,411],measur:1,meso:[244,245],meso_:99,meso_rho:100,meso_t:101,messag:3,micelle2d:13,mie:412,min_modifi:353,min_styl:354,minim:[8,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,220,221,222,223,224,225,226,227,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329,355],misc:9,mod:[319,442],model:[6,7],modifi:8,molecul:356,molfil:[9,188,192],moltempl:13,momentum:[239,247],morri:436,mors:[51,392,414],move:248,move_tri_surf:300,movi:[188,190],mpi:11,msd:[103,104,105],msi2lmp:13,msm:[369,371,373,378,398],msst:249,multi:[6,7,179],multipl:6,nb3b:415,neb:[250,357],neigh_modifi:358,neighbor:359,nemd:6,newton:360,next:361,nharmon:180,noforc:[260,265],non:[6,7],none:[34,52,181,340,417],nongauss:105,nonlinear:53,nph:[251,252,253,254,292],nphug:255,npt:[251,252,256,257,292],nve:[258,259,260,261,262,263,264,265,266,267,292],nvt:[251,252,268,269,270,271,292],omega:106,omp:[9,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,43,45,46,47,48,49,51,53,54,56,171,172,174,175,176,177,179,180,182,183,185,230,251,253,254,255,256,257,258,266,268,269,271,284,333,335,336,337,338,341,343,363,364,366,369,370,371,372,373,374,376,377,378,379,381,382,384,387,388,389,390,391,392,393,396,398,399,400,401,402,403,404,405,406,407,410,411,414,415,416,418,423,424,430,439,440,441,442,443,445,447,448,449],onewai:272,open:7,oper:482,opl:182,opt:[19,373,384,398,402,414],optim:1,option:[6,8,12],orient:273,orthogon:6,other:6,output:[6,7,8,12,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,220,221,222,223,224,225,226,227,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329],overlai:393,overview:11,packag:[1,9,12,14,15,16,17,18,19,362],pair:[6,107,108],pair_coeff:375,pair_modifi:413,pair_styl:[2,363,364,365,366,367,368,369,370,371,372,373,374,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,447,448,449],pair_writ:446,pairwis:8,parallel:11,paramet:6,pars:2,partial:152,particl:[6,7,42],partit:450,past:5,per:6,perform:[1,10],peri:418,period:25,phonon:[9,13,274],pimd:275,piston:326,planeforc:276,plastic:111,plastic_strain:124,plastic_strain_r:125,pmb:418,poem:277,point:283,polariz:6,poli:[370,407,408],polym:13,polymorph:419,post:7,potenti:[2,6,8],pour:278,pppm:6,prd:451,pre:7,press:279,pressur:112,previou:12,print:[280,452],problem:[3,4],process:[6,7],processor:453,profil:153,properti:[6,113,114,115,281],pymol_aspher:13,python:[11,13,454],qbmsst:282,qeq:[283,284,285],qmmm:[9,286],qtb:[9,287],quadrat:183,quantiti:6,quartic:[35,54],quip:420,quit:455,ramp:154,rattl:295,rdf:116,read_data:456,read_dump:457,read_restart:458,reax:[13,285,288,289,421,422],reaxc:9,rebo:364,recent:290,reduc:117,refer:482,reflect:327,region:[8,117,155,156,328,459,482],relat:[20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,40,41,43,44,45,46,47,48,49,50,51,53,54,55,56,57,59,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,83,84,85,86,87,89,91,92,93,94,95,96,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,224,226,227,228,229,230,231,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,287,288,289,290,292,293,294,296,297,298,299,300,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,341,342,343,344,345,346,347,348,350,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,461,462,463,464,465,466,468,469,470,471,472,473,474,475,476,478,479,480,482,483,484,485,486],relax:214,replic:460,replica:[6,7],report:3,requir:12,rerun:461,rescal:[312,313],reset:221,reset_timestep:462,resquar:423,restart2data:13,restart:[6,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,220,221,222,223,224,225,226,227,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329,463],restrain:291,restrict:[14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,478,479,480,481,482,483,484,485,486],rho:126,rhosum:434,rigid:[6,83,98,241,292],ring:341,rotat:157,rule:2,run:[6,11,12,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,220,221,222,223,224,225,226,227,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329,464],run_styl:465,scalabl:10,scalar:6,screen:12,script:[2,6,8,11,12],sdk:[36,424],self:306,serial:11,set:[6,466],setforc:294,setvel:301,shake:295,share:[11,12],shell:[6,467],shield:283,shift:[26,27,48,49,174],simpl:31,simul:6,size:6,slater:283,slice:119,sllod:[269,270],small:292,smd:[9,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,296,297,298,299,300,301,303,425,426,427,428],smooth:[404,405],sna:140,snad:140,snap:429,snapshot:6,snav:140,soft:[406,430],solver:2,sourc:7,spatial:[206,207],spc:6,speci:289,special:[7,413,482],special_bond:468,sph:[9,431,432,433,434,435,436],sphere:[84,85,158,207,241,254,257,266,271],spheric:6,spline:[410,411],spring:[304,305,306,317],squar:28,srd:[307,329],srp:437,standard:9,start:[12,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,220,221,222,223,224,225,226,227,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329],state:309,stationari:245,stop:[195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,220,221,222,223,224,225,226,227,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329],store:[308,309],strategi:1,streitz:378,stress:[141,142],structur:2,style:[1,2,6,8],submit:8,suffix:469,summari:6,swap:[201,213],syntax:[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,274,275,276,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,478,479,480,481,482,483,484,485,486],system:6,tabl:[0,6,38,56,185,440,441],tad:470,taitwat:[435,436],talli:142,temp:[143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,310,311,312,313],temper:471,temperatur:6,tersoff:[441,442,443],test:11,tfmc:314,thermal:[6,315],thermo:[6,472],thermo_modifi:473,thermo_styl:474,thermodynam:[6,8],thermostat:6,thole:444,time:[6,208],timer:475,timestep:476,tip3p:6,tip4p:[6,378,398,402,406],tip:12,tlsph:426,tlsph_defgrad:127,tlsph_dt:128,tlsph_num_neigh:129,tlsph_shape:130,tlsph_strain:131,tlsph_strain_rat:132,tlsph_stress:133,tmd:318,tool:13,torqu:160,transform:220,tri:[267,445],tri_surfac:427,triangle_mesh_vertic:134,triclin:6,tstat:382,ttm:319,tune:320,type:7,ulsph:428,ulsph_num_neigh:135,ulsph_strain:136,ulsph_strain_r:137,ulsph_stress:138,umbrella:343,uncomput:478,undump:479,unfix:480,unit:481,user:[9,12,14,16,18],vacf:161,valu:[6,482],variabl:[6,8,482],variou:1,vcm:162,vector:[6,321,482],veloc:483,version:[0,5,12],via:12,vim:13,viscos:[6,322],viscou:[242,323],visual:6,vol:139,voronoi:163,vtk:293,wall:[6,324,325,326,327,328,329],wall_surfac:303,warn:3,water:6,weight:205,what:[7,12],wolf:[369,378],wrapper:11,write:6,write_data:484,write_dump:485,write_restart:486,xmgrace:13,xmovi:13,xrd:164,yukawa:[447,448],zbl:[443,449]}}) \ No newline at end of file +Search.setIndex({envversion:47,filenames:["Manual","Section_accelerate","Section_commands","Section_errors","Section_example","Section_history","Section_howto","Section_intro","Section_modify","Section_packages","Section_perf","Section_python","Section_start","Section_tools","accelerate_cuda","accelerate_gpu","accelerate_intel","accelerate_kokkos","accelerate_omp","accelerate_opt","angle_charmm","angle_class2","angle_coeff","angle_cosine","angle_cosine_delta","angle_cosine_periodic","angle_cosine_shift","angle_cosine_shift_exp","angle_cosine_squared","angle_dipole","angle_fourier","angle_fourier_simple","angle_harmonic","angle_hybrid","angle_none","angle_quartic","angle_sdk","angle_style","angle_table","atom_modify","atom_style","balance","body","bond_class2","bond_coeff","bond_fene","bond_fene_expand","bond_harmonic","bond_harmonic_shift","bond_harmonic_shift_cut","bond_hybrid","bond_morse","bond_none","bond_nonlinear","bond_quartic","bond_style","bond_table","boundary","box","change_box","clear","comm_modify","comm_style","compute","compute_ackland_atom","compute_angle_local","compute_angmom_chunk","compute_basal_atom","compute_body_local","compute_bond_local","compute_centro_atom","compute_chunk_atom","compute_cluster_atom","compute_cna_atom","compute_com","compute_com_chunk","compute_contact_atom","compute_coord_atom","compute_damage_atom","compute_dihedral_local","compute_dilatation_atom","compute_displace_atom","compute_erotate_asphere","compute_erotate_rigid","compute_erotate_sphere","compute_erotate_sphere_atom","compute_event_displace","compute_fep","compute_group_group","compute_gyration","compute_gyration_chunk","compute_heat_flux","compute_improper_local","compute_inertia_chunk","compute_ke","compute_ke_atom","compute_ke_atom_eff","compute_ke_eff","compute_ke_rigid","compute_meso_e_atom","compute_meso_rho_atom","compute_meso_t_atom","compute_modify","compute_msd","compute_msd_chunk","compute_msd_nongauss","compute_omega_chunk","compute_pair","compute_pair_local","compute_pe","compute_pe_atom","compute_plasticity_atom","compute_pressure","compute_property_atom","compute_property_chunk","compute_property_local","compute_rdf","compute_reduce","compute_saed","compute_slice","compute_smd_contact_radius","compute_smd_damage","compute_smd_hourglass_error","compute_smd_internal_energy","compute_smd_plastic_strain","compute_smd_plastic_strain_rate","compute_smd_rho","compute_smd_tlsph_defgrad","compute_smd_tlsph_dt","compute_smd_tlsph_num_neighs","compute_smd_tlsph_shape","compute_smd_tlsph_strain","compute_smd_tlsph_strain_rate","compute_smd_tlsph_stress","compute_smd_triangle_mesh_vertices","compute_smd_ulsph_num_neighs","compute_smd_ulsph_strain","compute_smd_ulsph_strain_rate","compute_smd_ulsph_stress","compute_smd_vol","compute_sna_atom","compute_stress_atom","compute_tally","compute_temp","compute_temp_asphere","compute_temp_chunk","compute_temp_com","compute_temp_cs","compute_temp_deform","compute_temp_deform_eff","compute_temp_drude","compute_temp_eff","compute_temp_partial","compute_temp_profile","compute_temp_ramp","compute_temp_region","compute_temp_region_eff","compute_temp_rotate","compute_temp_sphere","compute_ti","compute_torque_chunk","compute_vacf","compute_vcm_chunk","compute_voronoi_atom","compute_xrd","create_atoms","create_bonds","create_box","delete_atoms","delete_bonds","dielectric","dihedral_charmm","dihedral_class2","dihedral_coeff","dihedral_cosine_shift_exp","dihedral_fourier","dihedral_harmonic","dihedral_helix","dihedral_hybrid","dihedral_multi_harmonic","dihedral_nharmonic","dihedral_none","dihedral_opls","dihedral_quadratic","dihedral_style","dihedral_table","dimension","displace_atoms","dump","dump_h5md","dump_image","dump_modify","dump_molfile","echo","fix","fix_adapt","fix_adapt_fep","fix_addforce","fix_addtorque","fix_append_atoms","fix_atc","fix_atom_swap","fix_ave_atom","fix_ave_chunk","fix_ave_correlate","fix_ave_correlate_long","fix_ave_histo","fix_ave_spatial","fix_ave_spatial_sphere","fix_ave_time","fix_aveforce","fix_balance","fix_bond_break","fix_bond_create","fix_bond_swap","fix_box_relax","fix_colvars","fix_deform","fix_deposit","fix_drag","fix_drude","fix_drude_transform","fix_dt_reset","fix_efield","fix_enforce2d","fix_evaporate","fix_external","fix_freeze","fix_gcmc","fix_gld","fix_gle","fix_gravity","fix_heat","fix_imd","fix_indent","fix_ipi","fix_langevin","fix_langevin_drude","fix_langevin_eff","fix_lb_fluid","fix_lb_momentum","fix_lb_pc","fix_lb_rigid_pc_sphere","fix_lb_viscous","fix_lineforce","fix_meso","fix_meso_stationary","fix_modify","fix_momentum","fix_move","fix_msst","fix_neb","fix_nh","fix_nh_eff","fix_nph_asphere","fix_nph_sphere","fix_nphug","fix_npt_asphere","fix_npt_sphere","fix_nve","fix_nve_asphere","fix_nve_asphere_noforce","fix_nve_body","fix_nve_eff","fix_nve_limit","fix_nve_line","fix_nve_noforce","fix_nve_sphere","fix_nve_tri","fix_nvt_asphere","fix_nvt_sllod","fix_nvt_sllod_eff","fix_nvt_sphere","fix_oneway","fix_orient_fcc","fix_phonon","fix_pimd","fix_planeforce","fix_poems","fix_pour","fix_press_berendsen","fix_print","fix_property_atom","fix_qbmsst","fix_qeq","fix_qeq_comb","fix_qeq_reax","fix_qmmm","fix_qtb","fix_reax_bonds","fix_reaxc_species","fix_recenter","fix_restrain","fix_rigid","fix_saed_vtk","fix_setforce","fix_shake","fix_smd","fix_smd_adjust_dt","fix_smd_integrate_tlsph","fix_smd_integrate_ulsph","fix_smd_move_triangulated_surface","fix_smd_setvel","fix_smd_tlsph_reference_configuration","fix_smd_wall_surface","fix_spring","fix_spring_rg","fix_spring_self","fix_srd","fix_store_force","fix_store_state","fix_temp_berendsen","fix_temp_csvr","fix_temp_rescale","fix_temp_rescale_eff","fix_tfmc","fix_thermal_conductivity","fix_ti_rs","fix_ti_spring","fix_tmd","fix_ttm","fix_tune_kspace","fix_vector","fix_viscosity","fix_viscous","fix_wall","fix_wall_gran","fix_wall_piston","fix_wall_reflect","fix_wall_region","fix_wall_srd","group","group2ndx","if","improper_class2","improper_coeff","improper_cossq","improper_cvff","improper_fourier","improper_harmonic","improper_hybrid","improper_none","improper_ring","improper_style","improper_umbrella","include","info","jump","kspace_modify","kspace_style","label","lattice","log","mass","min_modify","min_style","minimize","molecule","neb","neigh_modify","neighbor","newton","next","package","pair_adp","pair_airebo","pair_awpmd","pair_beck","pair_body","pair_bop","pair_born","pair_brownian","pair_buck","pair_buck_long","pair_charmm","pair_class2","pair_coeff","pair_colloid","pair_comb","pair_coul","pair_coul_diel","pair_cs","pair_dipole","pair_dpd","pair_dsmc","pair_eam","pair_edip","pair_eff","pair_eim","pair_gauss","pair_gayberne","pair_gran","pair_gromacs","pair_hbond_dreiding","pair_hybrid","pair_kim","pair_lcbop","pair_line_lj","pair_list","pair_lj","pair_lj96","pair_lj_cubic","pair_lj_expand","pair_lj_long","pair_lj_sf","pair_lj_smooth","pair_lj_smooth_linear","pair_lj_soft","pair_lubricate","pair_lubricateU","pair_meam","pair_meam_spline","pair_meam_sw_spline","pair_mie","pair_modify","pair_morse","pair_nb3b_harmonic","pair_nm","pair_none","pair_peri","pair_polymorphic","pair_quip","pair_reax","pair_reax_c","pair_resquared","pair_sdk","pair_smd_hertz","pair_smd_tlsph","pair_smd_triangulated_surface","pair_smd_ulsph","pair_snap","pair_soft","pair_sph_heatconduction","pair_sph_idealgas","pair_sph_lj","pair_sph_rhosum","pair_sph_taitwater","pair_sph_taitwater_morris","pair_srp","pair_style","pair_sw","pair_table","pair_tersoff","pair_tersoff_mod","pair_tersoff_zbl","pair_thole","pair_tri_lj","pair_vashishta","pair_write","pair_yukawa","pair_yukawa_colloid","pair_zbl","partition","prd","print","processors","python","quit","read_data","read_dump","read_restart","region","replicate","rerun","reset_timestep","restart","run","run_style","set","shell","special_bonds","suffix","tad","temper","thermo","thermo_modify","thermo_style","timer","timestep","tutorial_drude","uncompute","undump","unfix","units","variable","velocity","write_data","write_dump","write_restart"],objects:{},objnames:{},objtypes:{},terms:{"00a":317,"00b":317,"02214e23":91,"03275e":483,"0892e":12,"0b1":11,"0e20":[333,461,484],"0e4":[250,326,391],"0e5":250,"0x98b5e0":190,"100k":1,"1024x1024":190,"10e":381,"10f":3,"10g":484,"10th":[453,459,472],"10x":[3,355,356,358,359,369],"10x10x10":153,"10x20x20":351,"11e":10,"15g":[191,484],"16g":[203,209],"16x":1,"18986e":356,"18e":10,"1_12":351,"1_3":351,"1_6":351,"1_prop":6,"1st":[2,6,8,12,20,22,38,44,56,57,58,60,87,159,171,173,185,195,196,203,204,205,206,207,208,209,213,217,252,281,291,319,331,335,353,359,364,365,369,376,378,385,387,388,395,396,405,406,410,411,412,416,420,430,440,441,442,443,444,447,452,458,466,467,470,484],"1x2x2":455,"2000k":190,"20x":369,"23899e":356,"2400k":190,"256k":10,"25x":10,"298k":380,"2_3":351,"2k_ss":387,"2nd":[2,3,6,11,12,15,17,38,45,46,56,57,60,71,77,88,147,154,185,191,203,204,205,206,207,208,209,213,215,217,252,293,297,305,331,334,340,347,356,357,358,359,363,365,378,387,393,394,410,430,439,440,441,442,443,444,447,458,465,467,470,484],"2pi":185,"2theta":164,"2x1x2":455,"2x2x1":455,"2x2x2":455,"2x4x10":455,"2x5":387,"300k":[230,293,485],"32k":10,"3419e":250,"3806504e":[6,91],"38e":10,"3n_k":229,"3nk":283,"3nkb":288,"3rd":[15,17,20,38,56,71,105,114,185,203,204,206,207,208,209,213,293,294,331,357,361,363,378,387,393,394,430,440,441,442,443,444,447,458,465,470,484],"3x3":[91,351],"4857990943e":387,"4_94":11,"4th":[6,38,56,81,103,104,116,161,171,185,191,305,331,349,362,364,365,369,385,388,395,410,416,420,430,440,441,442,444,447,458,465,470,473,488],"4x10":347,"4x2x10":455,"4x6x10":455,"50k":1,"53xx":18,"54xx":18,"55e":10,"5_1":369,"5_12":351,"5_6":351,"5kx":[197,223],"5nlog_2":12,"5th":[116,356,475],"6021765e":483,"6863e22":419,"6x6":6,"72360e":250,"7797e":250,"7842e":12,"8032044e":483,"8e12":205,"8x1":6,"8x2":[6,12],"9e18":[12,39],"9e9":419,"9jan09":[326,391],"9th":358,"__main__":456,"__pthread_key_cr":12,"_compute_group_group":142,"_compute_heat_flux":142,"_compute_t":8,"_j1m1m1":140,"_j2m2m2":140,"_serial":12,"abstract":17,"boolean":[3,331,333],"break":[],"byte":[3,12,205,475],"case":[1,2,3,6,8,9,11,12,13,15,16,17,18,39,40,41,45,46,59,61,63,71,73,104,108,114,116,117,143,144,145,146,148,151,152,153,154,155,157,158,159,163,165,167,168,169,171,188,189,190,191,197,198,202,203,204,206,207,208,209,210,211,213,215,217,221,223,225,228,231,232,234,235,236,237,239,250,252,253,254,255,256,257,258,269,270,272,274,275,280,282,283,284,285,292,293,295,297,299,300,302,305,308,311,312,313,315,316,320,322,323,325,326,328,329,330,331,333,347,348,349,351,353,355,356,357,358,360,362,363,365,374,377,379,381,385,387,390,391,393,394,395,397,407,408,409,410,414,416,420,423,426,428,431,438,441,442,444,451,453,456,458,460,461,465,466,468,470,472,474,475,476,477,479,483,484,485,487,488],"catch":[1,3,456],"char":[6,8],"class":[1,3,5,6,7,8,9,11,12,13,22,37,44,55,173,184,226,282,335,343,375,394,422,423,439,447,456,458],"default":[],"export":[190,376],"final":[3,5,6,7,8,11,12,17,41,59,87,141,191,202,203,204,206,207,208,209,211,215,217,228,251,252,256,283,287,293,294,297,317,319,320,327,333,356,358,364,365,369,385,388,395,407,410,416,420,421,440,441,442,444,447,453,466,472,479,484,486],"float":[3,6,8,12,40,42,71,113,188,191,203,209,233,282,294,310,387,427,429,456,458,468,475,484],"function":[],"import":[1,2,3,6,11,17,18,71,87,105,165,176,194,203,207,215,228,231,236,237,252,288,293,311,312,313,315,320,330,332,358,394,407,456,458,467,475,479],"int":[3,6,8,11,101,226,228,236,238,288,320,475],"long":[],"new":[],"null":[3,6,91,112,141,165,194,210,216,219,222,249,282,291,295,297,301,302,305,306,326,364,365,378,385,388,391,394,395,396,410,411,412,416,420,422,423,430,440,442,443,444,447,458,461,466,468,485],"public":[0,7,8,12,226,235,388,421],"return":[2,3,6,8,11,14,15,16,17,18,19,41,71,108,117,134,135,139,163,165,191,203,207,208,217,226,333,345,347,391,455,456,457,465,468,474,484],"short":[1,3,6,7,13,16,163,252,293,308,321,349,359,360,363,365,369,370,372,373,374,378,379,381,387,394,399,403,407,410,414,417,425,441,445,453,456,466,468,472,479],"static":[],"switch":[1,3,6,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,91,109,112,140,143,152,164,171,172,174,175,176,177,179,180,182,183,185,190,193,197,201,210,217,224,227,231,235,236,239,252,254,255,256,257,258,259,267,269,270,272,285,293,295,296,311,313,317,318,324,328,334,336,337,338,339,342,344,345,347,349,352,358,362,363,364,365,367,370,371,372,373,374,375,377,378,379,382,383,385,386,388,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,411,415,416,417,419,422,424,425,431,440,441,442,443,444,446,447,449,450,451,452,453,455,458,460,465,467,471,473,484,486,488],"throw":475,"true":[6,12,13,17,108,115,188,211,213,217,252,253,274,275,276,280,293,315,319,331,333,363,387,391,440,456,460,468,484],"try":[1,3,8,12,17,19,203,233,239,316,317,318,323,456,484],"var":[3,11,12,165,331,347,469,484],"void":[4,6,7,8,41,168,211,226,461],"while":[1,3,9,10,11,12,13,14,18,71,105,140,148,163,176,188,192,201,208,215,217,221,229,230,235,236,237,239,252,270,283,288,290,321,349,356,363,369,380,385,423,442,444,447,453,456,467,472,479],a10:333,a123:333,a12:424,a2m:[6,91],a_0:[239,320,369],a_0_real:239,a_1:320,a_2:320,a_3:320,a_4:320,a_c:377,a_cc:377,a_f:444,a_i:445,a_ij:369,a_j:445,a_pi:369,a_sigma:369,a_ss:377,aacut:275,aat:172,aatom1:115,aatom2:115,aatom3:115,ab_23_cd:333,abbrevi:12,abc:[3,12,333,456,484],abf:216,abf_integr:13,abi:192,abil:[3,9,215,252,280,293,387],abl:[3,8,11,12,39,86,188,192,214,223,227,316,323,363,456,484,487],ablat:320,about:[0,1,3,4,6,8,9,10,11,12,13,17,39,41,42,61,63,78,108,115,116,118,159,165,188,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,217,218,219,221,222,223,224,225,226,227,228,231,232,233,234,236,237,238,239,240,241,242,243,244,245,246,248,251,256,259,260,261,262,263,264,265,266,267,268,273,274,275,277,278,279,280,281,282,284,285,286,287,288,289,290,291,292,293,294,295,296,305,306,308,309,311,312,313,314,315,316,317,318,319,320,322,323,324,325,327,328,329,330,331,346,349,355,356,358,363,368,374,379,394,419,423,450,456,459,460,465,466,468,473,477,484,486,488],abov:[1,2,6,7,8,10,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,38,40,41,42,43,44,45,46,47,48,49,50,51,53,54,56,57,63,64,68,70,71,72,73,76,77,86,87,89,90,91,93,94,96,97,112,114,116,118,140,141,143,144,145,146,147,148,151,152,153,154,155,157,158,159,163,164,165,167,168,171,172,173,174,175,176,177,178,179,180,182,183,185,188,189,190,191,194,195,196,197,198,203,204,206,207,208,209,211,214,215,217,218,223,226,228,232,234,236,237,238,242,251,252,256,276,279,281,286,292,293,297,305,308,311,312,313,314,331,333,334,335,336,337,338,339,340,342,344,349,351,353,357,358,362,363,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,409,410,413,414,415,417,419,420,422,423,424,425,430,431,432,433,434,435,436,437,438,440,441,442,443,444,445,446,447,449,450,451,452,453,454,455,456,458,459,460,461,462,465,466,467,468,469,472,473,476,479,484,485,487,488],abscissa:441,absenc:198,absent:479,absolut:[3,191,201,216,217,221,297,310,348,349,356,391,399,459],absorb:320,absoult:349,ac3:164,academ:228,acc:315,acceler:[],accelri:[6,13],accept:[7,12,87,165,191,201,214,217,228,315,373,403,466,473],acceptor:393,access:[0,3,6,7,8,9,11,12,16,40,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,85,88,89,90,91,92,93,95,96,99,100,101,103,104,105,106,107,108,110,111,112,113,114,115,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,143,144,145,146,147,148,149,150,152,153,154,155,156,157,158,160,161,162,163,164,194,195,196,197,198,199,200,201,202,203,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,222,223,224,225,226,227,228,229,230,231,232,233,234,236,238,239,240,241,242,243,244,245,246,248,249,250,251,252,256,259,260,261,262,263,264,265,266,267,268,273,274,275,277,278,279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,302,305,306,307,308,309,310,311,312,313,314,316,317,318,319,320,322,323,324,325,326,327,328,329,330,348,363,389,391,393,394,410,422,423,431,455,456,459,464,476,484],accidenti:342,accler:16,accommod:199,accomod:252,accompani:8,accomplish:[16,217,240,266],accord:[6,64,71,121,127,130,147,190,201,212,213,239,252,275,283,297,299,317,318,320,325,326,328,329,330,359,363,387,391,402,405,420,427,429,431,433,434,436,437,438,467,472,484],accordingli:[11,14,144,158,169,359,408,409],account:[3,6,9,87,118,147,163,164,173,184,204,206,222,233,234,236,252,257,258,269,270,272,274,278,284,293,294,296,305,306,307,308,311,312,313,316,320,323,338,357,379,391,399,403,408,409,410,455,472,485],accuml:[3,293,316,323],accumul:[1,6,8,15,71,142,194,204,205,236,293,297,322,346,363,464,483],accur:[1,3,6,15,17,38,41,56,148,211,250,288,293,296,308,316,323,329,331,349,369,387,390,391,414,424,439,441,442,444,472,477,484],accuraci:[1,3,6,12,41,188,191,211,230,252,285,296,321,331,348,349,355,387,414,422,423,441,448,467,472,477,479,484,487],accuractli:477,ach:348,achiev:[1,3,6,16,17,18,41,211,228,230,252,253,275,276,283,348,394,467],achiv:18,acid:9,ackland1:385,ackland2:385,ackland:[],acknowledg:[],acml:12,aco:484,acolor:[190,191],acoust:275,acquir:[3,6,58,61,62,168,213,215,217,252,418,463,479],across:[1,2,3,6,9,12,13,15,41,57,61,65,68,69,71,79,92,107,108,115,117,153,167,169,203,206,207,208,211,222,232,293,294,298,316,320,323,329,333,358,363,453,458,461,462,466,475,477],act:[3,6,108,150,221,231,234,235,236,237,239,242,251,293,302,315,317,318,320,329,330,331,356,371,382,390,391,393,424,438],acta:[118,164,364],action:[2,6,11,12,71,229,234,318,479],activ:[5,8,11,12,13,14,55,59,87,163,216,229,233,236,242,251,273,293,300,319,346,407,439,452,481,484],actual:[1,3,6,8,12,56,62,122,148,188,191,195,196,210,212,213,221,236,237,270,274,280,288,297,308,310,311,312,313,315,321,330,331,348,359,390,392,402,408,409,438,455,456,467,468,476,484],adam:[348,349],adapt:[],add:[0,1,3,5,6,7,8,9,11,12,13,14,15,16,17,18,19,40,42,71,87,91,102,114,117,119,163,165,166,188,189,190,194,195,196,197,198,200,202,203,204,206,207,208,209,213,216,221,223,226,230,231,232,234,236,238,239,243,250,251,252,253,254,255,256,257,258,269,270,271,272,274,282,292,293,295,296,305,307,311,313,314,318,319,320,322,324,325,329,331,349,351,355,357,365,370,372,375,379,387,394,399,410,414,417,423,425,456,458,459,464,466,468,470,477,479],add_molecul:200,add_speci:200,add_to_nodeset:200,addforc:[],addit:[],addition:[6,8,16,139,308,330,390,424],address:[7,8,11,190,235],addtorqu:[],adequ:[308,321,348,358,467],adher:29,adhikari:239,adiabat:[],adiam:[190,191],adjac:[39,165,358,414,441,442,472,473],adjiman:413,adjust:[2,3,6,16,17,41,59,118,144,145,148,149,152,153,158,159,164,169,188,190,203,211,215,217,233,236,240,244,248,249,252,253,256,270,274,277,279,280,283,284,285,286,291,293,300,308,312,316,321,323,324,325,327,328,330,348,349,356,358,363,365,384,408,409,444,468,485],adjust_dt:128,adjust_radiu:300,adjust_radius_factor:300,admiss:256,adof:[145,203],adopt:[292,479],adp:[],adri:[9,289,422,423],adust:159,advanc:[3,233,369,453,464],advantag:[1,6,8,11,14,18,39,40,41,211,363,386,467,472],advect:[3,6,308],advertis:8,advis:[358,421],afer:3,affect:[1,6,10,14,15,16,17,40,60,61,71,88,117,141,149,163,169,191,196,203,204,206,207,208,209,212,213,214,215,217,218,226,232,234,236,242,249,253,254,255,257,258,264,269,270,272,293,294,306,320,330,342,348,354,355,356,358,359,360,363,387,408,409,414,455,456,458,461,463,466,468],affin:[16,17,18,217,363,378],afil:230,aforement:18,afresh:[281,466,484],afshar:383,after:[2,3,5,6,8,9,11,12,15,21,22,33,39,40,41,44,50,57,58,59,61,63,71,144,145,146,147,148,149,152,153,154,155,157,158,165,166,168,169,172,173,178,187,188,189,190,191,192,194,195,196,200,201,203,204,211,212,213,214,215,217,221,228,239,240,241,242,243,248,249,250,252,257,258,264,269,270,272,275,279,283,291,293,296,304,309,311,312,313,315,316,317,318,319,323,325,327,331,334,335,340,347,353,354,356,357,359,361,362,363,364,365,369,376,378,385,386,387,388,394,395,396,407,408,409,410,411,412,416,420,422,423,430,440,442,443,444,447,453,455,457,458,459,460,461,463,464,466,468,470,472,475,476,479,483,484,485,486,487,488],afterrun:466,afterward:3,afterword:41,ag1:164,ag2:164,again:[6,11,12,16,17,62,140,145,151,159,188,191,217,232,279,334,347,358,408,409,453,455,456,458,460,465,472,474,484,486],against:[11,12,13,64,218,358,422,423],aggreg:[6,12,65,68,69,79,92,108,115,232,248,291,293,306,453,485],aggress:[232,472],agilio:[9,13],agre:[3,8,185,356,365,396,423],agreement:[5,7],ahd:393,ahead:327,aidan:[0,5,7,9,13,351],aij:13,aim:6,airebo:[],ajaramil:[7,9,13],aka:190,akohlmei:[7,9,13,192,233],aktulga:[7,9,286,423],al2o3_001:[118,294],al3:164,ala:239,alain:9,alat:[274,410],alb:[420,442,444],albeit:292,albert:9,alchem:[87,159],alcohol:323,alcu:[364,369],alcu_eam:420,alderton:382,alejandr:[252,253],alessandro:13,algorithm:[0,1,6,7,8,9,41,61,191,200,211,214,217,239,241,242,264,276,293,296,315,316,320,323,328,354,355,356,360,363,387,409,427,429,453,455,472],alia:[12,16],alias:[1,349],aliceblu:191,align:[6,12,29,41,71,167,185,207,211,234,351,458,461,479],alkali:387,all:[0,1,2,3,5,6,7,8,9,11,12,13,14,15,16,17,18,22,33,37,39,40,41,42,44,50,54,55,57,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,153,158,159,160,161,162,163,164,165,166,167,168,169,171,173,178,184,185,188,189,190,191,192,194,195,196,197,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,223,224,225,226,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,245,247,248,250,252,253,254,255,256,257,258,259,260,261,262,263,264,265,267,268,269,270,271,272,273,274,275,276,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,304,305,307,308,309,310,311,312,315,316,317,318,319,320,321,322,323,325,326,327,328,329,330,331,332,333,334,335,338,343,346,347,348,349,350,351,353,356,357,358,359,360,362,363,364,365,366,368,369,370,372,373,374,375,376,378,379,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,403,407,408,409,410,411,412,413,414,415,416,417,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,450,451,452,453,455,456,457,458,459,460,461,462,463,465,466,467,468,469,470,471,472,473,475,476,477,479,483,484,485,486,487,488],allen:[29,87,382,390],allentildeslei:87,allign:3,allindex:332,alloc:[3,5,6,8,9,11,12,60,226,322,357,359,363,418,423,458,466],allocat:3,alloi:[],allow:[1,2,3,6,8,9,11,12,13,14,15,16,17,18,22,37,39,40,41,55,57,58,59,61,62,63,77,108,142,144,145,158,163,164,165,167,173,184,185,188,190,191,192,194,195,197,199,200,201,203,204,205,206,207,208,209,211,213,214,215,216,217,218,222,223,226,228,229,230,231,233,236,239,242,243,247,249,252,253,274,278,280,281,282,283,287,293,294,296,297,299,300,304,308,315,316,317,318,320,321,322,323,324,325,331,333,335,343,348,349,351,356,357,358,359,362,363,366,369,370,371,372,373,374,379,385,387,391,392,393,394,399,403,408,409,414,420,423,424,427,429,438,448,450,453,456,458,460,461,462,463,464,465,468,470,471,472,475,476,484,485],almost:[2,3,12,60,234,283,320,349,360,363,438],alo:379,alon:[6,7,214,289,422,423,456],alond:13,along:[6,8,9,12,29,40,87,118,164,165,187,188,190,214,234,239,240,244,249,251,283,293,296,297,301,305,306,315,319,320,326,329,331,351,354,355,356,358,379,382,391,394,397,399,403,410,422,423,441,458,461,468,469,484],alonso:[411,412],alpha:[6,12,51,195,239,275,283,288,356,364,367,370,379,383,385,386,388,393,398,399,410,415,419,443,445,476,479],alpha_:445,alpha_c:407,alpha_i:[430,445],alpha_ialpha_j:445,alpha_lj:407,alphabet:[2,3,22,37,44,55,63,173,184,194,335,343,357,376,439,458],alphanumer:[3,63,194,282,290,333,357,484],alreadi:[3,7,8,9,12,16,17,18,42,165,166,168,189,199,203,207,208,211,213,217,243,281,283,308,331,357,358,383,392,394,401,409,438,448,451,454,458,459,463,468,484],also:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,22,29,36,37,38,39,40,41,42,44,54,55,56,58,59,61,63,66,71,73,75,77,81,87,89,90,93,103,104,105,106,107,112,114,116,117,119,140,141,142,143,144,145,146,147,148,149,151,152,153,154,155,157,158,159,160,161,162,163,165,166,167,168,169,171,173,184,185,186,188,189,190,191,192,194,195,196,197,199,202,203,204,205,206,207,208,209,210,211,212,213,214,215,217,218,223,226,227,228,229,230,232,233,236,237,238,239,249,250,252,253,254,255,256,257,258,263,266,267,269,270,271,272,274,275,276,278,279,280,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,301,302,305,306,308,311,312,313,314,315,319,320,321,322,324,326,329,331,333,335,340,343,346,348,349,351,352,353,356,357,358,359,360,362,363,369,373,374,376,380,381,382,383,385,386,387,390,391,393,394,395,403,407,408,410,414,416,418,419,420,421,424,425,427,433,434,436,437,439,440,441,442,443,444,445,447,453,455,456,457,458,459,460,461,462,463,465,466,467,468,470,471,472,473,476,477,478,479,480,482,483,484,485,486,488],alter:[3,6,8,9,11,12,41,59,143,144,145,146,148,151,152,153,154,157,158,165,169,188,190,192,195,196,203,212,213,214,215,217,251,252,288,291,293,295,302,308,316,323,330,355,358,394,458,463,465,468,484,485,488],altern:[1,6,8,11,12,17,18,91,165,188,194,204,217,233,237,252,282,293,315,316,323,336,339,348,355,356,364,365,379,385,386,388,396,399,407,410,411,412,416,420,421,430,440,442,444,447,456,458,459,471,473,476],although:[29,42,185,242,252,280,284,293,315,347,465,479,488],aluminum:451,alwai:[0,6,11,12,17,18,54,57,63,71,163,191,204,205,207,208,209,213,216,228,230,234,285,288,293,308,325,329,330,334,348,349,354,356,357,359,360,363,372,375,385,402,422,423,431,441,442,444,451,453,458,459,461,463,470,472,475,479,484,485],amap:191,amatrix:230,amaz:11,amazingli:13,amber2lmp:[],amber:[],ambient:190,ambigu:[3,63,194,484],amd:[17,363],amend:11,amino:9,amit:9,among:[16,141,201,239],amorph:[165,443],amount:[1,3,6,12,59,88,115,163,167,187,190,201,205,215,216,228,232,236,252,274,280,293,300,308,313,316,321,323,331,348,363,383,418,458,461],amplitud:[217,249,301,326,342,461,484],amu:228,analag:[6,484],analalog:6,analog:[6,140,167,185,391],analys:[7,463],analysi:[7,9,13,63,64,73,192,289,290,298,332,430,458,468],analyt:[1,3,13,118,159,164,296,348,369,395,396,401,420],analyz:[6,8,13,358],andersen:296,anderson:[278,383],andr:[7,9,13],andrew:13,andzelm:438,ang:274,angl:[],angle1:292,angle2:292,angle_coeff:[],angle_cosineshift:27,angle_cosineshiftexp:[26,174],angle_cutof:393,angle_cutoff:393,angle_hybrid:29,angle_info:423,angle_styl:[],angle_typ:40,angleangl:[3,334,340,458],angleangletors:[3,172,458],anglecoeff:3,angletors:[3,172,178,458],angletyp:213,angmom:[],angmomi:[113,188,310],angmomx:[113,188,310],angmomz:[113,188,310],angstrom:[6,10,59,71,118,154,164,165,187,188,190,191,199,207,208,217,218,228,233,234,249,286,291,325,327,328,330,349,351,354,360,364,365,374,385,407,410,416,421,422,423,444,451,461,467,483,485],angular:[3,6,40,61,66,82,83,84,85,106,113,140,144,157,158,165,188,194,236,242,248,249,254,255,257,258,260,261,262,265,267,268,269,272,291,293,296,301,310,364,369,378,391,408,409,410,420,439,442,443,458,468,484,485],angularm:261,anharmon:[27,53,174,288,472],ani:[1,3,6,7,8,9,10,11,12,13,14,15,16,17,22,29,38,39,40,41,42,44,55,56,58,59,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,143,144,145,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,168,169,171,173,185,187,188,189,190,191,194,197,198,199,201,203,204,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,223,225,228,231,232,234,236,239,242,248,249,252,256,274,276,278,279,280,282,284,285,286,288,290,291,293,295,296,297,301,302,305,307,308,309,310,319,320,325,326,327,328,329,330,331,332,333,335,347,348,349,351,353,354,356,357,358,360,361,362,363,365,369,373,374,378,379,382,383,385,386,388,390,394,395,396,397,403,414,420,422,423,424,430,438,439,440,441,442,443,444,445,446,447,452,453,455,456,458,459,461,462,463,464,465,466,467,468,469,470,471,472,476,477,479,480,482,483,484,485,486,487,488],anihil:407,anim:[2,4,7,11,13,190,358],anion:388,aniso:[3,215,217,252,253,254,255,256,257,258,280,293],anisotrop:[236,390,424],ann:413,annot:[7,440,442,443,444,447,458],annual:[453,472],anoth:[1,3,4,6,7,8,11,12,17,29,40,63,71,87,116,119,189,190,194,195,201,203,206,207,208,209,214,217,218,229,232,236,237,242,252,253,256,279,282,293,294,311,312,313,320,330,333,354,356,358,359,362,379,383,387,388,390,393,394,398,399,407,422,424,431,438,442,443,444,452,453,456,459,465,467,479,484,488],ansi:[12,16],answer:[3,4,8,12,293,360,361],anthoni:318,antiquewhit:191,antisymmetr:[9,40,366],antisymmetri:387,antonelli:[317,318],antonio:419,anymor:318,anyon:7,anyparticl:86,anyth:[8,11,165,217,235,440,442,444,469],anywai:[168,363,479,486],anywher:[12,165,376,410,430,484],aoff:[357,458],aparam:[87,195,196],apart:[3,166,242,305,359,368,431,458,467],aperiod:275,api:[11,12,192,395,456],appar:3,appear:[2,3,6,11,12,13,39,40,41,77,87,108,115,116,140,148,165,166,168,188,190,191,203,207,208,211,215,218,221,228,233,279,290,291,319,331,333,334,348,356,357,358,377,385,410,414,441,447,454,455,456,458,459,460,463,465,479,484,488],append:[],appendix:[29,382],appl:[215,252,253,447],appli:[2,3,4,5,6,8,12,17,18,33,41,50,57,59,61,63,71,87,88,105,116,140,141,145,151,153,155,159,164,165,167,171,173,178,184,188,191,194,195,196,197,198,200,203,210,211,215,216,217,219,222,223,226,227,228,229,230,231,233,234,236,237,238,239,243,252,253,256,257,258,264,269,272,273,274,276,280,283,291,292,293,295,296,297,298,301,305,306,307,309,311,312,313,314,316,318,319,320,323,331,348,351,356,357,358,368,370,372,374,379,382,387,391,392,393,394,396,399,405,409,414,417,422,425,426,427,428,429,438,445,450,458,459,461,462,463,467,468,470,475,479,484,485,486,487],applic:[1,6,9,12,17,192,200,214,218,219,226,228,230,233,274,279,292,297,305,316,323,348,363,444,468,479],applyt:3,appopri:17,approach:[6,7,9,14,188,200,229,275,276,288,293,315,316,318,320,323,348,369,379,381,384,390,394,424,426,428,438,448],appropri:[1,2,3,6,8,11,12,13,15,17,33,38,42,50,56,61,73,88,91,116,117,144,145,173,178,184,185,188,191,203,204,207,208,209,214,215,217,226,227,230,239,247,249,250,252,254,255,256,257,258,269,270,272,276,279,280,283,288,293,308,311,312,313,316,323,325,326,328,329,330,340,349,358,365,369,373,377,378,379,386,391,394,396,403,407,421,422,423,440,441,442,443,444,447,448,458,459,460,462,463,471,472,475,484,485],approri:231,approxim:[6,9,118,122,164,228,230,239,276,294,296,315,348,354,355,356,371,381,387,390,408,409,414,421,424,450,472,479],april:11,aprpopri:453,apu:[408,409],aqua:[190,191],aquamarin:191,ar_therm:200,ar_ttm:200,ara:13,arbitrari:[6,40,58,188,190,192,216,217,231,252,276,284,440,456,469,484],arbitrarili:[11,59,116,140,187,215,252,379,484],arcco:3,arch:[1,12,14,15,17],architect:346,architectur:[16,363],archiv:[6,7,11,12,310,376,465],arcsin:3,area:[6,41,91,112,116,163,211,217,239,316,323,384,391,419,446,455,468],aren:[282,333],arflag:12,arg:[3,11,12,22,40,41,44,55,59,63,71,87,117,153,159,163,165,168,169,173,187,188,189,191,194,195,196,197,199,201,203,204,205,206,207,208,209,210,211,212,213,216,217,218,223,226,228,231,232,233,234,242,249,254,255,279,292,293,294,295,298,301,302,304,315,318,325,326,327,328,330,331,335,346,358,363,370,371,372,374,375,376,381,382,387,392,394,399,403,407,408,409,417,425,427,429,439,455,456,458,461,463,465,467,469,471,476,477,484,485,487,488],argon:228,argonn:12,argument:[2,3,6,8,11,12,17,20,21,22,23,24,25,26,27,28,29,30,31,32,35,38,40,41,42,43,44,45,46,47,48,49,51,53,54,56,59,63,73,87,91,109,112,116,140,141,143,147,152,153,154,159,163,165,166,167,169,171,172,173,174,175,176,177,179,180,182,183,185,188,191,194,195,196,197,199,202,203,204,205,206,207,208,209,210,211,215,216,217,224,226,227,228,230,231,235,236,242,249,252,254,255,256,257,258,259,267,269,270,272,278,279,281,285,290,293,294,295,296,308,311,313,320,322,324,326,328,331,333,334,335,336,337,338,339,340,342,344,346,347,349,350,351,353,358,362,363,364,365,367,368,369,370,371,372,373,374,375,376,377,378,379,381,382,383,385,386,388,389,390,391,392,393,394,395,396,397,399,400,401,402,403,404,405,406,407,408,410,411,412,414,415,416,417,419,420,422,423,424,425,430,431,439,440,441,442,443,444,445,446,447,449,450,451,452,453,454,455,456,457,458,459,461,463,466,467,468,469,473,475,476,484,485,487],aris:[12,450],arithmet:[3,6,348,374,377,397,402,414,445,446],arkansa:9,arl:9,armv8:17,arnold:348,around:[1,3,4,6,12,42,57,58,59,66,70,73,77,116,140,144,160,163,165,167,187,190,191,198,199,215,217,218,234,249,252,282,284,288,293,301,305,308,325,326,329,347,357,458,461,468,469,479,484],aroung:3,arrai:[],arrang:140,arrheniu:472,art:[9,284,453,472],artefact:230,articl:6,articul:[7,278],artifact:[88,163,479],artifici:[250,283,433,434,436],arun:13,arxiv:[140,189,430],ascend:[41,191,233,242,293,463],asci:7,ascii:[13,294,319,358,385,388,410,458],ash:[408,409],asid:[8,165,410],asin:484,ask:[3,11],askari:419,askoos:13,asoci:190,aspect:[6,7,59,217,228,390,424,446,458,468,472],aspect_ratio:294,asper:4,aspher:[],asq:[408,409],assembl:4,assign:[1,2,3,6,7,11,12,14,15,17,18,33,39,40,41,50,57,59,61,63,66,71,72,75,90,93,104,106,110,113,114,118,140,141,145,160,162,164,165,168,178,188,189,190,191,192,194,195,196,199,203,206,211,213,214,215,218,220,228,233,236,237,238,239,249,252,254,255,256,257,258,267,269,270,271,272,276,279,280,282,284,290,293,294,311,312,313,314,331,340,349,351,353,357,358,362,363,369,385,388,390,393,394,423,424,438,451,455,456,458,459,460,461,462,467,468,473,476,484,485],assignemnt:[6,467],assing:282,assist:[7,250],associ:[3,5,6,8,9,12,22,37,39,40,44,55,59,66,74,75,81,87,89,90,93,99,101,103,104,106,130,160,173,184,188,190,191,195,196,197,201,215,217,223,226,228,229,235,239,249,252,278,288,292,293,294,306,308,332,333,335,343,351,356,358,362,363,376,379,383,384,385,387,393,394,396,399,403,426,428,438,439,441,456,459,466,479,481,484],associd:67,assum:[2,3,4,6,11,12,16,17,18,39,59,67,71,88,96,102,104,143,144,145,146,147,148,150,151,152,153,154,155,157,158,159,163,165,168,191,195,196,201,203,204,206,207,208,209,215,217,225,233,235,239,242,254,255,257,258,260,262,265,267,268,269,272,274,275,279,280,281,284,293,295,297,305,316,319,320,325,328,331,348,349,357,358,363,369,371,373,376,377,384,387,393,394,398,403,408,409,446,453,455,456,458,460,463,468,472,475,476,479,485],assumpt:[163,233,364,414],astar:410,astart:431,asterisk:[22,44,61,77,87,116,159,169,173,191,195,196,242,293,335,353,376,393,438,452,455,468,483],astop:[356,431],asu:385,asub:410,asubrama:13,asymmetr:[127,328,369,385],asynchron:[15,16],atan2:484,atan:484,atc:[],atc_fe_output:200,athomp:[0,7,9,13],atm2pa:6,atmospher:483,atol:12,atom1:[278,292,357,458],atom2:[278,292,357,458],atom3:[278,292,357,458],atom4:[292,357,458],atom:[],atom_element_map:200,atom_forc:423,atom_info:423,atom_modifi:[],atom_styl:[],atom_vec:8,atom_vec_atom:8,atom_vec_electron:8,atom_veloc:423,atom_weight:200,atomey:[6,7,11,13,188,190,191],atomfil:[3,71,282,331,362,468,484],atomic_charg:200,atomic_numb:420,atomid:458,atomist:[6,200,315],atomperbin:3,atomt:191,atomvec:8,attach:[6,208,276,297,305,458],attatch:318,attempt:[3,6,41,59,71,187,201,211,212,213,214,218,228,279,280,308,328,348,352,358,394,456,473,476,484],attend:200,attent:[15,18],attogram:483,attrac:410,attract:[],attribut:[3,6,7,8,11,39,40,42,58,63,71,87,113,114,115,117,144,159,188,190,191,194,195,196,202,203,206,207,208,214,215,252,254,255,256,257,258,260,261,269,270,272,280,293,294,310,311,312,313,351,357,369,387,394,458,459,460,468,476,484],atw:[408,409],atwat:443,atwt:410,atyp:[115,159,213,379,399,403,407],au1:164,au3:164,aug:[],augment:[12,113,215,282,410],augt1:410,auo:290,auoh:290,author:[3,8,9,13,189,385,386,479],auto:[6,8,11,12,91,161,194,204,205,297,322,348,357,363,455],autocorrel:[63,91,236],autom:[12,190],automag:7,automat:[3,6,12,14,15,16,17,18,19,36,128,185,199,205,228,230,239,293,297,321,348,363,378,385,394,410,426,427,428,429,451,458,471,479,484],auxiliari:[1,6,9,11,12,13,188,275,293,459,463,486],avail:[1,3,5,6,7,8,9,11,12,13,15,16,17,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,61,63,87,109,112,113,140,143,152,163,171,172,174,175,176,177,179,180,182,183,185,188,190,194,197,203,206,207,208,209,210,215,216,217,224,227,229,231,233,236,252,253,254,255,256,257,258,259,267,269,270,272,285,287,293,294,295,296,311,313,318,324,328,334,336,337,338,339,342,344,346,349,363,364,365,367,370,371,372,373,374,375,377,378,379,382,383,385,386,387,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,409,410,411,414,415,416,417,419,420,422,423,424,425,430,431,440,441,442,443,444,446,447,449,450,451,459,467,471,484],availab:[],ave_chunk:6,aveforc:[],avendano:413,averag:[3,6,7,12,15,41,63,64,71,87,91,103,105,116,118,142,145,153,161,164,188,191,194,196,200,202,203,204,205,206,207,208,209,210,211,215,228,230,232,236,237,242,252,253,256,275,280,283,289,290,293,294,297,334,365,387,410,445,459,463,476,479,484],averi:308,avesq:117,avg:12,avi:190,avoid:[1,3,6,12,36,39,59,165,166,185,190,199,204,206,209,221,228,230,237,274,276,284,288,293,294,322,329,361,369,387,407,410,423,441,460,466,467,479],awai:[3,6,61,116,188,190,214,218,231,234,251,274,297,305,319,325,359,379,399,403,463],awar:[363,386,455],awpmd:[],axel:[7,9,13,18],axi:[3,6,41,118,130,144,164,165,167,187,190,211,228,231,234,249,279,301,305,320,326,338,344,351,458,461,468],axial:256,azimuth:[190,231],azur:191,b_k:430,ba2:164,babadi:424,back:[1,6,7,11,12,13,14,15,17,146,147,148,152,153,154,155,157,165,169,188,191,192,195,196,216,221,226,233,234,236,237,252,257,258,269,270,272,291,293,311,312,313,317,318,327,328,330,347,348,349,358,391,456,458,459,460,461,462,465,471,472,484,485],backbon:[214,296,342],backcolor:[191,487],backend:17,background:[9,87,88,112,141,191,211,217,236,308,316,320,323,358,377,408,409,410],backtrack:[354,356],backward:[9,12,192,358,472,484],baczewski:229,bad:[3,12,59,61,234,358,458,463,475],badli:[3,215,252],bal:315,balanc:[],balasubramanian:271,ball:[140,408,409],ballenegg:348,bammann:200,band:[4,6,7,140,194,251,355,358,369],bandwidth:[1,10,18,40],bandwith:190,bar:[87,190,483],barashev:385,bare:[221,235,237],barost:[221,479],barostat:[],barostt:6,barr:378,barrat:288,barrett:67,barrier:[3,4,6,251,344,358,378,389,472],bartel:275,bartok2010:430,bartok2013:430,bartok:[9,140,421,430],bartok_2010:421,bartok_phd:421,bary:483,barycent:304,basal:[],base:[3,4,6,8,9,11,12,13,14,15,20,63,64,71,78,87,91,111,118,145,147,164,165,167,188,189,190,191,194,200,207,208,211,212,213,217,218,222,228,233,236,240,242,264,275,276,282,284,286,293,294,297,298,308,315,349,363,365,367,369,383,387,390,393,394,395,399,408,411,412,417,419,420,440,443,444,447,453,455,458,459,460,462,465,468,469,472,473,476,483,484,485,488],bash:376,bashford:[6,20,171,374,470],basi:[3,6,12,40,140,145,165,199,236,238,275,308,325,351,468,484],basic:[6,7,8,12,17,41,113,141,190,191,200,211,252,253,274,329,364,366,452,460,479],basin:[86,358,453,472],bask:[385,410,420],bath:[9,283,288],batom1:[69,115,117,188,191],batom2:[69,115,117,188,191],bayli:[6,171,470],bb13:172,bcc:[3,4,7,64,70,73,351,410,412],bcolor:[3,190,191],bdiam:[3,190,191],be2:164,bead:[5,7,10,13,40,45,46,157,198,214,276,438],beam:218,bear:[6,229],becau:13,becaus:[0,1,3,6,8,12,16,17,18,29,40,41,59,64,71,77,116,128,140,145,150,155,165,166,167,171,188,189,190,191,192,197,203,211,212,213,214,215,217,223,227,228,229,230,235,236,237,238,249,252,253,264,270,279,283,284,288,293,305,310,315,316,319,320,323,327,328,329,330,331,337,348,354,356,358,359,362,363,374,376,379,381,383,387,388,390,391,392,393,394,397,398,407,408,409,410,414,424,438,439,445,446,455,456,458,460,461,462,465,467,468,470,472,479,484,485,486,488],beck:[],becker:[364,385],beckman:233,becom:[1,2,3,6,7,8,18,39,41,54,57,59,71,167,188,190,191,211,212,213,214,217,228,230,239,251,252,290,291,311,312,325,326,328,329,330,348,349,354,358,365,377,379,385,387,390,399,414,420,424,440,447,450,458,459,461,468,484],been:[1,2,3,6,7,8,9,12,13,16,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,43,45,46,47,48,49,51,53,54,56,57,59,60,63,65,69,71,87,109,112,113,114,115,117,119,143,144,145,146,147,148,152,153,154,155,157,158,166,167,168,169,171,172,174,175,176,177,179,180,182,183,185,187,188,190,191,192,197,199,201,202,203,204,206,207,208,209,210,211,214,215,216,217,218,224,227,228,231,233,234,236,237,239,240,241,242,243,247,249,250,252,254,255,256,257,258,259,267,269,270,272,278,279,280,283,285,287,290,291,293,295,296,304,309,311,312,313,320,321,322,324,325,326,327,328,330,331,334,336,337,338,339,342,344,347,348,349,356,359,363,364,365,367,370,371,372,373,374,375,377,378,379,382,383,384,385,386,387,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,409,411,412,415,416,417,419,422,423,424,425,431,438,440,441,442,443,444,446,447,449,450,451,453,455,456,458,459,460,461,462,464,468,472,475,476,484,485,486,487],befor:[1,2,3,6,8,9,12,14,17,22,29,39,40,41,44,59,66,71,74,75,81,89,90,93,103,104,105,106,114,145,148,153,154,160,165,166,168,169,173,186,187,191,195,196,197,198,199,201,203,206,207,208,209,210,211,215,220,221,227,228,233,235,236,237,239,242,249,252,257,258,269,272,275,282,283,284,287,288,293,294,295,309,311,312,313,319,325,326,327,331,335,353,354,356,358,363,388,391,407,410,439,448,453,455,456,459,460,461,462,463,465,466,468,472,475,476,479,484,485,486,487,488],began:[5,12],begin:[3,8,12,38,39,56,71,117,119,166,185,187,188,191,195,196,200,202,203,204,206,207,208,209,211,217,221,237,264,278,291,294,308,310,313,322,327,330,331,345,347,348,349,350,352,355,357,358,359,362,363,385,414,420,427,429,431,438,441,445,451,453,458,465,472,474,476,479,483,484,486],behalf:3,behav:[3,27,174,355,356],behavior:[3,169,185,188,190,192,214,215,218,228,229,230,233,236,237,238,252,279,283,288,308,311,312,320,355,369,387,410,451,452,460,464,484,486],behaviour:[6,236],behind:[8,235,250,283,308,348],beig:191,belak:7,believ:11,bellott:[6,20,171,374,470],bellow:338,belong:[2,3,40,71,120,168,201,203,207,228,242,293,331,357,426,458],below:[1,2,3,5,6,8,9,11,12,15,16,17,22,38,39,41,42,44,54,56,59,60,63,65,68,69,71,77,79,91,92,112,113,116,117,118,140,141,145,151,153,159,163,164,165,168,169,171,173,184,185,188,190,191,194,195,197,198,200,203,204,205,206,207,208,210,211,213,214,215,217,218,223,226,228,231,232,234,236,237,242,249,250,252,256,257,258,269,272,274,279,282,283,284,291,292,293,295,296,302,305,308,309,310,311,312,313,316,317,318,320,323,325,326,331,333,335,346,348,351,353,354,356,357,358,360,363,364,365,366,369,370,371,374,375,376,377,379,382,385,387,388,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,409,410,413,414,419,422,423,424,425,430,431,438,439,441,446,447,449,450,451,452,453,456,458,459,460,461,463,465,466,468,470,471,472,474,475,476,478,479,484,485,488],bench:[1,6,11,12],benchmark:[1,7,10,11,12,13,14,15,16,17,18,41,211,348,471],beneath:218,benefici:[61,360],benefit:[1,229,467],bennet:87,beowulf:7,berardi:[390,424],beraun:320,berendsen:[],berensen:293,berkelei:163,berkowitz:348,berlin:[7,9,297],bern:[3,276,284,285,378,390,439,467],bernendsen:6,beryllium:387,besid:[8,295,461],best:[1,6,8,14,15,16,17,18,19,252,270,271,292,293,363,369,379,399,403,414,441,459,467,472],beta:[6,9,275,283,364,367,385,386,388,410,442,443,444,476,484],beta_:369,beta_k:430,beta_pi:369,beta_sigma:369,beta_t:443,better:[3,6,7,8,12,14,16,27,140,174,196,211,228,239,252,264,284,291,293,308,349,358,363,442],betwe:368,between:[],beutler:407,bewteen:[108,204,308,316,323,394,455],beyon:467,beyond:[3,5,6,12,17,61,71,87,163,188,191,206,207,228,252,348,360,389,405,414,472,476,484],bgq:17,bi3:164,bi5:164,bia:[3,6,8,112,141,144,145,146,147,148,152,153,154,155,157,158,203,216,217,228,236,237,252,257,258,269,270,272,288,311,312,313,315,485],bias:[6,9,216,485],biaxial:144,biersack:[410,439,444,451],big:[3,4,12,188,283,288,308,359,377],bigbig:[3,12],bigint:[3,226],bilay:[4,10,305],bilayer1:305,bilayer2:305,bill:7,billion:[3,7,10,12,39,228,466],bin:[3,6,11,12,39,63,66,71,75,90,93,104,106,114,116,145,153,160,162,188,191,203,206,207,208,275,283,288,308,359,360,363,384,418,459,487],binari:[3,6,7,9,12,13,16,33,37,50,55,178,184,188,189,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,322,323,324,325,326,327,328,329,330,340,343,364,365,366,367,368,369,370,371,372,373,374,375,377,378,379,382,383,384,385,386,387,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,415,417,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,440,441,442,443,444,446,447,449,450,451,459,460,465,486,488],binary2txt:[],binchunk:203,bind:[17,18,189,207,369],binsiz:[39,191,359,363],binstyl:153,bio:[40,359],biolog:[6,7],biologi:177,biomolecul:[278,293,348,349,374],biomolecular:467,biophys:233,biosym:13,bird:384,bisect:[41,211,446],bisector:[6,379,399,403],bispectrum:[63,140,430],bisqu:191,bit:[3,12,17,39,226,237,414,441,466,479],bitmap:[3,441,448],bitrat:[190,191],bitzek:355,bkgd_dyn:410,bla:12,black:191,blais:[9,13],blanchedalmond:191,blank:[2,3,12,38,56,107,185,190,278,293,357,358,369,386,410,416,430,440,441,442,443,444,447,455,456,458,484],blast:320,blend:410,block:[2,3,6,91,140,165,167,168,279,329,351,363,369,387,420,430,461,472,479],blocksiz:363,blow:[3,264,325,329,431],blown:3,blue:[2,190,191,214],bluegen:[188,348],blueviolet:191,board:[349,382],bodi:[],body_nparticl:8,bodyflag:458,bodyforc:239,bodyforcei:239,bodyforcex:239,bodyforcez:239,bodystyl:[242,293],boff:[357,458],bogaert:315,bogu:[3,148,215],bogusz:88,bohr:[385,387,444,483],boltzmann:[6,7,9,87,91,112,143,145,146,147,148,151,152,153,154,155,157,203,214,236,239,240,241,242,243,256,324,383,473,483],bond:[],bond_coeff:[],bond_graph_cutoff:423,bond_harmon:[8,48,49],bond_harmonicshift:49,bond_info:423,bond_interact:200,bond_styl:[],bond_typ:169,bondangl:[3,21,33,458],bondbond13:[3,172,458],bondbond:[3,21,33,458],bondchk:423,bondcoeff:3,bondtyp:[212,213,357],bonu:[3,486],book:450,bookkeep:414,bookmark:0,boost:[1,3,12,64,359],bop:[],border:[3,7,16,61,320,485],boresch:87,boreschkarplu:87,born:[],boron:387,borrow:297,bose:288,botero:[7,9,13,387],both:[1,3,6,7,8,9,11,12,14,15,16,17,27,37,39,40,54,55,57,59,61,62,63,68,69,71,83,87,88,108,113,115,116,128,142,144,145,150,153,155,158,165,167,168,169,174,184,185,188,190,193,194,195,196,201,203,204,207,208,209,212,213,214,215,216,217,222,228,230,232,234,236,237,239,240,248,249,252,253,257,258,264,269,272,278,282,283,284,290,293,296,297,305,308,312,316,317,318,320,323,325,326,328,329,330,333,334,343,349,353,356,357,358,359,361,363,365,369,370,371,372,373,374,375,377,382,383,385,386,387,390,391,393,394,395,399,401,403,404,405,407,408,409,413,414,417,424,425,440,442,443,444,447,453,455,456,458,459,460,461,465,470,475,476,479,484,486,487,488],bottleneck:[1,3,456,477],bottom:[8,9,148,191,217,227,239,270,316,323,351,470],bottomwal:210,bounc:[3,308],bound:[3,6,17,26,27,41,42,57,59,71,154,167,174,187,188,191,206,207,211,217,218,222,228,237,252,279,308,325,326,327,328,329,330,348,356,387,458,461,472,479,484,485],boundar:3,boundari:[],boundary_dynam:200,boundary_faceset:200,boundary_integr:200,bount:11,box:[],boxcolor:[190,191],boxxlo:11,bpa:363,bpclermont:[9,13],bptype:438,br1:164,bracket:[2,3,6,41,63,71,117,119,194,202,203,204,206,207,208,209,211,322,476,484],bragg:[118,164],branc:11,branch:11,branicio2009:447,branicio:[73,447],breakabl:[7,44,55],breakag:[78,212],breakdown:[1,12,15,88,107,422,423,453,472],brennan:438,brenner:[365,439],brick:[3,41,61,62,153,167,211,458,460,462,484],brief:[1,5,6,7,8,12,235,365,369,423,472],briefli:[6,10,276,378],brilliantov:391,bristol:[5,7],brittl:419,broader:456,broadli:8,broken:[2,54,65,69,70,78,107,115,169,212,252,369,460,470,477,486],brook:6,brought:187,brown:[7,9,13,15,16,118,141,191],brownain:371,brownian:[],brownw:7,brows:0,browser:[4,190],bryantsev:393,bsd:12,bstyle:[40,42],btype:[69,115,166,188,379,399,403,407,438],buc:372,buck:[],buckingham:[7,195,196,284,349,370,372,373,381,439],buffer:[3,8,190,191,475],bufi:190,bug:[],bui:190,build:[],builder:[7,13],built:[1,2,3,4,6,8,9,11,12,13,14,15,16,17,20,21,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,40,43,45,46,47,48,49,50,51,53,54,55,56,64,67,78,80,83,86,87,96,97,98,99,100,101,105,109,111,112,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,144,149,151,152,156,157,159,163,171,172,174,175,176,177,178,179,180,182,183,184,185,188,189,192,194,197,198,199,201,205,210,212,213,214,216,217,218,223,224,225,227,228,229,230,231,233,235,236,238,239,240,241,242,243,245,246,250,251,252,253,254,255,256,257,258,259,260,261,262,263,265,267,268,269,270,271,272,274,275,276,278,279,282,283,284,285,286,287,288,289,290,293,295,296,297,298,299,300,301,302,304,308,311,313,314,315,316,317,318,320,321,323,324,326,327,328,332,333,334,336,337,338,339,340,342,343,344,349,358,359,360,363,364,365,367,368,369,370,371,372,373,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,399,400,401,402,403,404,405,406,407,408,409,410,411,412,415,416,417,418,419,420,421,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,449,450,451,453,456,459,461,467,471,472,473],bulatov:[411,412],bulk:[4,6,10,70,239,274,280,380,410,414,419,426,428,462],bullet:7,bump:236,bunch:8,bundl:[9,190,192],burlywood:191,bussi1:312,bussi2:312,bussi:[230,312],buyl:[9,189],bybe:9,bypass:6,c1060:14,c11:[204,410],c12:204,c13:204,c1n:204,c2050:14,c21:204,c22:204,c23:204,c2n:204,c31:204,c32:204,c33:204,c34:204,c3n:204,c41:204,c42:204,c43:204,c44:204,c_0:[320,436,437],c_1:[68,69,117,118,164,188,191,229,282,294,331],c_2:[69,117,118,161,163,164,188,294,322,331],c_3:[117,294],c_cluster:6,c_cstherm:6,c_dist:117,c_doubl:11,c_e:320,c_flux:91,c_forc:117,c_gauss:389,c_hb:393,c_id:[6,63,71,87,117,119,188,202,203,204,205,206,207,208,209,294,310,322,476,484],c_ij:6,c_ijkl:6,c_index:117,c_k:229,c_ke:316,c_msdmol:119,c_my_stress:202,c_mycentro:[203,207],c_mychunk1:114,c_mychunk2:114,c_mychunk:[6,66,75,90,93,104,106,145,160,162],c_mycom:206,c_mycomput:203,c_myf:[188,487],c_myrdf:[116,209],c_mytemp:[8,204,205,206,209,322,476,484],c_n_k:229,c_p:141,c_pe:110,c_peratom:[110,141],c_pi:369,c_press:117,c_prop:6,c_radiu:163,c_reax:[422,423],c_sa:294,c_sigma:369,c_size:6,c_stress:188,c_tatom:237,c_tdrude:[221,237,479],c_thermo_press:[8,204,205,206,209],c_thermo_temp:209,c_xrd:206,ca2:164,cach:[17,39,414,471],cacul:296,cadetblu:191,cai:479,calcforc:239,calclat:91,calcluat:[103,105,110,112,141,379],calcualt:[91,203],calcul:[],caldwel:[6,171,470],calhoun:276,call:[],callabl:[3,11],callback:[3,8,11,142,194,226,456],caller:3,calori:483,caltech:[6,7,9,13,387],calucl:6,calul:[11,12,145,349],cambridg:[9,421],campa:275,can:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,342,343,344,345,346,347,348,349,351,352,353,354,356,357,358,359,360,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,465,466,467,468,469,470,471,472,473,474,475,476,477,479,483,484,485,486,487,488],cancel:[194,293,485],candid:[169,201,228],cannot:[1,2,3,6,11,12,13,15,16,17,39,40,41,54,57,58,59,68,71,82,84,88,104,117,119,142,144,145,166,168,169,187,188,189,190,191,202,203,204,206,207,208,209,211,214,215,217,218,228,229,230,236,237,238,242,249,252,254,255,257,258,260,261,262,267,269,272,279,280,283,288,290,293,294,295,298,308,316,320,322,323,325,326,329,330,331,333,348,351,356,358,361,362,363,372,373,375,385,390,392,399,403,405,407,414,417,422,424,425,426,428,438,439,441,453,455,456,458,459,461,462,464,467,468,470,472,475,483,484],canon:[194,201,228,230,252,253,269,270,271,272,276,312,315,318,419],cao1:276,cao2:276,cao:276,capabl:[5,7,9,11,14,17,18,327,333,349,363,365,375],capac:[9,40,101,151,288,320,433,458,468],capit:[220,458],capolungo:[118,164,294],captur:[6,321,365,373,387,391,403,410,479],carbid:379,carbon:[7,190,342,365,378,396,410],card:[12,14,16,22,44,77,87,116,173,195,196,293,335,353,376,393,452,460,465,486,488],care:[3,6,59,71,165,168,187,203,207,208,212,213,218,230,235,239,252,279,293,315,368,456,458,461,462,467,468],carefulli:[11,12,54,290,331,394,396,463],carlo:[6,7,9,194,201,214,228,293,315,384,439],caro:[201,385],carpent:[7,13],carri:[16,245,282,320,391,423],cart:[3,455],carter:[9,17],cartesian:[3,62,364,455],carv:168,cascad:[222,320],cash:7,cast:[230,484],cat:[15,190],catastroph:284,cate:239,categori:[],cation:388,cauchi:[133,138],caus:[1,2,3,6,8,12,16,17,165,167,168,169,188,191,199,215,222,228,264,274,291,293,296,325,327,328,329,330,333,347,349,356,358,362,393,399,405,408,409,414,452,456,457,458,459,462,463,465,466,484,488],caution:[1,349],cautiou:[212,213],cautious:365,caveat:[365,467],cbecker:[364,385],cc1:[6,14,66,75,90,93,104,106,114,145,160,162,203,207],cc2:14,ccc:[386,440,442,444,447],ccflag:[12,16,17,18,19,188],ccm6:385,ccsi:[386,440,442,444,447],ccu:369,cd2:164,cdeam:385,cdennist:9,cdll:11,cdof:[6,145,203],cdte:369,cdte_bop:369,cdtese:369,cdzn:369,cdznte:369,ce3:164,ce4:164,ceas:355,ceil:484,cell:[3,6,59,88,116,118,163,164,165,188,199,215,216,228,233,250,252,253,256,275,283,286,320,348,349,351,384,387,476],cella:[6,476],cellalpha:[6,476],cellb:[6,476],cellbeta:[6,476],cellc:[6,476],cellgamma:[6,476],center:[3,6,25,42,63,66,71,74,75,86,89,90,98,103,104,105,114,116,118,145,146,147,150,153,157,160,162,165,190,191,194,195,196,198,203,206,207,208,215,217,218,219,221,228,229,234,236,237,242,248,252,257,258,269,270,272,275,279,284,290,291,293,294,297,305,306,308,310,311,312,313,315,316,318,325,329,334,351,357,368,386,387,390,391,397,408,409,410,411,412,440,442,443,444,446,447,461,468,479,484],centimet:483,central:[3,61,70,76,77,116,122,140,242,274,296,306,357,416,422,423,447,458],centro:[],centroid:[3,276,446,468],cerda:348,ceriotti2:230,ceriotti:[13,230,235],certain:[1,2,3,6,8,12,17,39,71,113,117,119,169,188,190,202,203,204,206,207,208,209,214,226,227,293,295,309,322,333,340,347,359,394,414,423,445,460,464,479,484],certainli:234,cerutti:349,cfg:[3,6,7,13,188,189,190,191,192],cfile:423,cfl:[128,298],cfor:297,cg_type:425,cgiko:2,cgikot:2,cgkio:2,cgko:2,cgkot:2,cgo:2,cgot:2,ch2:296,ch2lmp:[],ch3:296,ch5md:189,chain3:359,chain:[],challeng:[6,297],chalopin:288,champaign:[233,348,349,408],chandler:[364,385],chandrasekhar:[6,399],chang:[1,2,3,6,8,9,11,12,14,15,16,17,39,40,41,46,55,57,59,62,71,80,87,116,126,128,147,148,149,165,166,167,169,185,187,188,189,190,191,192,194,195,196,197,198,200,201,207,208,210,211,212,213,214,215,216,217,218,222,223,225,227,228,230,232,233,234,236,238,239,240,242,248,249,250,252,253,254,255,256,257,258,264,269,270,271,272,274,275,279,280,282,283,287,290,291,292,293,295,296,297,308,311,312,313,314,316,317,318,319,320,321,323,326,329,331,349,354,356,358,361,363,383,387,391,394,408,409,410,414,422,423,439,453,454,455,456,458,459,460,461,462,463,464,466,467,468,469,470,473,476,480,482,483,484,485,486],change_box:[],changeabl:188,channel:[4,197],chapter:[276,349],charact:[2,3,6,12,38,41,56,63,185,188,190,191,192,194,211,282,290,333,357,362,387,398,420,422,423,441,455,456,460,465,466,484,486,487,488],character:[6,67,70,116,140,430,453,472],characterist:[237,308,317],charg:[1,3,4,5,6,7,9,11,15,40,87,88,113,118,164,165,188,192,194,195,196,201,218,223,228,282,284,285,286,290,310,323,348,349,357,370,372,378,379,381,382,385,387,388,394,399,403,407,417,422,423,439,444,445,447,448,450,451,458,459,463,468,470,479,483,484],charmm2lammp:13,charmm:[],chartreus:191,cheap:308,cheaper:[222,390,424],check:[3,6,8,11,12,15,17,39,41,71,91,185,201,207,211,212,213,218,225,228,234,235,292,296,308,316,318,323,331,333,347,356,357,358,359,360,363,384,395,398,414,423,453,455,456,458,466,472,475,476,484],checkf:185,checkqeq:423,checku:185,chem:[6,13,20,21,25,39,40,43,45,46,87,88,112,141,171,172,182,205,216,221,229,230,237,239,251,252,253,270,271,276,280,283,285,293,297,308,311,312,315,316,317,318,325,334,342,344,348,349,355,358,365,370,374,375,378,379,380,382,383,387,389,390,392,393,399,403,404,407,410,413,414,417,438,445,467,470,472,479],chemic:[9,118,159,164,188,200,201,228,284,289,290,315,349,422,423,434],chemistri:[9,283,284,286,369,387,422,423],chen:320,cheng:378,chenoweth:[422,423],chenoweth_2008:[422,423],chi:[92,154,187,274,284,286,388,390,485],chiefli:421,child:8,chip:[7,12,17,18,363,471],chipot:216,chiral:342,chmod:[11,12],cho:410,chocol:[7,191],choic:[3,6,12,15,16,18,40,41,54,87,141,144,158,169,185,203,207,208,211,214,217,218,230,236,239,250,252,276,284,293,315,343,349,354,355,358,360,363,394,407,414,418,458,467,468,471,472,478,479,483],choos:[1,3,6,7,8,12,16,17,18,29,39,54,87,117,155,156,190,212,213,214,215,218,225,236,239,250,252,254,255,256,257,258,280,308,312,326,348,349,355,448,453,455,467,473],chose:[442,444],chosen:[2,3,6,12,17,140,165,168,177,185,190,196,201,215,218,225,228,229,237,239,250,252,256,276,279,290,308,312,315,316,321,323,324,330,349,350,355,363,387,391,397,398,401,425,442,453,467,472,479],chri:163,christian:[7,9,14,17],christoph:7,chunk:[],chunkid:[66,75,90,93,104,106,114,145,160,162,203],chute:[4,10,231],ciccotti:296,cieplak:[6,171,470],cii:204,cij:204,circl:304,circular:[3,6,144,186],circumst:18,circumv:288,citat:[],cite:[3,7,8,12,236],cko:2,cl1:164,clarendon:[29,382],clarifi:[7,442,444],clariti:333,clark:417,class2:[],classic:[0,3,5,6,7,8,9,226,276,283,288,320,344,387],classifi:[9,439,447],claus:456,clean:[6,12,14,15,17,466],cleanli:[457,487],clear:[],clearli:7,clebsch:140,clermont:[9,13],clever:462,click:[2,11,22,37,44,55,165,173,184,190,233,335,343,358,376,439],client:[233,235],climb:[251,358,472],clinic:[7,13],clo:[154,187,485],clock:[12,453,472],clockwis:326,close:[3,6,11,12,13,39,41,67,141,168,188,213,214,215,230,237,239,252,270,293,296,326,329,347,349,352,354,355,358,363,365,369,379,380,410,414,426,428,444,462,468,479,481],closer:[3,41,116,163,187,188,211,215,219,317,358],closest:[213,274,293,323,390,424,438,448],cloud:479,clovertown:18,clsuter:72,clump1:[278,293],clump2:[278,293],clump3:[278,293],clump:293,cluster:[],clutter:[3,9],cmap:458,cmatrix:230,cmax:410,cmd:[11,12,276,469],cmin:410,cmm:[],cn1:204,cn2:204,cna:[],cnn:204,cnr:[9,13],cnt:[394,462],co2:[40,164,296,357],coars:[7,9,29,36,40,54,177,278,293,308,392,425,470],coarser:[349,484],coarsest:140,code:[],coeff:[3,7,8,12,21,22,33,44,50,171,172,173,178,334,335,340,376,394,398,414,427,429,431,458,460],coeffcient:458,coeffici:[],coefficienct:383,coefficient0:385,coefficient1:385,coeffieci:[6,367],coeffincientn:385,coexist:[9,228,387],cohes:[6,388,410],coincid:[122,329,374,408,409,453],colberg:189,cold:[6,150,228,232,359,479],coldest:316,coleman8:9,coleman:[9,118,164,294],colin:9,collabor:[7,8,9,15],collect:[3,6,7,8,9,13,40,42,66,75,83,90,93,98,104,106,114,145,153,160,162,165,188,191,203,216,242,248,278,288,291,293,331,348,357,359,377,397,458,465,471,477,488],collid:[222,308,330],colliex:164,collinear:[3,278],collis:[3,239,308,326,330,384,391,451],colllis:308,colloid:[],colombo:39,colon:[192,331,459],color1:191,color2:191,color:[3,9,41,188,190,191,211,229,283,288],column:[3,6,9,12,13,42,63,65,66,67,68,69,71,75,77,79,81,90,92,93,104,106,108,110,113,114,115,116,117,119,140,141,145,153,160,162,163,164,185,188,191,194,202,203,204,206,207,208,209,242,249,250,283,293,309,310,320,330,389,393,422,423,459,473,475,484],colvar:[],colvarmodul:12,com:[],comamnd:217,comand:[214,460],comannd:363,comb3:[],comb:[],comb_1:285,comb_2:285,combiant:380,combin:[3,6,7,9,11,13,36,40,63,65,69,79,87,92,108,115,144,158,188,190,200,206,233,242,252,276,282,312,321,329,332,334,348,349,351,355,363,377,379,380,387,388,394,406,407,430,440,442,444,447,450,461,466,471,479,484],come:[],comfort:[12,13],comm:[0,3,12,61,73,189,233,235,236,349,358,363,383,414,419,441],comm_modifi:[],comm_modift:61,comm_styl:[],command:[],comment:[2,7,11,12,38,56,171,185,188,237,293,320,357,358,364,385,386,388,398,410,416,423,430,440,441,442,443,444,447,455,456,458,479,484],commerci:7,commmand:[3,6,12,59,107,271,452,453,455,472,487],common:[],commonli:[3,6,12,17,25,57,59,105,167,188,190,192,344,392,401,430,442,444,458,461,470],commun:[1,3,6,7,8,10,11,12,14,15,16,18,40,41,58,61,62,71,168,169,190,191,211,212,213,215,216,217,233,235,239,241,242,243,252,275,282,284,285,286,293,308,320,331,346,348,359,360,361,363,384,418,455,456,460,467,468,484,486,488],communc:348,comp:[7,189,235,236,296,349,358,387,414,419,424,437,441,443],compact:[63,194,376,439],compani:[5,7],compar:[1,3,4,6,8,12,17,39,86,110,118,148,163,164,173,184,191,221,284,331,333,348,349,356,358,410,453,472,473,479,483],comparison:[],comparison_of_nvidia_graphics_processing_unit:14,compass:[7,21,22,37,43,44,55,172,173,184,334,335,343,375,439],compat:[3,5,7,8,9,11,12,13,17,18,41,71,117,119,176,188,192,196,202,203,204,206,207,208,209,211,275,287,312,315,322,325,328,348,363,395,414,441,455,456,484],compens:[6,212,213,291,359,387],compet:319,competit:349,compil:[3,7,8,9,10,12,13,14,15,16,17,18,19,163,188,189,190,192,233,319,349,363,458,459,463,484],compl:17,complain:[12,17],complement:410,complementari:[7,379,399],complet:[3,6,9,12,15,41,59,71,191,207,211,216,242,276,279,282,308,319,321,333,347,358,363,388,427,429,446,453,458,463,466,470,472,475,479,484],complex:[6,8,11,12,13,25,40,42,62,140,142,153,165,166,239,304,329,346,358,387,441,456,458,461,484],compli:[315,319],complic:[6,7,9,12,13,201,228,456],complier:12,compon:[3,6,8,12,61,63,66,67,73,81,88,89,90,91,93,94,97,104,105,106,107,108,109,110,112,113,117,127,130,131,132,133,136,137,138,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,157,158,160,161,162,188,190,191,197,198,202,203,204,205,206,207,208,209,210,214,215,217,218,223,226,231,235,236,239,242,244,248,249,251,252,253,256,257,258,269,270,272,273,275,276,277,280,291,293,295,296,297,301,302,305,308,311,312,313,315,322,323,328,329,330,348,351,355,356,357,358,363,383,387,391,408,409,427,429,430,458,459,468,476,484,485],componenet:6,composit:[6,201,239,385],compound:[378,387,388,447],compres:[71,114,203],compress:[3,59,71,114,168,188,190,191,203,217,250,256,280,283],compris:[40,329,397,424,446],compton:[118,164],comptu:3,compuat:349,comput:[],computation:[3,6,212,213,320,369],computational:479,compute_arrai:8,compute_fep:[196,407],compute_group_group:228,compute_inn:8,compute_ke_atom:8,compute_loc:8,compute_modifi:[],compute_peratom:8,compute_sa:[118,294],compute_scalar:8,compute_temp:8,compute_ti:196,compute_vector:8,compute_xrd:164,concaten:[2,3,487],concav:329,concentr:385,concept:[6,145,155,203,467],conceptu:[3,6,71,153,215,217,358,379,394,410,463],concern:[6,73,87,189,229],concis:[11,319],conclud:12,concret:8,concurr:[9,16,349,484],conden:[320,442,444],condens:[6,147,320,365,381,385,399,447],condit:[],conducit:6,conduct:[],cone:461,confid:[3,472],config:[12,188,455],configfil:216,configur:[1,2,6,12,15,17,38,59,122,167,185,187,188,190,194,215,216,217,218,222,228,235,236,264,276,284,319,346,356,358,365,369,386,410,440,442,444,447,453,458,460,461,472],confin:[458,472],conflict:[3,12,40,414,456],conform:[3,6,13,59,214,215,251,292,297,319,342,358,387,470],confus:[3,447],conjuct:383,conjug:[7,8,236,355,387,422,423],conjunct:[6,7,71,86,87,114,148,153,159,165,169,191,195,196,236,239,243,264,279,280,284,285,286,288,293,308,316,323,328,348,349,358,370,372,376,379,383,387,393,399,414,417,425,445,458,461,465,479,488],connect:[3,6,87,150,168,214,233,278,293,296,305,358,380,391,438,444,455,456,462,479],conput:3,consecut:[3,11,12,39,71,165,191,195,196,218,233,234,379,399,403,453,459,461],consequ:[1,6,201,320,398,472],conserv:[3,194,201,214,221,222,229,232,236,238,239,243,248,250,252,264,293,296,311,312,316,323,324,328,358,382,383,391,405,467,472],consid:[6,9,70,71,78,87,115,147,150,151,168,188,191,195,196,202,204,207,211,213,214,218,240,253,275,293,315,316,319,320,323,349,376,387,394,423,424,438,453,454,456,459,460,461,463,466,468,476,479,484],consider:[6,8,236,237,311,312,313,363,467],consist:[3,6,8,9,11,12,40,42,65,69,79,92,104,108,111,112,115,145,148,150,165,177,187,192,197,198,203,217,218,221,223,226,229,236,237,238,249,252,254,255,256,257,258,259,260,262,263,264,265,267,268,269,270,271,272,280,283,288,290,292,293,311,312,313,314,324,348,349,351,357,358,363,365,369,371,377,379,387,390,394,408,409,410,414,424,427,429,441,448,456,458,459,461,462,463,470,479,484],consistent_fe_initi:200,consit:293,constant:[],constitu:[3,6,242,293,325,329,377,424],constitut:[427,429],constrain:[3,6,8,143,144,145,146,148,151,152,153,154,155,157,158,194,203,218,228,229,234,242,246,278,279,291,293,296,306,316,323,356,357,387,463,470,479],constraint:[],construct:[6,8,12,14,38,54,56,61,64,67,70,72,73,77,118,140,164,215,252,275,292,329,359,363,382,414,438,440,441,461,462,477,484],constructor:8,consult:423,consum:[1,288,418,484],consumpt:346,contact:[],contact_stiff:[426,428],contain:[0,1,2,3,4,6,8,9,11,12,13,17,18,19,38,40,41,56,63,87,91,116,118,140,145,153,163,164,165,167,171,173,184,185,188,190,191,192,194,195,196,200,202,203,204,206,207,208,209,211,216,218,223,230,234,235,236,237,239,250,264,274,275,278,279,281,283,286,290,293,294,298,308,315,319,320,329,330,333,347,349,357,358,361,362,364,365,366,369,378,379,382,385,386,387,394,395,410,416,420,421,422,423,430,440,441,442,443,444,445,447,453,454,455,456,458,459,460,461,463,465,467,470,472,475,476,479,484,486,488],content:[12,18,423,474,476],context:[3,6,8,12,17,117,191,212,213,218,278,290,324,355,450,458,465,474,483,484,485],contibut:70,contigu:455,contin:16,continu:[0,2,3,5,6,9,12,13,14,41,71,81,103,104,161,191,194,195,196,201,203,204,205,206,207,208,209,211,214,215,216,217,218,228,229,230,232,233,234,236,237,238,244,249,250,252,254,255,256,257,258,269,270,271,272,277,279,282,283,293,294,297,307,308,310,317,318,320,326,329,333,347,362,363,369,383,384,401,404,422,423,424,427,429,443,453,456,458,460,461,466,472,475,476,484,486],continuum:[6,7,9,200,320,427,429],contour_integr:200,contract:[59,215,217,252,280,293],contradictori:3,contrain:296,contraint:264,contrari:[230,237],contrast:[1,6,42,55,64,147,150,217,331,427,429,450,487],contrib:320,contribut:[3,5,6,7,8,9,12,13,17,63,66,68,70,71,74,75,77,80,84,87,88,89,90,91,93,102,104,106,107,108,109,110,112,114,117,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,196,201,202,203,204,206,207,208,209,215,228,236,239,242,243,247,253,270,271,278,279,287,290,293,294,296,322,348,356,358,366,383,384,385,387,394,408,409,414,422,423,470,476,479],contributor:12,control:[3,5,6,7,8,9,11,13,16,27,29,41,87,91,122,140,174,188,190,194,200,201,211,215,216,217,232,233,236,237,252,254,255,256,257,258,280,285,293,299,300,311,312,313,320,324,346,348,360,387,390,422,423,426,428,440,444,453,455,467,473,474],control_typ:200,controlfil:423,convect:91,conveni:[6,12,29,188,192,209,294,351,430,484],convent:[3,8,9,29,176,183,184,191,292,305,332,385,387,484],converg:[3,6,41,88,188,190,192,197,211,214,215,223,226,256,283,285,288,292,296,354,355,356,358,378,379,399,453,465,472],convers:[3,8,140,190,191,201,204,280,348,379,380,381,387,399,403,407,417,456,472,483],convert:[2,3,4,5,6,7,8,12,13,20,21,24,28,32,35,36,59,63,71,91,165,172,188,190,191,209,250,331,334,336,339,342,351,358,364,385,442,444,451,456,458,459,460,465,475,479,483,484,486,488],convex:329,convinc:[7,12],cook:9,cooki:7,cool:[7,155,232,291],cooordin:188,cooper:[5,7],coord123:114,coord1:[3,114,203,207,208],coord2:[3,114,203,207,208],coord3:[3,114,203,207,208],coord:[],coordiat:356,coordin:[1,3,4,6,7,8,11,13,14,15,17,40,41,42,59,61,62,63,66,68,71,74,75,77,81,87,89,90,93,103,104,106,113,114,116,134,140,148,154,160,162,163,165,169,187,188,189,190,191,192,194,197,202,203,206,207,208,211,212,213,214,215,216,217,218,221,223,224,226,228,231,232,233,234,235,236,237,249,251,252,254,255,257,258,270,273,274,275,278,279,280,290,291,293,295,296,297,302,305,306,307,308,310,318,319,320,327,328,330,331,351,356,357,358,363,364,365,368,386,453,458,459,461,463,466,468,472,479,484,485],coordn:[114,203],coorind:104,copi:[0,3,4,8,11,12,15,17,40,119,190,320,358,376,422,456],copper:451,coproccesor:16,coprocessor:[1,4,7,9,16,17,363,471],coproprocessor:17,copy_arrai:8,copyright:[7,8,278],coral:191,core:[],core_shel:147,coreshel:[6,9,372,379,381],cornel:[6,171,470],corner123i:113,corner123x:113,corner123z:113,corner1i:113,corner1x:113,corner1z:113,corner2i:113,corner2x:113,corner2z:113,corner3i:113,corner3x:113,corner3z:113,corner:[3,6,40,113,190,329,330,351,446,458],cornflowerblu:191,cornsilk:191,corpor:16,corr:378,correct:[3,6,9,11,12,16,17,59,87,88,102,110,116,147,152,159,190,217,228,230,236,252,253,270,278,280,283,319,325,329,348,358,364,365,366,367,368,369,370,371,372,373,374,375,377,378,379,380,381,382,383,384,385,386,387,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,446,447,449,450,451,458,473,476,479],correction_max_iter:200,correctli:[3,8,9,11,17,71,81,102,103,143,144,146,148,150,151,152,153,154,157,158,161,188,191,197,218,223,226,237,246,252,253,286,293,296,305,307,326,329,358,359,363,381,409,455,456,458,468,483,485],correl:[],correspond:[1,2,6,8,11,12,14,20,21,22,23,24,25,26,27,28,29,30,31,32,35,38,40,43,44,45,46,47,48,49,51,53,54,56,70,71,87,96,97,109,112,113,114,115,118,119,127,130,131,132,133,134,136,137,138,140,143,144,152,159,164,171,172,173,174,175,176,177,179,180,182,183,185,188,190,191,195,196,197,203,205,206,207,208,210,213,215,217,224,226,227,231,236,239,240,248,249,250,252,254,255,256,257,258,259,264,267,269,270,272,275,276,280,285,293,295,296,311,313,315,324,325,326,328,329,330,332,334,335,336,337,338,339,342,344,349,353,355,357,358,364,365,367,370,371,372,373,374,375,376,377,378,379,382,383,385,386,387,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,410,411,414,415,416,417,419,420,422,423,424,425,430,431,440,441,442,443,444,446,447,449,450,451,453,455,456,458,459,461,471,472,473,475,476,479,484],correspondingli:[408,409,467],cosin:[],cosineshift:27,cosmo:[230,235],cossq:[],cost:[1,6,10,11,12,17,39,41,71,109,118,141,164,190,191,203,207,208,211,212,213,225,252,285,320,348,349,361,379,399,403,414,440,455,467],costheta0:[440,442,444,447],costheta:420,costli:[11,88,230,359],couett:4,coul:[],could:[2,3,6,9,11,12,17,33,41,50,59,66,71,75,87,90,93,104,106,109,112,114,145,155,160,162,178,188,190,191,195,196,203,204,207,211,217,226,235,282,283,284,288,291,293,295,308,309,315,319,320,321,325,329,331,333,340,345,347,354,356,359,363,366,389,393,394,422,423,454,455,456,458,460,462,465,466,474,479,484,485],coulomb:[3,5,6,7,8,9,10,12,14,15,18,88,107,108,116,141,166,170,284,286,321,348,349,356,363,370,372,373,374,375,378,379,380,381,382,387,391,392,394,399,403,407,414,417,422,423,425,439,444,445,447,450,463,470,476,479,483],coulommb:6,cound:3,count:[1,3,6,8,10,11,12,16,41,63,68,77,91,114,116,117,153,163,169,197,198,201,203,206,207,208,210,211,218,223,225,228,234,252,264,279,296,311,312,329,349,356,357,358,360,363,389,393,414,476,484],counter:[326,453,464,466,472],counteract:228,counterbal:232,counterpart:[188,293,453],counterproduct:18,coupl:[],courant:298,cours:[3,8,126,128,159,188,195,196,229,292,305,319,325,327,328,330,331,349,408,431,455,458,471,479,484,486],courtesi:351,coval:[6,29,387,410,479],covari:230,cover:[6,71,185,191,200,239,387,397,446],coverag:[71,207],cpc:235,cpp:[1,3,6,8,9,11,12,13,87,188,195,196,226,296],cpu:[1,3,4,9,10,12,14,15,16,17,18,63,71,191,194,205,221,237,321,346,349,363,376,439,453,471,472,475,476,477,484],cpuremain:476,cr2:164,cr3:164,crack:[4,359],crada:[5,7],crai:[5,7,13,18,188],crash:[3,12,359,479],craympi:363,creat:[],create_atom:[],create_bond:[],create_box:[],create_elementset:200,create_faceset:200,create_group:189,create_nodeset:200,createatom:[],creation:[],crimson:191,critchlei:278,criteria:[3,116,166,190,191,212,213,214,247,356,419,446,460,463,484],criterion:[12,41,121,163,165,168,201,211,214,228,264,285,298,326,331,356,358,378,387,391,463,472,473],criterioni:472,critic:[6,48,49,250,315,320,356],cross:[3,12,22,71,89,144,173,188,190,202,207,213,217,249,251,270,293,301,305,307,316,323,335,351,358,374,383,384,385,392,393,394,399,401,403,420,425,427,429,442,444,451,458,462,468,486],crossov:1,crossterm:458,crozier:[0,7,13],crucial:283,crystal:[4,6,13,73,274,275,318,351,359,462,476,479],crystallin:[6,275,351,443,479],crystallis:315,crystallogr:[118,164],crystallograph:[351,476],crystallographi:[118,164,351],cs1:164,cs_chunk:6,cs_im:[40,458],cs_re:[40,458],csanyi:[140,421,430],cscl:410,csequ:6,csh:[11,12,376],cshrc:[11,12],csic:[386,440,442,444,447],csinfo:6,csisi:[386,440,442,444,447],csld:[],cst:385,cstherm:6,cstyle:455,csvr:[],ctcm:[364,385],ctemp_cor:221,cterm:297,ctr:9,ctype:11,cu1:164,cu2:164,cu3au:410,cube:[6,41,163,168,211,221,329,351,479],cubic:[],cuda:[],cuda_arch:15,cuda_get:15,cuda_hom:15,cuda_prec:15,cufft:14,cuh:369,cummul:[3,6,209,212,213,214,216,225,230,236,238,308,311,312,313,314,316,323,393,476],cumul:[6,201,203,206,207,208,222,228,236,250,252,256,264,293,294,358],curli:2,current:[0,1,3,5,6,7,8,9,11,12,13,15,16,17,18,40,41,42,59,61,63,71,73,81,87,102,108,116,117,130,141,145,153,155,161,163,166,169,188,189,190,191,192,195,196,200,203,207,208,209,211,212,213,214,215,216,217,218,222,223,226,228,230,233,234,236,242,249,252,253,257,258,264,269,270,272,278,284,285,287,290,291,292,293,296,297,298,299,300,301,302,304,306,307,308,311,312,313,319,320,323,324,325,326,327,328,330,331,333,346,347,348,349,352,353,355,356,357,358,363,369,376,378,382,385,387,388,391,394,395,398,408,409,410,411,412,414,420,422,423,426,427,428,429,431,442,444,445,448,453,454,455,456,458,459,460,461,462,464,465,466,468,470,472,473,475,476,484,485,486,487,488],curv:[6,165,228,275],curvatur:[390,424,451],custom:[],cut0:456,cut1:467,cut2:467,cut:[],cuthi:[274,286],cutinn:[371,408,409],cutlo:[274,286],cutmax:420,cutoff1:[375,382,399,403,407,417,425],cutoff2:[370,372,373,375,381,382,399,403,407,417,425],cutoff:[3,6,10,16,18,39,45,46,54,55,61,70,72,73,77,87,108,115,116,140,163,166,168,213,214,219,274,283,284,286,288,290,293,308,321,325,329,331,346,348,349,356,359,360,361,363,364,365,366,367,368,369,370,371,372,373,374,375,377,379,380,381,382,383,384,385,386,387,388,389,390,392,393,394,395,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,422,423,424,425,430,431,432,433,434,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,456,460,463,467,479,484],cutoffa:386,cutoffc:386,cuu3:385,cval:164,cvd:315,cvel:297,cvff:[],cwiggl:[3,249,325,328,330,484],cyan:[2,190,191],cycl:[3,228,250,252,253,256],cyclic:[3,185],cygwin:12,cylind:[3,4,190,234,279,326,329,461],cylindr:[6,234,305,326],cypress:363,cyrot:369,cyrstal:275,d3q15:239,d3q19:239,d_double_doubl:15,d_e:320,d_flag2:282,d_flag:282,d_name:[113,188,282,310,468],d_single_doubl:15,d_single_singl:15,d_sx:282,d_sy:282,d_sz:282,daan:318,dai:12,daili:12,daivi:270,damag:[],dammak:288,damp:[3,6,194,199,236,237,238,243,252,253,256,280,283,288,293,311,312,324,326,327,355,356,358,370,372,374,379,382,387,391,399,407,417,425,439,445,472,479],damp_com:237,damp_drud:237,dampen:[293,479],dampflag:[326,391],dan:17,danger:[3,12,228,331,383,476],dangl:168,daniel:9,darden:[349,382],darkblu:191,darkcyan:191,darken:190,darkgoldenrod:191,darkgrai:191,darkgreen:191,darkkhaki:191,darkmagenta:191,darkolivegreen:191,darkorang:191,darkorchid:191,darkr:191,darksalmon:191,darkseagreen:191,darkslateblu:191,darkslategrai:191,darkturquois:191,darkviolet:191,dasgupta:284,dash:[391,475],dat:[6,91,185,200,454],data2xmovi:[],data:[],data_atom:8,data_atom_hybrid:8,data_bodi:8,data_vel:8,data_vel_hybrid:8,databas:[],datafil:[12,13,294],dataset:294,datatyp:3,date:[0,6,12,13,422,423,484],datom1:115,datom2:115,datom3:115,datom4:115,datum:[3,6,42,65,68,69,79,92,108,115,188,204],davi:325,david:[9,19,348,349,442,444],daw:[385,420],dbg:14,dcd:[3,6,7,188,189,190,191,192,276,459,463],ddim:187,deactiv:407,dealt:235,debug:[6,7,11,12,13,14,17,118,122,164,165,276,281,346,348,363,395,414,448,456,457,460,465,468,475,484],deby:[],decai:[379,451],decid:[3,6,12,16,71,249,282,293,321,473],decipher:351,declar:189,declin:308,decod:190,decompos:[87,430],decomposit:[3,5,7,18,62,200,276],decoupl:[6,479],decreas:[3,188,197,198,205,214,217,223,226,228,236,319,348],decrement:297,deepli:345,deeppink:191,deepskyblu:191,def:[12,13,456],defaul:61,defect:[6,70,163],defgrad:2,defin:[2,3,5,6,7,8,11,12,17,20,21,22,23,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,51,53,54,55,56,57,58,59,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,171,172,173,174,175,176,177,179,180,182,183,184,185,186,187,188,189,190,191,194,195,196,197,198,199,200,201,202,203,204,206,207,208,209,210,211,212,213,214,215,217,218,221,222,223,226,227,228,231,234,235,236,237,238,239,247,249,251,252,253,254,255,256,257,258,260,261,262,265,267,268,269,270,271,272,274,275,276,278,279,280,282,284,286,291,293,294,295,296,298,302,306,308,310,311,312,313,314,316,317,318,320,322,323,325,326,327,328,329,330,331,333,334,335,336,337,338,339,342,343,344,346,348,349,351,353,355,356,357,358,359,360,361,362,363,365,366,367,368,370,371,372,373,374,375,376,377,379,380,382,383,384,386,387,389,390,391,392,393,394,395,397,399,400,401,402,403,404,405,406,407,408,409,413,414,415,416,417,419,420,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,455,456,458,459,461,462,463,464,467,468,469,470,472,473,475,476,479,480,481,482,483,484,485],definit:[2,3,6,8,12,13,78,80,116,140,191,203,204,205,206,207,208,209,217,234,256,294,310,322,325,328,330,332,343,346,357,366,369,377,387,397,420,427,429,430,446,456,458,460,467,469,483,484],defint:476,deform:[],deg2theta:164,deg:479,degener:[3,278],degrad:[8,18,275,349,467],degre:[3,6,8,20,21,24,28,29,32,35,36,38,65,79,92,94,96,97,99,101,102,112,143,144,145,146,147,148,149,150,151,152,153,154,155,157,158,164,165,171,172,175,176,183,185,187,190,203,214,221,228,230,231,236,237,242,252,253,256,257,258,269,270,272,276,278,292,293,296,311,312,313,318,334,336,339,342,344,356,382,385,393,468,476,479,485],degress:[145,203],del:472,delai:[3,6,12,359,384,476],deleg:394,delet:[2,3,7,8,12,54,57,60,63,163,168,169,194,203,204,206,207,208,209,212,214,225,228,252,294,311,312,331,333,347,357,359,362,414,458,459,461,469,470,475,480,482,484,485],delete_atom:[],delete_bond:[],delete_el:200,deli:187,delimit:[456,484],deloc:[253,387],delr:410,delt_lo:472,delta:[],delta_1:369,delta_3:369,delta_7:369,delta_conf:3,delta_ij:[410,420],delta_mu:3,delta_pi:369,delta_r:420,delta_sigma:369,delx:187,delz:187,demand:288,demo:11,demon:273,demonstr:[283,410],den:279,dendrim:393,denniston:[9,239,241,242,243,275],denomin:[7,170],denot:[118,221,237,275,286,288,379,392,394,423,427,429],dens:[71,214,387],densiti:[3,6,7,9,18,40,41,59,100,116,126,140,151,163,165,195,196,200,203,207,208,211,217,226,239,242,245,246,275,279,280,284,320,325,351,353,357,364,369,385,410,411,412,420,424,433,435,436,437,458,467,468,476,483],density_continu:429,density_summ:429,depart:[0,7],departur:[250,283],depend:[1,2,3,6,8,9,11,12,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,43,44,45,46,47,48,49,51,53,54,56,61,63,65,68,69,70,71,79,92,108,109,112,113,114,115,119,140,143,148,152,153,159,165,166,171,172,173,174,175,176,177,179,180,182,183,184,185,187,188,190,191,194,195,196,197,198,201,203,205,206,207,209,210,211,213,215,217,223,224,227,230,231,232,234,236,237,239,241,242,249,252,254,255,256,257,258,259,267,269,270,272,274,285,288,290,293,295,296,302,308,311,312,313,315,317,319,320,322,324,325,328,329,330,331,333,334,335,336,337,338,339,342,344,349,351,356,357,359,360,361,363,364,365,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,385,386,387,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,410,411,413,415,416,417,419,420,422,423,424,425,430,431,439,440,441,442,443,444,445,446,447,449,450,451,453,455,458,460,461,464,468,470,472,475,476,478,484,485],dependend:6,depflag:12,dephas:[453,472],depos:218,deposit:[],deprec:[284,422],depth:[51,144,190,320,390,424],dequidt:9,der:[87,107,377,378,407,422,423,450,479],deriv:[6,7,8,9,38,56,63,87,140,159,185,204,215,217,228,236,249,252,254,255,256,257,258,274,280,284,288,317,318,320,325,326,329,355,357,365,369,377,382,387,388,392,401,405,406,410,422,423,439,441,450,479],derjagin:450,derlet:274,descend:191,descent:[7,355],descib:[40,284],describ:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,38,39,40,41,42,56,62,63,68,70,71,73,88,110,113,116,118,130,140,141,144,145,149,150,153,156,158,159,163,164,165,167,168,177,182,185,188,189,194,195,196,203,204,205,206,207,208,209,211,214,215,216,217,218,220,221,229,230,233,234,235,236,237,238,239,241,242,243,247,251,252,253,256,263,271,274,276,281,282,283,284,285,286,293,297,305,308,309,310,311,312,313,314,315,316,317,318,323,325,326,328,333,348,349,351,354,355,356,357,358,362,365,366,368,370,371,372,374,375,376,377,378,379,382,385,387,388,390,391,392,394,399,400,401,402,403,404,405,406,407,408,409,410,413,419,420,421,422,423,424,425,430,431,438,439,440,441,442,443,444,445,447,449,450,451,453,455,456,458,459,461,462,468,471,472,475,484,485,486],descript:[],descriptor:[140,188,395],deserno:349,design:[0,3,6,7,8,9,11,13,14,15,17,118,147,150,164,200,214,220,221,252,253,274,275,294,315,320,366,367,368,371,374,379,381,387,407,408,409,411,412,420,423,441,467],desir:[2,3,6,7,11,12,14,15,16,33,40,50,59,71,88,91,112,117,141,147,165,178,187,203,209,215,217,226,228,229,236,237,238,242,252,270,278,279,280,281,284,288,293,296,308,311,312,313,314,319,326,340,345,348,349,351,354,356,357,358,383,385,393,408,409,440,442,444,454,455,456,458,462,467,472,473,475,476,484,485,486],desk:7,desktop:[4,6,7,10,12,190],despit:479,destabil:369,destre:342,destroi:[11,39,212,213],detail:[1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,19,22,37,40,41,42,55,63,66,67,68,71,75,78,90,91,93,102,104,106,107,109,111,112,114,117,119,140,141,143,144,145,148,158,159,160,162,165,166,169,170,173,184,188,190,191,194,195,196,200,203,204,205,206,207,209,211,213,214,215,216,217,218,226,228,229,230,231,233,234,236,238,239,243,249,250,251,252,253,254,255,256,257,258,262,264,269,270,271,272,275,278,279,280,282,283,285,286,287,293,296,308,311,312,313,314,315,316,318,319,320,321,322,323,324,331,333,335,343,348,349,352,356,357,359,360,363,364,365,366,368,369,371,373,374,375,376,377,378,379,382,383,387,388,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,409,410,413,414,419,422,423,424,430,431,439,446,449,450,456,458,459,460,461,463,464,467,468,470,473,476,477,484,485,488],detect:[2,3,12,61,63,86,227,279,319,358,378,393,398,453,455,458,469,472,484],determ:363,determin:[1,3,6,8,12,15,39,40,42,51,57,58,59,61,62,68,71,87,102,107,109,112,118,119,127,141,153,154,163,164,165,187,188,190,191,192,193,197,198,199,202,203,204,205,206,207,208,209,210,211,215,217,218,221,223,228,231,232,234,236,237,242,247,249,250,252,257,258,269,270,272,274,276,280,283,290,291,292,293,294,295,298,300,302,308,311,312,313,315,321,322,325,326,327,328,329,330,331,343,348,349,351,357,359,360,363,365,366,373,378,382,384,385,389,391,394,395,403,410,414,423,424,438,441,445,450,455,458,459,461,463,465,468,472,474,475,477,483,484,485],detil:108,devan:[9,425],devanathan:444,develop:[0,3,5,6,7,8,9,11,12,14,15,16,17,18,19,42,233,256,278,283,284,287,365,369,387,412,447,460],devemi:9,deviat:[250,256,274,389],deviator:9,devic:[1,3,12,15,17,233,363],device_typ:363,devin:[285,378],devis:412,dfactor:190,dff:479,dfft_fftw2:12,dfft_fftw3:12,dfft_fftw:12,dfft_none:12,dfft_singl:[3,12,349],dfft_xxx:12,dfftw:12,dfftw_size:12,dft:[9,287],dhi:[59,187,217,279],dhug:[250,283],dhugoniot:[250,283],dia:410,diagnost:[],diagon:[3,6,83,140,141,142,215,252,280,293,323,427,429],diagonalstyl:430,diagram:[41,118,164,184,211,276],diallo:393,diam:[190,191,279,357],diamet:[3,6,40,113,165,188,190,191,195,196,236,279,293,308,324,326,357,377,390,391,397,401,424,446,450,458,459,468],diamond:[351,387,410],diamter:[40,279],dick:6,dicsuss:249,dictat:[201,250],did:[3,12,356,383,384,385,391,414,442,444,466],didn:3,die:18,diel:[],dielectr:[],diff:[3,6,12,161,322,348],differ:[1,2,3,4,6,7,8,9,10,11,12,14,15,16,17,18,22,37,38,39,41,42,54,55,56,61,64,68,70,71,87,94,96,97,120,140,143,144,145,146,148,151,152,153,154,155,157,158,159,165,166,168,173,184,185,187,188,190,191,194,196,199,201,203,206,211,212,213,214,215,216,217,221,227,228,229,230,231,232,233,236,237,239,249,252,253,254,255,257,258,260,262,265,267,268,269,272,274,276,278,280,283,284,285,288,291,293,296,297,305,306,308,311,312,313,316,317,318,320,323,324,325,326,329,333,334,343,345,347,348,349,351,352,354,355,357,358,360,361,362,363,364,365,369,373,374,376,377,378,383,385,387,390,391,392,394,397,399,400,402,403,410,411,412,413,414,416,420,422,423,424,425,426,427,429,430,431,439,440,441,442,444,446,447,450,452,453,455,456,458,460,461,462,463,466,467,468,470,472,473,475,476,477,479,483,484,485,486],differenti:[1,3,6,29,185,348,379,420,443],difficult:[215,276,363,393,467],difficulti:[296,422],diffract:[],diffus:[],digit:[2,3,191,333],dih_table1:185,dih_table2:185,dihedr:[],dihedral_coeff:[],dihedral_cosineshift:27,dihedral_styl:[],dihedralcoeff:3,dihedraltyp:213,dihydrid:387,dij:296,dilat:[],dim1:3,dim2:3,dim:[3,59,71,143,146,147,148,151,152,153,154,155,157,165,187,207,217,234,326,351,410,461,483,484,485],dimdim:484,dimems:275,dimens:[],dimension:[3,39,112,118,140,143,145,146,147,148,151,152,153,154,155,157,164,186,203,207,251,275,320,351,354,358,420,458,468],dimensionless:[105,121,122,124,127,129,131,136,140,320,349,430,450],dimentionless:135,dimer:[6,293,410],dimgrai:191,dimstr:[41,211],dinola:[280,311],dintel_offload_noaffin:16,dipol:[],dipolar:[4,29,40,188,310,479],dir1:469,dir2:469,dir:[1,3,4,8,9,11,12,250,274,283,307,420,422,423,456,469,484],dirac:140,direc:420,direct:[],directli:[3,6,8,9,11,12,87,113,140,142,188,189,190,197,223,230,234,239,275,294,312,324,326,327,328,329,351,355,363,364,365,370,372,373,379,382,385,387,399,403,414,417,425,438,456,468,469,470,476,484],directoi:14,directori:[0,1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,60,192,216,235,278,284,287,304,308,317,318,358,362,364,365,369,376,378,379,385,386,388,395,396,407,410,411,412,416,420,421,422,423,430,440,442,443,444,447,456,458,459,460,469,484],disabl:[3,12,16,320,398,456,471,484],disadvantag:[6,211],disallow:[188,217,252],disappear:460,discard:[2,3,41,71,205,207,211,321,329,455,460,461],discontinu:[9,185,356,405],discourag:410,discov:[13,321],discret:[6,8,40,42,190,191,236,239],discuss:[],disk:[6,84,85,158,186,218,228,279,456],disloc:70,disord:[39,70],disp:[],dispar:424,disperion:[382,403],dispers:[3,6,7,9,163,275,348,349,373,382,403,408,414,423,441,447],displac:[],displace_atom:[],displace_box:59,displacemet:461,displai:[11,13,22,37,44,55,173,184,188,190,335,343,376,439],dispters:3,dissip:[6,229,236,275,317,318,371,383,391,408,409,439],dissolut:212,dist:[6,69,91,108,117,188,276,292,384,438,453,485],distanc:[3,6,7,9,12,20,21,29,39,43,45,46,47,48,49,51,53,54,55,56,58,59,61,63,64,66,69,71,72,73,74,75,76,77,81,86,89,90,93,103,104,105,106,108,114,115,116,117,118,120,134,140,154,160,163,165,166,167,168,172,187,188,190,191,199,203,207,208,212,213,214,215,217,218,219,222,228,234,239,249,250,251,252,256,264,274,275,279,283,284,291,292,293,296,297,301,305,306,307,308,315,316,318,319,320,323,325,326,327,328,329,330,334,348,349,351,354,356,358,359,360,363,366,367,368,369,370,371,372,373,374,375,377,379,380,381,382,383,384,385,386,387,389,390,391,392,393,397,398,399,400,401,402,403,404,405,406,407,408,409,410,413,414,415,416,417,418,419,420,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,453,456,458,461,467,468,472,476,479,483,485],distinct:[6,221,290,348,424],distinguish:[6,86,140,242,387,457],distort:364,distrbut:364,distribut:[],distro:[111,376,419,420],ditto:[8,11,12,14,15,16,17,18,115,213,451,456],div:8,divd:117,diverg:[3,12,39,293,318,460,479,486],divid:[3,6,16,41,91,112,117,126,128,141,162,163,173,184,191,203,204,206,211,217,274,316,323,328,348,356,358,388,423,447,467,475,484],divis:[6,239,369,397,407,455,458,476,484],dl_poli:[6,7],dlambda:159,dlammps_async_imd:233,dlammps_bigbig:[12,39],dlammps_ffmpeg:[3,12,190],dlammps_gzip:[3,12,188,190,319,458,459,463],dlammps_jpeg:[3,12,190],dlammps_longlong_to_long:12,dlammps_memalign:[12,16],dlammps_png:[3,12,190],dlammps_smallbig:12,dlammps_smallsmal:12,dlammps_xdr:[12,188],dlen:468,dlmp_intel_offload:[12,16],dlo:[59,187,217,279],dlopen:6,dlvo:[7,377,450],dm_lb:239,dmax:[308,354],dna:7,doc:[0,1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,22,37,40,42,55,57,59,63,66,68,75,87,90,93,102,104,105,106,107,109,111,112,114,117,119,141,144,145,158,160,162,165,166,167,173,184,188,189,190,191,192,194,195,196,201,202,203,204,205,206,207,208,209,218,228,236,237,247,252,253,257,258,262,269,270,271,272,279,282,293,305,308,311,312,313,322,326,329,331,333,335,343,347,356,357,358,363,364,365,368,376,378,379,385,386,388,393,394,396,397,410,411,412,414,416,419,420,421,430,439,440,442,444,446,447,456,458,459,460,461,463,466,467,468,475,476,484,485,486,487],docuement:424,dodgerblu:191,doe:[0,1,2,3,5,6,7,8,9,11,12,14,15,16,17,18,29,33,38,39,41,50,54,56,59,62,63,67,70,71,87,88,91,104,110,116,117,118,142,144,145,147,148,153,155,159,164,165,166,167,169,171,173,178,184,185,187,188,189,190,191,194,200,201,203,207,210,211,213,214,215,217,221,223,225,228,229,232,234,236,237,239,242,248,252,253,254,255,257,258,269,270,271,272,280,281,282,286,288,291,293,308,311,313,315,316,320,323,324,325,328,329,330,331,336,337,339,340,342,347,348,349,350,351,357,358,359,364,365,366,367,368,369,371,373,374,375,377,378,379,380,382,383,384,385,386,387,389,390,391,392,394,395,396,397,398,401,402,404,405,406,408,409,410,411,412,414,420,421,422,423,424,426,427,428,429,430,431,432,433,434,435,436,437,438,440,441,442,443,444,445,446,447,449,450,451,453,454,455,456,458,459,460,461,462,465,466,468,469,470,471,472,475,476,479,484,488],doegenomestolif:7,doesn:[3,7,8,12,165,188,201,207,208,305,357,359,363,365,378,386,396,422,423,440,442,443,444,447,458,460],dof:[3,8,112,144,145,158,203,293,485],dof_per_atom:[145,203],dof_per_chunk:[145,203],doff:[357,458],doi:[6,216],domain:[3,6,7,12,13,18,39,41,42,58,61,62,71,118,154,164,167,187,189,190,191,194,201,211,215,217,218,232,235,239,252,253,276,288,293,320,325,326,348,349,358,363,384,414,453,455,458,462,475],domin:[1,387,472],don:[0,8,11,12,13,116,168,197,223,237,282,329,410,456,458],donadio:312,done:[1,3,6,7,8,12,14,15,16,17,18,38,39,41,56,59,62,71,159,162,165,168,185,188,190,191,200,201,203,205,206,207,208,209,211,212,213,214,215,217,218,226,228,233,234,236,237,244,252,257,258,269,270,272,273,275,276,277,282,290,293,294,296,308,311,312,313,315,317,318,331,333,347,348,349,356,358,359,362,363,365,373,385,394,395,396,403,409,410,414,422,438,441,446,453,454,455,456,459,462,463,466,476,477,479,484,485],donor:393,dot:[141,161,197,223,231,251],doti:[369,420],doubl:[1,2,3,6,8,9,11,12,14,15,16,17,39,87,217,226,281,329,333,347,349,362,363,369,388,392,422,423,454,458,462,466,471,484,485],dover:200,down:[3,6,7,8,11,39,71,215,228,236,308,324,363,387,414,457,477],downhil:[354,355],download:[5,7,8,9,11,12,13,17,233,395,421],downsid:6,downward:290,dozen:[8,12,107,194,422,423],dpack_arrai:12,dpack_memcpi:12,dpack_point:12,dpd:[],dpde:245,dproduct:366,dr_ewald:[118,294],drag:[],dragforc:239,drai:[250,283],drain:[232,324,356],dramat:[59,187,212,213,214,215,217,252,308,311,312,349,363,414,455],drautz:369,draw:190,drawback:282,drawn:[188,190,191,229,453],drayleigh:[250,283],dreid:[],drfourth:105,drho:[113,364,385],drift:[6,103,105,229,230,236,237,248,291,308,467,475,479],drive:[11,12,198,215,217,231,252,274,280,293,327,358],driven:[6,177],driver:[6,12,14,15,194,226,233],drop:[3,191,383],droplet:394,drsquar:105,drude:[],dry:225,dsecriptor:395,dsf:[],dsmc:[],dstyle:279,dt_collis:239,dt_lb:239,dt_md:239,dt_srd:308,dtilt:[59,217],dtneb:472,dtqm:283,dtype:[115,213],dual:[16,17,308,363],dudarev:164,due:[1,3,6,9,10,12,16,17,19,40,54,57,58,61,66,70,71,74,75,81,86,88,89,90,93,102,103,104,105,106,110,116,118,126,140,141,143,144,146,148,151,152,153,154,155,157,158,160,164,165,168,169,188,190,194,197,198,206,210,212,213,214,215,216,217,218,223,224,225,226,229,230,233,234,236,237,238,239,242,243,244,248,249,250,251,252,256,264,274,277,279,291,292,293,295,305,307,308,309,311,312,313,314,315,317,318,320,324,325,327,328,329,331,349,354,356,358,359,360,380,383,385,389,390,394,408,409,414,420,422,424,425,438,441,442,444,448,450,451,453,455,458,459,460,467,472,475,476,477,479,484,485],duffi:320,duin:[9,284,289,422,423],duke:349,dummi:[12,29,443],dump1:463,dump2:463,dump2vtk_tri:134,dump:[],dump_atom:8,dump_custom:8,dump_h5md:189,dump_modifi:[],dumpcustom:8,dumptimestep:463,dunbrack:[6,20,171,374,470],dunweg:[236,238],duplic:[2,3,14,15,17,41,42,166,211,230,274,458,483],dupont:[5,7,13],durat:[37,55,143,144,146,147,148,150,151,152,153,154,157,158,184,191,203,228,288,320,343,391,439],dure:[2,3,6,8,9,12,16,17,38,39,41,56,71,87,126,128,142,147,166,169,185,188,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,217,218,219,222,223,224,225,226,227,228,229,230,231,232,233,234,236,237,238,239,240,241,242,243,244,245,246,248,249,251,252,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,301,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,349,356,358,362,363,383,407,414,423,441,453,454,456,458,461,463,465,466,468,470,472,473,476,477,484,487,488],dvector:8,dvlo:450,dvx:6,dx_lb:239,dy3:164,dyamic:12,dyanam:6,dyanmic:472,dynam:[],dynamo:[5,364,385,410],dyne:483,dyre:404,dysam:461,e28637:29,e_1:369,e_2:369,e_b:388,e_e:387,e_hbond:393,e_i:[6,369,388],e_j:[6,369],e_k:[369,387],e_kl:6,e_lj:[365,382],e_n:[369,387],e_nn:387,e_pr:387,e_rebo:365,e_tors:365,eaa:334,eaat:172,each:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,57,59,61,62,63,64,66,67,68,70,71,72,73,74,75,76,77,78,80,81,83,85,87,89,90,93,94,95,96,97,98,99,100,101,102,103,104,105,106,109,110,111,112,113,114,115,116,117,118,119,120,134,140,141,142,144,145,146,147,148,149,152,153,154,155,157,158,159,160,161,162,163,164,165,168,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,187,188,189,190,191,192,193,194,195,196,197,198,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,233,234,235,236,237,238,239,240,242,243,244,245,246,248,249,250,251,252,254,255,256,257,258,259,260,261,262,264,265,266,267,268,269,270,271,272,274,275,276,277,278,279,280,281,282,284,285,286,288,290,293,294,295,296,297,301,302,304,305,306,307,308,309,310,311,312,313,315,318,319,320,321,322,323,324,325,326,328,329,330,331,333,334,336,337,338,339,340,342,343,344,347,348,349,351,355,356,357,358,359,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,387,388,389,390,391,392,393,394,397,398,399,400,401,402,403,404,405,406,407,408,409,410,413,414,415,416,417,419,420,422,423,424,425,426,430,431,432,433,434,435,436,437,438,439,440,441,444,445,446,447,448,449,450,451,452,453,455,456,458,459,460,461,462,463,465,466,467,468,470,472,473,475,476,477,479,483,484,485,486,488],eacn:[41,211],eam0d:275,eam3d:275,eam:[],eam_databas:13,eam_gener:13,eangl:476,earli:[41,203,206,207,208,209,211,287,294],earlier:[7,8,12,59,191,358,391,410,414,472],earliest:472,earth:387,easi:[6,7,8,9,11,13,87,141,188,195,196,197,198,207,210,223,231,232,234,236,237,295,302,311,312,313,325,328,330,357,458,461,466,468,485],easier:[8,9,13,16,188,190,275],easili:[8,11,190,191,324,358,455,465,474,484],eastwood:[348,349],eat:172,eatom:331,eaxmpl:6,eba:21,ebb13:172,ebb:21,ebond:[221,237,475,476],ebt:172,ec_ii:410,ec_ij:410,ec_jj:410,echo:[],eco:[422,423],ecoa:[422,423],ecoul:[107,221,237,422,423,476],ecp:[387,458],edg:[2,3,6,41,59,71,118,163,164,167,168,189,190,199,207,234,295,325,328,329,330,331,351,458,461,468],edge_histo:163,edge_threshold:163,edih:476,edim:316,edip:[],edit:[3,8,12,13,14,15,16,17,18,19,479],editor:13,edu:[7,9,11,13,385,408,419,422,423],edward:[9,17],eebt:172,eff:[],effect:[1,2,3,6,8,9,11,12,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,66,71,74,75,81,89,90,93,103,104,105,106,109,112,141,143,147,152,153,160,163,169,171,172,174,175,176,177,179,180,182,183,184,185,187,188,190,191,195,196,197,200,201,204,208,209,210,212,213,214,215,217,218,224,227,228,229,230,231,232,233,234,236,237,251,252,254,255,256,257,258,259,267,269,270,272,273,274,276,279,280,282,283,284,285,288,292,293,295,296,307,308,311,312,313,315,316,318,320,323,324,325,326,327,328,329,330,331,334,336,337,338,339,342,344,348,349,351,355,356,357,358,359,364,365,367,369,370,371,372,373,374,375,377,378,379,382,383,385,386,387,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,411,414,415,416,417,419,424,425,426,428,431,439,440,441,442,443,444,446,447,449,450,451,453,455,456,460,461,463,467,468,470,476,477,483,484,486],efffect:462,efficaci:39,effici:[0,1,3,6,7,8,10,12,15,17,18,39,58,61,67,112,142,188,189,190,191,204,205,215,217,221,230,252,276,278,288,293,296,308,348,349,354,359,363,369,377,379,394,399,403,424,465,488],effort:[5,7,459],efftemp:[96,97,151],efi:[422,423],efield:[],eflux:232,eggebrecht:379,ehb:[422,423],eigensolv:3,eigenvalu:[275,276,348],eigtol:3,eik:159,eim:[],eimp:476,einstein:[288,318],either:[1,2,3,4,6,8,9,11,12,14,15,16,17,22,33,41,44,50,59,63,71,107,113,116,118,140,141,145,147,148,164,165,168,173,178,185,188,189,190,191,194,202,204,206,208,209,211,214,215,216,217,218,228,234,235,239,243,249,250,252,253,256,270,274,290,293,295,296,297,305,308,315,322,326,329,333,335,346,348,349,351,355,356,360,363,369,371,377,385,394,395,397,408,409,410,414,418,420,442,444,446,453,456,458,460,461,462,465,467,470,473,475,484],ejtehadi:[377,390,424],elaplong:[195,196,234,461,476,484],elaps:[3,195,196,197,198,210,217,223,231,232,234,236,237,249,279,295,302,311,312,313,325,326,328,330,431,453,461,463,464,468,472,476,484],elast:[],elastic_t:4,elba:29,electr:[6,194,200,223,237,348,349,388,422,423,451,479,483],electrolyt:[9,450],electron:[3,6,7,9,13,40,96,97,113,118,149,151,156,194,200,220,221,237,238,253,263,271,286,314,320,355,357,364,366,378,382,385,387,388,410,420,421,444,447,451,458,479,483],electron_integr:200,electron_temperatur:200,electron_unit:387,electroneg:[6,284,285,286,378,388],electronic_dens:3,electronic_specific_heat:3,electronic_thermal_conduct:3,electrostat:[6,9,16,18,201,228,284,286,287,321,348,349,377,382,387,399,407,409,423,450],eleftheri:293,elem1:[388,410,430],elem2:[388,410,430],element1:[290,364,385],element2:[290,364,385],element:[3,6,7,8,12,13,63,81,89,103,105,112,117,119,134,140,141,142,143,144,145,146,147,148,152,153,154,155,157,158,161,188,189,190,191,192,194,200,204,206,209,275,290,315,322,364,365,369,378,385,386,387,388,394,395,396,410,411,412,416,420,421,422,423,430,440,442,443,444,447,479,484,487],elementn:[364,385],elementset:200,elev:472,elif:[140,333],elig:[3,201,212,213,225,228,393],elimin:[3,6,71,229,236,237,293,296,317,318,453],elj:382,ellad:9,elliot:9,elliott:9,ellips:[4,6,9,82,144,186],ellipsoid:[3,4,6,7,13,40,42,82,113,130,144,165,186,188,236,254,257,260,261,269,293,308,353,356,390,409,424,439,458,468,486],ellipsoidflag:458,elong:[221,237,476],elp:[422,423],els:[3,7,8,12,71,107,116,117,119,189,190,202,203,204,206,207,208,209,228,252,293,308,320,321,322,331,333,348,394,457,469,484,487],elsewher:[8,249,308,410,421,422,423,470,476,484],elt:410,emac:[],email:[0,3,5,7,8,11,388],emb:[3,9,329],emb_lin_neg:410,embed:[3,5,7,11,12,13,29,88,142,163,320,364,385,388,407,410,411,412,420,439,448,456],embt:172,emi:[7,9],emol:[422,423,476],emphas:391,empir:[200,312,365,387],emploi:[9,275,288,443],empti:[3,57,71,167,293,348,359,398,458,469,470,484],enabl:[3,6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,35,37,38,39,40,43,45,46,47,48,49,50,51,53,54,55,56,60,61,62,64,67,78,80,83,87,96,97,98,99,100,101,105,109,111,112,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,144,147,149,151,152,156,157,159,163,171,172,174,175,176,177,178,179,180,182,183,184,185,188,189,191,192,194,195,196,197,198,199,201,205,208,210,212,213,214,216,217,218,223,224,225,226,227,228,229,230,231,233,234,235,236,237,238,239,240,241,242,243,245,246,248,250,252,253,254,255,256,257,258,259,260,261,262,263,265,267,268,269,270,271,272,274,275,276,278,279,283,284,285,286,287,288,289,290,292,293,295,296,297,298,299,300,301,302,304,305,307,308,311,313,314,315,316,317,318,320,321,323,324,325,326,327,328,329,332,334,336,337,338,339,340,342,343,344,349,356,358,362,363,364,365,367,368,369,370,371,372,373,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,449,450,451,456,459,460,465,467,477,484,488],enclos:[2,6,12,167,188,281,333,410,454,456,466,484],encod:[13,39,42,188,190,191,282,394],encompass:[3,6,40,57,59,116,166,304,322,439,461],encount:[3,8,12,59,206,362,463,484],encourag:[7,8,287,306],end12i:113,end12x:113,end12z:113,end1i:113,end1x:113,end1z:113,end2i:113,end2x:113,end2z:113,end:[1,2,3,5,6,8,11,12,15,16,17,18,19,38,40,41,57,59,71,113,168,169,172,187,188,190,191,192,195,196,204,206,208,209,214,217,221,229,234,236,237,238,251,252,253,264,280,292,293,297,308,311,312,313,314,316,319,320,323,327,330,331,347,348,357,358,362,363,383,385,390,424,427,429,430,431,445,448,453,456,458,459,460,461,463,465,466,470,474,476,479,484,488],end_of_step:8,endbondtors:[3,172,178,458],endif:8,energet:[214,365,423],energi:[0,1,2,3,4,5,6,7,8,9,12,13,20,21,23,24,25,26,27,28,29,30,31,32,35,36,38,40,43,45,46,47,48,49,51,53,54,56,63,65,69,82,83,84,85,86,87,88,91,94,95,96,97,98,99,101,102,107,108,109,110,112,123,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,165,169,171,172,173,174,175,176,177,179,180,182,183,184,185,188,191,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,334,336,337,338,339,342,344,348,349,354,355,356,358,359,363,364,365,367,368,369,370,371,372,373,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,419,420,422,423,424,425,430,431,432,433,438,439,440,441,442,443,444,446,447,448,449,450,451,453,456,458,463,467,468,470,472,474,475,476,479,483,484,487],energy_update_freq:423,enforc:[6,57,58,104,187,188,189,190,192,194,201,214,217,252,273,275,285,293,296,333,348,399,455,484,485],enforce2d:[],eng:[11,65,69,108,188,226,331,333,378,412],eng_previ:333,engin:[200,217,278,297,317,385,411],engr:[422,423],enhanc:[196,200,453],enlarg:[59,190],enough:[3,40,61,86,165,166,168,211,237,279,283,288,293,321,325,326,329,359,363,379,418,458,462,463],enpub:385,enrti:[],ensembl:[],ensight:6,ensur:[3,6,140,188,201,205,215,228,229,252,298,319,349,369,384,407,440,447],enter:[57,155,388,447,472],enthalpi:[123,254,255,385,475,476,484],entir:[0,2,3,6,11,14,15,41,42,63,88,109,110,112,116,118,141,145,164,165,191,194,195,196,203,207,208,211,214,216,225,228,229,232,236,237,248,252,254,255,256,257,258,274,276,278,291,293,306,320,322,333,363,382,403,414,441,458,466,467],entireti:[397,446],entiti:[6,8,40,42,188,293],entri:[3,8,12,38,42,56,65,69,79,92,108,115,118,127,130,131,132,133,134,136,137,138,163,185,191,206,207,208,216,283,331,357,369,386,410,416,423,430,440,441,442,443,444,447,484],entropi:472,entry1:[38,56,191,376,441],entry2:191,entryn:191,enumer:[166,188],enumuer:6,env:363,environ:[1,3,6,11,12,16,17,18,190,230,235,274,363,364,369,376,378,386,387,420,442,455,469,484],epair:[107,191,389,393,422,423,476],epen:[422,423],epfl:[230,235],epp:382,epq:382,eps0:450,eps14:407,epsilon0:444,epsilon:[3,6,36,45,46,50,53,54,87,171,195,196,228,293,308,325,329,354,356,368,374,375,377,379,380,381,382,390,392,393,394,397,398,399,400,401,402,403,404,405,406,407,413,417,424,425,434,440,446,449,450,467,479,483],epsilon_0:451,epsilon_14:374,epsilon_:424,epsilon_d:380,epsilon_i:[390,414,424],epsilon_i_:424,epsilon_i_a:[390,424],epsilon_i_b:[390,424],epsilon_i_c:[390,424],epsilon_ij:414,epsilon_j:[390,414,424],epsilon_j_:424,epsilon_j_a:[390,424],epsilon_j_b:[390,424],epsilon_j_c:[390,424],epsilon_lj:424,epton:419,eqch:160,eqeq:[422,423],eqp:382,eqq:382,equal:[2,3,6,8,11,12,17,39,41,54,63,65,68,69,76,79,86,87,91,92,108,110,115,117,119,141,144,159,161,165,190,191,194,195,196,197,198,201,204,205,206,209,210,211,215,217,218,223,228,229,231,232,234,236,237,239,242,243,249,250,256,266,274,276,279,281,283,284,285,288,290,292,293,295,297,302,304,311,312,313,316,317,318,320,322,323,325,328,330,331,333,347,351,356,358,359,360,362,363,378,383,389,390,393,408,413,420,422,423,424,426,427,428,430,431,441,446,447,451,454,455,456,458,460,461,465,466,469,472,474,476,484,485],equat:[3,6,7,8,9,91,112,118,164,173,184,194,215,221,222,230,236,237,239,242,250,251,252,253,256,270,274,276,283,284,288,296,308,316,320,323,325,326,328,330,342,348,349,377,382,383,387,388,391,396,408,409,410,414,424,427,429,433,434,436,437,445,451,479],equi:253,equidist:251,equil:[3,284,352,465,488],equilater:468,equilibr:[3,4,5,6,7,9,59,91,165,194,201,204,214,215,228,250,252,253,270,271,283,284,285,286,316,317,318,323,378,379,422,423,454,468],equilibria:323,equilibribum:[212,213],equilibrium:[1,3,4,6,7,21,24,26,27,28,29,32,35,36,38,43,47,48,49,51,53,56,59,148,149,172,174,215,217,228,229,230,237,239,252,256,270,283,288,292,296,297,305,308,315,316,318,323,334,336,339,342,378,410,416,479],equilibrium_angl:8,equilibrium_dist:8,equilibrium_start:200,equival:[6,12,13,59,61,124,125,133,138,163,167,191,206,209,215,217,228,236,252,270,280,292,293,328,383,387,442,444,458,461,466,467,476,479],equlibrium:6,equliibr:[284,286],er3:164,eradiu:[40,113,387,458],eras:[295,317],erat:[217,409],erc:379,erfc:[379,399,414],erforc:113,erg:483,erhart:[201,385,442,444],ermscal:366,ernst:9,eror:3,eros:410,erose_form:410,erot:[],errata:[442,444],erratum:325,erron:3,error:[],erta:391,ervel:[113,458],escap:[218,479],especi:[8,11,16,153,165,194,201,211,228,283,288,291,292,363,455],espresso:[9,287],essenti:[8,11,12,27,88,128,146,147,148,151,152,153,154,155,157,174,204,256,275,324,349,365,379,399,444,463,476],essex:29,establish:[87,232],estim:[1,3,6,10,12,38,41,56,91,141,200,211,222,250,308,315,348,349,354,414,423,441,472,476],esu:483,esub:410,eta:[6,239,252,283,284,286,324,386,388,390,420,443,447,483],eta_dot:252,eta_ij:420,eta_ji:388,etag:[40,458],etail:476,etap:252,etap_dot:252,etc:[1,2,3,6,7,8,9,10,11,12,13,15,16,39,40,42,54,61,68,89,90,91,94,109,110,113,115,141,143,145,146,147,148,149,151,152,153,154,155,157,159,165,167,168,169,178,188,190,191,194,195,200,201,202,203,206,207,208,209,212,213,217,218,226,228,229,236,252,279,290,294,320,321,329,333,347,348,356,357,358,359,361,385,386,394,407,409,418,422,423,440,442,444,447,453,456,458,459,460,465,467,468,472,474,475,476,477,479,483,484,486,488],ethernet:18,etol:[356,358,453,472],etot0:283,etot:[6,94,96,97,110,141,151,191,221,237,250,283,475,476],eu2:164,eu3:164,euler:[356,358],eulerian:200,euqat:432,europhi:239,ev_tal:8,evalu:[2,3,11,12,38,56,71,87,88,91,107,117,140,142,145,155,163,165,188,190,191,195,196,197,198,200,202,203,204,205,206,207,208,209,210,217,223,229,231,232,234,235,236,237,275,281,284,295,298,302,311,312,313,322,325,328,330,331,333,348,349,354,356,363,414,420,426,428,441,453,454,456,460,461,463,465,466,467,468,472,474,476,484,485],evalut:[333,456],evan:[153,270],evanseck:[6,20,171,374,470],evapor:[],evaul:[8,356],evdwl:[107,422,423,476],even:[3,6,8,12,15,17,18,34,39,41,52,57,59,61,63,70,71,119,166,167,181,185,188,191,194,195,196,201,202,203,206,207,208,209,211,212,213,215,217,218,221,234,237,250,252,253,275,288,290,293,294,304,308,316,320,323,325,329,331,341,348,354,356,358,363,368,387,388,391,394,414,424,447,448,458,459,461,463,464,465,467,468,470,473,475,476,477,479,488],evenli:[3,41,141,185,211,239,397,448,458],event:[],eventu:[3,6,12,15,167,284,472],ever:[54,56,235,308],evera:[377,390,424,439],everi:[0,1,2,3,6,8,9,11,12,15,16,39,41,71,72,91,113,119,128,153,168,188,189,190,191,192,194,195,196,197,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,217,218,222,225,226,228,230,232,233,234,239,240,248,252,253,256,273,274,275,279,280,281,282,283,284,285,286,288,290,291,293,294,296,297,308,310,311,312,313,314,315,316,319,320,321,322,323,331,333,347,349,358,359,360,363,383,384,394,407,422,423,435,452,453,454,458,460,462,463,465,466,467,472,473,474,476,484,488],everyth:[8,107],everywher:[116,401],eviri:387,evolut:[230,239,276,453],evolv:[239,276,321],ewald:[2,3,5,6,7,8,12,88,110,118,141,321,348,349,356,370,372,373,379,382,387,399,403,417,425,439,441,460],ewald_disp:382,ewalddisp:3,exact:[22,41,44,71,122,159,168,173,211,214,229,230,236,237,238,279,288,289,308,320,335,348,376,460,465,472,484,486,488],exactli:[3,6,12,14,17,38,41,56,59,71,91,116,144,149,156,165,185,195,196,206,211,217,222,229,236,237,238,253,263,264,271,275,283,308,313,314,327,363,376,383,385,391,394,397,408,414,441,460,461,468,472,484],exager:479,examin:[6,8,9,17,214,275],examp:[456,484],exampl:[],exce:[3,6,16,17,18,41,58,71,167,203,207,208,211,215,217,222,225,252,275,299,300,308,356,363,458,484],exceed:[3,41,59,211,217,252,308,466],excel:387,except:[1,2,5,6,8,9,11,14,20,21,22,23,24,25,26,27,28,29,30,31,32,35,37,38,40,41,43,44,45,46,47,48,49,51,53,54,55,56,59,60,71,89,90,108,109,112,117,141,143,144,145,146,147,148,149,151,152,153,154,155,156,157,158,165,169,171,172,173,174,175,176,177,179,180,182,183,184,185,187,188,191,194,197,203,204,206,210,211,215,217,224,227,228,231,234,236,238,252,253,254,255,256,257,258,259,263,264,267,269,270,271,272,276,285,286,293,295,296,305,308,311,313,314,320,324,328,331,333,334,335,336,337,338,339,342,343,344,348,349,351,353,357,358,359,361,362,363,364,365,367,370,371,372,373,374,375,376,377,378,379,381,382,383,385,386,387,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,409,411,415,416,417,419,422,423,424,425,431,439,440,441,442,443,444,446,447,449,450,451,453,455,456,458,460,461,463,466,467,468,469,470,472,476,479,483,484,485,487],excess:[205,387],exchang:[2,3,6,8,9,61,62,194,200,201,228,236,285,293,316,320,323,348,363,387,473],exchange:348,excit:[9,387],exclud:[3,6,9,12,16,17,63,71,112,140,145,152,153,169,188,203,207,212,213,240,248,278,291,293,315,326,331,356,357,359,371,391,394,408,409,414,438,470],exclus:[1,3,9,12,16,87,363,378,414,467,477],excurs:453,exectubl:12,execut:[1,2,3,4,6,8,11,12,17,60,166,190,233,287,333,347,350,362,454,456,466,469,472,484],exemplari:229,exemplifi:387,exert:[6,234,237,288,327,328,329,349],exhaust:[200,362,484],exhibit:[252,355,387,467],exist:[3,6,7,8,11,12,13,16,37,55,59,68,70,122,165,166,184,189,190,191,194,199,210,213,215,218,228,278,279,281,331,334,336,337,339,343,352,357,363,394,422,448,454,456,458,459,460,469,470,471,484,485,486],exit:[2,3,11,12,41,57,188,211,347,362,456,457,466,475,484],exlanatori:3,exp:[],expand:[],expans:[12,140,188,469,484],expect:[1,3,8,12,13,14,15,16,17,18,19,41,42,71,102,146,157,163,185,211,223,228,230,249,274,280,282,283,288,293,331,349,359,376,410,414,453,456,458,460,463,467,472,484],expens:[6,10,71,191,274,278,293,320,331,348,349,359,363,456],experi:[6,13,15,17,210,218,233,242,251,280,292,293,354,358,383,414,467,472],experienc:[6,12,241,242],experiment:[228,348,363,472],expert:12,expertis:7,explain:[1,3,6,8,9,11,12,16,18,41,59,63,65,68,69,71,72,73,76,77,79,86,92,145,153,185,188,190,191,194,203,204,209,211,213,215,217,252,274,282,293,305,331,333,347,348,351,357,358,362,368,385,397,431,446,456,459,460,463,465,468,479,484,488],explan:[3,6,59,113,140,188,203,251,274,394,452,455,456,458,467],explanatori:[3,8,117,188,202,203,206,207,208,293,357,455,484],explantori:[3,289],explic:413,explicit:[6,9,11,22,44,77,87,113,116,159,173,195,196,217,299,300,335,353,365,366,369,374,376,385,387,398,408,445,452,455,459,462],explicitli:[3,6,8,12,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,71,109,112,143,152,155,163,165,171,172,174,175,176,177,179,180,182,183,185,188,191,197,207,210,217,224,227,229,231,236,252,254,255,256,257,258,259,267,269,270,272,282,283,285,293,295,296,311,313,314,320,324,328,334,336,337,338,339,342,344,357,363,364,365,367,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,388,389,390,391,392,393,394,397,398,399,400,401,402,403,404,405,406,407,408,411,414,415,416,417,419,424,425,431,432,433,434,435,436,437,439,440,441,442,443,444,445,446,447,449,450,451,458,460,467,468,470,471,477,479],explictli:[16,471],exploit:[9,15,17,276],explor:[118,164],expon:[3,284,286,385,390,393,407,413,425],exponenti:[87,420,440,447,451,472,484],expos:11,exposit:[200,383,384],express:[6,140,151,165,195,196,215,249,274,284,320,326,333,369,385,387,401,410,430,439,484],expressiont:369,extend:[],extens:[3,6,9,17,44,45,46,53,55,63,82,83,84,87,88,91,94,97,98,107,109,117,119,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,194,197,198,201,209,210,216,219,223,226,227,228,230,231,232,234,236,238,250,252,256,264,274,275,291,292,293,295,297,302,305,307,311,312,313,314,315,317,318,320,322,325,329,330,390,410,423,424,430,475,476],extent:[1,3,41,45,57,71,163,167,188,199,207,211,234,327,330,348,351,365,426,428,441,455,458,461],exterior:[3,6,329],extern:[],extra:[3,6,8,12,16,17,40,41,46,61,71,102,109,110,112,118,141,143,144,146,148,151,152,153,154,155,157,158,164,165,166,167,171,191,206,211,213,252,281,282,283,293,308,356,357,360,361,382,391,394,397,410,414,455,456,458,461,470,479,484],extract:[3,6,11,13,36,63,87,107,115,117,119,195,196,286,358,379,388,410,430,456,463,475],extract_atom:11,extract_comput:[11,456],extract_fix:11,extract_glob:11,extract_vari:11,extramak:[12,15],extrapol:1,extrem:[1,3,6,17,58,190,205,215,217,252,318,387,443,479],extrema:407,extrins:200,f77:[5,7,12],f90:[5,7,12],f_1:6,f_5:[161,322],f_a:[442,443,444],f_ave:117,f_c:443,f_f:444,f_fix_id:283,f_harm:318,f_i:420,f_id:[6,71,117,119,188,194,202,203,204,205,206,207,208,209,247,310,322,476,484],f_ij:420,f_indent:209,f_int:317,f_jj:91,f_k:420,f_langevin:320,f_max:[283,288],f_msst:250,f_r:[237,442,443,444],f_sigma:369,f_solid:318,f_ss:6,f_temp:237,face:[3,6,57,59,71,153,163,167,199,207,208,325,327,328,329,330,351,390,410,424,458,461],face_threshold:163,facet:163,facil:[0,12],facilit:[6,13],fact:[6,8,16,230,308,318,391,470],factor:[1,3,6,12,18,24,28,32,35,36,39,41,46,47,57,58,59,87,91,102,108,115,116,118,140,159,164,167,171,182,188,190,191,195,196,204,211,215,217,218,228,233,236,238,239,250,252,253,256,276,280,292,296,298,300,308,312,316,323,324,325,329,339,349,351,357,363,365,366,369,370,372,374,379,380,381,383,387,391,394,398,399,410,414,416,417,423,425,431,440,445,455,458,461,462,467,470,472,473,476,479,483,484],factori:[3,456],factoriz:348,fail:[3,11,12,59,169,215,218,348,356,358,381,423,456],failur:[121,427,457,484],fairli:[11,414,467,472],faken:73,falcon:233,fall:[3,6,191,206,279,456,484],fals:[86,331,333,484],fame:8,famili:[447,455],familiar:[0,11],fan:420,far:[3,6,12,17,57,59,61,86,188,191,192,211,212,213,215,218,252,274,292,293,308,325,336,339,354,358,359,446,456,458,463,476],farago:236,farrel:[442,444],farther:188,fashion:[6,8,41,71,165,191,194,195,196,201,207,211,213,218,228,230,234,249,250,252,254,255,256,257,258,266,269,270,271,272,282,283,285,293,297,301,307,310,318,320,324,325,326,328,330,358,394,408,461,470,484,487],fasolino:396,fast:[6,7,9,12,13,17,39,188,261,283,321,348,349,371,408,409,439,441,460,465,467,476,485,488],faster:[1,6,9,10,11,12,14,15,17,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,41,43,45,46,47,48,49,51,53,54,56,61,63,105,109,112,143,152,171,172,174,175,176,177,179,180,182,183,185,188,191,194,197,210,211,217,224,227,231,235,236,252,254,255,256,257,258,259,267,269,270,272,280,284,285,293,295,296,308,311,313,315,317,320,324,328,334,336,337,338,339,342,344,348,349,360,361,363,364,365,367,369,370,371,372,373,374,375,376,377,378,379,382,383,385,386,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,411,415,416,417,419,424,425,431,439,440,441,442,443,444,446,447,449,450,451,453,467,471,479],fastest:[1,6,14,17,153,207,320,321,363,455],fatal:[3,475],fault:[70,423],faulti:12,fava:390,favor:214,favorit:7,fbmc:315,fcc:[],fcm:[266,484],fdirect:221,fdotr:395,fdti:87,fe2:164,fe3:164,fe_md_boundari:200,featu:8,featur:[],fecr:385,feedback:[7,233],feel:[7,233,234,242,274,329,331,358,414],felling:412,felt:329,femtosecond:483,fene:[],fennel:[379,399],fep:[],ferguson:[6,171,470],fermi:[1,12,15,151,363,444],fermion:[9,387],ferrand:[9,13],few:[1,3,4,5,6,7,9,10,11,12,13,14,18,39,192,202,203,204,206,207,208,209,237,252,279,282,284,296,322,348,356,357,358,365,455,458,463,467,469,477,484,486],fewer:[1,3,11,15,16,61,242,467],fewest:3,fextern:226,feynman:276,fff:456,ffield:[378,388,422,423],ffmpeg:[3,12,190],ffplai:190,fft:[1,3,7,12,14,15,88,109,110,141,275,348,349,467],fft_inc:[12,349],fft_lib:12,fft_path:12,fftbench:[348,477],fftw2:12,fftw3:12,fftw:[11,12],fhg:[7,9],ficiti:438,fictiti:[6,197,198,223,226,230,276,292,379,399,403,438],field1:[459,463],field2:459,field:[],fifth:[305,416],figur:[1,3,8,11,12,283,455,456],fij:382,file0:274,file1:[11,13,274,319,333,357,463,465,469],file2:[11,13,319,333,357,463,465,469],file:[],file_from:189,filen:357,filenam:[3,12,13,38,41,56,185,188,190,191,192,200,203,204,205,206,207,208,209,211,216,274,278,281,284,285,286,289,290,293,294,319,320,345,346,347,357,358,364,365,369,379,385,386,388,396,410,411,412,416,420,421,422,423,430,440,441,442,443,444,447,454,455,456,459,460,465,469,476,484,486,487,488],filennam:465,filep:[3,188,191,460,465,488],filepo:290,fill:[7,165,190,279,320,351,359,369,423,461],filter:[191,200],final_integr:8,final_integrate_respa:8,finchham:[6,147,381],find:[0,3,4,6,7,8,11,12,13,14,16,38,39,56,61,71,73,87,117,168,185,192,201,214,215,225,228,251,274,280,288,292,354,356,358,359,379,394,399,403,410,439,441,479,484],find_custom:8,fine:[16,17,169,197,223,318,359,363,484],finer:[140,165,484],finest:348,finger:[165,187,249,461],finish:[6,11,41,211,333,345,347,348,360,362,363,446,463,484,485],finit:[],finni:[7,385,439],finvers:221,fiorin:[9,216],fire:[354,355,356,358,472],firebrick:191,first:[0,1,2,3,5,6,8,9,11,12,14,15,16,17,21,38,39,41,42,45,46,54,56,57,59,61,62,71,81,88,91,103,104,105,112,116,117,127,130,133,134,138,141,150,153,159,161,163,164,166,167,168,172,185,188,189,190,191,192,194,195,203,204,206,207,208,209,211,214,217,228,229,234,239,249,250,251,252,274,276,281,282,283,285,290,293,296,297,305,306,308,309,310,317,318,319,320,322,326,331,333,334,340,351,356,357,358,359,362,363,364,365,368,369,370,372,374,376,378,379,385,387,388,391,392,394,395,396,398,399,403,408,409,410,412,414,416,420,422,423,430,438,440,441,442,443,444,447,451,453,454,455,456,458,459,460,463,465,467,470,471,472,475,476,479,484,485,486,488],fischer:[6,9,19,20,171,374,470],fit:[3,6,9,12,38,56,185,292,308,365,369,396,410,414,434,441,443,466,484],five:[73,151,283,357,369,411,458,472],fix:[],fix_adapt:[159,196,407],fix_atom_swap:[],fix_bal:62,fix_deposit:[3,201,279],fix_evapor:201,fix_flux:200,fix_gcmc:[201,357],fix_gl:230,fix_gld:230,fix_grav:279,fix_id:[3,215,250,252,254,255,256,257,258,280,283],fix_modifi:[],fix_mov:[187,326],fix_nh:8,fix_npt:230,fix_nvt:[201,228],fix_poem:[3,6],fix_pour:[3,218],fix_qbmsst:9,fix_qeq:[3,378],fix_rattl:296,fix_reax_bond:422,fix_rigid:[242,368],fix_saed_vtk:294,fix_setforc:8,fix_shak:296,fix_srd:3,fix_styl:256,fix_temp_rescal:314,fixedpoint:[215,252],fixextern:226,fixid:200,fji:382,flag1:[220,361],flag2:[220,361],flag:[3,8,11,12,14,15,16,17,40,66,74,75,81,86,89,90,93,103,104,106,118,160,164,168,188,190,191,192,209,214,216,220,233,236,240,242,248,249,275,282,293,305,307,308,315,319,328,331,346,349,357,361,362,363,365,393,398,410,438,453,455,456,458,459,460,462,463,464,468,484],flag_buck:373,flag_coul:[373,382,403],flag_lj:[382,403],flagfld:[371,408,409],flaghi:[3,371,408,409],flaglog:[371,408,409],flagn:220,flagvf:[371,408,409],flat:[6,320,325,326,330],flavor:[2,7,12],fld:[9,325,371,408,409],flen:366,flex_press:366,flexibl:[3,6,8,166,190,203,207,216,230,253,316,323,387,443,476],flip:[3,6,217,252,327,328],floor:484,flop:12,floralwhit:191,flow:[],fluctuat:[6,64,87,215,228,229,236,239,252,256,274,275,318,320,342],fluid:[],fluid_veloc:243,flush:[3,191,475],flux:[],flv:190,fly:[7,9,12,41,190,194,200,205,218,221,293,296,321,369,476,479],fmackai:9,fmag:219,fmass:276,fmax:[356,476],fmomentum:221,fmsec:[2,191,236,237,249,252,280,293,311,312,467,478,483,485],fname:347,fno:[12,16],fnorm:[356,476],fnpt:221,fnvt:221,foce:394,fock:366,focu:296,fogarti:[9,286,423],foil:[140,274,430],fold:[306,467],folk:7,follow:[0,1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,19,20,23,24,25,26,27,28,29,30,31,32,35,36,38,41,42,43,45,46,47,48,49,51,53,54,56,59,63,64,70,71,73,91,96,97,113,116,117,119,140,141,144,145,151,153,158,161,163,165,166,171,174,175,176,177,179,180,182,183,185,188,189,190,191,194,200,201,202,203,204,205,206,207,208,209,211,216,217,218,221,222,226,228,229,230,233,235,236,237,239,242,250,252,256,257,258,269,270,272,275,276,278,281,282,283,284,286,288,290,292,293,294,296,310,311,312,313,316,317,318,319,320,322,323,331,332,336,337,338,339,342,344,346,351,353,356,357,358,363,364,365,366,367,368,369,370,371,372,373,374,375,377,378,379,380,381,382,383,384,385,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,419,420,421,422,423,424,425,427,429,430,431,432,433,434,435,436,437,438,440,441,442,443,444,445,446,447,449,450,451,453,455,456,458,459,460,461,463,465,466,467,470,472,473,474,479,484,485,487],foo:[4,8,11,12,188,190,226,456,469,484],foot:6,footprint:[12,363],fopenmp:[12,16,18],forc:[],force_uvm:17,forceatom:242,forcefield:[292,393],forcegroup:239,forcezero:354,ford:382,forestgreen:191,forev:71,forget:[237,479],forgiv:252,fork:[12,188],form:[2,3,6,8,12,19,22,44,54,63,66,74,75,77,81,87,89,90,93,103,104,106,116,140,141,159,160,169,173,191,194,195,196,213,229,230,236,238,242,249,270,275,286,288,292,293,320,325,329,334,335,342,353,355,357,358,365,366,369,376,385,387,389,393,394,398,410,412,416,417,420,422,423,424,430,431,439,441,442,443,444,450,452,455,456,458,463,468,475,479,484],formal:[6,78,80,91,229,230,236,252,276,308,316],format:[2,3,6,7,8,9,12,13,22,38,41,44,56,68,77,173,185,188,189,190,191,192,203,206,207,208,209,211,213,275,278,282,284,286,289,293,294,304,319,320,331,332,335,353,357,358,364,365,369,376,385,388,398,410,412,421,422,423,425,430,441,447,448,455,456,458,459,460,463,474,475,476,484,486],former:[6,12,16,39,41,191,211,320,324,369,371,464,470,484],formerli:[7,13],formul:[1,40,64,141,197,223,236,252,270,284,286,292,296,319,348,365,369,385,387,390,410,419],formula:[2,3,6,7,13,21,22,37,44,54,55,70,73,87,89,90,91,94,96,97,106,112,118,141,143,144,145,146,147,148,149,151,152,153,154,155,156,157,158,164,165,170,172,173,184,188,195,196,197,198,203,204,205,206,209,210,217,223,231,232,234,236,237,249,274,275,281,290,295,302,306,308,311,312,313,322,325,328,330,331,333,334,335,337,343,351,357,365,366,368,369,374,375,376,377,382,383,385,386,390,391,392,393,395,398,399,401,402,403,405,406,408,409,410,413,414,415,424,425,431,439,440,442,443,444,447,449,450,454,458,461,468,475,476,483,484,485],forth:[1,6,11,12,13,14,15,362,456,461,465],fortran:[3,6,9,11,12,13,226,385,394,410,422,423],fortun:8,forward:[3,8,87,347,358,363],foster:[369,419,420],foul:168,found:[3,6,9,12,73,159,188,214,216,228,233,239,275,315,321,333,347,359,376,379,382,453,459,460,475],four:[6,11,54,81,103,104,140,161,250,320,342,357,358,453],fourier:[],fourth:[6,105,292,305,315,374,416],fox:[6,118,171,437,470],fphi:[38,56,441],fpic:12,fplo:[38,56,441],fprime:441,fqdn:235,fqq:382,frac:[221,237,445,479],fraction:[1,3,6,8,12,16,39,41,80,109,141,168,187,190,191,201,212,213,214,215,250,279,283,290,291,308,313,314,351,358,363,369,371,391,408,409,463,468],fragment:[42,233,290],frame:[83,140,191,200,250,283,327,390],framer:[190,191],framework:[5,230,364,430],franc:9,fraunhof:9,free:[5,6,7,9,13,29,60,63,70,87,159,196,274,308,317,318,319,320,355,358,366,387,407,420,450,455],freedom:[3,6,8,94,96,97,99,101,102,112,143,144,145,146,147,148,149,150,151,152,153,154,155,157,158,203,214,221,228,230,236,237,242,252,253,256,257,258,269,270,272,276,278,293,296,311,312,313,318,356,382,476,479,485],freeli:[0,6,7,12,144,158,163,190],freez:[],frenkel:[228,318],freq:199,frequenc:[3,6,16,39,191,205,264,275,276,283,288,346,383,387,423,453,467,472,484,487],frequent:[3,64,67,70,72,73,77,88,140,191,212,213,225,316,323,414,465],fri:[250,283],friction:[4,5,6,10,42,194,230,236,283,288,293,320,324,326,391,468],friedrich:298,from:[],front:[250,283,327],frontend:[190,287],frozen:[6,112,169,227,229,237,359,389],fs2:[6,91],fscale:233,fstr:484,fstring:456,ftol:[356,358,453,472],fuchsia:191,fuction:379,fudg:296,fugac:228,fugacity_coeff:228,fulfil:6,full:[1,2,6,9,12,17,38,39,40,91,190,204,205,216,239,274,348,349,363,369,385,387,388,390,445,458,460,465,466,470,472,477,479,487],full_energi:[3,228],fuller:356,fulli:[3,6,9,78,230,235,274,356,358,379,420,421,486],fulton:385,fumi:370,func:[456,484],funcfl:385,functino:[],functionaliri:216,fund:[0,7],fundament:[308,483],funnel_flow:304,further:[3,6,8,12,13,61,63,71,86,105,107,116,190,191,194,203,206,207,208,209,212,218,222,239,243,276,284,294,298,308,320,322,331,349,354,356,357,358,359,364,368,378,453,472,473,484],furthermor:[27,174,387],furthest:61,futher:3,futur:[],g_ewald:3,g_ewald_6:3,g_ewald_disp:3,g_jik:420,g_p:320,ga3:164,gaa:369,gahler:355,gai:[3,390,439],gain:315,gainsboro:191,galindo:413,game:233,gamma0:29,gamma:[3,6,29,236,239,243,275,283,284,286,288,324,383,386,390,410,413,433,436,437,440,442,444,447,476],gamma_:[3,320,326],gamma_ijk:442,gamma_n:[326,391],gamma_p:[3,320],gamma_t:[326,391],gammaa:413,gammafactor:239,gammar:413,gan:[420,440,442,444,447],gan_sw:420,gan_tersoff:420,ganzenmuel:[7,9],ganzenmul:9,gao:[6,20,171,374,470],gap:[185,408,409,421,430],gap_2014_5_8_60_17_10_38_466:421,gap_exampl:421,gaseou:7,gass:228,gather:[11,466],gather_atom:11,gather_scatter_loop_unrol:12,gathert_atom:11,gauch:177,gaug:12,gauss:[],gaussian:[6,40,63,91,103,105,229,230,236,276,292,308,312,330,348,383,384,387,389,421,439,453,484,485],gave:[3,414],gaybern:[],gcc:17,gcmc:[],gcore:221,gd3:164,gdot:409,gdrude:221,ge4:164,gec:[442,444],gen:[252,253],gener:[],genom:7,gentler:[325,328,330],gentli:386,geom:[6,348,384,453,485],geometr:[3,6,7,8,42,57,59,71,155,156,165,167,188,191,197,207,208,210,211,218,223,232,252,257,258,269,270,272,293,295,302,311,312,313,329,331,348,351,358,368,371,375,377,379,382,387,390,392,397,399,400,401,402,403,404,405,406,407,408,409,413,414,424,431,445,446,449,450,458,460,461,468,476,484],geometri:[3,6,7,9,13,25,41,71,153,165,207,211,212,213,215,218,234,351,414,458,461],georg:[7,9],georgia:13,gerber:407,germani:[9,14],germann:[256,401,453,472],germano:390,gerolf:13,get:[],get_natom:[11,456],getenv:484,gettimeofdai:12,gewald:[6,348],gezelt:[379,399],gf100:14,gf104:14,gf200:14,gflop:12,gflp:12,ghost:[3,6,7,12,16,58,61,62,73,163,168,215,217,237,252,282,293,294,346,348,359,363,383,384,387,391,398,463,468,479],ghostwhit:191,ghz:10,giacomo:9,gif:[4,190],gifsicl:190,gigabit:18,gillan:430,gingold:[433,434,436],gio:2,git:[7,12],github:[13,17,216,230,235,421],give:[0,1,2,3,5,6,7,8,9,10,11,12,14,15,16,17,18,29,54,71,113,145,148,152,165,188,191,197,199,203,204,206,209,215,217,230,252,270,274,275,280,288,290,293,322,348,349,356,359,360,363,365,369,384,387,393,394,410,414,424,442,443,444,453,455,456,458,468,472,479,485],given:[3,5,6,7,9,10,11,12,16,17,22,27,37,44,55,61,63,64,67,71,113,123,124,125,127,128,131,132,133,134,135,136,137,138,139,140,141,159,163,167,173,174,184,185,188,189,191,194,201,203,205,207,212,213,215,217,218,222,228,229,230,231,233,239,246,249,251,252,256,273,274,275,276,283,284,290,292,296,304,305,306,308,310,315,320,321,324,325,326,329,335,343,348,349,363,364,365,369,370,372,373,375,376,377,378,379,380,383,384,385,387,388,390,393,399,400,401,403,410,411,412,413,414,416,417,420,424,425,427,429,430,439,451,453,456,458,460,461,468,472,483,487,488],gjf:236,gjwagn:7,gko:2,gld:[],gle4md:[230,235],gle:[],glitch:3,glob:469,global:[],glosli:349,glotzer:[293,383],glue:11,gmail:[7,9,13],gmake:[12,17],gmask:[3,484],gnu:[0,7,12,17],gnuplot:[11,13],goal:[5,12,39],goddard:[6,9,25,284,285,286,344,387,393,422,423,470],goe:[12,54,140,165,187,249,301,356,359,382,386,392,401,404,431,451,461,465],gold:[70,191],goldenrod:191,goldman:283,gone:3,good:[1,3,6,12,17,41,73,118,163,164,211,236,250,252,284,290,296,315,348,358,359,364,377,384,385,414,441,447,453,467,472,476],googl:233,gordan:140,gordon:6,gould:[6,171,470],gov:[0,7,9,13,364,385,388,483],govern:239,gpl:[0,7,8,12],gpu1:363,gpu:[],gpuid:363,gpun:363,grab:[3,6],gracefulli:3,grad:[6,197,223,251],gradient:[6,7,8,12,13,122,127,215,223,231,232,251,270,285,316,320,354,355,358,409,423,441],gradient_correct:429,graduat:278,graft:214,grai:191,grain:[5,6,7,9,29,36,40,54,67,165,168,177,194,274,278,293,308,392,425,470],gram:[203,207,208,385,483],grama:[9,286,423],gran:[],grand:[3,194,201,228],granflow:5,granular:[],graph:11,graphen:462,graphic:11,grasp:5,gravit:231,graviti:[],grdient:200,great:[3,13,283],greater:[1,3,10,61,86,163,191,215,229,252,274,313,327,363,368,370,372,373,414,453,455,458,461,467,472,484,485],greathous:13,greatli:[118,472],green:[2,6,91,130,131,190,191,275,276,316,369],green_kubo:6,greenyellow:191,greffet:288,greg:[7,9],grest:[45,46,214,308,349,373,391,403,470],grew:71,grid:[3,12,41,62,118,153,164,167,211,239,288,308,320,321,346,348,349,452,455,458,460,462,467],grigera:6,grime:40,grmask:[3,484],gromac:[],gronbech:[236,348],groot:383,ground:[6,387],group1:[147,168,359],group2:[88,142,147,166,168,359],group2ndx:[],group:[],group_id:11,groupbig:308,groupid1:[242,293],groupid2:[242,293],groupid:458,groupnam:359,grouptyp:228,grow:[3,6,8,199,217,218,234,236,252,274,322,391,458,470],grow_arrai:8,grow_reset:8,growth:[6,315],grueneisen:9,gsmooth_factor:410,gstyle:[3,455],gtl:7,gtx285:14,gtx450:14,gtx460:14,gtx470:14,gtx560:14,gtx580:14,guarante:[65,69,79,92,108,115,165,168,188,222,284,347,351,468],guess:[3,188,280,459],gui:[7,11],guid:[1,17,40,78,80,99,100,101,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,194,245,246,298,299,300,301,304,321,419,427,429,432,433,434,435,436,437,468],guidelin:[1,8,14,15,16,17,18,19,348,441],guidlin:17,gullet:410,gulp:6,gumbsch:355,gunsteren:[280,311,407],gunzenmul:7,gunzip:12,guo:[6,20,171,177,374,470],gwald:3,gyrat:[],gzip:[3,12,188,190,191,319,358,458,459,463],h12:390,h2o:[40,357],h5cc:189,h5md1:189,haak:[280,311],had:[3,6,11,13,59,63,188,191,192,206,209,214,215,229,230,232,236,237,238,250,252,254,255,256,257,258,269,270,272,279,280,308,311,312,313,320,383,384,391,438,460,464,467,473,476],hafskjold:6,half:[1,3,6,8,16,17,39,41,58,59,167,190,202,211,217,236,252,320,325,329,359,363,366,369,377,387,426,428,458,460,461,468,479],halfwai:[41,190,191],halsei:391,halt:[41,191,211,232,333,475],halv:190,ham:[38,56],hamak:[325,329,377,424],hamilton:70,hamiltonian:[230,252,253,312,387,467],hammond:[348,349],han:385,hand:[3,6,19,54,142,165,183,187,190,239,249,351,379,387,458,461,468,471],handl:[3,9,16,190,216,286,363,366,387,408,423,447,456,472],hang:[3,12,455,456],happen:[3,6,8,12,15,18,61,116,169,191,201,204,359,363,456,459,466],happi:8,haptic:233,hara:443,hard:[1,242,286,292,293,384,461],harden:[9,431],harder:[325,329,479],hardi:[200,237,348,349,479],hardwar:[1,12,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,109,112,143,152,171,172,174,175,176,177,179,180,182,183,185,197,210,217,224,227,231,236,252,254,255,256,257,258,259,267,269,270,272,285,293,295,296,311,313,324,328,334,336,337,338,339,342,344,348,349,363,364,365,367,370,371,372,373,374,375,377,378,379,382,383,385,386,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,411,415,416,417,419,424,425,431,440,441,442,443,444,446,447,449,450,451,471],hardwir:[3,17,326],hardy2:349,harm:366,harmon:[],harmonic_fix_wal:409,harpertown:18,harrison:365,hart:308,hartre:[366,385,387,483],hasan:9,hash:[39,458],hassl:292,hat:[6,10,251],have:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,42,43,45,46,47,48,49,51,53,54,56,57,59,63,64,65,66,67,69,70,71,72,73,75,77,81,86,90,91,93,103,104,105,106,109,112,113,114,115,116,130,140,141,142,143,144,145,146,148,152,154,157,158,160,161,162,163,165,166,167,168,169,171,172,174,175,176,177,179,180,182,183,185,187,188,189,190,191,192,197,199,201,202,203,204,207,208,209,210,211,212,213,214,215,217,218,223,224,225,227,228,229,230,231,232,233,234,236,237,238,239,242,247,249,250,252,254,255,256,257,258,259,264,267,269,270,271,272,274,276,278,279,280,282,283,284,285,288,291,293,295,296,302,304,308,309,311,312,313,314,315,319,320,321,322,324,325,326,327,328,329,330,331,332,333,334,336,337,338,339,340,342,344,348,349,351,354,355,356,357,358,359,360,363,364,365,366,367,369,370,371,372,373,374,375,377,378,379,382,383,384,385,386,388,389,390,391,392,393,394,395,397,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,415,416,417,419,420,422,423,424,425,429,431,440,441,442,443,444,446,447,449,450,451,452,453,455,456,458,459,460,461,462,463,464,465,466,467,468,470,472,473,475,476,477,479,483,484,485,486,487,488],haven:456,hayoun:288,hayr:236,hbcut:422,hbnewflag:422,hbond:[],hbond_cutoff:423,hcp:[64,67,73,351,410],hdf5:[9,189],he1:164,head:[6,21,172,334,389,393,422,423,473],header:[3,6,7,8,12,166,188,190,191,192,203,204,206,207,208,209,250,283,290,294,320,357,364,369,385,455,458,468,475],heal:467,heat:[],heatconduct:[],heavi:308,heavili:[41,211],heavisid:320,hecht:308,heenen:9,height:[190,218,279,358,389],heisenberg:9,held:[6,71,308,358,391],helic:177,helium:367,helix:[],hello:456,help:[3,8,12,14,15,16,17,18,19,188,215,217,250,346,369,442,444,486],henc:[1,3,13,20,21,26,32,35,36,70,71,108,145,147,155,172,203,252,286,308,324,325,329,331,334,336,339,342,349,379,389,407,420,460],henderson:53,hendrik:9,henin:[9,216],henkelman1:[251,358],henkelman2:[251,358],henkelman:[251,355,358],here:[1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,22,37,41,44,55,63,68,69,70,71,118,145,163,164,173,176,184,188,190,191,194,203,211,214,217,228,229,237,239,274,283,286,288,294,320,325,328,330,331,333,335,343,347,356,358,362,363,365,366,369,376,388,390,393,394,398,420,424,427,429,439,441,451,456,463,479,484],herist:321,herrmann:308,hertizian:326,hertz:[],hertzian:[6,326,391,439],hertzsch:391,hess:348,hessian:[5,355],heterogen:105,heurist:[321,459],hex:[3,165,351],hexagon:[67,410],hey:[110,141],hf4:164,hfo:378,hftn:[355,356,358],hg1:164,hg2:164,hgrid:308,hibb:276,hidden:[17,456],hienergi:331,hierarch:[7,467],hierarchi:[349,373,374,399,400,403,413,467],higdon:[9,408,409],high:[1,3,6,7,9,12,19,41,185,188,190,211,215,222,237,250,316,320,323,349,355,356,363,369,387,390,424,441,451,455,467,472,479],higher:[1,14,140,168,191,203,209,212,213,218,234,279,288,315,328,330,356,387,395,484],highest:[218,333,357,358,484],highli:[3,6,7,9,165,190,217,236,252,264,283,293,354,356,387,453,472],highlight:[6,7,10,13],hight:389,hilger:[348,349],hill:276,hill_height:13,him:9,hint:12,histo:[],histogram:[1,6,12,63,116,163,194,204,206,209],histor:388,histori:[],hit:[3,308,327],hmaktulga:[7,9],ho3:164,hoc:342,hocknei:[348,349],hofl:189,hoh:[6,379,399,403],hold:[6,33,59,71,178,203,217,244,277,292,293,305,356,358,391,407,450,469],holdem:292,holder2:349,holder:[348,349],hole:305,holian:[256,401],holm:[274,349],holonom:319,home:[11,12,192],homebrew:12,homepag:[190,233],homogen:[270,414],hone:276,honeydew:191,honor:192,hook:[],hookean:391,hoomd:192,hoover:[6,7,8,155,194,221,236,237,252,253,254,255,256,257,258,269,270,271,272,276,280,288,293,311,312,313,318,383,479],hop:[214,358,369],hope:[5,13,17,41,42,211,466],hopefulli:[8,356],horizon:419,horn:6,host:[3,12,16,17,216,363],hot:[6,232,253],hotpink:191,hottest:316,hour:12,hourglass:[2,9,122],hove:410,how:[],howev:[1,2,3,6,7,9,11,12,15,16,17,36,39,41,71,88,91,104,118,140,164,185,188,190,191,204,205,209,211,214,215,218,221,228,229,230,235,236,237,238,239,242,252,274,276,279,282,283,288,293,294,308,309,311,312,315,316,320,321,322,323,324,349,351,353,354,358,363,375,377,385,386,391,394,410,418,420,429,440,441,444,453,455,456,459,466,472,475,476,479,484,485],howto:[6,63,71,143,144,146,148,151,152,153,154,155,157,158,194,236,237,252,280,311,312,313,379,393,399,403,485],hoyt:200,hpc:[1,15],hsw:17,htm:385,html:[0,4,8,11,12,15,142,235,389,409,467,468],htmldoc:0,htst:472,http:[0,6,7,9,11,13,14,15,216,230,233,235,364,385,408,421,422,423],htype:[379,399,403,407],hubbard:380,huge:[12,167,264,308,458,463,475],huggin:[7,370,372,439],hugh:200,hugoniostat:[4,194,256],hugoniot:[250,256,283],hull:163,hummer:348,hundr:[7,14],hura:6,hwloc:[12,17],hybrid:[],hydrat:389,hydrocarbon:[365,378,387],hydrodyanm:40,hydrodynam:[7,9,40,99,101,239,241,242,243,371,408,409,427,429,439,468],hydrogen:[3,6,7,225,288,365,369,379,387,393,399,403,407,422,423,439,458,467,479],hydrostat:[3,9,215,252,256,280,293],hynninen:[380,389],hyoungki:412,hyper:276,hyperbol:380,hyperspher:140,hyperthread:[16,17],i_0:320,i_1:420,i_csid:6,i_flag1:282,i_mpi_pin_domain:16,i_myflag1:282,i_myflag2:282,i_n:420,i_nam:[113,188,282,310,468],ialloi:410,iatom1:115,iatom2:115,iatom3:115,iatom4:115,ibar:410,ibead:276,ibm:[188,348],icc:[10,12],icm:[9,233],ico:64,icosohedr:73,ictp:13,id1:[293,358,398,458,461],id2:[293,297,305,358,398,458,461],id_press:[215,250,252,254,255,256,257,258,280],id_temp:[214,215,250,252,254,255,256,257,258,269,270,272,280,311,312,313],idea:[1,3,6,11,12,41,141,190,191,211,234,274,297,308,316,349,414,466,479],ideal:[6,9,12,40,73,116,122,221,228,274,351,408,433,479],idealga:[],ident:[1,3,9,12,39,40,71,140,188,191,206,215,216,229,230,236,237,249,252,274,276,280,288,290,293,349,357,358,363,370,372,379,381,385,399,401,407,416,422,423,430,447,451,453,456,459,472,483,484,485,487],identi:363,identif:67,identifi:[1,3,6,12,38,40,56,70,163,165,185,290,308,331,393,398,410,441,453,455,458,461,472,473,475,477],idl:[18,472],idn:[293,358],idr:484,ielement:410,ieni:13,ifdef:[8,12],iff:237,iffp:456,ignor:[3,6,11,16,41,61,71,83,87,98,107,119,169,188,190,191,195,196,204,205,206,207,209,211,215,216,217,218,228,231,235,236,249,252,256,261,266,280,281,282,292,293,294,308,311,312,313,319,320,322,325,329,330,331,340,350,353,357,358,363,364,375,376,377,385,386,388,390,397,398,410,416,420,424,440,441,442,443,444,446,447,453,455,458,459,463,468,470,472,475,484],ihl:308,iii:[6,9,25,284,286,344,393,470],ijj:447,ijk:[338,342,344,369,420,447,455],ijl:342,ikeshoji:6,ikj:447,ill:[145,155,203,284],illeg:3,illinoi:[233,348,349,408],illog:456,illustr:[1,6,8,11,12,16,17,18,19,274,276,358,394,456,484],ilmenau:[7,9,14],ilya:[7,9],imag:[],image2pip:190,imageint:3,imagemagick:[4,190],imagin:[305,319,369,386,394,395,411,412,416,420,440,442,443,444,447,470],imaginari:[6,228,276,458],imbal:[1,12,41,211,363,477],imbalanc:[41,211],imbu:308,imd:[],img:190,immedi:[0,2,3,8,12,165,212,213,218,296,304,309,310,327,455,456,458,460,472,484,487],immens:3,immers:[239,293],impact:[1,4,6,8,222,315,477],impart:[3,6,231,308,330],impei:[6,399],implement:[1,3,6,8,9,12,17,18,27,78,87,118,147,153,164,165,173,174,184,203,216,220,230,233,236,239,241,242,243,250,270,273,275,276,282,283,284,286,287,288,296,297,308,315,320,324,342,347,348,349,356,358,363,364,366,369,378,379,381,383,385,386,387,394,399,403,407,410,419,422,423,424,442,444,455,456,467,472,479,484,486],impli:[3,6,40,59,87,141,190,195,196,197,217,223,236,292,311,313,314,348,351,376,456],implicit:[],implicitli:8,implict:380,imporop:357,importannt:249,important:318,important_not:59,impos:[2,6,71,112,154,187,194,197,198,210,223,224,226,231,234,243,244,251,264,274,277,295,302,305,307,308,315,316,317,318,323,324,325,328,329,330,356,358,360,452,466],imposs:1,improp:[],improper_coeff:[],improper_styl:[],impropercoeff:3,impropertyp:213,imprort:97,improt:[195,196],improv:[0,1,9,16,39,41,191,211,252,275,363,393,399,414,423,440,443],in3:164,inaccur:[1,3,6,168,250,348],inaccuraci:329,inact:393,inappropri:165,incid:[118,164,218],includ:[],includig:[333,347],inclus:[],incom:233,incompat:[3,11,395],incomplet:[3,11,458],incompress:[253,387],inconsist:[3,169,214,459],inconveni:351,incorpor:[283,369,380],incorrect:[3,148,236,410],incorrectli:[3,351,391,484],increas:[1,3,6,10,18,38,56,57,59,109,118,141,185,188,190,191,205,212,213,214,217,228,236,280,291,292,293,316,319,323,348,349,358,363,387,390,423,441,443,456,467,472,484],increasingli:387,increment:[3,11,128,197,198,210,211,218,223,225,252,297,298,331,347,362,397,453,456,470,472,484],incur:[14,17,203,207,208,225,320,455],inde:148,indefatig:7,indefinit:317,indent:[],independ:[4,6,9,11,12,16,17,41,59,63,91,117,119,151,165,187,194,202,203,204,206,207,208,209,211,214,215,216,217,218,229,231,236,237,239,242,252,275,280,284,288,293,294,297,307,318,320,351,391,453,456,475,485],indetermin:[188,191],index:[0,3,6,8,11,12,38,39,40,56,68,69,117,119,185,188,191,202,204,233,235,276,294,320,331,332,333,353,362,414,422,423,441,448,458,473,484],indianr:191,indigo:191,indirectli:[6,484],indistinguish:236,indium:430,individu:[],induc:[],industri:7,ineffici:[3,6,40,64,67,70,72,73,77,140,153,190,217,252,275,348,360],inelig:201,inerti:409,inertia:[],inexpens:[230,467],inf:[2,3,12,323,461],infer:[3,94,96,97,159,197,198,211,212,213,223,233,278,308,316,323,351,376,388,458,470,476],infil:[3,13,293,455],infin:[3,356,463,476],infininti:190,infinit:[3,218,227,234,236,239,275,308,320,326,327,349,351,387,462,483],infinitesim:6,inflect:[380,401],influenc:[3,9,41,80,147,249,279,348,349,414,442,443,444],inform:[0,1,2,3,6,7,8,9,11,12,13,15,17,39,41,42,59,61,62,63,68,88,115,117,118,164,165,171,188,189,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,251,259,260,261,262,263,264,265,266,267,268,273,274,275,277,278,279,280,281,282,284,285,286,287,288,289,290,291,292,293,294,295,296,298,305,306,308,309,311,312,313,314,315,316,317,319,322,323,324,325,327,328,329,330,332,346,348,349,352,355,356,357,358,359,361,363,364,365,366,367,368,369,370,371,372,373,374,375,377,378,379,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,415,417,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,446,447,449,450,451,455,456,458,459,460,462,463,465,470,472,473,475,477,484,486,487,488],infrequ:[6,383,453,472],infti:[380,408,409],ingtegr:369,inher:[348,356,414],inherit:[6,445],inhomogen:[18,320,414],inidividu:356,init:[3,8,291],init_fil:320,init_list:8,init_on:8,init_styl:8,initi:[2,3,4,6,7,8,11,12,13,38,39,40,41,56,57,59,62,71,80,81,86,87,103,104,130,161,166,167,185,187,188,190,191,192,195,196,199,200,204,211,213,214,215,217,224,228,229,233,234,235,236,237,239,244,248,249,250,251,252,256,264,275,276,277,282,283,288,291,292,293,295,307,308,310,315,317,318,319,320,321,322,325,326,327,328,330,331,333,348,352,355,356,358,365,366,382,383,384,421,422,423,441,453,455,456,458,460,461,463,465,466,468,472,473,476,479,484,485,486,488],initial_integr:8,initial_integrate_respa:8,initialis:421,initialt:320,inlclud:11,inlcud:484,inlin:456,inner2:[374,392],inner:[3,8,16,188,234,333,347,354,355,356,358,362,364,365,366,367,368,369,370,371,372,373,374,375,377,378,379,380,382,383,384,385,386,387,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,417,419,421,422,423,424,425,430,431,432,433,434,435,436,437,438,440,441,442,443,444,446,447,448,449,450,451,467,472,484],inner_distance_cutoff:393,innergroup:242,innermost:[38,56,361,441,467],innernod:242,innner:405,inordin:321,inorgan:[6,447],inp:[216,333,430,447],input1:[65,68,69,79,92,108,113,114,115,117,119,310],input2:[65,68,69,79,92,108,113,114,115,117,119,310],input:[],input_doubl:3,inquir:298,insensit:12,insert:[3,5,7,8,12,59,165,194,218,228,234,279,348,430,438,456,462,479],insid:[2,3,6,8,11,71,129,135,165,188,191,202,207,208,218,219,225,228,234,239,242,279,293,308,325,327,328,329,330,331,346,351,401,456,457,458,460,461,468,472,484],insight:[6,13],instabl:[239,382,429],instal:[],instanc:[6,11,195,216,230,327,389,394,414,420,456,479],instantan:[6,63,214,215,229,230,252,256,275,280,283,288,290,293,315,464,476],instanti:[6,11,12,200,394,455],instead:[1,3,6,8,9,11,12,13,17,18,40,41,59,61,63,70,71,90,117,144,147,169,185,188,196,203,206,207,208,209,211,215,216,228,236,239,242,243,275,281,291,293,310,328,346,348,349,352,359,363,372,373,385,398,400,407,410,453,461,465,472,474,479,484],institut:[9,233,278],instruct:[3,8,11,13,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,109,112,143,152,163,171,172,174,175,176,177,179,180,182,183,185,186,190,197,210,217,224,227,231,236,252,254,255,256,257,258,259,267,269,270,272,285,293,295,296,311,313,324,328,334,336,337,338,339,342,344,349,363,364,365,367,370,371,372,373,374,375,377,378,379,382,383,385,386,388,389,390,391,392,393,397,399,400,401,402,403,404,405,406,407,408,411,415,416,417,419,424,425,431,440,441,442,443,444,446,449,450,451,467,479],insuffici:[3,6,12],insult:252,insur:[3,6,11,12,17,39,40,61,73,102,104,165,166,185,188,190,191,197,212,213,218,223,224,225,226,228,231,236,248,281,282,291,293,308,320,325,329,330,331,333,347,357,359,363,377,390,394,418,424,441,455,456,458,459,463,466,467,475,476,484,485],int_max:3,integ:[3,6,8,11,12,39,40,42,64,68,70,71,113,115,117,119,140,163,165,168,169,171,175,176,180,185,187,188,190,191,201,203,207,208,212,213,214,218,220,226,228,229,230,233,236,237,238,239,275,278,279,282,283,288,293,308,310,312,315,319,320,338,348,351,371,383,384,397,410,422,423,427,429,430,453,455,456,457,458,466,467,468,472,475,484,485],integr:[],integrate_ulsph:299,intel:[],intel_cpu:[12,16],intel_phi:[12,16],intend:[3,6,8,12,13,36,205,229,421,458],intens:[1,3,6,9,63,66,74,75,86,89,90,91,93,103,104,105,106,112,114,116,117,118,119,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,160,161,162,164,194,203,204,206,207,208,209,211,212,213,214,222,225,232,242,250,252,256,290,293,294,308,316,320,322,323,475,476],intepol:484,inter:[14,18,42,61,62,145,168,169,188,214,236,238,251,285,293,348,358,369,468,479,484,486,488],interact:[1,3,6,7,8,9,10,11,12,14,15,16,17,22,29,33,37,39,42,44,50,54,55,57,61,63,65,69,77,79,87,88,92,107,108,110,112,115,116,122,123,124,125,127,128,129,130,131,132,133,135,136,137,138,140,141,142,144,158,159,163,166,167,168,169,170,171,173,177,178,184,188,194,195,196,212,213,214,227,228,233,234,236,238,242,264,274,276,278,284,286,292,293,299,300,308,309,315,320,324,325,326,329,330,335,336,337,339,343,348,349,356,357,358,359,360,361,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,417,419,420,423,424,425,427,429,430,431,438,439,440,442,443,444,445,446,447,448,449,450,451,453,456,458,460,462,463,467,468,470,475,476,479,486],interatom:[3,4,7,165,188,251,317,318,364,369,385,387,395,410,443,484],intercept:118,interchang:6,interconnect:18,interconvert:387,intereract:39,interesect:329,interest:[1,5,7,8,9,11,13,71,164,276,315,318,349,386,409,422,423,456,484],interf:363,interfac:[],interfer:[12,252,365],interg:[6,479],intergr:[467,471],interi:409,interior:[3,6,41,329,461],interlac:410,interleav:[6,165,466],intermedi:[6,12,59,190,251,274,342,358,456,457,466,470],intermix:453,intermolecular:365,intern:[0,2,3,5,6,9,11,16,20,21,24,28,32,35,36,39,40,42,63,87,99,101,118,141,145,147,164,172,185,190,191,194,195,196,200,213,217,221,233,245,246,250,252,256,275,293,297,334,336,339,342,346,356,357,432,433,441,456,458,460,463,472,475,476,483,484,485,486],internal_element_set:200,internal_quadratur:200,internet:235,interpenetr:410,interpentr:[433,434,436],interpol:[6,15,38,56,100,185,190,191,200,239,274,348,349,358,369,414,423,435,441,442],interpret:[2,6,11,190,206,391,431,453,456,472,484],interrupt:283,intersect:[3,6,118,191,329,331,461],intersert:329,interspers:356,interstiti:163,intertia:[3,93],interv:[3,6,91,189,204,236,283,288,289,300,435,453,472,484],intestieti:118,intial:[6,363,365],intiial:[41,463],intiti:[3,307],intra:293,intra_energi:228,intramolecular:[29,228],introduc:[6,9,190,252,283,288,293,342,348,364,379,387,399,403,407,440,472,484],introduct:[],intsal:[],intuit:351,inv:[118,164,294],invalid:[3,12,71,89,168,264,358,408,409,460],invari:[133,138,140],invent:296,invers:[],invert:[1,6,169,275],invis:329,invoc:[163,214,363,427,429,456],invok:[1,3,6,7,8,11,12,13,14,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,41,43,45,46,47,48,49,51,53,54,56,59,63,66,71,74,75,81,87,88,89,90,93,103,104,106,109,110,111,112,117,143,152,159,160,163,165,166,168,169,171,172,174,175,176,177,179,180,182,183,185,188,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,217,218,219,220,222,223,224,225,226,227,228,229,231,232,233,234,236,237,238,239,240,241,242,243,244,245,246,248,249,251,252,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,284,285,286,287,288,289,290,291,293,294,295,296,297,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,334,336,337,338,339,342,344,347,348,349,350,351,356,358,363,364,365,367,370,371,372,373,374,375,377,378,379,382,383,385,386,388,389,390,391,392,393,394,395,397,399,400,401,402,403,404,405,406,407,408,409,411,414,415,416,417,419,424,425,427,429,430,431,440,441,442,443,444,446,447,448,449,450,451,452,455,456,457,459,461,463,466,467,469,470,472,475,476,479,484,485],invokd:3,involv:[3,6,7,8,12,63,108,115,116,117,145,169,194,201,212,228,239,278,281,286,308,348,355,356,358,368,384,390,440,442,444,454,455,461,463,467,472],ioff:[357,458],ion:[6,7,147,273,305,320,349,369,380,388,389,410,439,444,451,458,479],ionic:[6,9,370,372,380,387,388,417,479],ioniz:[9,378,387],iparam:[3,213],ipi:[],ipp:[],ir3:164,ir4:164,irregular:[6,41,58,211,215,217,252,293],irrelev:416,irrespect:[408,409],irrevers:221,is_act:484,is_avail:484,is_defin:484,isbn:450,isel:[348,349],isenthalp:[252,253,254,255],ismail:[348,349,373,403],isn:[3,8,11,12,232],iso:[3,215,221,237,252,253,254,255,256,257,258,280,288,293,479],isobar:[252,253,257,258],isodem:387,isol:[3,168,331],isomorph:276,isotherm:[228,252,253,257,258,280],isotrop:[6,236,280,348,349,371,390,408,409],isovolum:294,isralewitz:297,issu:[1,3,6,9,11,12,13,14,15,17,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,59,71,73,81,103,109,112,143,152,171,172,174,175,176,177,179,180,182,183,185,190,197,200,210,214,215,217,218,223,224,227,228,231,236,250,252,254,255,256,257,258,259,267,269,270,272,276,280,282,285,293,295,296,307,311,312,313,318,324,328,330,333,334,336,337,338,339,342,344,349,357,358,361,364,365,367,370,371,372,373,374,375,377,378,379,382,383,385,386,388,389,390,391,392,393,397,399,400,401,402,403,404,405,406,407,408,411,415,416,417,419,424,425,431,438,440,441,442,443,444,446,447,449,450,451,458,460,467,470,475,476,484,485],ital:[422,423],itali:13,item:[6,7,8,41,188,191,211],iter:[3,6,12,39,41,63,189,197,198,210,211,215,221,223,226,234,275,284,285,293,296,315,331,333,347,354,355,356,358,362,453,463,467,472,476,484],ith:[71,117,119,202,203,204,205,206,207,208,209,310,322,476,484],itself:[2,3,4,6,7,8,9,11,12,13,18,42,59,91,107,156,188,189,190,191,192,204,205,216,221,237,247,251,287,293,320,331,333,357,358,379,388,390,394,395,441,456,462,465,466,470,484,488],ityp:[3,115,116,165,199,213,286,448],itype1:116,itype2:116,itypen:116,ivector:8,ivori:191,ixcm:293,ixi:[42,93,293,357,484],ixx:[42,93,293,357,484],ixz:[42,93,293,357,484],iycm:293,iyi:[42,93,293,357,484],iyz:[42,93,293,357,484],izcm:293,izrailev:297,izumi:443,izz:[42,93,293,357,484],j0jt:91,j20:204,j_m:140,jac:[6,171,470],jackson:413,jacobi:3,jacobsen:355,jagreat:13,jame:[9,19],janssen:274,januari:410,jaramillo:[7,9,13,387],jarzynski:297,jatempl:9,jcc:9,jcp:325,jec:13,jeff:13,jello:252,jensen:[236,348],jeremi:[9,412],jerom:9,jewett:13,jiang:[237,479],jiao:[9,13],jiht:[7,9],jik:369,jim:7,jku:7,jmake:12,jmm:140,joannopoulo:250,job:[12,60,296,466],jochim:[252,253],john:[7,13,189],johnson:[9,13],join:[6,461],joint:[3,278,393],jon:[9,70],jonathan:9,jone:[1,3,6,7,9,10,12,13,45,46,64,87,107,110,194,200,280,308,325,329,349,351,356,365,368,372,373,374,375,377,382,390,392,393,394,397,398,399,400,401,403,404,406,407,413,414,420,424,425,434,439,446,470,479],jonsson:[73,251,355,358],jorgensen:[6,182,379,399,403],joul:483,journal:[159,177,200,286,349,385,422,423,433,434,436],jparam:[3,213],jpeg:[3,12,190],jpeglib:12,jpg:[4,8,12,188,190,191,487],jpg_inc:12,jpg_lib:12,jpg_path:12,jpl:[7,9],jth:484,jtype1:116,jtype2:116,jtype:[3,116,213,448],jtypen:116,judg:472,judici:6,julien:9,jump:[],june:192,just:[3,6,8,11,12,13,17,19,22,29,42,44,59,61,91,107,110,116,141,144,158,173,188,203,207,208,217,221,225,242,249,280,282,293,315,320,331,333,335,357,358,363,365,368,376,394,420,446,456,460,462,463,465,466,477,479,484,487,488],justo:386,jusufi:[380,389],jut:329,jzimmer:9,k11:91,k22:91,k33:91,k_b:237,k_d:479,k_sigma:369,k_ub:20,kadiri:67,kalia:447,kamberaj:293,kappa:[6,91,316,379,399,449,450],kappa_:320,karplu:87,karttunen:239,kate:[],kayser:380,kbit:191,kboltz:308,kbp:191,kbt:288,kcal2j:91,kcal:[233,467,479,483],kde:13,ke_eta_dot:252,ke_etap_dot:252,ke_omega_dot:252,keblinski:379,kecom:145,keef:118,keep:[3,7,12,59,71,183,207,213,217,234,275,291,318,323,348,356,379,407,430,453,458,464,466,472,476,484],keflag:3,kei:[6,17,59,308,447,472],keir:13,kelchner:70,kelkar:323,kelvin:483,kemper:[285,378],kepler30:17,kepler32:17,kepler35:17,kepler37:17,kepler:[1,12,14,15,17,363],kept:[6,194,256,317,318,479],kernel:[7,13,17,40,100,129,135,200,229,230,300,432,433,434,435,436,437,468],kernel_radiu:458,keword:190,keyboard:12,keyword:[],keywrod:387,kforc:479,khaki:191,khersonskii:140,kick:[197,198,199,223,327],kilogram:483,kim:[],kimviri:[3,395],kind:[1,2,3,6,7,8,9,11,12,17,39,40,41,42,61,62,63,73,117,119,145,188,194,201,203,204,206,211,214,216,220,228,231,249,293,296,308,315,330,358,360,362,369,387,422,423,448,453,457,458,463,464,471,472,479,484],kinemat:[9,408,409],kinet:[3,6,8,9,63,82,83,84,85,87,91,94,95,96,97,98,112,141,143,144,145,146,147,148,150,151,152,153,154,155,157,158,194,201,203,215,221,228,232,236,248,250,252,253,254,255,256,257,258,280,283,308,316,323,324,356,387,453,472,476,479],kiss:12,kjl:342,klahn:319,klapp:348,klein:[6,9,200,216,252,253,271,293,399,425],kloss:7,kmax:[3,118,294,348],knc:17,knock:320,know:[3,11,12,41,63,107,116,194,221,235,237,264,308,356,386,395,445,456,459,462,467,479],knowledg:[4,8,190,395],known:[3,12,140,190,275,284,293,317,455,472,485],kohlmey:[7,9,13,18,348,349],kokko:[],kokkos_arch:17,kokkos_cuda:[12,17],kokkos_cuda_opt:17,kokkos_debug:17,kokkos_devic:17,kokkos_omp:[12,17],kokkos_pg:17,kokkos_phi:[12,17],kokkos_use_tpl:17,kolafa:349,kollman:[6,171,470],kondor:421,kone:[317,318],kong2011:275,kong:[9,13,275],konglt:9,koning00a:317,koning00b:317,koning96:[317,318],koning97:318,koning99:317,kooser:13,koskinen:355,kosztin:297,krau:13,kremer:[45,46,470],kress:[411,412],kspace:[],kspace_modifi:[],kspace_styl:[],kspce:12,kspring:251,kstart:292,kstop:292,kth:[229,276],kub:20,kubo:[6,91,316],kumagai:443,kumar:[9,408,409],kuronen:420,kurt:278,l12:410,l_box:387,l_skin:320,la3:164,lab:[5,7,12,111,419],label:[],laboratori:[0,250,283],lack:[3,250,387],lackmann:369,ladd:[270,318],lafitt:413,lag:320,lagrang:[130,131],lagrangian:[6,122,123,124,125,127,128,129,130,131,132,133,135,136,137,138,200,250,283,284,299,300,427,429,479],lagrangian_posit:[250,283],lagrangian_spe:[250,283],lai:452,lambda1:[442,443,444,447],lambda2:[442,443,444],lambda3:[442,444],lambda4:447,lambda:[87,111,118,159,164,239,294,317,318,320,364,386,407,440],lambda_fin:317,lambda_initi:317,lamda:[3,53,308],laminar:437,lamm:6,lammps2pdb:[6,13],lammps_clos:6,lammps_command:6,lammps_extract_atom:6,lammps_extract_comput:6,lammps_extract_fix:6,lammps_extract_glob:6,lammps_extract_vari:6,lammps_fil:6,lammps_gather_atom:3,lammps_get_coord:6,lammps_get_natom:6,lammps_n:[6,12],lammps_open:6,lammps_potenti:[376,378,469],lammps_put_coord:6,lammps_quest:[6,226],lammps_scatter_atom:3,lammps_set_vari:6,lammps_sppark:6,lammps_vers:6,lammpsplot:13,lammpspotenti:376,lammpstrj:[459,463,479],lammpsviri:[3,395],lamoureux:[6,221,445,479],lane:1,lang:479,langevin:[],langevin_drud:[150,220],languag:[6,11,12,17,456,484],lanl:9,lapack:12,laps:321,laptop:7,larg:[0,1,3,5,6,7,8,9,10,12,13,14,16,18,39,40,41,58,59,70,71,109,116,141,145,148,153,165,166,167,177,185,187,188,190,191,203,207,208,211,214,215,217,218,222,228,239,252,264,270,275,278,279,283,288,290,291,292,293,296,305,308,316,320,321,323,325,329,342,348,349,354,356,359,363,377,383,387,390,391,398,414,418,424,441,453,456,458,460,461,465,467,472,475,477,479,485,488],larger:[1,2,3,6,11,12,13,39,41,56,59,70,71,116,165,167,190,204,206,209,218,232,239,252,270,271,279,284,288,292,293,294,304,308,315,320,324,325,326,329,348,349,354,355,356,358,359,360,363,369,377,379,380,387,391,399,403,409,414,418,438,439,446,458,462,463,466,467,472,484],largest:[3,6,12,39,71,163,165,222,348,356,360,438,441,458,460,466,467,478,484],laroch:288,laser:320,last:[1,2,3,5,6,11,12,15,38,56,59,61,71,110,117,141,163,185,188,190,191,192,193,203,204,206,207,208,209,211,222,251,291,294,305,308,333,346,356,357,358,359,363,367,368,369,370,377,378,383,385,389,390,392,393,397,400,402,404,405,406,409,413,415,424,431,438,441,445,446,449,450,453,454,456,458,459,463,465,466,470,472,473,476,477,484],lat:410,late:5,latenc:[10,233],later:[6,9,11,12,16,17,40,59,71,104,167,169,204,218,256,270,278,297,315,331,333,348,356,357,362,363,365,369,456,458,460,462,472,475,484,486],latest:[7,203,204,205,206,207,208,209,294,460],latex:8,latgen:275,latitud:140,lattc:410,latter:[2,6,11,12,14,15,16,17,41,42,87,144,191,195,196,202,203,207,208,211,215,234,243,252,254,255,257,258,278,280,282,284,286,293,308,324,329,347,357,369,371,372,373,374,375,382,399,403,407,417,425,445,453,455,456,461,464,475,484,487],lattic:[],launch:[1,3,6,11,12,17,18,363,455,456],laupretr:342,lavend:191,lavenderblush:191,lavgevin:217,law:[6,250,361,427,429],lawngreen:191,layer:[6,9,71,194,207,316,320,323],layout:[1,3,17,167,346,455,458,467],lb_fluid:239,lbl:[7,9,163],lbnl:9,lbtype:239,lcbop:[],ld_library_path:[11,12],ldfftw:12,ldrd:7,lead:[2,3,6,12,22,25,39,41,44,59,61,77,87,116,159,163,169,173,191,195,196,206,211,218,230,239,256,283,293,296,308,315,316,323,335,342,348,353,358,363,376,379,399,403,405,429,452,458,468,479,484,485],least:[3,6,12,18,71,118,164,189,201,207,230,278,282,324,359,363,394,441,446,456,484],leav:[3,7,11,12,17,21,41,57,141,155,172,211,215,218,252,254,255,257,258,280,293,296,334,414,458,462,470],lechman:308,lectur:297,led:[3,5],lee2:410,lee:[200,410],left:[6,11,12,41,107,142,184,190,191,214,234,273,308,331,333,351,445,458,460,465,484,488],leftmost:[41,211],legaci:12,legal:7,lehoucq:419,leimkuhl:328,leiu:383,lemonchiffon:191,len:468,lenart:[380,389],length:[3,6,8,11,12,18,21,38,39,40,41,44,53,54,55,56,58,59,61,65,68,69,71,74,79,80,82,87,88,89,90,91,92,103,105,107,108,112,114,115,117,118,119,128,130,143,144,145,146,147,148,149,150,152,153,154,155,156,157,158,161,163,164,167,172,185,188,190,191,194,201,205,206,208,209,211,212,213,214,215,217,228,231,239,250,251,252,253,256,264,274,280,290,293,294,296,305,308,315,319,320,322,325,329,349,351,354,356,358,359,361,366,369,370,372,379,380,384,387,389,393,397,399,410,414,422,423,432,441,442,449,450,458,461,466,468,475,476,479,484],lengthi:228,lennard:[1,3,6,7,9,10,12,45,46,87,107,110,194,280,308,325,329,349,351,356,365,368,372,373,374,375,377,382,390,392,393,394,397,398,399,400,401,403,404,406,407,413,414,424,425,434,439,446,470,479],lenoski:[411,412],less:[1,3,6,13,14,15,16,17,18,38,41,56,57,58,59,76,108,115,116,144,158,185,191,203,206,207,208,209,211,213,214,215,217,218,225,234,250,252,274,286,288,294,308,327,328,330,349,351,356,360,363,369,374,390,391,408,409,414,424,440,441,444,450,458,484,485],let:[1,11,12,38,56,148,176,185,204,296,308,326,363,377,441,467,471,479,486],lett:[140,153,230,237,239,250,288,297,317,318,355,369,385,387,390,407,430,479],letter:[2,9,12,41,57,59,191,211,220,221,237,276,333,362,421],leuven:9,level:[2,3,8,11,12,14,17,188,190,195,196,205,233,249,251,252,333,346,349,362,369,373,374,399,400,403,413,422,423,455,467,472,477,484],lever:438,levin:391,lewi:298,lexicon:7,lgr_po:[250,283],lgr_vel:[250,283],lgvdw:423,li1:164,liang:378,lib:[1,3,9,11,12,14,15,17,287,363,378,395,456,459],libatom:[9,421],libcolvar:12,libdir:11,libfftw3:12,libgpu:15,libjpeg:12,liblammp:[11,12],liblammps_foo:[11,12],liblammps_g:[11,12],liblammpscuda:14,libmpi:11,libmpi_stub:12,libmpich:12,libpackag:12,libpng:12,librari:[],librt:17,licens:[0,7,8,12,190],lie:[6,294],lieu:348,life:7,lifo:8,ligand:305,liggght:7,lightblu:191,lightcor:191,lightcyan:191,lightest:315,lightgoldenrodyellow:191,lightgreen:191,lightgrei:191,lightli:305,lightpink:191,lightsalmon:191,lightseagreen:191,lightskyblu:191,lightslategrai:191,lightsteelblu:191,lightweight:308,lightyellow:191,like:[3,4,6,7,8,9,11,12,14,16,17,18,39,42,54,59,149,156,190,192,197,215,216,218,221,223,233,236,237,238,250,252,253,257,258,263,264,269,270,271,272,274,280,282,283,284,288,293,294,308,310,311,312,313,314,315,316,323,324,325,328,329,330,333,348,351,355,358,363,369,377,382,383,387,388,391,393,394,404,405,410,430,441,444,449,450,455,456,458,459,460,461,463,468,473,476,477,479,484,485],likelihood:[118,164,214],likewis:[1,6,10,12,15,16,18,39,41,71,88,115,200,211,212,213,228,236,237,252,253,256,271,288,308,311,312,313,349,358,364,368,369,379,385,388,439,456,458,470,484],likhtman:205,lime:191,limegreen:191,limit:[],limit_eradiu:387,limit_veloc:[299,300],lindahl:348,line:[],linear:[],linearli:[10,117,191,217,275,325,327,328,330,357,358,360,458,484],lineflag:[6,458],lineforc:[],linen:191,linesearch:[8,12,354],ling:[9,13],lingo:[11,395],link:[5,6,7,8,9,11,12,13,14,15,17,22,37,44,55,63,173,184,190,194,213,233,237,278,287,289,297,305,335,343,366,376,410,421,422,423,439,445,456],linker:12,linkflag:[12,16,18],linux:[10,11,12,15,190,192,233],linuxamd64:459,liouvil:252,lip:13,lipid:[4,9,10,13,29,293],lipton:278,liquid:[6,7,9,29,39,40,41,59,87,141,151,163,211,215,217,228,252,280,283,288,315,382,414,417,443,467],lisal:438,lism:9,list:[],listen:[233,235],listfil:398,liter:[458,469],literatur:[6,8,410,440],lithium:387,littl:[1,3,12,64,252,359,453,461],littmark:[410,439,444,451],liu:[393,423],lj1043:[],lj126:[],lj12_4:425,lj12_6:425,lj1d:275,lj6:3,lj93:[],lj96:[],lj9_6:425,lj_flag:365,llnl:[5,7],lmp1:11,lmp2:11,lmp2arc:[],lmp2cfg:[],lmp2vmd:[],lmp:[11,456,479],lmp_auto:12,lmp_cuda:[14,17],lmp_foo:12,lmp_g:[6,11,12,13,17,347],lmp_gpu:15,lmp_ibm:[12,347],lmp_inc:12,lmp_intel_cpu:[],lmp_intel_phi:[],lmp_kokkos_cuda:17,lmp_kokkos_omp:17,lmp_kokkos_phi:17,lmp_linux:[4,6,12],lmp_mac:12,lmp_machin:[1,12,14,15,16,363],lmp_mpi:[12,17,18,19,276],lmp_mvapich:17,lmp_omp:[],lmp_openmpi:17,lmp_opt:[],lmp_win_mpi:12,lmp_win_no:12,lmpptr:[11,456],lmpqst:226,lmpsdata:13,lmptype:[3,12,226],load:[1,3,4,6,7,9,11,12,16,17,18,41,190,192,194,211,233,283,363,378,455,456,477],loadabl:11,loca:191,local:[],localhost:233,localized_lambda:200,localonli:12,localvector:63,locat:[3,6,8,9,11,12,27,61,116,118,163,164,174,185,188,218,219,239,307,318,329,354,376,379,388,389,399,401,403,445,455,458,459,461,468,470],lock:[3,362,484],lockstep:[215,252,280,293],log:[],logarithm:[136,137,484],logfil:[0,3,6,12,281,352,454],logfreq2:484,logfreq:[191,465,474,484],logic:[7,11,12,17,41,165,211,331,333,453,455,456,459,467,472,484],lomdahl:[256,401],london:[13,228,423],lone:[422,423],longer:[1,3,6,8,12,13,54,116,188,191,202,203,204,205,206,207,208,209,212,228,236,274,278,283,293,296,315,325,329,331,354,363,365,391,455,463,467,472,481],longest:[41,211,212,359,446],longitudin:305,look:[1,3,6,8,11,12,18,54,61,188,190,193,376,430,441,479,484],lookup:[3,39,185,414,441],lookup_t:294,loop:[3,4,6,7,11,12,18,39,42,65,68,69,79,88,92,108,115,116,141,190,203,207,208,212,213,222,315,331,333,347,350,356,358,359,361,362,384,453,454,456,462,463,466,467,472,477,478,484,485],loopa:[333,347,362],loopb:[333,347,362],loopvar:484,lopez:[252,253],lorant:284,lorentz:164,lose:[6,58,59,167,215,217,237,252,391,458],loss:[6,483],lossi:190,lossless:190,lost:[3,12,13,57,102,218,291,298,308,414,458,459,460,467,475],lot:[18,297,348],low:[1,3,6,7,12,41,148,163,188,190,211,221,237,270,288,293,316,323,349,423,441,450,472,479],lower:[2,3,6,9,11,12,41,57,59,71,88,142,154,187,190,191,204,205,206,207,208,211,215,221,233,236,237,239,252,283,288,316,323,325,326,331,332,348,351,362,380,410,472,480,482,485],lowercas:190,lowest:[140,333,357,468,472,473,484],ls_:134,lsfftw:12,lsurfac:320,lu3:164,lubric:[],lubricateu:[],lubricuteu:261,lucki:12,luigi:13,lumped_lambda_solv:200,lussetti:316,lustig:[7,13],lybrand:349,lyulin:342,m4v:190,m_c:479,m_d:479,m_eff:[326,391],m_fill:3,m_i:306,m_lambdai:419,m_taubi:419,m_u:239,m_v:239,m_yield_stress:419,mac:[12,14],mac_mpi:12,mach:[9,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,298,299,300,301,304,468],machin:[1,3,4,6,7,9,10,11,12,14,15,16,17,18,19,188,190,233,321,348,354,356,361,363,455,460,465,466,467,485,488],mackai:[9,239,241,242,243],mackerel:[6,20,171,237,374,470,479],maco:190,macro:17,macroparticl:384,macroscop:[7,231,250,419],made:[3,6,11,12,15,16,33,41,42,50,64,166,178,188,190,192,194,195,196,201,211,218,222,233,242,279,287,291,293,318,331,340,359,363,390,391,394,422,424,431,455,460,462,468,471,480,482,485,486],madura:[6,399],magazin:385,magda:325,magenta:191,magic:[3,11],maginn:[159,323],magnitud:[6,70,105,108,113,142,165,187,188,191,218,219,231,232,234,236,297,305,307,308,315,326,349,356,382,391,468],mai:[0,1,2,3,6,7,8,11,12,13,14,15,16,17,18,29,38,39,40,41,56,58,59,61,63,65,68,69,71,79,86,87,88,89,90,92,102,103,105,107,108,109,110,112,113,114,115,117,118,119,140,141,144,145,153,154,158,159,163,164,165,166,167,168,169,184,185,187,188,189,190,191,192,194,195,196,197,199,201,203,204,205,206,207,208,209,210,211,212,213,215,217,218,221,222,223,225,228,229,230,232,233,234,236,237,238,239,240,242,247,248,249,250,252,253,256,264,267,275,276,279,280,281,282,283,285,288,290,291,292,293,294,295,296,297,299,300,302,308,310,311,312,315,316,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,346,347,348,349,351,354,355,356,357,358,359,360,361,363,366,368,369,377,383,387,391,394,395,405,407,409,410,411,412,414,422,423,425,430,438,441,447,451,453,454,455,456,458,459,460,461,462,463,464,465,466,467,468,470,472,475,476,479,484,485,486,488],mail:[3,7,9,12,331],main:[3,6,8,12,233,239,293,317,318,385,445,456,473],mainboard:1,mainli:[363,417],maintain:[8,9,13,39,150,213,217,270,308,321,355,364,385,467,470],major:12,make:[],makefil:[3,7,9,11,12,13,14,15,16,17,18,19,188,349,363,456],makelist:12,maks:391,malloc:[3,12],manag:[5,8,12,188,233,276,310,467],manbi:430,mandadapu:200,mandatori:[8,188,216],manh:369,mani:[1,2,3,4,5,6,7,8,9,12,13,14,15,16,17,18,38,39,41,42,56,61,63,68,71,88,91,102,116,142,145,165,166,185,187,188,189,190,191,192,194,195,196,197,201,202,203,204,205,206,207,208,209,211,212,213,214,215,217,218,225,228,229,232,233,239,240,248,250,252,253,256,264,273,274,275,279,282,284,285,286,288,290,293,294,296,308,319,320,322,331,333,348,356,358,359,361,363,376,378,384,387,389,393,394,430,439,441,442,444,456,458,460,462,463,465,466,467,468,470,471,472,473,477,484,485,488],manipul:[12,41,211,233,379,420,469],manner:[2,3,6,9,11,17,41,141,161,195,196,197,198,206,211,217,222,223,226,232,236,237,252,257,258,269,270,272,287,311,312,313,316,317,318,323,325,329,333,349,357,358,362,363,385,387,394,397,408,446,453,455,458,459,460,461,463,467,472],manolopoulo:235,mantissa:3,manual:[0,1,3,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,58,63,68,71,109,112,118,143,144,146,147,148,151,152,153,154,155,157,158,164,171,172,174,175,176,177,179,180,182,183,185,188,190,192,197,207,210,217,224,227,231,235,236,237,251,252,254,255,256,257,258,259,262,265,267,268,269,270,272,280,282,285,293,294,295,296,311,312,313,323,324,328,333,334,336,337,338,339,342,344,349,358,362,363,364,365,367,368,370,371,372,373,374,375,377,378,379,381,382,383,385,386,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,411,415,416,417,419,424,425,431,440,441,442,443,444,446,447,449,450,451,453,467,471,472,473,476,484],manybodi:[3,7,8,9,12,141,142,356,364,365,369,378,385,388,394,396,416,420,440,442,443,444,447,470,484],map:[2,3,11,12,17,18,39,59,64,71,118,122,140,153,164,165,187,190,191,200,207,275,292,348,349,351,358,364,365,369,378,385,386,388,394,395,396,410,411,412,414,416,420,421,422,423,430,438,440,441,442,443,444,447,455,458,460,472,484],map_fil:275,mapflag:12,march:410,margin:472,mari:13,mark:[392,407,427,429],marker:281,maroon:191,maroonmpi:11,marrink:392,marsaglia:[3,229,230,236,237,288],marseil:9,martin:[275,410],martinez:201,martyna:[252,253,293,467],mashayak:17,mask:[3,274,484],mask_direct:200,mass:[],mass_matrix:200,massdelta:296,massiv:[0,190,239,276,316,323],massless:[6,237,349,379,399,403,407,479],masstot:293,master:[3,358,453,472],mat:[67,200,378,443],match:[3,6,8,9,11,12,17,38,41,56,59,71,116,148,185,191,192,211,214,217,233,252,253,270,290,294,308,315,348,349,369,393,405,410,421,422,423,441,452,456,458,459,460,463,467,472,479,484],mater:[73,364,412,420],materi:[6,7,9,59,70,124,125,168,199,200,217,228,234,250,274,280,288,316,320,326,379,385,386,387,391,395,410,411,419,422,423,426,427,428,429,453,458,472,479,483],material_fil:200,math:[],mathemat:[118,140,164,165,195,196,197,198,210,215,223,229,231,232,234,236,237,281,295,302,311,312,313,325,328,330,430,454,461,468,485],mathrm:237,mathtt:237,matlab:[],matric:[9,140,230,275,390],matrix:[3,6,9,91,163,204,215,230,275,284,348,351],matter:[6,9,12,39,57,59,71,147,207,320,359,365,381,385,387,410,425,442,444,447,451],mattson:[112,141],max2theta:164,max:[3,6,8,12,15,18,71,117,191,206,211,213,215,218,279,296,308,333,351,354,356,358,359,363,453,458,472,476,484],max_alpha:8,max_cell_s:384,max_group:3,max_nn:300,max_travel:301,max_vel:[299,300],max_veloc:300,maxangl:228,maxbodi:3,maxbond:[3,213],maxedg:163,maxev:[356,453,472],maxfoo:8,maxim:[315,358],maximum:[3,6,8,12,15,17,25,41,42,45,53,54,57,59,61,116,117,118,121,163,164,166,167,187,188,199,204,205,206,211,213,217,218,222,228,264,274,279,284,296,298,299,300,308,321,348,349,354,358,359,363,366,369,384,389,408,409,458,461,466,476,484,485],maxit:[284,356,453,472,476],maxsize_restart:8,maxwel:[17,273],maxwell50:17,maxwell52:17,maxwell53:17,maxx:420,mayb:13,mayer:[7,370,372,439],mayo:[6,7,13,25,344,393,470],mbt:172,mbyte:[12,288],mcdlt:[155,232],mcgraw:276,mdash:479,mdatom:228,mdnvt:228,mdregion:200,mdtemp:228,mdump:[41,211],meain:[],meam:[],meam_sw_splin:412,meamf:410,mean:[1,2,3,4,6,7,8,10,11,12,17,22,34,37,38,39,41,42,44,52,54,55,56,57,59,61,63,68,71,76,77,82,84,85,87,91,103,104,105,112,113,114,115,116,117,140,141,143,144,146,147,148,151,152,153,154,155,157,158,159,165,166,168,169,171,173,181,184,185,186,187,188,190,191,192,194,195,196,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,223,226,228,229,230,231,232,234,236,237,238,242,249,252,254,255,256,257,258,264,269,270,272,274,276,278,279,280,282,288,290,291,293,295,296,297,302,305,308,310,311,312,313,315,316,319,320,322,323,324,325,326,327,328,329,330,331,335,336,337,339,341,343,348,349,351,353,354,356,357,358,359,361,363,366,370,372,373,374,376,379,383,384,385,387,390,391,393,394,397,399,400,403,410,413,414,417,418,420,422,423,424,425,438,440,441,442,443,444,446,450,452,453,455,456,458,459,460,461,462,463,464,465,466,467,468,469,470,472,473,475,476,479,483,484,485,486,488],meaning:[116,124,125,127,130,134,394],meaningless:[67,315],meant:[6,293,445,462],measur:[],meaur:477,mech:419,mechan:[6,8,9,11,12,16,17,126,142,200,232,276,287,369,387,395,401,427,429,452,456,458],mechanic:287,mechanim:122,media:190,medium:450,mediumaquamarin:191,mediumblu:191,mediumorchid:191,mediumpurpl:191,mediumseagreen:191,mediumslateblu:191,mediumspringgreen:191,mediumturquois:191,mediumvioletr:191,mee:315,meet:[3,12,166,190,191,213,214,321,463],mehl:364,meloni:39,melros:[408,409],melt1:192,melt2:192,melt3:192,melt:[4,10,214,275,369,443],mem:15,member:[168,278,369],membran:[29,273,450],memori:[1,3,5,6,7,8,9,12,15,16,17,18,39,40,60,71,191,203,205,207,208,229,230,288,320,346,359,363,369,414,418,423,455,458],memory_usag:8,mendelev:385,mention:[1,6,7,11,42,217,232,239,256,325,351,358,365,422,423,460,484],menu:[190,233],mep:[251,358],mer:[4,10,214],meremianin:140,merg:[3,5,458],merz:[6,171,470],mescscop:419,mesh:[1,2,3,6,7,8,10,12,40,41,42,118,134,164,200,211,239,294,304,348,349,384],meshless:9,meso:[],meso_:[],meso_cv:468,meso_rho:[],meso_t:[],mesocop:40,mesoscal:7,mesoscop:[7,99,100,101,245],mess:[3,468],messag:[],met:[8,41,116,211,333,347,349,356,358,362,446,466],metadynam:[9,13,216],metal:[3,5,7,10,40,59,71,154,165,199,200,207,208,217,218,232,234,283,284,288,324,325,327,328,330,349,351,360,364,365,369,378,385,386,387,388,394,396,410,411,412,420,421,440,442,443,444,447,461,475,476,478,483],meter:[360,483],methan:[283,288],methanol:4,methin:342,method:[1,3,5,6,7,8,9,11,12,13,16,17,19,38,39,40,41,56,64,87,91,110,141,185,194,195,196,200,204,205,211,216,226,236,239,243,247,250,252,275,276,283,284,285,286,288,293,296,297,315,316,317,318,323,348,349,354,355,356,358,363,364,366,369,378,379,385,387,388,410,411,412,414,420,439,441,447,453,455,456,458,459,461,472,479],methodolog:[6,73,141,276,348],metin:[7,9],metric:[3,10,64,461,476],metropoli:[201,228,473],mezei:87,mf1:192,mf2:192,mf3:192,mg2:164,mglob_default_function_attr:12,mgoh:416,miai:288,mic:[12,17],micel:[4,13,306],micelle2d:[],michael:[9,13,412],michel:13,micro:[3,483],microcanon:[259,260,262,263,265,267,268],microelast:419,micromet:483,micropor:228,microscal:408,microsec:483,microsecond:483,mid:[5,59,217,438],middl:[3,6,8,16,22,41,44,77,87,116,154,159,163,169,172,173,191,195,196,202,211,279,291,292,293,316,323,334,335,353,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,408,409,410,411,412,413,415,417,419,421,422,423,424,425,430,431,432,433,434,435,436,437,438,440,441,442,443,444,446,447,449,450,451,452,456,466,467,468,484],middlebondtors:[3,172,458],midnightblu:191,midpoint:438,mie:[],might:[3,4,6,7,8,12,14,25,71,147,226,228,230,293,456,466,484],migrat:[3,8,17,41,42,59,61,65,69,79,92,108,115,188,194,211,274,282,288,308,348,360,363,466,486,488],mikami:[6,252,253],mike:[7,9,13,15,16],mil:[9,385],mill:355,miller:293,million:[3,7,10,39,41,71,211],mimic:[6,11,42,54,237,250,279,379,389,399],mimim:[215,358],min2theta:164,min:[3,4,6,8,12,117,140,191,206,348,351,438,453,472,484],min_cap:3,min_cg:8,min_clearstor:8,min_dof:8,min_modifi:[],min_nn:300,min_popstor:8,min_post_forc:8,min_pre_forc:8,min_pushstor:8,min_setup:8,min_setup_pre_forc:8,min_step:8,min_stor:8,min_styl:[],minarea:163,mincap:423,mind:[7,229,275],mine:[12,88,155,156,194,331,481],minim:[],minima:[177,344],minimi:[358,446],minimizaiton:358,minimizi:288,minimum:[3,12,25,26,27,42,45,57,59,86,105,117,163,164,166,168,174,187,188,190,199,206,215,216,222,235,251,290,292,294,298,300,304,308,325,329,333,344,348,351,354,355,356,358,359,374,387,390,392,393,399,401,403,408,409,423,425,438,453,466,472,484,485],minlength:163,minmiz:[8,215],minn:9,minord:[3,348],mintcream:191,mintmir:[7,284,379,439],minu:[12,59,145,217,333,358,484],minut:[4,8],mirror:[61,327],misc:[],miscellan:[2,200],mise:[133,138],mishin:[364,439],mismatch:3,miss:[3,5,12,168,206,228,264,288,308,398,414,475,476],mistak:[3,484],mistakenli:3,mistyp:3,mistyros:191,mitchel:[6,111,147,348,349,381,419],mitchell2011:419,mitchell2011a:419,mitur:367,mivi2:288,mix:[1,3,6,9,14,15,16,71,115,147,206,207,321,348,349,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,449,450,451,456,458,471,479,486],mixtur:[6,40,252,293,308,330,377,410,458],mixture_ref_t:410,mjpeg:190,mkdir:469,mkl:12,mkmk:275,mkv:190,mldivide3:3,mlpark:7,mlutipl:209,mn2:164,mn3:164,mn4:164,mo3:164,mo5:164,mo6:164,mobil:[6,105,141,143,144,146,151,158,190,293,331,332],moccasin:191,mod:[],mode:[1,3,6,9,11,12,13,14,15,16,17,18,61,66,75,88,90,93,104,106,114,116,117,142,145,160,162,163,164,188,190,191,206,209,216,217,226,230,252,276,288,297,308,346,348,360,363,379,387,455,460,465,467,476,483,484,488],model:[],model_ar_p_mors:395,modern:[12,236,238],modest:[1,361],modif:[6,13,87,410,424,444,479],modifi:[],modify_param:8,modin:200,modul:[3,9,11,12,13,216,288,456],modular:8,modulo:[3,484],modulu:[280,391,410,419,426,428],mofil:459,mol1:484,mol:[3,9,71,113,165,167,168,188,191,216,218,228,233,236,279,282,293,296,304,310,382,390,425,467,468,479,484],molchunk:[66,75,90,93,104,106,145,160,162,203],mole:[201,385,483],moleclu:[212,213,218,225],molecul:[],molecular:[0,2,3,5,6,7,8,9,12,13,39,40,53,71,108,113,115,143,144,146,148,151,152,153,154,157,158,165,166,167,168,169,177,188,189,192,200,213,216,228,235,275,276,283,287,288,292,297,319,320,349,357,366,367,369,373,384,387,394,439,458,459,460,462,463,467,468,470,476,478,479,484],molfil:[],molfrac:[218,279],molnar:297,molp:109,moltempl:[],mom:[6,91,292,485],momementum:[144,254,257,260,261,262,269],momemtum:66,moment:[3,6,40,42,82,84,85,106,113,144,158,165,186,188,236,239,242,267,279,293,306,357,382,386,458,468,479,483],momenta:[230,261,323,387],momentum:[],momon:214,monaghan:[9,433,434,436],monitor:[3,6,12,96,97,148,215,217,218,225,233,236,250,252,279,281,283,293,296,308,356,358,382,476],mono:[73,408],monodispers:[3,326,371,391,408,409],monom:[13,54,214],monoton:[3,297,319,358,472],monoval:349,mont:[6,7,9,194,201,214,228,293,315,384,439],montalenti:[453,472],month:0,moor:[17,141],more:[0,1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,58,59,61,62,63,64,65,67,68,69,70,71,72,77,78,79,80,83,86,87,88,90,92,96,97,98,99,100,101,102,103,105,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,147,148,149,151,152,153,154,156,157,158,159,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,187,188,189,190,191,192,194,195,196,197,198,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,265,267,268,269,270,271,272,274,275,276,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,295,296,297,298,299,300,301,302,304,308,310,311,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,342,343,344,346,348,349,351,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,449,450,451,453,454,455,456,458,459,461,462,463,464,465,466,467,468,469,470,471,472,473,475,477,479,484,485,486,487,488],morefoo:8,moreov:[212,213],morri:[],morriss:[153,270],mors:[],morse_f:441,mosel:355,mosi2:410,moskalev:140,most:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,18,19,37,39,41,55,71,108,153,163,184,188,190,191,203,206,207,208,209,211,212,213,215,232,252,253,276,281,282,283,284,293,294,321,323,331,333,343,349,355,359,361,363,365,387,390,410,421,422,423,444,453,454,455,460,467,472,476,477,484,486],mostli:[8,9,11,13,71,167,190,359,458,467,470,484,487],motiion:6,motion:[3,6,7,9,42,86,97,143,144,146,148,150,151,152,153,154,155,157,158,217,221,230,239,242,243,249,252,253,256,270,274,276,278,288,292,293,316,320,326,329,358,382,387,408,409,461,467,479],motiv:274,mous:233,mov:190,move:[],move_tri_surf:134,movement:[3,6,12,249,315,356,476],movi:[],mp4:190,mpeg:190,mpg:190,mpi4pi:11,mpi:[],mpi_allreduc:[293,456],mpi_barri:1,mpi_cart:455,mpi_cart_cr:455,mpi_cart_get:455,mpi_cart_rank:455,mpi_cart_shift:455,mpi_comm:6,mpi_comm_world:11,mpi_get_processor_nam:455,mpi_inc:12,mpi_lib:12,mpi_lmp_bigint:3,mpi_lmp_tagint:3,mpi_path:12,mpi_wtim:12,mpicc:11,mpich2:12,mpich:[12,14,15,16,17,18,363],mpich_icc:16,mpicxx:[12,17],mpiexec:[12,14,15,16,17,18,363],mpiio:[3,188,191,460,465,488],mpirun:[1,6,11,12,14,15,16,17,18,19,276,347,363],mplayer:190,msd:[],msi2lmp:[],msi:13,msm:[],msmse:[118,164,294],msst:[],mtchell2011:419,mtchell2011a:419,mtd:216,mth:[8,119,191,475],mtk:[252,253,256],mtotal:357,mu_j:29,muccioli:390,much:[1,3,6,11,39,142,188,190,205,215,283,315,359,360,363,390,424,453,456,472,477,479,484],mui:[113,188,223,310,458],mukherje:[7,9,278],mulder:319,muller:[6,91,194,316,323,413],mult:8,multi:[],multibodi:[3,61,278],multicent:387,multicor:[1,455,471],multidimension:13,multielectron:366,multilevel:[348,349],multiphys:11,multipl:[],multipli:[3,87,91,116,173,184,195,196,204,236,239,274,280,351,356,365,458,484],multiprocessor:363,multiscal:11,multisect:[41,211],multistag:87,multitud:7,mundi:271,munich:9,murdick:369,murti:443,murtola:348,must:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,56,57,59,61,62,71,82,84,86,87,104,107,109,112,115,116,117,118,119,144,147,154,158,163,164,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,185,186,187,188,189,190,191,192,195,196,197,199,200,201,202,203,204,206,207,208,209,210,211,212,213,214,215,217,218,221,223,226,228,229,230,232,233,234,235,236,237,239,240,241,242,243,247,248,249,250,251,252,253,254,255,256,257,258,260,261,262,264,267,269,272,274,278,279,280,281,282,283,284,286,288,290,291,292,293,294,295,296,302,304,305,307,308,311,312,313,315,316,318,319,320,322,323,325,326,327,328,329,330,331,333,334,335,336,337,338,339,340,342,344,348,349,351,353,356,357,358,359,360,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,427,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,453,454,455,456,458,459,460,461,463,465,466,467,468,469,472,473,475,476,479,483,484,485,486,488],mutli:6,mutlipl:458,mutual:[3,351,477],mutut:467,muvt:228,mux:[113,188,190,223,310,458],muz:[113,188,223,310,458],mv2_comm_world_local_rank:12,mvapich2:[17,363],mvapich:12,mxn:[12,276],my_ga:228,my_one_wat:228,my_post_process:469,my_qeq:284,my_setup:469,my_swap_region:201,myblock:[218,279],mybox:167,mychunk1:114,mychunk2:114,mychunk:[6,66,75,90,93,104,106,145,160,162],mycmap:458,mycom:206,mydump:[188,191],myer:[5,7],myfil:[455,484],myfix:[201,473],myflux:91,myforc:[188,487],myhug:256,myke:91,mymol:[40,296,357],mympi:11,mymultipli:[456,484],myn:456,mype:91,mypi:484,mypress:247,myramp:141,myrdf:[116,209],myreg:351,myregion:331,myrigid:[83,98,279],mysocket:235,myspher:[191,329],mystr:333,mystress:91,mytemp:[2,102,143,144,146,148,149,151,153,158,247,333,347,362,475,485],myz:458,n_dephas:453,n_element:189,n_f:[283,288],n_hbond:393,n_ij:391,n_ion:320,n_k:229,na1:164,nabla:320,nacl:[4,6,410],nacl_cs_x0:6,nakano:[284,286,358,447],namd:[7,9,188,233],name1:[159,217],name2:[159,217],name:[0,1,2,3,5,6,8,9,11,12,13,33,42,50,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,178,188,189,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,254,255,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,275,276,277,278,279,280,281,282,283,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,321,322,323,324,325,326,327,328,329,330,331,332,333,340,346,347,349,350,352,357,358,362,364,365,369,372,385,386,388,390,391,394,395,396,398,410,411,412,416,420,422,423,430,440,442,443,444,445,447,448,455,456,458,459,460,461,465,468,471,473,474,476,479,484,485,486,487,488],namespac:[6,8,12],nan:3,nangl:[3,458],nangletyp:[357,458,468],nano:[293,483],nanoindent:70,nanolett:293,nanomet:[188,191,483],nanoparticl:[211,293],nanosec:483,nanosecond:483,nappli:226,narea:3,narrow:[6,185],narulkar:[442,444],nasa:7,nasr:275,natdef:3,nation:[0,7,12,111,419],nativ:[1,6,7,12,16,17,188,192,459],natoli:[9,19],natom1:115,natom2:115,natom:[6,11,39,357,456,458,475,476,484],nattempt:279,natur:[6,9,140,217,252,274,288,326,385,387,388,410,420,455,484],navajowhit:191,navi:[191,385],navier:239,nb3:164,nb3b:[],nb3bharmon:416,nb5:164,nbin:[116,206,207,208,316,323],nbodi:[242,293],nbond:[3,113,458],nbondtyp:[191,357,458,468],nbot:369,nbounc:308,nbrhood_cutoff:423,nbtype:115,nbuild:476,ncall:226,nchar:191,nchunk:[3,6,66,71,75,90,93,104,106,114,145,160,162,203],ncoeff:430,ncorr:205,ncorrel:205,ncount:[203,204,205],nd3:164,ndanger:476,nden:[6,91],ndihedr:[3,458],ndihedraltyp:[357,458],ndim:207,ndirango:293,ndof:[252,256],ndoubl:458,ndp:479,ndx:332,neal:293,nearbi:[7,62,166,218,249,285,308,329,359,365,408,409,439,450,479],nearest:[3,70,71,73,163,166,239,251,274,315,329,348,398,410,441,484],nearli:[6,18,54,59,211,236,308,387,414,453,456,462,470],neb:[],neb_combin:358,neb_fin:358,neb_log:472,neb_step:472,neb_styl:472,necessari:[6,9,11,12,13,15,17,33,61,87,173,178,184,192,211,215,216,228,229,287,308,321,331,348,363,407,414,458,459,463,466,467,468,472,479,487],necessarili:[12,288,315,336,337,339,351,414,485],necessit:282,need:[1,2,3,5,6,7,8,9,11,12,13,14,15,16,17,18,33,37,38,39,40,41,42,50,54,55,56,58,61,63,64,67,70,72,73,77,82,91,102,104,109,112,128,140,141,143,144,145,146,148,151,152,153,154,155,157,158,165,167,171,173,178,184,185,187,188,189,190,191,195,196,197,198,200,201,203,204,205,206,207,208,209,211,212,213,215,216,217,221,223,226,227,228,232,233,235,236,237,239,245,246,252,264,275,279,280,282,288,292,293,297,304,308,316,319,320,322,323,324,325,331,340,343,348,349,357,358,359,360,363,364,365,366,367,369,370,371,372,373,374,375,377,378,379,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,440,441,442,443,444,446,447,449,450,453,456,458,459,460,461,463,465,466,468,470,471,472,479,484,486,487,488],needless:[6,359],neeed:9,neelov:349,neg:[3,6,12,27,46,65,69,89,102,108,115,140,141,167,169,174,176,185,190,215,217,218,229,256,274,297,305,319,323,325,330,348,355,388,402,410,439,458,461,477],neglect:[393,409],neglig:[6,11,87,252,440],neigh:[2,3,12,15,363],neigh_modifi:[],neighbor:[],neighborhood:[26,122,430],neighbour:237,neighobr:[6,379,399,403],neither:[2,3,12,41,63,200,214,217,218,365,371,387,408,409,463],nelem:430,nelement:[364,385],nemd:[],nest:[2,333,345,362,484],net:[3,6,11,39,86,88,146,157,232,274,284,293,409,423],netpbm:190,network:[12,188,212,213,233,455],neumann:348,neutral:[3,88,228,348,379,399],never:[7,12,63,71,194,204,215,228,252,274,296,310,321,325,328,330,348,359,385,410,430,447,455,458,472,475,484],neveri:[3,8,71,197,202,203,204,205,206,207,208,209,212,213,214,239,240,275,284,285,286,289,290,294,316,322,323,358,463,472],newatom:218,newer:[12,203,410,484],newfil:[345,347],newli:[218,479,485],newlin:191,newn:293,newt:152,newtemp:[63,102],newtion:[369,420],newton:[],newtonian:229,newtyp:[3,213],next:[],neyt:315,nfile:[3,38,56,185,188,191,441,460,465,488],nfirst:463,nfirt:463,nfreak:294,nfreq:[39,71,202,203,204,205,206,207,208,209,211,290,294,463],nghost:[3,12],ngp:105,ngpu:363,nguyen:[15,369],nharmon:[],nhc:276,nht:293,ni2:164,ni3:164,ni_000:[118,294],nialh_jea:385,nialhjea:[376,394],nice:[6,8],nickla:412,nimprop:[3,458],nimpropertyp:[357,458],nine:[127,134,388],ninteg:458,nissila:239,nist:[364,385,483],niter:[41,211],nitrid:379,niu3:[376,385,394],nkb:283,nlast:463,nlen:205,nline:357,nlocal:[3,8,11,12,226],nlog:349,nmax:42,nmin:42,nmol:458,nmpimd:276,nn2:410,nneighmaxdef:3,no_affin:[16,363],no_gradient_correct:429,no_histori:6,no_velocity_gradi:429,noced:356,nocheck:398,nocit:12,nocoeff:486,nodal:[6,38,56,185,200,320,441],node:[1,3,12,14,15,16,17,18,41,118,122,164,189,211,233,239,320,363,398,455,471],node_area:239,node_group:200,nodeless:387,nodeset:200,nodeset_to_elementset:200,nodess:16,nof:185,noforc:[],nois:[6,229,230,236,237,238,239,283,288,293,312,320],nomenclatur:[6,71,207,351],nomin:[188,252],non:[],nonbond:[4,12,416,439],none:[],noneq:230,nonequilibrium:[9,317,318,387],nonetheless:236,nongauss:[],nongaussian:105,nonlinear:[],nonloc:[419,468],nonperiod:3,nonzero:3,noordhoek:378,nopreliminari:185,nor:[2,3,41,59,200,298,299,300,301,302,304,378,426,427,428,429,458,461],nord:[420,442,444],norder:455,nordlund:[420,442,444],norm:[6,12,63,117,194,203,207,208,294,299,300,356,358,438,475,476,483],normal:[3,6,9,10,11,12,39,41,58,61,63,67,70,71,73,88,91,102,112,116,117,150,153,165,166,167,185,191,194,203,204,206,207,208,211,215,217,218,227,228,232,236,237,249,252,264,274,276,277,284,288,290,291,297,308,309,311,312,313,320,325,326,329,330,334,336,337,339,353,355,356,358,363,377,378,390,391,394,438,451,452,453,456,458,460,461,463,464,468,472,475,476,477,479,483,484,487],norman:320,nornal:3,nose:[6,7,8,155,194,221,236,237,252,253,254,255,256,257,258,269,270,271,272,276,280,288,293,311,312,313,318,383,479],noskov:[445,479],noslip:[308,330],nosync:477,notabl:[5,39],notat:[6,61,63,70,140,159,194,249,252,385,447,484],note:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,19,22,24,25,28,29,32,33,35,36,37,38,39,40,41,42,44,47,54,55,56,58,59,60,61,62,63,65,66,68,69,71,73,75,79,87,89,90,91,92,93,97,104,105,106,108,110,112,113,114,115,117,118,119,140,141,145,147,148,149,153,155,159,160,162,163,164,165,166,167,168,169,171,173,176,178,182,184,185,188,189,190,191,192,194,195,196,197,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,217,218,221,222,223,225,226,228,230,231,232,234,235,236,237,238,239,247,248,249,250,252,254,255,256,257,258,264,269,270,272,276,278,279,280,282,283,284,286,291,292,293,294,297,305,306,308,311,312,313,316,319,320,322,323,324,325,326,329,330,331,333,334,335,336,337,339,343,347,348,349,351,353,356,357,358,359,363,364,365,369,370,372,373,374,376,377,379,380,382,383,384,385,388,390,391,392,393,394,397,398,399,401,403,407,408,409,410,411,412,413,414,416,420,422,423,424,425,427,429,430,431,434,438,440,441,442,444,446,447,450,451,453,455,456,458,459,460,461,462,463,465,466,468,470,472,473,475,476,479,483,484,485,487,488],noth:[201,235,350,363,456,469],notic:[0,6,7,8,12,318,320,479],noutcol:8,noutput:275,noutrow:8,novemb:410,novik:13,novint:233,now:[2,3,6,9,11,12,13,46,61,62,71,188,195,196,213,229,233,234,293,326,329,349,351,385,387,391,422,423,431,454,459,479,485],nowait:233,nozforc:348,np3:164,np4:164,np6:164,npair:[116,204],nparticl:[3,40,42,368],npartit:476,npernod:[14,15,16,17,18,363],nph:[],nphi:[16,363],nphug:[],npoli:279,nproc:[3,188],npt:[],npt_aspher:[254,258,269],npt_sphere:[255,272],nrecomput:384,nrepeat:[71,202,203,204,205,206,207,208,209,290,294,463],nreset:[215,252,253,256],nreset_ref:215,nrho:[364,385],nrl:385,nsampl:384,nsbmax_most:3,nsec:478,nskip:[119,463],nsq:[3,360,418],nstart:[119,204,205,206,209,294,458,463],nstat:274,nstep:[3,13,215,252,331,435,456,459],nsteplast:456,nstop:[119,463],nswap:[316,323],ntabl:[38,56,185,441],nterm:297,nth:[12,77,116,117,188,191,206,217,463,473],ntheta:369,nthread:[3,363],ntild:275,ntpc:363,ntptask:363,ntype1:115,ntype2:115,ntype:[3,140,165,188,191,284,286,387,393,420,458,468],nuclear:[9,96,97,151,230,253,283,288,357,387,451],nuclei:[9,96,97,149,151,156,238,253,263,271,314,366,387,458],nucleu:[96,97,284,444,479],nudg:[4,6,7,194,251,355,358],nulcear:9,num:2,num_of_collis:3,numa:[1,3,12,363,455],numactl:16,number:[1,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,22,27,38,39,40,41,42,44,56,63,64,65,66,68,69,70,71,73,75,76,77,78,79,80,87,90,91,92,93,102,104,106,108,111,112,113,114,115,116,117,118,119,129,135,140,143,144,145,146,147,148,150,151,152,153,154,155,157,158,159,160,162,163,164,165,166,167,168,169,173,174,184,185,187,188,189,190,191,192,194,195,196,199,201,203,204,205,206,207,208,209,211,212,213,214,216,217,218,225,226,228,229,230,232,233,234,235,236,237,238,239,242,249,252,253,256,264,274,275,276,278,279,282,283,284,288,290,293,296,300,308,309,310,312,315,316,317,318,320,321,322,323,325,327,328,330,331,333,335,346,348,349,351,353,354,356,357,358,359,360,363,364,365,369,371,376,378,383,384,385,386,387,388,393,394,395,396,397,410,411,412,414,416,420,421,422,423,424,427,429,430,438,440,441,442,443,444,446,447,448,451,452,453,455,456,458,459,460,461,462,464,465,466,467,468,470,472,473,475,476,477,479,483,484,485,488],number_of_a:3,number_of_b:3,number_of_typ:[],numbond:3,numer:[1,2,3,6,9,11,12,22,38,41,42,44,56,71,77,87,116,159,169,173,185,188,190,191,195,196,197,199,200,203,207,209,223,229,232,236,249,252,276,293,296,320,325,327,328,330,331,335,353,356,357,376,382,394,410,414,422,423,429,441,451,452,456,457,458,465,468,474,475,476,484],numpi:11,nvalu:[203,207,208,209,456],nvaluelast:456,nvc_get_devic:15,nvcc:[1,12,17],nve:[],nve_aspher:[254,257,269],nve_spher:[255,258,272],nvida:17,nvidia:[1,3,9,12,14,15,17,363,471],nvt1:479,nvt2:479,nvt:[],nvt_aspher:[254,257,272],nvt_sphere:[255,258],nvtfe:200,nwait:275,nwchem:7,nxnode:320,o_cor:147,o_shel:147,oascr:7,obei:[3,217,351,453],ober:7,obj_shared_foo:12,obj_target:12,object:[6,8,11,12,15,40,42,190,215,233,239,242,279,297,304,356,357,456,461],observ:[252,283,311,312,315,316,323],obsolet:13,obstacl:[4,234],obtain:[1,3,9,12,29,73,87,163,192,196,227,230,239,256,275,276,315,348,365,382,410,414,421,442,444,467],obviou:[12,451,484],obvious:[190,473,484],occ:389,occasion:[3,453],occlus:190,occup:[3,163,363,389],occur:[1,3,6,9,11,12,14,17,39,57,59,61,62,71,86,105,163,166,168,185,188,191,201,211,214,215,217,228,231,234,242,250,264,284,293,308,317,330,331,333,348,359,363,384,387,407,423,453,455,456,463,467,472,475,484],occurr:[342,458,472,484],octahedr:25,octant:455,odd:[41,191,211,252,293,311,312,320,473],off:[1,3,6,12,14,15,17,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,37,38,39,40,43,44,45,46,47,48,49,50,51,53,54,55,56,59,61,65,69,71,107,108,109,112,113,115,140,141,143,148,152,163,164,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,188,190,191,194,197,201,209,210,213,214,217,224,227,228,229,231,233,236,237,242,252,254,255,256,257,258,259,264,267,269,270,272,278,280,281,285,293,295,296,308,311,313,323,324,325,328,329,334,335,336,337,338,339,340,342,343,344,348,349,356,358,359,361,363,364,365,367,370,371,372,373,374,375,377,378,379,381,382,383,385,386,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,409,410,411,414,415,416,417,419,423,424,425,427,429,431,438,439,440,441,442,443,444,446,447,449,450,451,453,454,455,458,460,465,467,470,471,472,477,481,483,484,486,488],offend:[3,456],offer:[6,14,18,168,355,379,453,467],offic:7,offload:[1,12,16,17,233,363],offset:[3,6,57,165,190,217,218,279,357,379,399,403,439,458],offsit:8,often:[1,3,6,7,12,13,14,15,16,17,18,37,55,71,159,184,190,197,206,209,211,215,226,233,252,276,294,343,351,355,356,358,359,360,363,378,383,399,442,444,453,472,479,483],ohio:412,old:[3,6,9,194,215,218,252,410,422,431,459,462,466,469,483,486],older:[3,5,12,13,17,191,203,215,252,431,484],oldlac:191,oleinik:369,olfason:[6,25,344,393,470],oliv:191,olivedrab:191,ollila:[239,241,242,243],olmst:[200,274],omega0:344,omega:[],omega_dot:252,omega_ijk:444,omega_ik:442,omegai:[113,188,310],omegax:[113,188,310],omegaz:[113,188,310],omgea:6,omiss:[0,7],omit:[185,191,327,373,382,403],omp:[],omp_num_thread:[3,16,18,363],omp_proc_bind:17,ompi_comm_world_local_rank:12,ompi_icc:16,on_the_fli:200,onc:[0,1,2,3,6,11,12,16,40,41,59,60,63,71,91,104,171,189,190,191,194,195,196,211,212,213,218,226,228,230,237,275,282,293,308,316,321,323,331,354,357,358,359,390,392,394,395,420,424,455,456,465,472,475,479,484],onelevel:455,onewai:[],ongo:233,oniom:[9,287],onli:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,59,60,61,63,64,65,66,67,68,69,70,71,72,73,75,78,79,80,83,86,87,88,90,92,93,96,97,98,99,100,101,102,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,148,149,151,152,153,155,156,157,158,159,160,162,163,164,165,168,169,171,172,174,175,176,177,178,179,180,182,183,184,185,188,189,190,191,192,194,195,196,197,198,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,221,223,224,225,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,265,267,268,269,270,271,272,273,274,275,276,277,278,279,280,282,283,284,285,286,287,288,289,290,293,294,295,296,297,298,299,300,301,302,304,308,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,336,337,338,339,340,342,343,344,346,348,349,351,353,356,357,358,359,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,455,456,458,459,460,462,463,465,466,467,468,469,470,472,473,474,475,476,477,479,484,485,486],only_group:163,onn:467,onset:[283,342],ontario:9,onto:[140,167,214,218,239,438],onward:2,open:[],opencl:[1,3,7,15,363],opengl:6,openkim:9,openmp:[1,3,7,9,12,16,17,18,346,363,471],openmpi:[12,14,15,16,17,18,363],opensourc:7,oper:[],opl:[],oppos:[6,39,186,188,292,327,349,357,458],opposit:[6,70,199,236,243,274,293,323,358,379,407,445,456],opt:[],optic:144,optim:[],option:[],optionn:17,orang:[2,190,191],orbit:[284,286,369,379,387,439],orchid:191,order:[1,2,3,6,9,11,12,14,27,38,39,41,56,59,65,69,71,79,87,89,90,92,93,108,112,115,130,140,141,143,144,145,146,147,148,151,152,153,154,155,157,158,169,174,184,185,188,190,191,194,197,202,204,206,207,208,209,210,212,213,214,215,216,221,223,228,230,232,233,235,239,240,242,250,252,274,282,283,287,290,291,292,293,294,295,296,297,302,304,309,315,319,320,321,322,332,333,334,336,337,339,342,343,348,357,358,364,365,366,369,378,384,385,387,388,390,391,394,396,399,407,410,422,423,424,439,440,441,442,443,444,445,447,448,453,455,456,458,459,463,465,467,468,472,475,479,484,488],orderomg:3,ordinari:[111,393,419],org:[6,7,11,12,13,14,421],organ:[0,3,6,7,8,378],organis:[427,429],organometal:25,orient:[],orienti:42,origid:203,origin:[3,6,7,9,12,71,81,103,104,114,118,161,165,167,187,190,191,194,195,196,203,207,208,212,213,217,221,237,249,252,270,276,279,289,293,294,301,307,318,345,347,348,351,355,364,365,367,369,379,382,383,384,385,393,396,410,419,422,423,442,444,445,446,455,458,459,460,461,462,463,483,486],origin_i:208,origin_x:208,origin_z:208,ornl:[7,9,15],orsi:29,ortho:[3,59,167,458],orthogon:[],orthograph:190,orthong:59,orthongon:[59,293],orthonorm:218,orthorhomb:283,os4:164,oscil:[6,9,150,213,217,220,221,237,249,250,252,283,288,293,325,326,328,330,357,366,445,479,484],oscillatori:[249,301],oserror:11,other:[],otherswis:16,otherwis:[1,3,9,12,14,16,17,18,37,39,55,71,102,111,118,144,145,158,166,184,191,192,201,203,212,213,217,226,228,230,237,252,293,343,344,356,363,371,394,398,408,409,420,448,453,456,458,459,479,484],otyp:[379,399,403,407],ouml:479,our:[5,6,7,8,13,239,296,414,442,444,479],out:[1,2,3,6,7,8,11,12,13,14,18,19,21,41,64,66,71,75,90,91,93,94,97,103,104,105,106,107,114,115,143,144,145,146,148,149,151,152,153,154,155,157,158,160,162,168,172,188,190,191,192,194,207,211,212,213,216,224,227,228,234,236,239,244,264,275,277,278,279,288,289,290,293,305,320,329,331,332,333,334,336,339,346,347,351,354,358,362,387,394,439,452,453,455,456,458,461,462,463,465,466,467,469,472,474,475,476,480,482,484,485,486,487,488],outcom:[293,485],outer2:[374,392],outer:[3,8,16,222,234,333,347,354,356,362,364,365,366,367,368,369,370,371,372,373,374,375,377,378,379,380,382,383,384,385,386,387,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,415,417,419,421,422,423,424,425,430,431,432,433,434,435,436,437,438,440,441,442,443,444,446,447,448,449,450,451,453,466,467,472,478,484],outer_distance_cutoff:393,outermost:[38,56,195,196,249,252,359,441,467],outfil:[13,455],outlin:[6,190],outmost:233,outpt:[],output:[],output_frequ:200,outputss:127,outsid:[3,57,59,71,155,165,187,188,189,190,191,192,206,207,218,228,234,293,294,308,313,314,327,328,330,331,346,358,370,372,379,387,399,401,417,425,456,458,459,461,468,475,485],outuput:203,outut:6,outward:[163,325,329,330,458,467],over:[1,3,5,6,7,9,12,16,18,27,39,41,42,55,60,65,68,69,71,79,80,87,88,89,90,92,101,103,105,108,115,116,125,126,132,137,140,141,145,148,151,159,161,174,185,190,192,194,195,196,202,203,204,205,206,207,208,209,210,211,212,213,217,218,226,229,230,234,236,237,238,242,250,251,252,253,254,255,257,258,269,270,271,272,274,279,280,283,290,291,292,293,294,297,305,308,311,312,313,314,316,319,322,323,325,327,328,329,330,331,334,347,350,358,359,360,363,377,383,385,386,387,388,393,408,410,420,430,431,439,440,442,443,444,447,454,455,456,461,463,464,466,467,472,475,476,484,485],overal:[6,18,25,59,159,215,221,252,253,276,296,308,333,354,387,393,394,430],overalap:293,overcom:[264,308],overflow:[3,357,359],overhead:[6,11,19,41,191,203,205,207,208,211,225,282,359,360,461,477],overkil:293,overlai:[],overlaid:7,overlap:[3,13,16,62,76,165,168,185,191,199,202,203,206,207,208,209,218,222,264,279,284,290,293,294,308,326,330,348,351,354,356,357,363,383,387,391,394,397,407,426,428,431,446,458,461,467],overload:1,overrid:[3,12,14,16,17,22,44,71,151,165,173,190,191,195,196,215,222,247,252,335,348,359,376,393,394,410,414,422,455,456,468,470,475,484],overridden:[6,165,190,256,293,408,414,431,439,466,484,486],overview:[],overwrit:[11,12,22,44,173,191,203,204,205,206,207,208,209,294,335,346,352,376,410,456,459],overwritten:[281,319,346,393,394,453,454,459],own:[3,4,6,7,8,11,12,13,15,17,39,41,59,61,63,65,66,69,71,73,75,79,90,92,93,104,106,113,114,115,117,119,145,148,160,162,163,188,191,194,200,202,203,204,205,206,207,208,209,211,214,215,217,226,229,230,236,237,239,247,250,252,254,255,256,257,258,269,270,272,276,280,288,293,294,311,312,313,322,348,358,363,365,369,378,386,396,420,422,423,440,442,443,444,447,455,468,475,485],oxford:[29,87,382],oxid:[378,379],oxygen:[6,40,225,379,399,403,458],oxygen_c:147,p_e:320,p_ik:420,p_pi:369,pacakg:[3,4,9,19,40,363],pack:[5,8,67,326,363,369,410],pack_bord:8,pack_border_bodi:8,pack_border_hybrid:8,pack_border_vel:8,pack_comm:8,pack_comm_bodi:8,pack_comm_hybrid:8,pack_comm_vel:8,pack_exchang:8,pack_restart:8,pack_revers:8,pack_reverse_comm:8,pack_reverse_hybrid:8,packaag:363,packag:[],packakg:15,packet:[7,9,40,190,366,387],pad:[3,188,190,191,276,484],padua:[9,13],page:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,22,37,40,42,44,55,57,59,63,66,68,75,87,90,93,102,104,105,106,107,109,112,114,117,119,141,144,145,158,160,162,165,166,167,173,184,188,189,190,191,192,194,195,196,201,202,203,204,205,206,207,208,209,218,228,235,236,237,247,252,253,257,258,262,269,270,271,272,279,282,293,305,308,311,312,313,322,326,329,331,333,335,343,347,356,357,358,359,363,364,365,368,376,378,379,385,386,388,393,394,396,397,410,411,412,414,416,420,421,430,439,440,442,444,446,447,456,458,459,460,461,463,466,467,468,470,475,476,484,485,486,487],pai:[15,18],pair:[],pair_:[87,195,196],pair_airebo:396,pair_charmm:407,pair_class:8,pair_coeff:[],pair_eam:364,pair_eff:151,pair_foo:8,pair_hybrid:[394,445],pair_interact:200,pair_list:398,pair_lj:407,pair_lj_cut:8,pair_lj_soft_coul_soft:87,pair_modifi:[],pair_sph:[432,433,434,435,436,437],pair_styl:[],pair_tally_callback:8,pair_writ:[],paircoeff:3,pairfoo:8,pairij:[3,458],pairkim:3,pairstyl:8,pairwis:[],palegoldenrod:191,palegreen:191,paleturquois:191,palevioletr:191,pan:190,panagiotopoulo:[380,389],pandit:[9,286,423],papaconstantopoulo:364,papayawhip:191,paper:[3,6,7,8,9,13,39,40,64,140,153,159,177,236,239,243,251,278,284,286,293,308,316,320,323,348,355,358,365,373,379,391,393,396,401,403,419,422,423,442,444,453,472],paradyn:5,paraemt:424,paragraph:[71,153,325,351,459],parallel:[],parallelepip:[6,167,351,458,461],parallelipip:[167,275],paralleliz:278,param:[3,284,286,455,461],paramet:[],parameter:[118,164,365,369,378,379,385,386,387,388,396,410,411,412,420,422,423,440,442,443,444,447],parameter_fil:200,parameterizaion:379,parametr:[6,9,36,386,421,425],paramt:[105,284,327,424],paramter:378,paratem:407,paraview:294,parent:[3,8,331],parenthes:[38,56,185,391,441,484],parenthesi:[2,203,333,484],parinello:[6,7],pariticl:211,paritlc:3,park:[3,7,9,200,297,412,419],parrinello1981:215,parrinello:[215,230,250,252,253,283,312],pars:[],parser:[12,484],part:[0,1,2,3,6,7,8,9,11,12,17,20,21,23,24,25,26,27,28,29,30,31,32,35,36,37,38,40,41,43,45,46,47,48,49,51,53,54,55,56,64,67,70,71,72,78,80,83,96,97,98,99,100,101,105,107,108,109,111,112,115,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,147,149,151,152,156,157,159,163,168,171,172,174,175,176,177,179,180,182,183,184,185,188,189,191,192,194,197,198,199,201,205,208,210,211,212,213,214,215,216,217,218,220,223,224,225,226,227,228,229,230,231,233,234,235,236,237,238,239,240,241,242,243,245,246,247,250,252,253,254,255,256,257,258,259,260,261,262,263,265,267,268,269,270,271,272,274,275,276,278,279,283,284,285,286,287,288,289,290,292,293,295,296,297,298,299,300,301,302,304,305,307,308,311,313,314,315,316,317,318,319,320,321,323,324,325,326,327,328,329,331,332,333,334,336,337,338,339,342,343,344,348,349,356,357,358,359,363,364,365,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,449,450,451,455,456,458,459,460,461,465,466,467,470,476,484,488],partai:[9,421],parti:9,partial:[],partic:6,particip:[213,368,397,446],particl:[],particleenergi:3,particleviri:3,particular:[1,3,6,8,10,12,40,63,65,69,70,71,79,92,108,113,115,116,140,165,187,188,194,199,207,211,214,228,229,234,235,239,249,252,274,279,292,293,296,315,326,331,334,349,351,354,357,363,368,369,370,372,374,375,377,381,386,387,390,392,394,399,403,407,416,417,424,425,439,440,442,443,444,447,453,455,458,459,460,465,466,468,476,484,485,487,488],particularli:[6,7,9,12,15,16,25,39,190,215,293,349,387],partilc:308,partit:[],partitoin:62,partner:[3,7,61,212,213,214,237,308,323,445,468,473,479],pascal:[9,13,483],pass:[6,7,8,11,66,74,75,81,89,90,93,103,104,105,106,160,188,191,192,215,216,226,228,249,250,252,282,308,325,347,359,363,394,422,438,456,458,459,463,469,484,487],passphras:12,past:[],patch:[0,12],patchi:293,path:[3,6,7,11,12,13,15,192,235,251,276,297,308,315,320,358,364,365,369,376,385,386,388,396,410,411,412,416,420,421,422,430,440,442,444,447,459],patient:12,patom1:115,patom2:115,patrick:443,pattern:[3,7,12,62,73,460],pattnaik:293,paul:[0,7,13,236,238],pauli:[9,387],paus:466,paves:276,payn:[140,421,430],pb2:164,pb4:164,pbc:[325,366],pchain:[252,253,256,293],pcie:1,pd2:164,pd4:164,pdamp:[252,253,256,280,293],pdb:[6,13,192],pdebuyl:9,pdf:[0,8,9,13,17,40,99,100,101,111,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,216,235,245,246,298,299,300,301,304,419,432,433,434,435,436,437,468],pdim:323,pdlammp:[78,80,419],pdlammps_ep:[111,419],pdlammps_v:419,pe_eta:252,pe_etap:252,pe_omega:252,pe_strain:252,peachei:13,peachpuff:191,peak:389,pearlman:87,peculiar:12,pedersen:349,peform:[39,285],penalti:[14,422,423],pencil:[6,71,153,207],pend:3,penetr:[42,120,426,428,468],penetret:40,peng:164,penn:13,pentium:10,peopl:[7,8,9,12],peptid:[4,9,216],per:[],peratom:[3,110,141],perceiv:190,percent:[3,12,16,215,363,440],percentag:[1,12,215,252,279,280,293],percol:213,perfect:[6,41,70,73,211,274,358],perfectli:[41,211,459],perfom:[6,358],perform:[],performac:1,pergamon:[410,444,451],perhap:351,peri:[],peridyma:78,peridynam:[3,4,6,7,9,40,63,78,80,111,419,439,468],perimitt:380,period:[],perioid:325,perl:[6,13],perm0:483,perman:[3,39,54,71,169,212,213,233,292,331,363,393,462,470],permeabl:273,permiss:[213,456],permit:[6,239],permitt:[380,444,450,451],permut:[12,386,440,442,444,447],perpendicular:[6,144,190,217,234,244,249,251,274,277,301,325,326,355,458],perram:[349,390],persepct:190,persist:[3,8,71,226,293,363,455,456,464,484],person:9,persp:[3,190],perspect:190,pertain:[376,439],perturb:[9,13,70,87,248,291,325,328,330,463],peru:191,peskin:239,pessimist:349,petersen:[308,349],pettifor:[369,439],pettifor_1:369,pettifor_2:369,pettifor_3:369,pfactor:190,pforc:456,phantom:233,pharmaceut:7,phase:[3,12,16,252,315,323,369,399,443,455],phd:421,phenol:479,phenomena:387,phi0:[183,292],phi1:172,phi2:[172,386,440],phi3:[172,386,440],phi:[1,3,4,7,9,12,16,17,79,140,184,185,190,231,275,292,337,363,364,369,385,388,410,411,412,471],phi_ij:[369,388,420],philadelphia:9,phillip:[237,383,479],phillpot:[285,378,379],philosoph:385,philosophi:[6,7,235],phonon:[],phophor:430,phosphid:430,phy:[6,7,13,20,21,25,39,43,45,46,64,70,73,87,88,110,112,140,141,147,153,171,172,182,189,201,205,215,216,221,229,230,235,236,237,238,239,250,251,252,253,256,270,271,275,276,280,283,285,288,293,296,297,308,311,312,315,316,317,318,320,323,325,334,342,344,348,349,355,358,365,369,370,374,375,377,378,379,380,381,382,383,385,386,387,389,390,391,392,393,396,399,401,403,404,407,408,409,410,412,413,414,417,419,420,424,430,438,440,441,442,443,444,445,447,453,467,470,472,479],physic:[3,6,9,12,14,16,17,18,40,53,59,120,147,159,200,217,230,236,238,239,241,242,243,250,275,284,286,319,320,349,351,358,363,365,367,373,377,385,393,394,421,422,423,426,433,434,436,437,453,455,467,468,473,483],physica:[408,409],physik:[7,9],pic:9,picki:8,picocoulomb:483,picogram:483,picosecond:[191,217,476,483],picosend:387,pictur:7,piec:[3,11,140,191,252,465,488],pierr:9,pieter:13,pimd:[],pin:16,pink:191,pipe:[6,188,190],pipelin:[3,6],pisarev:320,pishevar:383,piston:[],pitera:6,pixel:190,pizza:[4,6,7,11,13,41,188,190,211],pjintv:13,pka:320,place:[3,6,7,9,11,12,33,41,50,71,87,159,165,169,178,185,188,190,191,193,194,195,196,213,214,217,228,229,230,232,235,236,237,238,240,242,243,252,257,258,269,272,279,282,291,293,311,312,313,320,325,328,330,347,376,393,439,446,455,456,459,466,468,476,484],placehold:[33,178,364,365,378,385,388,395,396,410,411,412,416,420,422,423,430,438,440,442,443,444,447],placement:[351,399],plai:[190,315],plain:[9,407,456],plan:[3,5,6,17,167,458],planar:[6,40,42,234,274,326,342,344],planck:[228,276],plane:[3,6,9,41,42,57,59,67,71,190,194,200,207,211,231,234,244,274,277,287,305,307,320,326,334,336,337,338,339,344,351,409,446,461,468],planeforc:[],plasma:[9,88,253,320,387],plastic:[],plastic_strain:121,plastic_strain_r:124,platform:[1,3,7,9,12,13,15,17,188,190,192,460,465,488],plath:[6,91,194,316,323],player:190,pleas:[0,3,7,11,12,13,200,230,239,243,275,278,289,315,331,386,388,419,427,429],plen:366,plimpton:[0,5,7,70,112,141,214,274,308,391,419],plo:29,plog:[3,12,467],ploop:[252,253,256],plot:[7,11,13,283,405,407,441,448],plu:[3,11,12,39,59,68,96,168,191,210,215,217,218,256,293,360,387],plug:9,plugin:[9,13,192,459],plum:191,pm3:164,pmb:[],pme:349,pmf:[216,297,305],png:[3,12,188,190],pni:190,poariz:6,poem:[],point1:458,point2:458,point3:458,point:[],point_data:294,pointer:[3,7,8,11,226,456],pois:483,poiseuil:[4,197,231],poisson:[59,217,349,391],poisson_solv:200,polak:355,polar:[6,7,140,147,164,200,220,378,379,399,445,479],polar_off:378,polar_on:378,polariz:[],poli:[],pollock:[7,349],polya:331,polybond:13,polychain:293,polydispers:[3,357,371,377,391,408,409,439,450],polygon:[6,163],polym:[],polymer:7,polymorph:[],polynomi:[9,38,56,185,385,405,414,434,441],polytechn:278,poor:[16,17,41,211,270,271,296,363,405],poorli:[355,356],pop:[3,8],popen:12,popul:[12,288,351,384,458],popular:[12,188,386],pore:305,poros:168,porou:[239,242],port:[233,235],portabl:[7,9,12,188,189,216,422,460],portion:[1,3,9,11,12,15,16,41,54,71,88,91,107,108,110,113,141,142,155,188,191,202,203,206,207,208,209,211,215,225,239,252,254,255,257,258,285,290,291,293,294,333,347,359,363,370,372,373,374,375,379,380,382,383,387,389,390,392,393,399,403,407,417,424,425,444,448,457,458,463,467,468,477,484],poschel:391,posfreq:290,posit:[3,6,14,27,39,40,41,42,46,57,59,70,71,81,89,90,103,104,108,117,118,122,140,141,148,163,164,165,167,168,169,174,176,185,187,189,190,191,194,195,197,199,201,202,203,206,207,208,211,212,213,214,215,216,217,218,221,223,228,229,230,231,233,234,236,237,238,239,241,242,245,246,249,250,252,253,254,255,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,274,275,276,278,279,280,283,284,288,290,291,293,296,297,301,304,305,307,308,310,311,312,313,315,317,318,319,320,323,325,326,327,328,329,330,331,334,348,351,358,365,366,368,371,383,384,387,389,397,402,423,438,441,446,453,458,461,468,479,484,485],posix:233,posix_memalign:12,possibl:[1,3,6,8,9,11,12,15,38,40,41,55,59,63,70,71,87,113,115,140,141,144,158,187,188,189,191,194,196,200,201,207,211,212,213,214,218,220,230,237,274,287,288,290,293,304,308,310,320,321,338,347,349,356,359,360,363,384,393,410,423,427,429,441,447,456,462,471,472,473,476,479,484,485,487],post:[],post_forc:8,post_force_integr:8,post_force_respa:8,post_integrate_respa:8,postit:[207,208,264],postiv:86,postma:[280,311],postprocess:13,pot:[391,423],potentail:388,potenti:[],potentiel:407,potetni:394,potpourri:9,pour:[],pourtoi:315,pow:217,powderblu:191,power7:17,power8:17,power:[3,9,11,105,140,191,288,348,363,369,456],pparam:[87,195,196],ppm:[12,188,190],ppn:[14,15,16,17,18,363],pppm:[],pppm_disp:3,pppmdisp:3,pproni:[3,229],pr3:164,pr4:164,practic:[3,12,215,252,253,275,282,447,455],prb:[442,444],prd:[],pre:[],pre_exchang:8,pre_forc:8,pre_force_respa:8,pre_neighbor:8,prec_tim:14,prece:429,preced:[2,6,59,202,203,204,205,206,207,208,209,235,290,294,333,351,358,363,369,393,472,475,476,484],preceed:[11,12,71,153,204,325,456,484],precipit:163,precis:[1,3,9,12,13,14,15,16,17,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,109,112,143,152,165,171,172,174,175,176,177,179,180,182,183,185,188,191,197,203,209,210,215,217,224,227,231,236,252,254,255,256,257,258,259,267,269,270,272,284,285,286,293,295,296,311,313,324,328,334,336,337,338,339,342,344,348,349,356,363,364,365,367,370,371,372,373,374,375,377,378,379,382,383,385,386,388,389,390,391,392,393,397,399,400,401,402,403,404,405,406,407,408,411,415,416,417,419,422,424,425,431,440,441,442,443,444,446,447,449,450,451,460,467,468,471,476,479,483,484,485],precv:455,predefin:[183,191,331,387],predict:[1,6,10,12,264,293,363],preexponenti:472,prefactor:[24,25,28,32,35,36,159,173,184,195,196,204,325,336,339,342,356,377,389,416,424,425,431,450],prefer:[7,8,12,292,321,365],prefix:[9,11,12,190,216,275,452,455],preliminari:[38,56,185,441],prematur:356,prepar:[9,287,308,469,479],prepend:422,preprint:[140,430],preprocessor:233,prerecord:216,prescrib:[6,8,144,145,158,194,195,200,203,218,249,266,321],presenc:[188,212,213,239,242,408,409,450,486],present:[1,3,12,18,163,185,189,190,218,229,230,235,239,240,242,243,288,304,326,329,378,387,398,407,423,424,455,479],preserv:[3,59,215,217,252,296,308,330,459],press:[],pressdown:210,pressur:[],pressure_with_eviri:387,presum:[73,154,194,195,196,217,358,394,461],prevent:[2,3,6,40,120,218,227,308,319,342,348,354,356,358,363,383,394,418,433,434,436,438,456,460,466,468,479,484],previou:[],previouli:218,previous:[3,11,59,61,71,86,102,117,119,154,165,167,169,187,188,189,191,199,201,202,203,204,206,207,208,209,217,218,228,234,247,249,279,291,293,295,296,320,322,325,326,327,328,330,331,350,391,439,453,456,460,461,471,473,475,476,480,481,482,484,485],prevoiu:326,price:[6,382],primari:[0,6,9,320],primarili:[5,7,9,17,142],primaritli:[],prime:[221,237,392,397,442,444,455],primit:[3,6,328,329,351],princip:[3,233],principl:[6,9,11,233,253,284,387,395,440,455],prinicp:[42,293,357],print:[],printabl:2,printflag:395,printfluid:239,prior:[163,186,350,487],priori:467,prioriz:363,prism:[3,6,153,167,461],priveleg:3,privileg:[12,233],prob:[212,213],probab:431,probabl:[3,8,12,40,71,155,168,169,171,201,211,212,213,214,218,228,237,252,279,325,331,356,414,453,472,479],probe:484,problem:[],problemat:228,proc:[1,3,8,11,12,15,113,188,347,455],proce:[41,54,169,211,222,358,465,473,476],procedur:[6,12,39,41,191,201,211,228,236,237,238,252,254,255,256,257,258,269,270,271,272,275,311,312,313,314,317,318,356,358,365,371,459,479],proceed:12,procesor:[41,455],process:[],processor:[],processsor:[41,211,455],procp1:188,procsessor:477,procssor:467,produc:[1,3,4,6,7,9,12,13,14,15,16,17,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,41,42,43,45,46,47,48,49,51,53,54,56,63,65,68,69,71,79,92,108,109,110,112,113,114,115,117,119,141,143,152,171,172,174,175,176,177,179,180,182,183,185,188,191,194,197,202,203,204,206,207,208,209,210,211,214,217,224,226,227,229,230,231,236,237,238,247,249,252,254,255,256,257,258,259,267,269,270,272,279,283,284,285,288,293,294,295,296,309,310,311,313,320,321,322,324,325,328,333,334,336,337,338,339,342,344,349,356,358,361,363,364,365,367,370,371,372,373,374,375,377,378,379,382,383,385,386,387,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,411,415,416,417,419,420,423,424,425,431,440,441,442,443,444,446,447,449,450,451,453,455,460,463,464,467,472,484,485],product:[6,16,17,18,140,217,270,284,321,363,366,387,423,455,484],proessor:363,prof:278,profi:154,profil:[],program:[3,4,6,7,9,11,12,13,17,142,188,190,191,192,194,216,226,233,239,287,385,456,457,469,484],programm:[13,17],progress:[1,41,211,233,250,283,355,356,358,476,479],prohibit:468,project:[6,7,13,14,355,439],promis:7,promot:369,prompt:[8,11,12,233,469],proni:[3,229,230],proofread:8,prop:[6,282],propag:[4,9,199,252,283,298,387,394],propens:6,proper:[214,274,410,456],properati:282,properli:[197,223,293,304,357,358,456,485],properti:[],propoerti:308,proport:[6,39,41,87,103,104,161,211,236,237,238,283,316,323,324,391],proportion:236,propos:[6,140,201,215,228,252,270,288,399,412,443,445],prospect:7,protect:308,protein:[7,10,165,291,293,306,458,466],protocol:233,proton:[444,451,483],prototyp:[10,42,419],prouduc:[209,322],prove:239,proven:270,provid:[1,3,4,6,7,8,9,11,12,13,14,15,16,17,18,29,40,42,61,67,70,118,139,142,159,164,165,189,192,202,203,209,214,215,216,217,226,228,233,235,239,243,250,252,275,283,284,287,288,293,297,315,317,318,321,322,333,346,348,349,354,358,363,365,369,371,376,378,379,383,386,387,391,393,396,398,407,408,410,412,420,421,422,423,430,438,439,440,442,443,444,447,455,460,466,468,471,472,476,477,484],proxim:187,psa:328,pscreen:[3,12,467],pscrozi:[0,7,13],psec:[191,217,232,236,237,252,280,293,311,312,478,483],psend:455,pseudo:[387,453,458,463],pseudodynam:315,psf:6,psi:[388,450],psi_ij:388,pstart:[3,252,253,256,280,293],pstop:[3,252,253,256,280,293],pstyle:[87,107,195,196],psu:[422,423],psuedo:463,pt2:164,pt4:164,ptarget:215,pthread:[12,17],ptr:[6,11,226,456],ptype1:115,ptype2:115,pu3:164,pu4:164,pu6:164,publicli:5,publish:[7,239,243,284,379,410,442,444],pull:[297,305],puls:320,pump:[408,409],punctuat:[2,453,472],purchas:190,purdu:[9,13],pure:[11,308,394,411,412,442,444,467],purg:[3,459],purpl:[2,191],purport:11,purpos:[3,6,7,12,42,61,71,118,128,134,148,149,164,165,167,169,185,188,207,209,214,215,236,274,276,279,281,292,308,348,363,373,397,403,414,446,458,460,461,465,468,470,471,484,488],push:[3,8,197,210,217,234,251,274,291,297,356,391,431],pushd:234,put:[3,6,8,11,12,13,39,59,153,165,188,218,222,327,328,331,351,422,456,458,462],putenv:[469,484],px1:467,px2:467,pxx:[215,252,280,293,348,349,475,476],pxy:[3,6,476],pxz:[3,6,476],py1:467,py2:467,pydir:11,pyi:[215,252,280,293,348,349,476],pymol:[7,11,13],pymol_aspher:[],pympi:11,pypar:11,python:[],pythonpath:11,pyz:[3,6,476],pz1:467,pz2:467,pzz:[215,250,252,280,283,293,348,349,476],q_c:479,q_d:479,q_i:[388,407,445],q_j:407,qbmsst:[],qcore:284,qdist:[379,399,403,407],qeq1:284,qeq2:284,qeq:[],qfile:[284,379],qin:232,qmin:355,qmmm:[],qmol:287,qout:232,qtb:[],quad:[12,18,363,455],quadrat:[],quadratur:[87,200],quadrupl:364,quadruplet:[181,184,334,336,337,339,341,342,343],qualifi:[3,235],qualiti:[7,9,190,191],quantit:[74,81,103,104,105,161,391],quantiti:[],quantum:[6,9,140,226,230,276,283,287,288,369,387,439],quantum_temperatur:283,quartic:[],quartic_spher:200,quartz:[283,288],quasi:276,quat:468,quaternion:[3,6,40,82,113,130,144,165,254,257,260,261,262,269,390,458,468],quati:[113,458],quatj:[113,458],quatk:[113,458],quatw:[113,458],queen:13,quench:[331,453,472],queri:[3,11,54,266,456,484],quest:[6,226],question:[8,9,12,13,274,331,419,484],quick:[0,9,12,14,15,16,17,18,19],quickli:[3,4,8,12,13,39,211,217,228,233,308,355,356,358],quickmin:[354,355,356,358,472],quicktim:[4,190],quip:[],quit:[],quot:[2,3,12,189,242,281,333,410,453,454,456,466,484],r10:369,r12:390,r_1:140,r_2:140,r_c:[380,382,389,444],r_cut:369,r_d:479,r_e:388,r_ewald:294,r_fu:[408,409],r_i:[29,140],r_ii:140,r_ij:[29,369,387,420,451],r_ik:420,r_j:29,r_jik:420,r_max:208,r_me:380,r_mh:389,r_min:[208,381],r_ub:20,r_x86_64_32:12,ra2:164,rad2theta:164,rad:331,radhi:461,radial:[63,96,97,113,116,140,149,151,156,208,238,253,263,271,305,314,356,387,393,414,458,461],radian:[20,21,24,28,32,35,36,38,164,172,183,185,292,334,336,339,342,458,461,468],radiat:[118,164,320],radic:[167,458],radii:[76,140,214,218,377,385,390,391,408,409,426,428,450,461],radit:387,radiu:[2,3,6,40,63,76,84,85,89,90,113,118,120,129,130,135,140,158,163,188,190,194,208,234,239,253,255,258,263,267,271,272,286,300,304,305,306,308,310,325,326,329,331,355,369,371,377,387,388,391,399,407,408,409,410,426,428,430,444,450,458,461,468,484],radlo:461,rafferti:323,rahman:[6,7,215,250,252,253,283,419],rai:[9,17,164],ram:444,ramirez:205,ramp:[],ran:[3,4,6,10,11],random:[3,6,39,165,168,187,190,199,201,212,213,214,216,218,225,228,229,230,236,237,238,239,248,276,279,283,288,291,293,308,312,315,320,324,327,371,383,384,453,468,473,479,484,485],random_se:453,randomli:[165,168,201,218,228,236,279,308,330,472,473],rang:[1,3,6,7,8,9,10,12,14,15,16,18,38,39,56,61,71,77,88,108,109,110,112,116,117,121,140,141,151,159,164,166,169,170,177,185,188,190,191,200,201,213,217,218,228,230,279,294,308,309,315,316,321,323,348,349,356,359,360,363,365,367,369,370,371,372,373,374,375,377,379,380,381,382,383,384,385,387,390,392,393,394,396,399,400,401,402,403,404,405,406,407,408,409,410,413,414,415,417,420,423,424,425,438,439,441,444,449,450,451,452,456,467,468,476,487],rangecoulomb:[],rank:[6,11,12,233,321,346,455],rankin:256,raphson:3,rapid:[4,6,11],rapidli:[3,8,12,71,214,236,250,252,293,311,312,324,379,383],rapp:[284,285,286],rappe_and_goddard:285,rare:6,rasmol:[6,7],rasmussen:390,raster3d:[6,7],rate:[2,6,12,125,132,136,137,148,191,200,217,218,232,233,234,279,283,316,317,318,319,323,354,355,384,408,409,453,472,476],rather:[1,2,6,9,12,40,41,62,112,148,190,211,217,229,230,293,312,320,324,326,327,328,331,387,422,441,459,463,468,470,475,484],ratio:[6,10,59,87,101,140,201,211,217,236,238,308,316,323,324,348,361,390,391,424,433,446,455,458,468,472],rational:[321,470],rattl:[],rattle_debug:296,ravelo:[256,401],rayleigh:[250,283],rb1:164,rbg:191,rcb:[3,41,211],rcm:[89,90],rcmx:[89,90],rcmy:[89,90],rcut:61,rcutfac:[140,430],rd1:358,rdc:17,rdf:[],rdn:358,rdt:358,rdx:4,reach:[6,12,41,119,205,211,213,215,237,256,301,308,315,333,347,362,380,479,484],react:6,reactant:387,reaction:[297,306,319,330,358,387],reactiv:[9,290,365],read:[2,3,6,7,8,9,11,12,13,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37,38,40,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,59,115,163,165,166,168,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,188,190,191,192,193,194,200,201,214,215,217,218,228,230,233,249,250,252,254,255,256,257,258,269,270,271,272,275,276,278,279,281,282,286,293,296,297,301,304,307,310,318,319,320,326,334,335,336,337,338,339,341,342,343,344,345,347,353,357,358,362,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,415,417,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,446,447,448,449,450,451,453,455,458,459,460,462,463,464,465,466,468,469,470,472,484,485,486,488],read_data:[],read_dump:[],read_restart:[],read_restart_set:8,readabl:[190,357,465,488],reader:[3,13,459],readi:[11,12,166,168,169,233,468,479,486,487,488],readm:[1,4,6,8,9,11,12,13,163,188,192,287,395,422,423,456],real:[3,6,7,11,27,30,31,59,71,91,140,154,165,174,187,191,199,207,208,217,218,221,233,234,237,249,276,283,288,291,324,325,327,328,330,338,348,349,351,354,360,379,414,422,423,444,458,461,467,475,478,483,485],realist:[3,218,462],realiz:[71,194,456],realli:[1,3,8,12,112,122,141,191,234,359,394,470],realloc:3,realtim:233,reamin:[325,329],rearrang:358,reason:[3,6,7,11,12,19,39,146,157,165,203,207,208,236,280,293,317,318,321,331,357,358,363,376,380,387,388,389,409,414,446,448,462,467,485],reax:[],reax_def:3,reaxc:[],reaxff:[3,4,5,7,9,13,194,284,286,289,290,394,422,423,439,470],rebal:[41,211],rebalanc:[41,211],rebo:[],rebuild:[11,12,14,15,16,228,359,383,476],rebuilt:[3,12,188,189,190,192,359,363],recalcul:[71,87,308],receiv:[3,210,233,235,274,455],recent:[],reciproc:[6,12,118,164,275,348,370,372,373,379,382,387,399,403,417,425,472],recog:12,recoginz:3,recogn:[3,12,16,73,167,212,213,252,357,385,410,422,456,458,465,466,479],recomend:6,recommend:[7,9,11,12,14,16,190,191,283,318,348,387,394,408,409,423,424,427,429,467,477],recompil:[1,3,9,12,192,296],recomput:[102,128,169,222,297,384,470],reconstruct:[3,216],record:[192,216,297],recov:[215,252],rectangl:[41,211,351],rectangular:[7,41,62,167,211,228,351,458,460,462],rectilinear:[118,164],rector:53,recurs:[41,211,369,446],recust:41,recv:455,red:[2,10,190,191,214,276],redefin:[3,460,466,484],redirect:12,redo:12,reduc:[],reduct:[18,19,117,118,164,250,283,348],redund:388,ree:434,reed:[250,283],rees:[7,9,13],ref:[317,318,355],refactor:6,refer:[],referenc:[3,6,12,63,68,71,114,188,194,204,209,228,282,322,349,379,393,416,424,456,476,484],reflect:[],reformat:7,refresh:200,reg:461,regard:[6,59,249,296,301,419,423],regardless:[15,71,165,168,187,206,207,217,236,252,254,255,257,258,280,293,302,308,363,455,461,468],regim:[6,316,323,380,467],region:[],region_spher:8,region_styl:329,regist:[8,116,142,304,422,423],regoin:6,regress:484,regspher:165,regstrip:331,regul:6,regular:[1,3,9,41,62,88,163,167,188,201,211,228,320,349,380,455,458,460,462],reigon:484,reinhardt:[317,318],reject:[165,214,422,473],rel:[1,6,14,27,36,41,59,71,122,130,140,144,147,148,150,165,174,191,194,201,207,211,217,218,221,228,234,248,249,270,274,279,288,290,291,297,305,308,310,315,316,320,327,331,348,349,356,387,390,391,408,409,410,424,450,459,467,472,476,479,485],relat:[],relatic:[221,237],relationship:[6,284,333,348,450,479,484],relax:[],releas:[0,5,7,8,13,212],relect:[3,414],relev:[2,6,12,41,78,80,111,128,165,169,191,195,196,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,217,218,219,222,224,225,227,228,229,232,233,239,240,241,243,244,245,246,248,249,251,259,260,261,262,263,264,265,266,267,268,273,277,278,279,281,282,285,287,289,290,291,294,295,296,297,302,306,308,309,310,315,316,319,320,321,322,323,324,325,326,327,328,330,331,348,356,366,367,371,377,379,380,382,383,384,387,389,390,391,392,393,398,400,401,402,404,405,406,408,409,414,415,419,424,431,438,441,449,450,451,455,471,485],reli:[3,12,285,387,423,451,458,468],reloc:12,remain:[7,12,33,37,41,50,55,59,71,87,104,145,146,147,148,152,153,154,155,157,168,178,184,185,188,195,196,201,203,204,207,208,215,217,236,237,244,252,253,257,258,269,270,272,277,278,300,308,311,312,313,319,320,331,333,340,343,357,369,387,394,407,414,439,453,458,459,463,468,470,472,476,479,484,485],remaina:369,remaind:[165,188,218,279,308,321,444,458],remap:[3,6,12,59,61,71,148,165,187,207,217,234,249,270,348,458,459,460],remedi:[6,479],rememb:2,remov:[2,3,6,8,9,13,54,71,77,114,116,140,144,145,146,147,148,152,153,154,155,157,158,165,168,169,194,203,207,212,225,236,237,242,248,250,252,257,258,269,270,272,278,284,293,294,296,308,311,312,313,315,331,348,358,382,409,458,461,469,470,484,485],remove_bia:8,remove_bias_al:8,remove_molecul:200,remove_sourc:200,remove_speci:200,ren:164,renam:[12,332,469],render:[12,13,188,190,191],rendon:[252,253],reneighbor:[3,8,12,39,57,71,207,211,228,308,321,331,383,475,476],renssela:278,renumb:71,reorder:[3,12,39,455],repeat:[2,6,190,191,207,214,215,228,301,351,369,442,444,446,453,472],repeatedli:2,repel:234,repes:188,replac:[2,3,6,11,12,41,63,89,90,117,143,144,145,146,147,148,151,152,153,154,155,157,158,188,190,191,192,203,204,206,207,208,209,211,214,218,236,256,281,288,290,379,401,459,460,465,466,476,484,485,486,488],replic:[],replica:[],replica_fil:12,report:[],repositori:[7,12,395,421,422,423],reprens:320,repres:[1,3,6,8,9,12,15,40,41,42,59,67,71,90,113,116,177,185,188,190,203,204,205,206,207,208,209,215,221,229,231,236,239,252,276,278,280,288,293,294,297,305,320,322,329,349,358,364,369,390,397,407,408,409,410,411,412,417,420,422,423,445,446,453,455,458,468,470,473,479,484,486],represent:[3,6,8,57,59,134,167,188,229,230,276,320,369,387,390,424,458,461,479],reprocess:463,reproduc:[3,252,326,379,385,391],repul:410,repuls:[6,7,9,36,40,45,46,108,234,284,325,326,329,365,369,377,379,383,387,391,393,407,410,413,438,444,447,450,451,468],reqir:[284,286],request:[3,6,8,12,41,168,185,188,233,239,291,308,310,346,348,414,422,423,453,463,468,472,484,485,486],requir:[],rerun:[],rescal:[],research:[5,7,239,243,453,472],resembl:288,reserv:[12,233,479],reservoir:[91,228,232,236,320],reset:[],reset_atomic_reference_posit:200,reset_dt:8,reset_target:8,reset_tim:200,reset_timestep:[],resid:13,residu:233,residue1:359,resist:[6,233],resolut:[205,441],resolv:[215,276,308,409],resort:3,resourc:[7,364,385],respa:[3,16,222,233,252,361,364,365,366,367,368,369,370,371,372,373,374,375,377,378,379,380,382,383,384,385,386,387,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,408,409,410,411,412,413,415,417,419,421,422,423,424,425,430,431,432,433,434,435,436,437,438,440,441,442,443,444,446,447,449,450,451,466,467,478,484],respect:[1,6,9,10,13,14,15,17,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,42,43,45,46,47,48,49,51,53,54,56,59,70,71,87,89,96,97,109,112,118,122,143,147,150,152,159,163,164,171,172,174,175,176,177,179,180,182,183,185,190,191,207,208,213,214,215,217,231,234,236,237,239,252,254,255,256,257,258,259,267,269,270,272,284,285,293,294,297,305,307,320,325,328,334,336,337,338,339,342,344,346,348,349,353,356,357,362,363,364,365,367,369,370,371,372,373,374,375,377,378,379,382,383,385,386,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,410,411,414,415,416,417,419,424,425,429,430,431,440,441,442,443,444,445,446,447,449,450,451,455,459,467,468,471,479,484,486,488],respon:9,respond:[6,7,148,217,387,419],respons:[6,7,250,316,323],resquar:[],rest:[6,8,12,282,286,292,369,409,410,475,476,479],restart1:276,restart2:276,restart2data:[],restart:[],restartfil:[12,13],restor:[3,8,60,61,165,195,196,282,297,305,310,475,476],restore_bia:8,restore_bias_al:8,restrain:[],restraint:[9,216,250,292,307,398],restratin:292,restrict:[],result:[1,2,3,6,7,9,11,12,13,15,16,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,43,45,46,47,48,49,51,53,54,56,63,64,66,67,71,75,87,90,91,93,104,106,109,110,112,114,115,116,117,118,119,141,143,145,148,152,159,160,162,164,165,168,171,172,174,175,176,177,179,180,182,183,185,188,190,191,194,197,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,221,224,227,228,229,231,236,237,239,243,250,252,254,255,256,257,258,259,267,269,270,271,272,275,276,284,285,290,291,293,295,296,308,311,313,316,317,318,320,321,322,324,325,326,328,330,333,334,336,337,338,339,342,344,348,349,358,361,363,364,365,367,370,371,372,373,374,375,377,378,379,382,383,385,386,387,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,409,410,411,414,415,416,417,419,423,424,425,431,440,441,442,443,444,445,446,447,449,450,451,453,455,458,460,461,462,463,467,468,469,470,472,483,484,485],resum:484,retain:[2,212,213,369,455],retart:[33,50,178,340],retir:422,retreiv:8,retriev:[6,8,226,411,412,484],reus:[3,470],rev:[6,13,64,70,110,140,141,153,201,230,236,238,250,252,253,256,270,275,285,288,293,297,308,312,315,317,318,323,355,369,377,378,379,382,385,386,387,390,391,396,401,408,409,410,412,420,424,430,440,442,443,444,447,453],revers:[2,6,8,87,176,214,234,252,273,274,284,301,316,317,323,358,407,467,479],review:[140,284,297,315,421,430,453,472,479],rewind:347,rewrap:188,rewrit:[5,12],rewritten:19,rezwanur:419,rfac0:[140,430],rfactor:308,rfile:293,rg0:306,rgb:191,rh3:164,rh4:164,rhaphson:3,rheolog:6,rhi:441,rho0:[410,427,429,436,437],rho0_meam:410,rho:[40,113,239,319,364,370,372,373,385,410,411,412,424,433,435,483],rho_0:[436,437],rho_alpha_beta:385,rho_bkgd:410,rho_colloid:325,rho_e:320,rho_fin:319,rho_i:[411,412],rho_initi:319,rho_ref_meam:410,rho_wal:325,rhodo:10,rhodopsin:[1,10],rhosum:[],ribier:355,richardson:293,richi:[9,19],rick:[284,285,378],rick_and_stuart:285,ridg:[9,19],right:[3,6,11,12,41,142,165,183,184,187,211,214,234,239,249,273,333,351,379,445,458,461,468,484],rightmost:[41,211],rigid:[],rigidifi:293,rii:[89,90],rij:[212,213,274,383,438],rin:[393,404,405],ring:[],rino:[73,447],rinv:348,rirj:[326,391],rise:29,risi:[140,430],risk:[8,292,467],rix:[89,90],rjk:[212,213],rjone:[7,9,13],rlo:441,rmask:[3,484],rmass:3,rmax:[166,212],rmdir:469,rmin0:[140,430],rmin:[166,213,401],rmsd:319,rnemd:6,robin:191,robust:[354,355,356],rock:410,rockett:420,rod:293,rodata:12,rodnei:288,roi:7,role:315,roll:12,room:[57,59],root:[11,87,89,90,189,315,319,363,385,465],rosati:39,rose:410,ross:410,rosski:276,rosybrown:191,rot:[6,91,276,292,315,485],rotat:[],rotaton:461,rough:[6,165,190,330],roughli:[7,10,12,41,148,163,190,205,228,236,237,251,252,264,280,293,308,311,312,315,349,358,363,426,428,460,467],round:[1,3,12,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,71,109,112,143,152,171,172,174,175,176,177,179,180,182,183,185,191,197,210,217,224,227,231,236,252,254,255,256,257,258,259,267,269,270,272,285,293,295,296,311,313,324,328,334,336,337,338,339,342,344,349,361,364,365,367,370,371,372,373,374,375,377,378,379,382,383,385,386,388,389,390,391,392,393,397,399,400,401,402,403,404,405,406,407,408,411,415,416,417,419,424,425,431,440,441,442,443,444,446,447,449,450,451,460,467,483,484],rous:229,rout:[87,393,407],routin:[5,6,8,11,15,16,38,39,56,88,169,171,239,421,441,471],roux:[6,221,237,445,479],row:[6,65,66,68,69,75,79,90,92,93,104,106,108,114,115,116,119,145,153,160,162,164,203,204,206,207,208,209,242,293,320,322,330,387],royalblu:191,rozero:410,rperp:[249,301],rpi:278,rpm:12,rrespa:[1,3,5,7,8,16,195,196,249,252,359,364,365,366,367,368,370,371,372,373,374,375,377,378,379,380,382,383,384,385,386,387,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,408,409,410,411,412,413,415,417,419,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,440,441,442,443,444,446,447,449,450,451,467],rspace:3,rsq:[441,448],rsurfac:320,ru3:164,ru4:164,rub:20,rubia:[411,412],rudd:[414,441],rudra:[7,9],rudranarayan:[7,278],ruiz:201,rule:[],run1:[6,362,484],run2:[6,345,347,362,484],run3:[6,362,484],run4:[6,362,484],run5:[6,362,484],run6:[6,362,484],run7:[6,362,458,459,463,484],run8:[6,362,484],run:[],run_styl:[],runloop:347,runtim:[12,17,190,363],russia:9,rutherford:320,rutuparna:[442,444],ryan:9,ryckaert:[296,342],rycroft:163,s00:419,s0st:6,s2050:1,s2629:385,s319:200,s_fact:298,s_i:[6,387],s_ij:6,sack:7,saddl:[251,358],saddlebrown:191,sadigh:[201,385,411,412],saed_vtk:118,safe:[12,190,221,237,363],safe_zon:3,safest:[3,308],safeti:298,safezon:423,safran:450,sagui:[349,382],sai:[1,3,12,13,191,422,423,456],said:356,sakai:443,salmon:191,salt:[380,389,410,458],same:[1,2,3,4,6,8,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,38,39,40,41,43,44,45,46,47,48,49,50,51,53,54,56,57,59,62,63,65,69,71,72,77,79,81,82,84,85,87,88,89,90,91,92,94,97,103,104,105,108,109,110,112,113,115,116,117,140,141,142,143,144,145,146,147,148,151,152,153,154,155,157,158,159,161,163,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,185,186,187,188,189,190,191,194,195,196,197,200,201,203,206,207,208,209,210,211,212,213,214,215,217,218,222,223,224,227,228,229,230,231,232,233,234,235,236,237,238,239,242,249,252,254,255,256,257,258,259,267,269,270,271,272,274,275,276,278,279,280,283,284,285,286,288,289,290,291,292,293,295,296,297,302,305,307,308,309,310,311,312,313,314,315,316,317,318,319,320,322,323,324,326,327,328,329,331,333,334,335,336,337,338,339,342,344,348,349,351,352,353,357,358,359,360,361,362,363,364,365,367,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,413,414,415,416,417,419,420,424,425,431,438,439,440,441,442,443,444,446,447,449,450,451,453,455,456,458,459,460,461,463,466,467,468,469,470,471,472,476,479,483,484,485,487],sampl:[1,2,4,6,9,10,11,12,14,91,144,158,163,187,190,203,204,207,208,216,218,226,228,230,232,252,253,276,279,288,290,294,305,306,308,312,315,318,330,359,369,384,458,472],sample_frequ:200,san:419,sandia:[0,5,7,9,13,14,17,70,111,388,410,419],sandybrown:191,saniti:[292,359],satellit:[6,147],satifsi:484,satisfi:[3,12,73,118,140,163,164,215,239,256,296,328,356,359,391,472],satur:380,save:[6,8,12,19,40,59,185,190,205,214,229,230,236,237,238,279,288,320,349,359,361,369,460,463,470],sb3:164,sb5:164,sc3:164,scalabl:[],scalar:[],scale:[0,1,3,4,5,6,9,10,13,18,40,59,63,91,113,116,117,140,151,159,185,188,190,191,194,195,196,200,201,204,215,217,228,232,233,234,236,238,239,250,252,254,255,256,257,258,276,280,283,284,293,299,300,308,310,312,315,317,318,320,324,331,348,349,351,357,360,364,365,366,380,384,387,391,394,408,409,410,419,426,428,445,459,461,463,467,470,472,475,476,484,485],scale_factor:[426,428],scalegamma:239,scalexi:[3,215,252,256],scalexz:[215,252,256],scaleyz:[215,252,256],scan:[191,213,347,459],scatter:[11,118,164],scatter_atom:11,scatter_coord:11,scenario:[6,40,61,214,282,291,308,321,329,359,462,463,467,475],scf:479,schaik:407,schedul:453,schell:443,schemat:214,scheme:[6,9,18,229,230,252,276,288,296,320,348,445],schlitter1:319,schlitter2:319,schlitter:319,schmid:383,schneider:[236,238],schoen:348,schr:479,schroding:387,schroeder:479,schulten:[237,297,349,479],schunk:308,schwen:9,sci:[73,328,378,412,420],scienc:[8,200,214,233,297,317,385,411,443],scientif:[140,385],scm:11,scratch:[12,41,211],screen:[],screenshot:11,scripe:11,script:[],scripta:67,scsl:12,sdk:[],sea:11,seagreen:191,seamlessli:282,search:[0,2,3,8,12,166,168,191,192,308,354,355,356,358,360,453,459,460,472,484],seashel:191,sec:[12,478,483],second:[1,3,6,9,10,11,12,16,54,57,59,61,71,88,91,105,112,133,134,138,141,142,153,159,163,164,166,167,168,187,188,191,194,195,203,204,206,207,208,209,214,228,229,234,249,251,276,290,292,293,296,297,305,306,308,317,318,320,331,348,351,355,356,358,359,363,368,369,370,372,373,378,379,385,387,388,391,392,394,398,401,410,414,416,440,443,444,445,447,451,453,454,455,456,458,460,465,467,471,472,476,479,483,484,485,486,488],secondari:[3,177],sectinn:487,section:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,58,59,63,64,65,66,67,68,69,71,74,75,78,79,80,81,83,86,87,88,89,90,91,92,93,96,97,98,99,100,101,103,104,105,106,107,108,109,111,112,113,114,115,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,144,145,146,148,149,150,151,152,153,154,155,156,157,158,159,160,161,163,164,166,171,172,173,174,175,176,177,178,179,180,182,183,184,185,188,189,190,192,194,197,198,199,200,201,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,220,221,223,224,225,227,228,229,230,231,233,235,236,237,238,239,240,241,242,243,245,246,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,265,267,268,269,270,271,272,274,275,276,278,279,280,282,283,284,285,286,287,288,289,290,293,295,296,297,298,299,300,301,302,304,308,311,312,313,314,315,316,317,318,319,320,321,323,324,326,327,328,331,332,334,335,336,337,338,339,340,342,343,344,349,350,351,353,357,358,360,362,363,364,365,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,453,454,455,456,458,459,463,466,467,468,469,471,472,473,476,477,479,484,485],section_acceler:[9,12,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,109,112,143,152,171,172,174,175,176,177,179,180,182,183,185,197,210,217,224,227,231,236,252,254,255,256,257,258,259,267,269,270,272,285,293,295,296,311,313,324,328,334,336,337,338,339,342,344,349,364,365,367,370,372,373,374,375,377,378,379,382,383,385,386,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,411,415,416,417,419,424,425,431,440,441,442,443,444,446,447,449,450,451,467],section_accerl:385,section_command:[0,1,9,333],section_error:[7,12],section_exampl:[2,6],section_histori:[7,12],section_howto:[6,8,9,11,12,40,42,57,59,64,66,67,68,70,71,72,73,75,76,77,78,80,81,82,83,84,85,86,87,89,90,93,94,95,96,97,98,99,100,101,104,106,109,110,111,114,116,117,120,135,136,137,138,140,141,145,147,159,160,162,163,167,186,203,251,262,265,268,323,368,381,453,458,461,472],section_modifi:[6,7,42,188,190,476],section_packag:12,section_perf:7,section_python:[6,12],section_start:[3,4,6,9,11,352,358,452,453,467,473,476],section_tool:[6,7],see:[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,61,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,245,246,247,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,267,268,269,270,271,272,274,275,276,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,295,296,297,298,299,300,301,302,304,305,307,308,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,331,332,333,334,335,336,337,338,339,340,342,343,344,345,348,349,351,352,353,355,356,357,358,359,360,362,363,364,365,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,449,450,451,452,453,454,455,456,458,459,460,461,463,464,465,466,467,468,470,471,472,473,474,475,476,477,478,479,484,485,486,487,488],seed1:473,seed2:473,seed:[3,165,168,187,190,199,201,212,213,214,216,218,225,228,229,230,236,237,238,239,276,279,283,288,293,308,312,315,320,327,371,383,384,453,468,473,479,484,485],seed_com:237,seed_drud:237,seek:[41,211],seem:[6,215,321,355,410,467],seen:[12,239,329],segement:3,segment:[3,4,6,7,12,40,42,82,113,194,265,293,308,383,397,423,438,439,458,466,468],select:[6,12,15,59,61,71,117,118,154,159,164,165,185,190,192,199,201,207,208,217,218,225,228,233,234,249,297,307,315,316,321,323,325,327,328,330,346,348,354,358,360,363,393,398,410,455,459,461,467,468,472,477,484],self:[],sellerio:13,semi:[3,192,200,201,273,275,459],semiax:144,semimet:387,send:[0,3,5,7,8,11,12,191,233,455],sender:[3,455],sens:[1,3,6,7,18,39,41,42,59,184,188,203,206,207,208,209,211,214,217,229,230,235,236,237,238,279,283,288,294,308,315,316,320,323,331,358,379,399,403,442,443,444,453,458,463,467,470,475],sensabl:233,sensibl:104,sensit:[2,6,73,215,288,485],sent:[191,233,346],sep:[6,11,484],separ:[2,6,7,9,12,13,40,41,76,116,122,140,163,165,168,191,192,200,204,211,212,213,214,215,218,221,228,236,237,252,264,276,279,280,282,284,288,293,296,308,311,312,313,316,323,331,349,363,370,372,379,380,382,399,408,409,410,416,421,430,439,440,441,444,450,456,458,459,460,467,470,475,479,485,486,487],seper:380,sequec:484,sequenc:[2,3,12,41,59,188,190,191,192,211,230,251,331,351,358,394,420,473,484],sequenti:[59,60,191,420,459],sequestr:7,ser:275,seri:[3,4,6,13,18,140,188,190,191,204,209,229,230,279,362,365,390,410,414,424,431,441,456,465,466,475,476,484],serial:[],serial_icc:12,serious:8,serv:[6,128,167,308,438],server:[1,235,363],set:[],set_callback:226,set_energi:226,set_vari:[6,11,456],setarea:239,sete:[203,214],setenv:[11,12,376],setfl:[13,364,385],setforc:[],setgamma:239,setmask:8,settl:215,setup:[3,4,6,7,8,11,12,13,16,37,40,55,59,71,87,91,153,166,167,168,169,184,191,200,214,217,308,321,343,359,360,363,439,455,458,466,486,488],setup_pre_exchang:8,setup_pre_forc:8,setup_pre_force_respa:8,setvel:[],seven:412,seventh:[133,138],sever:[1,4,5,6,7,8,10,11,12,13,15,18,39,40,63,71,87,159,166,169,184,188,189,192,194,200,212,213,215,230,236,239,243,252,278,280,282,293,297,308,315,324,346,351,356,363,366,369,373,384,385,394,403,407,410,414,420,422,423,429,453,456,460,464,472,476,479,484,485],sfactor:[3,190,191,357],sfftw:12,sgi:12,sgmc:201,sgrid:308,sgroup:163,shade:190,shake:[],shan:[17,285,378],shanghai:[9,13],shape:[2,3,6,8,40,41,58,59,62,71,82,113,130,144,148,149,165,167,187,190,191,194,195,207,211,215,217,236,250,252,254,257,260,261,269,270,283,308,321,329,368,390,424,455,458,459,460,468],shapei:[113,458],shapex:[113,458],shapez:[113,458],shapshot:463,share:[],shared0:[],sharon:293,sharp:[329,410,444],shawn:9,shear:[3,4,5,6,7,9,59,61,148,187,215,217,239,252,270,308,323,326,391,408,409,419,427,429],sheet:462,shell:[],shen:9,shenderova:365,sheppard:355,shflag:12,shield:[],shift:[],shiftse:308,shiga:[6,252,253],shini:[190,487],shinoda:[6,9,252,253,425],shiny:190,ship:192,shlib:[11,12],shlibflag:12,shock:[4,9,194,199,250,256,283,327,401],shockvel:[250,283],shortcut:[215,252,280,293],shorter:[3,119,228,274,360,414,466],shortest:[190,360,366,467],shorthand:191,shoul:446,should:[1,2,3,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,42,43,44,45,46,47,48,49,51,53,54,56,59,61,70,71,73,81,83,87,91,96,97,98,102,103,109,110,112,141,143,144,147,148,151,152,153,155,158,161,163,165,167,169,171,172,173,174,175,176,177,179,180,182,183,185,186,187,188,190,191,195,196,197,198,201,205,210,211,212,213,214,215,217,218,220,221,223,224,225,226,227,228,229,230,231,232,234,236,237,238,239,241,242,243,244,249,252,254,255,256,257,258,259,264,267,269,270,272,274,275,276,277,278,279,280,281,283,284,285,286,287,288,289,290,291,292,293,295,296,302,305,308,309,311,312,313,314,315,316,319,320,321,323,324,325,326,327,328,329,330,331,333,334,335,336,337,338,339,342,344,349,351,352,354,356,357,358,359,360,361,363,364,365,367,368,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,399,400,401,402,403,404,405,406,407,408,409,410,411,414,415,416,417,418,419,421,422,424,425,426,428,431,438,440,441,442,443,444,445,446,447,449,450,451,453,454,455,456,458,459,460,461,462,463,465,466,467,468,470,474,475,476,479,484,485,486],shouldn:[3,8],show:[6,11,12,116,274,358,393,410,441],shown:[1,12,16,17,41,96,97,118,140,151,164,184,211,214,236,252,270,276,279,288,315,348,387,388,390,391,407,424,458],shrank:71,shrink:[3,6,41,57,59,71,167,187,188,190,195,196,199,211,217,218,234,239,274,308,327,331,348,349,356,379,399,403,414,458,459],shrunk:71,shut:[6,11,359,457],si4:164,siam:328,sic:[4,379,394,410,416,440,442,444,447],sic_tersoff:420,sicc:[386,440,442,444,447],sicg:[442,444],sicsi:[386,440,442,444,447],side1:461,side2:461,side3:461,side4:461,side:[3,8,41,57,61,155,165,201,202,211,214,218,228,234,239,249,274,279,287,305,325,329,330,331,358,379,390,391,424,446,456,458,461,468],sidewai:4,sienna:191,siepmann:323,sigam:377,sigam_ii:397,sige:[442,444],sigma0:369,sigma14:407,sigma1:369,sigma2:369,sigma:[3,6,10,45,46,50,54,87,171,188,191,195,196,228,239,274,308,324,325,329,351,360,363,365,368,369,370,374,375,377,382,383,384,386,387,390,392,393,397,398,399,400,401,402,403,404,405,406,407,413,414,424,425,434,440,446,467,483,484,485],sigma_14:374,sigma_:380,sigma_c:377,sigma_cc:[365,377],sigma_h:389,sigma_i:[388,414],sigma_ii:[397,446],sigma_ij:[397,414,446],sigma_j:414,sigma_max:384,sigma_ss:377,sign:[3,6,12,176,184,273,305,328,333,466,475,484],signal:457,signicantli:17,signifi:[3,66,75,90,93,104,106,114,145,160,162],signific:[7,12,18,86,229,250,253,288,308,321,387,390,410,414,486],significantli:[1,6,39,141,163,239,252,292,387,440],sij:204,sikandar:17,silbert:391,silent:[191,456,469],silicon:[386,410,440,458],sill:419,silver:191,sim:[9,425],similar:[5,6,7,8,9,12,17,18,40,41,46,59,68,87,112,115,116,141,142,165,166,188,191,194,195,196,203,205,211,226,227,229,236,242,243,253,282,283,288,292,293,312,315,325,326,328,330,349,354,355,357,365,368,369,383,385,387,391,407,408,414,419,420,429,455,460,465,467,472,474,476,479,484,485,486,488],similarli:[3,6,7,8,59,112,161,167,169,187,188,190,191,202,203,206,207,208,209,213,217,223,234,252,254,255,257,258,278,280,293,294,296,308,315,316,323,329,334,349,351,358,361,373,391,403,440,455,458,461,462,467,468,472,487],simluat:[6,39,191,308,408,459,460],simlul:[293,320],simmul:323,simpl:[],simpler:[8,42,191,293],simplest:[3,8,40,66,75,90,93,104,106,114,116,145,160,162,284,479],simpli:[1,3,6,8,11,12,14,17,66,71,75,88,90,93,95,104,106,113,114,119,145,160,162,168,169,191,194,195,196,203,206,207,208,209,213,215,217,221,226,235,237,242,252,276,280,291,293,294,316,322,323,348,349,351,357,358,363,373,382,394,403,410,414,455,456,463,466,473,476,483,484],simplif:387,simplifi:[201,292],simplist:11,simualt:349,simul:[],simulatan:363,simulation_nam:423,simulatoin:[12,459],simult:363,simultan:[6,7,15,16,217],sin:[217,249,325,328,330,420,458,461,468,484],sinc:[0,1,2,3,6,8,9,10,11,12,13,15,16,21,22,33,39,41,44,54,59,61,64,67,71,73,89,90,110,116,118,144,145,155,163,167,168,170,171,173,178,188,190,191,194,195,196,197,198,201,202,203,204,205,206,207,208,209,210,211,214,215,216,217,218,222,223,228,230,232,235,236,238,239,249,252,254,255,256,257,258,261,264,270,274,276,279,281,282,288,291,293,297,307,308,316,320,321,322,323,325,326,329,330,331,332,334,335,347,349,356,357,358,359,362,363,364,365,369,372,373,374,375,377,378,382,383,384,385,386,390,391,392,394,395,396,398,399,401,402,403,404,405,406,407,408,409,410,411,412,414,417,420,421,422,423,424,425,430,431,440,441,442,443,444,447,451,453,455,456,458,459,460,461,463,466,467,468,469,470,472,476,479,483,484,485,487],sinclair:[7,385,439],sine:420,singapor:140,singh:364,singl:[1,2,3,6,7,8,9,11,12,14,15,16,17,18,40,41,42,57,59,61,63,65,66,68,69,75,77,79,87,88,90,92,93,104,106,108,113,114,115,116,117,119,142,145,160,162,163,165,188,190,191,192,194,199,202,203,204,206,207,208,209,211,213,214,215,218,221,225,227,232,239,242,249,252,253,256,264,276,278,279,281,292,293,294,296,298,304,308,310,320,322,325,326,328,330,331,333,348,349,354,357,358,359,360,362,363,364,365,369,374,376,378,384,385,386,387,388,391,392,393,394,395,396,410,411,412,416,417,420,421,422,423,424,430,431,440,442,443,444,447,453,454,456,458,465,466,467,468,469,470,471,472,475,484,487,488],singleel:369,singular:[407,408,409],sinnott:[285,365,378],sinusoid:[165,217,325,326,328,330],sio2:447,sio:378,sirk:[141,438],sisic:[386,440,442,444,447],sisisi:[386,440,442,443,444,447],sister:376,sit:[275,458],site:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,67,70,87,233,239,240,296,349,364,369,379,385,389,399,403,407,417,422,423,445],situat:[9,215,228,239,252,276,294,355,369],sival:164,six:[6,133,138,140,204,206,416,420],sixth:416,sixthpow:[375,414],size:[],size_restart:8,sizex:258,sjplimp:[0,7,11,12],sjtu:9,skew:[3,6,58,59,167,190,217,252,458,461],skin:[3,12,39,61,73,115,166,168,228,264,293,320,359,360,363,418,476,483],skip:[12,16,33,178,278,347,357,362,398,458,463,466,475,484],skyblu:191,slab:[3,6,71,153,207,279,305,348,349,359,414],slateblu:191,slategrai:191,slater:[],sleight:54,slepoi:410,slice:[],slider:11,slight:[3,12,320],slightli:[1,6,39,40,188,189,190,192,288,293,349,365,379,397,399,403,442,444,447,453,466,486],sligthli:382,sliozberg:438,slip:[3,194,308,324,330],sllod:[],slope:[6,103,104,316,318,323,380,484],slot:1,slow:[3,6,7,12,39,229,233,236,237,250,308,315,348,358,363,414,467,477,479,485],slower:[1,10,17,39,237,349,363,369],slowest:[320,455],slowli:[12,71,211,324,356,431,460],slurm:12,slurm_localid:12,sm3:164,small:[],smallbig:3,smaller:[1,3,6,12,16,17,39,56,59,61,71,119,163,167,188,190,191,201,218,222,228,239,275,293,308,318,333,348,349,354,363,397,414,439,446,448,458,465,467,484,488],smallest:[3,70,72,163,250,290,484],smallint:3,smallq:349,smallsmal:[3,12],smart:230,smd:[],smd_contact_radiu:468,smd_lammps_userguid:9,smd_mass_dens:468,smd_user_guid:[],smi:[3,363],smirichinski:9,smit:228,smith:417,smmoth:468,smooth:[],smoother:165,smoothli:[54,140,316,323,374,392,405,407,444,451],smpd:12,sn2:164,sn4:164,sna:[],snad:[],snap:[],snapcoeff:430,snaphot:463,snapparam:430,snapshot:[],snav:[],snb:17,snow:191,soc:393,socket:[12,17,18,235,455],soft:[],softer:[325,329],softwar:[1,6,11,12,14,15,16,17,18,19,163,233,278,294],sole:[212,213,358,420,427,429],solid:[4,6,7,9,10,39,40,41,59,70,73,91,141,163,200,211,215,217,222,242,252,254,255,257,258,274,275,280,293,315,318,349,351,370,401,419,427,429,458],solut:[3,6,13,163,215,222,250,291,296,308,329,484],solv:[3,9,12,18,239,284,296,318,320,349,355,409],solvat:[4,10,165],solvent:[4,7,13,61,71,166,168,211,225,229,230,236,252,291,293,305,308,316,323,324,374,377,379,380,389,399,408,409,424,439,458,468],solver:[],some:[1,2,3,4,6,7,8,9,10,11,12,13,16,17,18,39,40,41,55,61,63,71,102,105,107,113,117,119,144,145,146,157,158,159,165,168,173,176,184,186,188,190,191,194,195,196,199,201,202,203,204,206,207,208,209,211,213,214,215,216,225,228,250,252,253,281,282,284,286,293,297,309,315,320,321,322,324,325,331,346,347,348,349,354,355,356,357,358,359,360,363,366,368,369,376,379,385,387,394,414,422,423,439,441,453,455,456,457,458,460,463,464,465,466,467,468,470,472,475,476,483,484,485,488],somehow:3,someindex:332,someon:[7,11,356],someth:[2,3,7,8,11,12,59,215,252,325,328,330,359,394,456,465],sometim:[2,3,6,8,12,18,207,215,252,316,323,348,360],somewhat:[7,9,12,70,145,155,203,252,348],somewher:[17,253,387],soon:[201,214,225,228,233,422],sophist:[7,142],sorensen:472,sort:[3,13,16,39,71,188,191,192,233,358,359,363,384,459,460,487],sound:[128,239,250,298,436,437],soundspe:[436,437],sourc:[],source_integr:200,sourceforg:11,south:140,souza:316,space:[2,3,6,8,11,12,18,41,59,71,118,140,154,159,164,165,185,187,190,195,196,199,206,207,208,211,213,217,218,234,239,246,249,252,275,276,291,294,298,308,325,327,328,330,333,348,349,351,357,358,359,370,372,373,379,382,385,387,397,399,403,410,417,420,425,441,448,450,455,458,461,470,476,479,484,485],spahn:391,span:[2,12,38,71,195,196,207,234,293,348,364,365,369,378,385,388,395,396,410,411,412,416,420,430,440,442,443,444,447,452,453,461,462,484],spars:[71,185],spatial:[],spawn:233,spc:[],spcpu:476,speak:[17,308,315],spearot:[118,164,294],specfi:[12,107,234,461],speci:[],special:[],special_bond:[],specif:[1,2,3,6,7,8,9,10,12,13,15,16,17,18,22,29,33,40,41,42,50,63,71,108,113,115,116,145,147,150,165,173,178,188,190,191,192,194,195,196,199,200,203,204,206,207,208,209,211,214,216,225,226,228,229,233,239,247,279,281,282,285,293,315,320,321,325,331,335,349,356,358,363,365,368,369,381,385,390,391,394,395,396,397,410,414,422,423,424,439,440,445,446,455,458,459,463,464,465,467,468,474,475,476,483,484,485,486],specifi:[2,3,6,7,8,9,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,59,61,63,65,66,68,69,70,71,73,75,76,77,78,79,80,81,83,85,86,87,88,90,91,92,93,94,95,96,97,98,99,100,101,103,104,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,141,143,145,147,152,153,154,159,160,161,162,163,164,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,187,188,189,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,227,228,229,230,231,232,234,235,236,237,239,240,241,242,244,247,248,249,250,251,252,253,254,255,256,257,258,259,264,267,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,301,302,305,306,307,308,309,310,311,312,313,315,318,319,320,322,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,342,343,344,347,348,349,351,352,353,356,357,358,359,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,479,483,484,485,486,487,488],specifii:[230,239],speciti:467,spectral:430,spectrum:[9,140,283,288],sped:[39,250],speed:[1,3,6,9,12,14,15,16,17,18,19,39,41,128,188,191,211,236,239,250,283,298,308,315,321,327,348,349,358,363,369,379,414,436,437,442,453,467,473],speedup:[1,18,349,467],spefici:[165,190,393],speicifi:[],spell:461,spellmey:[6,171,470],spend:[12,202],spent:[1,12,13,15,453,472,477],sph:[],sph_lammps_userguid:9,sph_user_guid:[],sphere1:239,sphere:[],spheric:[],spheriod:[3,6],spherioid:308,spheroid:[6,293,308],spike:116,spin:[9,40,113,326,366,387,458],spirit:[7,205],spit:3,spline:[],split:[1,3,6,12,18,41,203,207,211,237,252,328,348,363,446,452,455,467],splittol:[6,348],sppark:6,spread:[1,6,12,333,466],spring:[],springer:297,springgreen:191,sptial:71,sputter:218,sq2:[3,351],sqrt:[2,3,59,81,89,228,236,237,238,274,308,324,326,351,377,383,385,389,391,410,414,484],squar:[],squeez:[215,234,408,409],squibb:[5,7],sr2:164,src:[0,1,3,4,6,7,8,9,11,12,14,15,16,17,18,19,163,188,226,296],srd:[],srolovitz:385,srp:[],srun:12,ssao:[190,487],stabil:[6,9,236,252,369,422],stabl:[6,64,128,239,256,292,298,369,479],stabli:229,stack:[3,8,70],stage:[3,8,87,194,226,251,287,331,358,453,472,484],stagger:[1,3,191,349,465,474,484],stai:[3,14,17,195,196,250,266,283,363,458],stamp:[315,459],stamped:12,stan:17,stand:[0,6,7,12,13,289,422,423,456],standard:[],stanford:9,starikov:320,start:[],start_6:389,start_7:467,startstep:484,stat:[12,54,169,274,288,356,383],statcoul:483,statcoulomb:483,state:[],statement:[3,456,457],stationari:[],statist:[3,6,12,39,41,64,205,212,213,214,229,230,236,237,238,278,279,283,288,293,296,308,319,320,321,356,358,365,383,384,391,408,450,453,460,466,468,472,475,476],statu:[3,12,54,60,121,169,216,221,237,378,457,472],statvolt:483,std:12,stdin:[3,12,347],steadi:[6,250,256,283],steelblu:191,steep:441,steepest:[7,355],steer:[7,9,216,219,297],stegailov:320,steinhaus:479,stencil:[3,239,348],step:[1,2,3,6,8,10,11,12,13,14,15,16,17,18,19,39,71,91,96,97,110,116,117,128,141,151,161,163,188,189,190,191,192,194,195,196,200,201,203,204,205,206,207,208,209,211,212,213,214,215,217,218,221,222,225,226,228,230,233,234,237,250,264,274,275,281,282,283,284,285,286,294,296,297,298,308,310,313,314,315,316,317,318,319,320,321,322,323,330,331,333,347,348,354,356,358,359,383,389,393,410,422,423,453,455,456,460,462,463,465,466,467,472,473,475,476,479,484,488],stepani:297,stepwis:87,stesman:315,steve:[0,5,7,13],steven:214,stiff:[6,40,51,212,213,275,276,356,419,479],stile:380,still:[1,3,6,9,11,12,13,14,17,38,41,61,71,108,116,163,169,185,186,188,191,195,196,211,232,236,264,284,288,308,320,333,348,349,354,375,385,390,391,394,398,408,418,422,424,431,439,458,460,466],stilling:[3,5,7,15,88,142,386,412,420,439,440,447,470],stipul:233,stl:[9,71,301,304],stl_surf:304,stochast:[4,7,9,194,230,308,315,330,384],stoddard:382,stoke:[239,324],stoll:[236,238],stone:[9,19,349,382],stop:[],stopstep:484,stopthresh:[41,211],storag:[3,12,15,322,363,470],store:[],store_st:309,storm:12,stouch:7,str:484,straatsma:6,straddl:[3,59,61,155,234,293,305,331,458,462,468],straight:293,straightforward:[13,387,479],strain:[2,3,6,59,80,121,124,125,130,131,132,136,137,187,215,217,250,252,256,408,409],strang:[185,190,484],strategi:[],stratford:239,strcmp:333,stream:[3,6,112,141,145,148,149,190,200,217,229,230,236,237,270,279,288,308,485],streamlin:[12,466],streitz:[],streiz:379,strength:[3,9,140,159,170,190,292,325,329,394,423,424,470],stress:[],stretch:[3,54,59,117,212,297],strict:430,strictli:[6,41,185,211,250,283,315,458],stride2:484,stride:[191,230,465,474,484],strietz:379,strike:218,string:[2,3,6,11,12,41,165,188,189,191,203,204,205,206,207,208,209,211,228,281,294,333,350,362,410,420,421,422,430,454,456,458,468,469,475,476,484],strip:484,strong:[284,365],stronger:6,strongest:[408,409],strongli:[1,6,13,218,293,296,320,479],structrur:3,structur:[],structured_point:294,strucur:73,stuart:[284,285,365,378,439],stub:12,stuck:215,student:278,studi:[6,105,401],studio:[],stukowski:[201,385],style1:[33,50,178,340,394,458],style2:[33,50,178,340,394,458],style:[],style_nam:[252,253],stylist:8,sub1:469,sub:[1,3,4,6,7,8,9,11,12,13,18,33,37,39,40,41,42,50,55,58,61,63,68,87,91,107,140,159,167,178,184,189,190,191,195,196,211,215,217,252,253,256,275,283,288,293,296,320,321,329,331,340,343,351,353,363,368,378,384,390,391,393,394,414,422,423,424,445,446,451,455,458,461,467,475],subbox:[117,190,191],subdirectori:4,subdivis:239,subdomain:239,subequ:11,subgroup:[188,487],subinterv:189,subject:[6,41,168,211,445],submit:[],subramaniyan:13,subroutin:363,subscript:[11,320,334,388,447,484],subsequ:[6,11,12,41,59,166,191,205,211,215,228,315,320,321,322,351,362,385,439,456,458,459,465,468,469,478,484,488],subset:[6,11,12,16,41,80,140,188,191,211,248,252,254,255,256,257,258,279,280,284,293,358,363,365,369,394,414,452,455,458,460,463,467,484],substanti:[6,16,440,467],substep:252,substitut:[1,2,3,12,188,235,358,362,387,414,456,469,484],substract:379,substrat:[167,215,252,254,255,257,258,280,293,458],substyl:[407,467],subsystem:320,subtl:[94,96,97,230],subtleti:151,subtract:[3,6,54,63,91,94,97,102,103,105,112,141,143,144,145,146,147,148,149,151,152,153,154,155,157,158,188,194,203,228,229,232,236,237,238,240,244,248,270,277,293,331,359,406,458,468,476,484,485],succe:12,succeed:[204,205],succes:205,succesfulli:3,success:[2,6,11,12,14,15,116,188,191,201,204,215,218,228,264,279,293,308,315,333,356,358,456,457,465,466],successfulli:[3,11,188,218,456,469],successulli:11,successv:463,sucessfulli:3,sudden:36,suddenli:329,sudo:[11,12],sufac:42,suffer:[16,17,18,323,329,363],suffici:[2,3,7,17,18,41,61,71,189,207,211,250,252,275,308,315,322,325,333,398,414,458,479],suffix2:12,suffix:[],suggest:[0,6,7,12,250,283,456,479],suit:[7,9,13,196,239,387],suitabl:[4,12,13,17,54,87,188,214,282,312,369,376,391,407,410,422,423,453,472],sukumaran:205,sum:[3,6,8,9,12,40,70,71,76,80,83,88,89,90,94,98,103,105,107,109,110,112,116,117,123,139,140,141,143,145,146,147,148,151,152,153,154,155,157,159,161,162,163,203,204,206,207,208,209,218,226,229,236,237,242,274,275,279,283,288,293,294,297,307,318,320,322,325,329,331,348,349,356,368,379,383,387,388,397,399,402,410,422,423,430,446,456,476,479,484,485],summar:[6,388],summari:[],summat:[6,9,42,70,88,348,349,373,379,385,386,399,403,440,442,443,444,447],summer:[3,13,207,422,423],sumsq:117,sun:[21,43,172,334,375,414,423],sunderland:17,sup:[275,283,288,378,479],supercomput:[12,18,456],superpos:[394,439],superposit:7,supplement:[230,422,423],supplementari:[216,390,424],suppli:[12,185,228,250,320],support:[1,3,6,7,8,9,11,12,13,14,15,16,17,18,19,40,41,42,61,87,88,102,107,188,189,190,191,192,195,196,197,198,203,211,214,215,216,223,226,230,231,234,236,237,238,239,247,250,252,254,255,256,257,258,269,270,271,272,274,275,280,283,285,287,292,293,298,299,300,301,302,304,305,307,311,312,313,314,318,323,325,329,346,347,348,349,355,356,357,363,364,365,366,367,368,369,370,371,372,373,374,375,377,378,379,380,382,383,384,385,386,387,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,440,441,442,443,444,445,446,447,449,450,451,455,459,460,465,467,468,469,471,472,479,483,484,487,488],suppos:[3,8,388,484],suppress:[6,12,163],sure:[6,8,11,13,14,185,195,196,215,293,296,330,385,441],surf:166,surfac:[2,3,4,6,8,9,40,42,57,70,118,140,163,165,168,190,194,218,225,234,239,242,274,285,292,301,304,305,308,315,320,325,329,330,358,369,394,408,409,428,446,450,455,461],surface_mov:320,surfact:[380,389],surpris:387,surrog:9,surround:[38,56,70,165,185,191,215,252,254,255,257,258,274,280,293,441,479],suspect:3,suspens:[408,409],sustain:[188,215,391],suzuki:[252,293],svg:6,svn:[7,11,12],sw_exampl:421,swamp:293,swap:[],swegat:319,swiggl:[3,249,325,328,330,461,484],swiler:[140,430],switch7_section_start:389,switchflag:[140,430],swm4:479,swol:53,swope:6,sxx:191,sy0302:9,symbol:[6,12,118,164,290,369,387,430],symmetr:[6,70,87,93,112,131,132,133,136,137,138,141,195,196,215,252,253,316,323,364,376,382,385,442,444,484],symmetri:[3,5,6,7,8,63,64,70,167,188,250,274,334,349,364,458,479],sync:[3,6,477],synchron:[1,230,358,477],synechococcu:7,syntax:[],sysdim:275,sysmt:17,sysstem:369,system:[],system_:276,systemat:[6,205,228,236],systemx:3,t10:473,t11:473,t12:473,t13:473,t14:473,t15:473,t3e:12,t_chain:3,t_corr:3,t_correl:453,t_dephas:453,t_e:320,t_e_min:320,t_equil:[317,318],t_event:[3,453,472],t_hi:472,t_infil:320,t_init:[283,320],t_iter:3,t_lb:239,t_lo:472,t_order:3,t_oufil:320,t_out:320,t_outfil:320,t_qm:283,t_switch:[317,318],t_target:371,ta06a:430,ta5:164,tab:[2,458],tabbernor:118,tabinn:414,tabul:[3,7,13,22,37,38,44,55,56,65,71,79,92,185,308,348,364,369,370,372,373,374,375,376,379,385,387,399,403,417,420,423,425,439,441,442,448,460],tabular:420,tabulate_long_rang:423,tad:[],tadmor:9,tag:[200,220,479],tagint:3,tail:[3,87,110,159,364,365,366,367,368,369,370,371,372,373,374,375,377,378,379,380,382,383,384,385,386,387,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,446,447,449,450,451,460,476,484],tailor:[71,321],tait:[9,436,437],taitwat:[],take:[1,2,3,6,11,12,17,20,21,22,23,24,25,26,27,28,29,30,31,32,35,38,39,40,41,42,43,44,45,46,47,48,49,51,53,54,56,59,77,87,89,91,109,112,113,116,117,141,143,152,159,163,169,171,172,173,174,175,176,177,179,180,182,183,185,188,190,191,195,196,197,210,211,215,217,224,227,231,235,236,237,252,254,255,256,257,258,259,267,269,270,272,285,293,295,296,305,306,307,308,310,311,312,313,321,324,328,331,334,335,336,337,338,339,342,344,348,349,353,363,364,365,367,369,370,371,372,373,374,375,376,377,378,379,382,383,385,386,388,389,390,391,392,393,397,399,400,401,402,403,404,405,406,407,408,411,415,416,417,419,422,423,424,425,431,438,440,441,442,443,444,445,446,447,449,450,451,452,456,459,466,467,468,475,476,477,484],taken:[6,59,147,165,187,214,218,228,229,230,236,237,238,239,279,283,286,320,338,385,387,390,440,447,453,467,468],talk:[6,7],talli:[8,41,107,113,203,206,207,208,211,213,236,238,253,308,316,323,387,389,393,423],tan:[191,484],tandem:[4,16,293],tangent:251,tangenti:[6,108,308,326,330,391],tanh:320,tantalum:[4,430],taper:[3,286],tar:12,tarbal:[0,8,11,12],target:[3,6,7,8,9,11,12,17,39,41,191,199,211,215,216,218,228,229,230,236,237,238,252,253,254,255,256,257,258,269,270,271,272,276,280,283,288,293,297,306,311,312,313,314,319,320,323,324,327,346,349,371,383,453,464,466,485],target_fil:319,task:[1,6,7,12,13,14,15,16,17,18,54,191,233,276,321,363,456,477],taskset:16,tatb:[4,289],tatom:479,tau:[3,154,205,236,237,239,252,280,293,311,312,317,318,320,478,483],tau_1:229,tau_k:229,tau_n_k:229,tb3:164,tbead:157,tbp:369,tchain:[252,253,256,270,271,293],tcl:288,tcom:237,tcsh:[11,12,376],tdamp:[236,252,253,256,293,311,312],tdephas:453,tdrude:[150,221,237,479],teal:191,tech:[7,9,13],technic:[6,7,9,239,286,308,423],techniqu:[6,7,9,87,194,215,250,283,293,324,327,349,414,441,479],technolgi:9,technolog:[9,14,19,233],tell:[2,6,11,12,37,55,184,194,275,343,359,422,423,439,456,460,479],telsa:17,temeperatur:11,temp:[],temp_drud:479,temp_eff:97,tempcom:[144,158],temper:[],temperar:276,temperatur:[],temperature_definit:200,tempfix:473,templ:[7,9,18],templat:[3,8,13,17,19,40,165,166,168,218,228,279,293,296,357,458],templeton2010:200,templeton2011:200,templeton:[9,200],tempor:229,temporari:[2,465],temporarili:[185,292,471,472],ten:14,tend:[29,252,274],tensil:[7,217],tensor:[3,6,8,63,82,83,89,90,91,93,106,112,127,130,131,132,133,136,137,138,140,141,142,143,144,145,146,147,148,149,151,152,153,154,155,156,157,158,215,239,242,252,253,256,278,280,293,323,348,349,357,387,408,409,427,429,476,484],tenth:[127,347],term:[0,1,3,5,6,7,8,9,12,20,21,22,27,38,40,45,46,61,87,88,89,91,110,112,141,142,144,153,158,159,172,173,174,185,191,195,196,202,204,206,209,217,223,229,230,231,236,237,238,239,251,252,253,254,255,256,257,258,269,270,272,276,280,283,292,293,306,311,312,313,320,322,324,326,334,335,344,348,356,359,364,365,369,370,371,372,373,374,375,377,378,379,380,381,382,383,385,386,387,388,390,391,392,399,403,406,407,408,409,410,411,412,414,417,424,438,440,442,443,444,447,450,467,468,470,476,479],termin:[118,252,356,358,427,429,457,466],termostat:312,terrel:355,terri:7,tersoff:[],tersoff_1:[442,443,444],tersoff_2:[442,443,444],tersoff_mod:443,tertiari:177,tessel:[9,163],test:[],test_descriptor_str:3,testf:185,testu:185,tether:[6,291,297,305,307,318,389],tex:8,texa:419,texas_holdem:292,text:[2,3,4,6,7,8,12,13,38,41,56,185,188,190,191,194,200,203,204,205,206,207,208,209,211,216,233,281,319,320,332,349,351,358,385,388,398,410,430,441,454,458,459,475,484,486],textur:17,tfac_insert:228,tfactor:[3,191],tfinal:484,tfix:292,tfmc:[],th4:164,than:[1,2,3,6,8,9,11,12,13,14,15,16,17,18,27,38,39,40,41,42,56,57,58,59,61,63,68,71,76,86,88,105,108,112,115,116,119,141,163,166,167,168,174,185,187,188,189,191,194,199,201,203,206,207,208,209,211,212,213,214,215,217,218,219,222,225,228,229,230,231,234,235,236,239,250,274,275,279,280,281,282,283,284,286,288,291,292,293,294,297,298,304,305,306,308,312,313,315,316,320,323,324,325,326,327,328,329,330,331,333,348,349,354,355,356,357,358,359,360,363,368,369,370,372,373,374,385,387,390,391,397,408,409,410,414,422,423,424,431,439,440,441,444,446,448,450,451,453,454,455,456,458,459,460,461,462,463,466,467,470,472,473,475,484,485,486],thank:[233,442,444],thb:423,thb_cutoff:423,thb_cutoff_sq:423,thei:[0,1,2,3,4,6,7,8,11,12,13,15,16,17,20,21,23,24,25,26,27,28,29,30,31,32,35,37,38,39,40,41,42,43,45,46,47,48,49,51,53,54,55,56,57,59,61,63,64,66,68,70,71,74,75,81,82,84,87,89,90,91,93,103,104,106,108,109,112,114,115,116,117,119,140,143,144,145,147,148,151,152,158,160,162,165,167,168,169,171,172,174,175,176,177,179,180,182,183,184,185,188,190,191,194,195,196,197,199,202,203,204,206,207,208,209,210,211,212,213,214,215,217,218,223,224,227,228,229,231,232,233,236,237,239,242,249,252,254,255,256,257,258,259,260,261,262,267,269,270,272,278,279,280,281,282,284,285,292,293,294,295,296,308,309,311,312,313,315,319,320,322,323,324,326,328,329,331,333,334,336,337,338,339,342,343,344,346,348,349,351,353,355,356,357,358,359,362,363,364,365,367,368,369,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,397,399,400,401,402,403,404,405,406,407,408,409,410,411,412,415,416,417,419,420,422,423,424,425,430,431,438,439,440,441,442,443,444,445,446,447,448,449,450,451,454,456,458,459,460,461,462,463,467,468,470,471,476,479,484,486,487],them:[1,2,3,4,6,7,8,9,11,12,13,14,17,39,40,41,54,59,71,91,107,114,117,119,142,167,172,188,190,191,192,202,203,204,206,207,208,209,211,214,215,217,225,233,236,237,248,252,254,255,256,257,258,269,272,274,280,282,290,291,292,293,296,308,311,312,313,315,319,320,322,326,327,328,330,331,334,349,351,357,358,359,363,364,369,376,385,388,390,394,414,424,431,446,453,456,458,465,470,473,479,484,485],themselv:[6,11,168,195,196,211,237,348,349,358,360,364,369,379,385,407,410,411,412,430,484],theor:315,theorem:[229,236,369],theoret:[105,233,283,440],theori:[3,6,9,12,40,140,200,216,230,252,275,348,349,369,450,472],thereaft:[71,244,277,293,316,323,456],therebi:[321,408,409],therefor:[3,6,12,64,87,150,221,228,237,239,296,315,349,381,421,423,440,445,467,479],therein:[6,410],thereof:87,thermal:[],thermo:[],thermo_modifi:[],thermo_p:[3,63,109,456,476],thermo_press:[63,112,215,221,252,254,255,256,257,258,280,475,476,479],thermo_styl:[],thermo_temp:[63,112,143,214,215,228,252,254,255,256,257,258,269,270,272,275,280,311,312,313,475,476,479],thermoberendsen:6,thermochem:483,thermochemistri:387,thermodyam:[476,483],thermodyanm:[63,214,308,331,467],thermodynam:[],thermophys:414,thermost:[6,147,199,216,221,237,327,479],thermostat:[],thermostatequ:6,thesi:[348,349,408,421],thess:370,theta0:[20,21,24,26,27,28,32,33,35,36,140,174,292,342],theta0max:140,theta10:369,theta1:[172,334,369],theta2:[172,334,369],theta3:[334,369],theta4:369,theta5:369,theta6:369,theta7:369,theta8:369,theta9:369,theta:[3,6,26,27,37,38,63,65,80,140,164,165,174,187,190,231,288,292,320,334,342,393,420,443,458,461,468],theta_0:416,theta_:[342,369],theta_c:393,theta_ijk:369,theta_ijl:334,theta_jik:[411,412],theta_pi:369,theta_sigma:369,thex:284,thi:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,479,480,481,482,483,484,485,486,487,488],thick:[71,118,190,207,461],thie:110,thijss:315,thin:[116,190],thing:[3,6,11,12,54,68,71,215,252,280,293,308,455,456,460,484],think:[3,6,7,8,11,13,191,293,331,336,339,351,356,394,422,423,441,456,460,463,484],third:[6,9,12,29,91,134,140,141,163,203,204,206,207,208,209,229,290,305,306,320,378,388,410,416,445,447,453,454,456,458,461],thirumalai:177,thistl:191,tho:386,thole:[],thompson:[0,5,7,9,13,112,140,141,351,430],thoroughli:9,those:[1,2,3,4,5,6,7,8,12,13,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,35,38,39,40,43,45,46,47,48,49,50,51,53,54,56,61,71,77,87,91,108,109,110,112,116,140,141,143,145,152,155,165,169,171,172,174,175,176,177,178,179,180,182,183,185,187,188,190,191,201,202,203,204,207,208,209,215,217,218,225,231,233,234,235,236,242,251,252,254,255,256,257,258,259,267,269,270,272,279,282,285,293,310,317,318,322,326,327,328,331,332,334,336,337,338,339,340,342,344,348,349,356,358,359,363,364,365,367,370,371,372,373,374,375,376,377,378,379,382,383,385,386,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,410,411,414,415,416,417,419,422,423,424,425,430,431,439,440,441,442,443,444,446,447,449,450,451,453,455,456,458,460,461,462,463,465,467,468,470,472,475,476,477,479,484,487,488],though:[6,8,12,39,40,63,71,91,104,165,188,191,201,207,212,213,215,217,222,253,291,293,295,304,316,323,333,348,351,358,383,384,385,387,388,390,391,407,408,414,447,453,458,460,461,466,470,477,484],thought:[148,236,270,293,324,325,355,391,398,479],thread:[1,3,9,12,16,17,18,233,321,346,363,471,477],threads_per_atom:3,three:[1,3,6,54,63,74,87,91,105,117,118,119,130,140,144,164,165,177,194,214,215,220,240,252,256,275,280,293,308,315,317,320,338,342,348,349,357,363,364,365,369,385,386,388,390,391,395,398,410,411,412,416,420,423,424,430,440,442,443,444,447,456,458,461,484],threebodi:440,thresh:[41,188,190,191,211,456],threshhold:[3,41,190,211,331,456],threshold:[3,41,86,191,211,274,359,423,453,472],thrid:456,through:[3,6,7,9,11,12,63,165,188,192,215,226,228,233,234,239,241,242,243,252,253,276,284,301,315,320,325,347,354,365,386,387,391,399,425,431,438,445,453,456,459,469,475,479],throughout:[6,16,116,118,321,363,458],thru:[3,6,7,11,12,66,74,75,81,89,90,93,103,104,105,106,160,187,188,191,206,249,308,328,333,347,356,362,461],thrust:1,thu:[1,2,3,6,8,9,11,12,18,33,38,39,41,42,50,59,61,63,64,66,67,70,71,72,73,75,77,81,88,90,91,93,103,104,106,108,109,113,114,115,116,117,140,141,142,145,148,153,155,160,161,162,165,167,168,169,173,178,184,185,187,188,190,191,192,194,195,196,197,198,202,203,204,206,207,208,209,210,211,212,213,214,215,217,218,221,223,225,229,230,231,232,233,234,236,237,242,247,252,256,266,274,280,282,284,288,291,293,294,295,296,297,301,302,305,306,307,308,309,311,312,313,315,316,319,320,322,323,324,325,328,329,330,331,333,334,340,348,349,351,354,356,357,358,362,363,364,365,368,369,370,371,372,373,374,375,376,377,378,379,383,384,385,386,387,388,389,390,391,394,395,396,397,399,403,407,408,409,410,411,412,414,415,417,419,420,421,422,423,424,430,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,451,453,455,456,458,459,460,461,462,463,465,466,467,468,470,472,473,474,475,476,477,479,483,484,485,486,487],thumb:[8,10,17,165,187,249,293,363,377,461,467],thz:288,ti2:164,ti3:164,ti4:164,tight:369,tightli:282,tij:382,tildeslei:[29,87,382],tile:[3,6,41,62,165,211,397,446,455,484],tilt:[3,6,57,58,59,71,153,167,188,191,207,215,217,218,231,250,252,253,274,283,349,351,447,458,461,476],time:[],time_integr:200,timedelta:204,timelin:5,timer:14,timescal:[3,202,203,204,206,207,208,209,250,283,288,387,453,467],timespan:[236,237,252,280,293,311,312],timestamp:[3,463],timestep:[],timesteppnig:296,tin:[378,379],tine:[],tinfoil:349,tini:[116,165,356,369,485],tinker:7,tip3p:[],tip4:6,tip4p:[],tip:[],tirrel:325,titan:15,titer:293,titl:[203,204,205,206,207,208,209,281,423],title1:[203,204,205,206,207,208,209],title2:[203,204,205,206,207,208,209],title3:[203,204,206,207,208,209],tji:382,tl1:164,tl3:164,tlbr_msw:420,tlo:472,tloop:[252,253,256],tlsph:122,tlsph_defgrad:122,tlsph_strain:[124,125],tlsph_strain_rat:[124,125,131],tlsph_stress:[121,131,132],tm3:164,tmax:[3,222,472],tmd:[],tmd_dump_fil:319,tmdatom:319,tmin:222,tmp1:[206,209,469],tmp2:[206,209,469],tmp3:469,tmp:[6,12,41,66,68,69,75,90,93,104,106,114,116,145,160,162,188,190,191,211,282,293,316,323,362,465,469,484],tobia:[252,253,293],todd:270,toe:159,toff:[357,458],togeth:[2,3,6,11,12,17,39,41,71,115,141,145,159,166,188,195,196,203,206,211,215,221,230,237,252,280,293,297,302,305,308,326,330,331,389,394,456,461,466,479,487],toggl:[59,169,465],togheth:3,togther:3,tol:[296,308,348,440],toler:[3,215,284,285,286,296,308,356,358,440,453,472],tomato:191,tong:[9,13],too:[1,3,6,7,39,41,64,67,70,72,73,77,88,140,153,166,168,190,205,211,212,213,215,218,225,228,232,252,275,280,284,288,290,296,308,315,316,320,323,349,358,359,363,383,453,461,472,475,479,484],took:[71,431],tool:[],toolkit:[6,7,13,14,15],top:[0,3,8,9,11,12,13,59,148,187,194,210,217,232,239,251,270,294,327,328,330,358,363,422,423,430,458,462,468],top_group:302,top_veloc:302,topic:[484,487],toplog:[3,455],topolgi:40,topolog:[2,3,6,7,8,12,13,39,40,87,108,115,168,169,191,212,213,233,278,357,394,414,455,458,459,460,462,463,470],topwal:210,torder:293,torqu:[],torsion:[6,172,173,184,365,422,423],torsion_flag:365,tosi:370,tot:288,total:[3,6,11,12,14,15,16,17,18,39,41,63,71,81,88,89,90,91,98,102,103,104,105,107,109,110,117,122,123,124,125,127,128,129,130,131,132,133,140,141,143,145,146,147,148,151,152,153,154,155,157,159,161,162,163,188,194,197,198,201,203,205,206,207,208,210,211,213,219,221,223,226,227,228,229,234,236,237,238,239,240,242,250,253,256,266,275,276,278,279,283,288,290,292,293,294,295,297,299,302,305,307,316,317,318,320,323,325,329,348,356,357,358,359,360,363,364,366,368,369,378,385,387,391,410,411,412,420,422,423,427,430,446,453,455,456,460,466,467,472,473,476,477,484],touch:[12,234,326],toukmaji:[349,382],toward:[9,29,163,190,194,218,219,234,239,251,256,274,291,305,319,321,342,358],toxvaerd:404,tpa:363,tparam:293,tpartial:145,tpc:363,tpcpu:476,tperiod:293,tptask:[16,363],tqx:[113,188,310],tqy:[113,188,310],tqz:[113,188,310],trace:387,track:[3,7,12,213,217,239,320,330,453,458,464,472,476,484],track_displac:200,tracker:233,trade:[6,12,285,348,349,379,399,403,467,472],tradeoff:414,tradit:[6,9,349],traffic:12,trail:[2,22,44,77,87,116,159,169,173,191,195,196,293,335,353,357,358,376,388,410,423,430,452,458,466,468],train:423,traingul:304,traj:216,traj_titl:423,trajectori:[3,6,12,39,87,188,233,252,254,255,257,258,259,260,262,263,265,267,268,269,270,271,272,276,293,296,297,301,321,330,383,414,423,460,468,479,483],tran:[176,177],transfer:[1,6,16,200,221,233,235,316,320,323,348,363,369,479],transform:[],transit:[6,86,251,297,319,358,380,407,412,444,453,472],translat:[3,6,61,63,94,95,96,97,98,144,145,149,158,203,228,232,236,237,242,252,257,258,269,272,276,293,311,312,313,315,351,387,458,476],transmiss:233,transmit:[6,233],transpar:[14,17],transport:[200,320,432],transpos:12,trap:[3,6,91,161,204,234,322,484],trapezoid:[204,484],trate:[3,217,233],travel:308,treat:[2,3,6,8,17,40,42,71,82,84,85,141,144,147,158,169,186,203,204,206,209,218,227,253,275,278,279,293,308,320,322,329,333,347,348,356,357,359,368,381,387,388,390,393,397,411,412,424,446,458,461,463,466,468,479,484],treatment:[9,288,381],tree:[3,278,407],tref:384,tri:[],tri_surfac:[120,304],trial:[218,228,366,467],triangl:[2,3,6,7,40,42,82,113,134,163,194,268,293,304,308,428,439,446,458,468],triangleflag:458,triangul:[2,6,13,304,428],triangular:[4,6,42,82,113,215,268,304,428,458],tricki:[455,479],triclin:[],triflag:6,trigger:[3,11,12,62,86,211,214,228,356,476],trigon:25,trilinear:239,trilino:17,trim:[3,459],tripflag:422,tripl:[2,140,217,369,422,454,456],triplet:[3,34,37,386,416,420,440,442,443,444,447],trivial:[8,11],trj:423,trott:[7,9,14,17,140,430],troubl:[11,12],truli:8,truncat:[3,5,6,12,71,282,288,325,329,355,367,379,387,391,399,401,404,414,419,468],trung:15,tscale:[3,250,283],tschopp:67,tsige:373,tsrd:[308,330],tstart:[229,230,236,238,252,253,293,311,312,313,314,383,464],tstat:[],tstop:[229,230,236,238,252,253,293,311,312,313,314,383,464,472],tsuzuki:[73,447],tthi:127,ttm:[],ttm_mod:320,tucker:[140,430],tuckerman2006:252,tuckerman:[252,253,271,276,293,467],tune:[],tunnel:276,turn:[3,4,6,12,22,33,37,39,44,50,54,55,59,65,69,71,108,115,140,164,169,173,178,184,190,191,194,201,212,213,214,215,228,233,252,264,278,281,282,293,308,335,340,343,348,356,358,359,361,363,365,381,393,394,410,414,423,438,439,454,458,460,465,470,471,476,477,481,486],turquois:191,tutein:365,tutori:[6,9],tweak:[12,165,233,363],twice:[3,6,16,17,63,88,171,191,194,195,196,215,249,252,286,363,394,456,458,465],twin:67,twist:[408,409],two:[1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,22,38,39,41,42,44,54,56,57,59,61,63,65,68,69,71,76,77,79,87,88,92,107,108,113,114,115,116,117,118,140,142,144,147,148,150,151,153,159,163,164,165,166,168,173,187,188,189,190,191,194,195,196,201,202,203,204,206,207,208,209,211,212,213,214,215,218,221,225,228,229,230,232,234,235,236,237,239,242,251,252,253,256,274,275,276,279,280,282,283,284,288,290,293,297,305,308,315,316,318,320,323,326,329,331,333,335,344,348,349,351,353,354,356,357,358,361,363,364,365,366,368,369,370,371,372,373,376,377,378,379,381,382,383,384,385,386,387,388,390,391,394,397,398,399,403,407,408,409,410,414,417,420,421,422,423,424,426,430,431,438,439,440,442,443,444,445,446,447,450,451,452,453,455,456,458,459,460,461,462,465,468,470,471,472,473,475,476,479,483,484,485,486,487,488],two_temperatur:200,twobodi:[442,444,447],twogrid:3,twojmax:[140,430],twolevel:[3,455],txt2html:8,txt:[8,13,188,192,281,282,320,346,357,398,448,463,484],typcial:[41,211],type1:[77,118,164],type2:[77,118,164],type:[],typen:[77,118,164],typic:[1,2,3,6,7,8,10,11,12,13,14,15,16,17,18,29,39,40,41,45,46,55,57,59,61,63,70,71,86,87,102,107,119,128,159,163,165,166,168,188,189,190,191,194,195,196,197,199,200,203,205,211,212,213,214,215,217,218,223,225,226,228,231,237,252,264,275,278,279,282,284,286,292,293,296,298,300,308,315,323,324,330,348,351,355,356,357,358,359,360,363,374,376,377,379,389,390,393,394,398,399,403,408,409,410,414,424,427,429,439,441,444,453,454,456,458,459,460,461,467,470,472,473,475,483,484,486,488],typicali:12,tzou:320,u_f:239,u_ij:420,u_prom:369,uberuaga:[251,358],ubiquit:[11,369],uhf:366,uiuc:[9,17],uloop:[3,276,358,362,484],ulpsh:[],ulsph:[],ulsph_num_neigh:129,ultim:472,ultra:163,umbrella:[],umin:[26,27,48,49,174],unabl:[3,11,41,211],unaffect:[188,215,252,293,459,470,475],unalt:[195,196,264],unambigu:[71,207,447],unari:[333,484],unbalanc:3,unbias:[153,387],unbond:[213,458],unbroken:80,uncertainti:40,unchang:[59,215,218,251,252,254,255,257,258,266,280,293,458,459,462,468],uncharg:[40,349],uncom:[1,4],uncompress:[12,71,190],uncomput:[],uncorrel:[229,315,453],uncoupl:276,undefin:[3,12],under:[0,5,6,7,8,9,10,12,18,21,22,44,140,172,173,190,233,250,279,283,284,334,335,353,387,407,423,430,456,472,479],underestim:163,underflow:190,undergo:[6,86,87,153,229,236,237,297,308],undergon:[214,308],underli:[6,9,12,17,70,190,252,320,351],undermin:39,underpredict:6,underscor:[2,3,63,194,214,215,250,252,254,255,256,257,258,269,270,272,280,282,311,312,313,333,357,484],understand:[1,6,8,228,253],understood:[188,369],undesir:[59,215,217,252,293],undetermin:308,undisturb:[408,409],undo:[169,233],undump:[],unexpect:[3,464],unfix:[],unfix_flux:200,unfold:306,unfortun:[321,466,467],uniaxi:[3,144,256],uniform:[7,16,41,88,116,200,211,212,213,236,239,242,253,315,384,390,424,453,455,484,485],uniformli:[59,116,187,239,279,320,420,441,485],uninstal:12,uninterrupt:[201,218,228,249,250,252,254,255,256,257,258,269,270,271,272,282,283,293,297,307,310,318,320,326],union:[3,6,40,191,329,331,458,461],uniqu:[3,6,7,8,9,12,39,71,122,205,229,230,236,237,256,282,288,290,358,385,387,458,484,485],unit:[],unit_styl:3,uniti:[386,414,434],unitless:[64,67,70,71,114,170,203,207,208,217,228,250,252,283,326,356,366,391,417,419,440,442,443,444,447,483],unitlesss:[78,80,111],univ:[9,13],univers:[3,6,9,12,13,18,87,233,348,349,358,362,408,412,419,421,444,452,455,484],universit:[9,13],unix:[12,17,235,469],unknown:[3,12,64,73,458],unless:[2,3,9,11,12,15,16,55,57,67,118,150,164,165,188,191,192,199,215,218,228,236,252,254,255,257,258,279,280,293,308,319,350,356,377,414,441,456,461,465,470,484],unlik:[12,33,50,59,89,104,155,165,178,188,205,236,252,256,280,286,288,311,312,313,340,347,348,364,369,385,388,393,394,398,410,411,412,423,430,439,455,460,465,470,484,488],unlimit:420,unlucki:3,unmark:7,unmodifi:309,unnecessari:16,unoccupi:320,unoptim:190,unpack:[0,8,11,363],unpack_bord:8,unpack_border_bodi:8,unpack_border_hybrid:8,unpack_border_vel:8,unpack_comm:8,unpack_comm_bodi:8,unpack_comm_hybrid:8,unpack_comm_vel:8,unpack_exchang:8,unpack_restart:8,unpack_revers:8,unpack_reverse_comm:8,unpack_reverse_hybrid:8,unpad:191,unperturb:87,unphys:[3,6,237,252,293,458],unpredict:[291,468],unrecogn:3,unrel:[8,9,13,171],unreli:414,unrestrain:292,unrestrict:366,unscal:[3,113,159,188,310,459],unset:[348,387],unshift:382,unsmooth:405,unsolv:[360,374],unsort:191,unspecifi:[217,458],unsplit:479,unstabl:[3,239],unstrain:217,unsuccess:[3,279],unsuffici:[],unsupport:3,untar:12,until:[2,3,6,12,14,38,39,41,56,71,119,185,190,211,215,218,228,233,279,301,308,310,317,333,347,348,359,362,363,369,391,441,453,459,463,464,466,472,483,484],untilt:461,unus:369,unusu:[3,8,359],unwant:[3,165,348],unwrap:[3,66,74,75,81,89,90,93,103,104,106,113,141,160,188,191,192,202,214,216,233,249,293,305,310,458,459,462,468],unwrapexpand:188,unzip:12,up_intern:190,updat:[0,3,6,8,12,13,123,124,125,135,136,137,138,188,194,201,212,213,221,226,229,236,237,239,241,242,245,246,249,250,252,253,254,255,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,278,280,282,283,288,293,300,301,310,311,312,313,315,320,331,363,369,382,414,422,423,429,453,458,460,468,469,472,479],upenn:[11,13],upgrad:12,upon:[6,201,233,369,445,472],upper:[2,3,41,57,59,71,88,103,105,142,154,161,187,191,204,205,207,208,211,215,221,237,239,252,283,288,325,326,331,332,356,391,461,485],upsid:6,upsilon:390,upto:[3,460,466],upward:218,urbana:[233,348,349,408],urey_bradlei:20,usa:9,usabl:[12,228,385],usag:[3,6,8,237,274,288,308,394,407,458],use_ldg:17,useful:363,user:[],user_misc:[30,31,35,175,180,183,338],userguid:9,usr:[11,12,14,459],usual:[2,3,6,9,12,14,17,18,24,28,32,35,36,47,61,71,87,117,144,145,150,158,163,182,188,195,196,201,203,214,215,216,217,228,231,236,238,250,256,275,283,284,290,292,293,308,316,320,323,325,329,333,339,346,358,359,363,374,377,380,382,390,394,395,398,407,408,409,414,416,426,427,428,429,430,440,445,453,457,459,463,467,469,472,475,476,484,488],util:[8,12,17,18,363,390,477],utilizi:12,utilz:[12,477],utsa:419,utsph_strain_r:137,uttormark:13,uuml:275,uwo:9,v11:6,v22:6,v33:6,v_0:[3,320],v_a:[8,217],v_abc:[456,476,484],v_area:[2,484],v_atomfil:468,v_c:159,v_cluster:282,v_dc:159,v_delta:87,v_dhug:[250,283],v_diff:[161,322],v_displac:217,v_dk:159,v_dlj:159,v_drai:[250,283],v_dx:[249,461],v_dy:[249,461],v_dz:249,v_e_hbond:393,v_ea:[422,423],v_eb:[422,423],v_eqeq:[422,423],v_espac:197,v_f:456,v_fac:456,v_flux:232,v_foo:[456,484],v_ij:420,v_increas:231,v_integr:322,v_jx:91,v_jy:91,v_jz:91,v_k11:91,v_k22:91,v_k33:91,v_k:159,v_ke:[188,487],v_left:461,v_lgr_po:[250,283],v_lgr_vel:[250,283],v_linear:[325,328,330],v_lj:159,v_mol:191,v_mu:408,v_myi:249,v_myindex:484,v_myke:117,v_mystep:465,v_myvar:[8,191],v_myx:249,v_n:239,v_name1:[159,217],v_name2:[159,217],v_name:[3,6,71,87,117,188,190,191,195,196,197,198,202,203,204,205,206,207,208,209,210,223,231,232,234,236,237,249,295,302,310,311,312,313,322,325,328,330,456,461,465,468,474,476,484,485],v_nstep:331,v_occ:389,v_omega:249,v_oscil:[197,198,210,223,295],v_phi:231,v_prefactor:[195,196,431],v_press:141,v_pressdown:[328,330],v_push:197,v_pxy:6,v_pxz:6,v_pyz:6,v_r0:234,v_r1:163,v_r2:163,v_r:[163,234],v_rad:331,v_radiu:234,v_ramp:[325,328,330],v_rate:[217,234],v_scale1:[195,196],v_scale2:[195,196],v_size:[195,196],v_t_qm:283,v_temp:316,v_theta:[231,461],v_tp:217,v_up:461,v_v0:484,v_v11:6,v_v22:6,v_v33:6,v_v:[249,484],v_valu:[190,456],v_vx:249,v_vy:249,v_vz:[249,485],v_wiggl:[325,328,330],v_x:[2,165,234,249,325,328,330,456,461,484],v_xave:6,v_xmax:6,v_xx:165,v_y:[165,234,461],v_yi:165,v_z:461,vacanc:[4,163,317],vacf:[],vacuum:[320,349,380,444,451],valanc:369,vale:3,valenc:[286,369,387,422,423],valent:369,valeriu:9,valid:[2,3,6,9,11,12,71,118,151,164,190,191,215,228,236,274,293,308,331,333,346,351,385,387,390,420,458,459,466,468,484],vallon:410,valon:410,valu:[],valuabl:477,value0:484,value1:[12,145,202,203,204,205,206,207,208,209,256,322,331,469],value2:[12,145,202,203,204,205,206,207,208,209,256,322,331,469],valuei:204,valuej:204,valuev:[7,9],valus:282,van:[9,53,87,107,280,284,289,311,377,378,407,410,422,423,450,485],vanderwa:[414,476],vanilla:[6,8,12],vanillia:42,vanish:[221,288,296],vapor:[41,211,228,475],vapour:315,var1:469,var2:469,varaibl:[3,461],varavg:12,vare:320,vari:[1,18,41,61,62,71,87,118,153,155,164,195,196,200,203,204,207,211,215,217,250,252,280,292,293,311,312,320,325,348,374,383,392,405,408,419,431,441,455],variabl:[],variable_hill_factor:13,variable_nam:423,varianc:[117,383,484],variant:[1,3,6,12,83,98,256,293,348,355,363,411,412,442,444,467,471,485],variat:[12,41,211,484],varieti:[1,2,6,7,9,13,15,71,190,233,346,351,394,410,422,423,439,447,484],variou:[],varreturn:456,varshalovich:140,varshnei:13,vartiabl:3,vashishta1990:447,vashishta2007:447,vashishta:[4,439],vbia:6,vcm:[],vdim:[154,316,323,485],vdisplac:[3,234,249,325,328,330,484],vdw:[3,378,423],vec1:[117,282],vec2:[117,282],vec:274,vector:[],vel:[3,6,61,203,207,208,217,237,279,297,327,383,387,391,453,460,461,463,479,484],veld:[13,308,349,373,403],veloc:[],velocit:[232,383,387,391],velocity_bottom:239,velocity_gradi:429,velocity_temp:485,velocity_top:239,vendor:12,verbatim:456,verbos:12,veri:[1,3,6,7,8,9,10,12,13,17,41,71,87,116,117,188,190,191,202,203,204,205,206,207,208,209,211,212,213,215,228,242,252,253,264,276,291,296,311,312,322,358,359,360,363,387,391,408,409,419,430,431,441,466,476,477,479,483,486],verifi:[8,363,414,467,473],verlag:297,verlet:[1,3,7,8,12,18,200,236,252,264,270,276,296,309,320,328,331,452,455,467],versa:[3,6,13,59,159,167,214,234,236,237,293,458,459,479],versu:[6,14,15,16,18,39,41,80,103,104,116,161,191,211,293,296,349,373,382,391,403,414,476,484],vertex:[134,304],vertic:[2,41,134,190,211,218,304,484],vfinal:484,vfrac:113,vhi:[154,485],via:[],vibrat:[6,9,218,230,274,283,288,342,387,453,467],vice:[3,6,13,59,159,167,214,234,236,237,293,458,459,479],video:190,view:[4,6,7,9,13,188,190,308,369,387,388],viewer:[188,190],viewpoint:190,vij:383,vika:13,vim:[],vincent:[9,19],violat:315,violet:191,virial:[3,63,91,112,140,141,159,195,196,215,221,252,253,254,255,256,257,258,278,280,293,296,348,363,366,383,384,387,395],virialmod:395,virtual:[6,7,8,12,440],virut:9,visa:7,viscoelast:[111,391,419],viscoelsat:419,viscos:[],viscou:[],viscous:293,visit:[294,422,423],vista:188,visual:[],viz:[11,13],viz_tool:11,vizplotgui_tool:11,vizualiziton:294,vlo:[154,485],vmax:[215,308],vmd:[6,7,9,11,13,188,192,233,459],vmdarch:192,vmdhome:192,vname:[165,484],voigt:[6,140],vol:[91,126,141,221,237,279,410,444,454,476],volfactor:348,volt:[421,483],volum:[2,3,6,40,41,58,59,63,80,87,91,100,112,116,118,126,130,139,141,163,164,165,168,201,203,207,208,211,215,217,218,228,239,250,252,253,256,259,260,262,263,265,267,268,269,270,271,272,279,280,283,293,297,320,325,329,331,348,351,357,371,408,409,419,436,437,451,454,455,458,461,468,476,479,483,484],volumetr:80,von:[133,138],voro:[3,9,163],vorobyov:479,voronoi:[],vorselaar:205,voter2:[453,472],voter:[411,412,453,472],voth:[40,276],vpz:327,vratio:484,vri:392,vrpn:233,vshear:326,vstream:6,vtarget:[3,323],vtk:[],vv0210:13,vx0:161,vxcm:293,vxhi:[218,279],vxlo:[218,279],vy0:161,vycm:293,vyhi:[218,279],vylo:[218,279],vz0:161,vzcm:293,vzhi:218,vzi:327,vzlo:218,w_1:140,w_2:140,w_i:140,w_ik:420,waal:[87,107,377,378,407,422,423,450],wadlei:[13,369],wag:[7,9,13],wagner:[7,9,200,239,410],wai:[1,2,3,6,7,8,11,12,15,18,22,44,59,63,65,66,69,71,75,77,79,87,90,91,92,93,104,106,108,114,115,116,140,141,143,144,145,146,147,148,151,152,153,154,155,157,158,159,160,162,165,168,173,185,187,188,190,191,194,195,196,203,206,207,209,210,213,214,215,217,226,229,234,236,237,239,250,252,256,264,276,280,282,291,293,294,297,305,308,310,311,312,313,316,319,320,322,325,328,330,331,335,336,337,339,342,349,351,353,356,358,359,363,364,365,376,379,380,383,384,385,386,388,390,393,394,396,399,410,411,412,414,416,420,421,424,430,431,438,440,442,444,447,452,453,456,458,459,461,462,463,466,467,468,484,485],wait:[1,12,233,275,453,455],walk:[3,229,236,237],wall:[],wall_surac:134,wall_surfac:[134,301],wallhi:325,wallstyl:326,wander:305,wang:[349,410,420],want:[0,1,2,3,5,6,7,8,9,11,12,17,38,40,56,63,66,68,71,75,81,90,93,103,104,106,107,109,110,112,114,116,141,145,160,161,162,165,168,171,185,188,190,191,194,195,196,197,202,203,211,214,217,218,221,223,226,228,234,237,247,266,274,279,282,292,293,295,305,307,309,316,318,323,325,329,331,333,349,351,358,364,365,369,377,378,383,385,388,394,395,396,410,416,420,422,423,431,440,441,442,444,446,447,454,456,458,459,460,461,463,465,466,476,479,484,486,488],ward:369,warm:[16,387],warn:[],warner:364,warp:[5,410],warranti:7,warren:383,wasn:3,wast:3,watanab:[317,318],watch:358,water:[],watkin:182,wave:[7,9,40,199,250,287,327,366,387],wavefunct:[9,366,387],wavelength:[118,164],wavepacket:[40,366,387,458],wavevector:275,wbodi:83,weak:284,web:[1,8,14,15,16,17,376],webb:200,weber:[3,5,7,15,88,142,386,412,420,439,440,447,470],websit:8,weckner:419,weight:[],welcom:456,well:[1,3,6,7,8,9,11,12,13,15,16,17,18,27,40,51,67,71,112,141,144,151,165,174,190,191,197,201,203,209,211,212,213,215,218,223,228,232,236,239,243,249,252,256,279,293,295,302,315,318,326,356,358,363,368,389,390,393,394,395,408,409,410,424,431,442,443,444,456,458,460,462,467,472,477,479,483,487],wennberg:348,went:[3,11],were:[3,4,5,6,7,11,12,13,15,16,19,34,41,42,52,56,60,70,71,109,112,116,143,145,165,168,169,181,188,191,194,197,203,206,207,208,209,211,217,223,225,232,233,264,270,294,326,327,331,341,348,360,362,387,391,394,398,419,423,453,455,456,458,459,460,461,463,465,473,476,484,485,487,488],weren:463,western:9,westview:450,what:[],whatev:[8,12,14,15,108,113,116,117,119,190,191,195,196,215,252,280,282,326,351,355,356,358,363,375,377,422,423,472,479,484],wheat:191,whelan:164,when:[0,1,2,3,4,6,8,9,11,12,13,14,15,16,17,18,20,21,23,24,25,26,27,28,29,30,31,32,33,35,37,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,55,56,59,61,62,63,71,81,86,88,103,104,105,107,109,112,113,116,117,119,142,143,144,148,152,153,155,161,163,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,188,189,190,191,192,194,195,196,197,198,199,201,202,203,204,206,207,208,209,210,211,212,213,214,215,216,217,218,222,223,224,225,226,227,228,230,231,233,236,239,240,242,243,247,252,253,254,255,256,257,258,259,264,266,267,269,270,272,274,278,279,280,281,282,283,285,286,287,288,292,293,294,295,296,297,305,306,308,309,310,311,313,315,316,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,336,337,338,339,340,342,343,344,345,346,347,348,349,351,354,355,356,357,358,359,360,362,363,364,365,367,370,371,372,373,374,375,376,377,378,379,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,399,400,401,402,403,404,405,406,407,408,409,410,411,412,414,415,416,417,419,420,422,423,424,425,430,431,438,440,441,442,443,444,446,447,449,450,451,453,455,456,458,459,460,461,462,463,464,465,466,467,468,469,470,472,473,475,476,477,478,483,484,485,486,488],whenev:[0,8,12,14,71,191,202,208,293,351,393,456,467,471,484,488],whenth:3,where:[1,3,6,8,9,10,11,12,14,15,18,21,23,24,25,26,27,28,29,32,35,36,37,39,40,41,43,47,48,49,51,55,61,63,65,66,68,69,70,71,73,75,79,80,82,83,84,85,87,88,89,90,92,93,94,95,96,97,98,104,106,108,112,113,114,115,116,117,118,119,141,143,144,145,146,147,148,151,152,153,154,155,157,158,159,160,162,164,166,168,169,172,174,184,188,190,191,194,195,196,197,198,203,204,207,210,211,214,215,217,218,222,223,225,226,228,229,230,231,232,234,236,237,238,239,242,243,245,247,249,250,253,256,264,267,273,274,275,276,279,281,282,283,286,288,293,294,295,296,297,301,302,305,307,310,311,312,313,316,317,318,320,323,324,325,326,328,329,330,331,334,336,337,338,339,342,343,344,346,349,351,355,356,357,358,359,360,363,364,365,368,369,370,372,376,377,378,379,380,381,382,383,385,386,387,388,389,390,391,392,393,394,395,396,399,403,408,409,410,411,412,414,416,417,419,420,421,422,423,424,430,433,436,437,438,439,440,441,442,443,444,447,450,451,452,453,455,456,457,458,460,461,462,463,465,467,468,470,472,473,474,475,476,479,483,484,485,486,488],wherea:[6,11,201,229,252,284,315,320,479],wherebi:285,wherev:232,whether:[6,8,11,12,17,39,40,54,59,61,63,70,71,102,107,109,152,153,185,190,191,193,194,195,196,203,209,212,213,214,215,216,217,221,225,228,237,249,252,256,282,296,308,316,322,323,331,333,346,348,349,357,361,363,372,374,378,392,394,398,408,409,410,414,423,439,453,456,458,459,461,463,470,471,472,475,484,485],which:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,28,29,32,33,37,38,39,40,41,42,44,45,46,47,50,51,53,54,55,56,58,59,61,63,64,66,67,70,71,72,73,74,75,76,77,78,80,81,82,83,85,87,88,89,90,91,93,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,116,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,171,172,173,176,177,178,179,182,184,185,187,188,190,191,192,194,195,196,197,198,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,242,243,246,247,249,250,251,252,253,254,255,256,257,258,260,262,264,265,267,268,269,270,271,272,274,275,276,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,300,302,304,305,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,325,326,327,328,329,330,331,333,334,335,337,339,340,343,344,346,347,348,349,351,353,354,355,356,357,358,359,360,362,363,364,365,366,368,369,370,372,373,374,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,401,402,403,405,407,408,409,410,411,412,414,416,417,418,420,421,422,423,424,425,426,427,428,429,430,431,434,438,439,440,441,442,443,444,445,446,447,450,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,479,484,485,486,487,488],whichev:[12,362,453,472],white:[191,229,236,237,238,293,312,320,458,484,487],whitesmok:191,whitespac:[2,3,191,357,458],who:[0,3,6,7,8,9,13,364,385],whole:[221,233,275,288,297,479],wholli:218,whose:[3,6,7,8,18,19,38,39,56,59,76,87,150,168,185,190,191,201,217,234,235,249,252,254,255,257,258,274,275,291,292,296,308,322,329,331,351,358,359,387,401,426,428,440,441,442,444,479,484,485],why:[3,6,237,316,323],wide:[1,6,7,9,61,63,194,316,323,351,360,374,377,387,422,423],wider:1,width:[190,191,366,389],wiggl:[3,217,249,301,325,326,328,330,461],wigner:140,wih:6,wiki:14,wikipedia:[6,14],wild:[3,12,22,44,77,87,116,173,195,196,293,335,353,376,393,452,460,465,486,488],wildcard:[3,12,159,169,188,190,191,290,376,438,465,468,487,488],wildli:252,win:363,window:[3,4,12,13,71,188,190,192,203,204,205,206,207,208,209,233,294,313,314,376,459],wipe:[194,394,439,480,482],wire:292,wirt:191,wisconsin:13,wise:[3,12,383,440,467],wish:[2,3,5,6,7,8,11,12,14,17,57,58,59,71,117,141,145,166,167,169,171,188,191,195,202,203,204,207,208,209,213,217,218,225,228,234,239,243,279,282,293,296,308,309,325,326,351,358,363,372,393,394,410,414,422,441,456,458,459,460,466,470,476,484,485,488],within:[1,2,3,6,8,9,11,12,13,15,16,17,29,39,40,41,42,55,59,61,63,65,69,70,71,72,73,77,79,92,108,112,115,116,117,119,122,140,156,165,168,189,190,191,195,196,201,202,203,206,207,208,209,211,212,213,214,218,220,225,228,234,236,274,278,279,280,282,284,293,294,296,298,300,304,305,309,320,323,325,329,331,333,347,351,356,357,358,359,360,363,368,370,372,379,384,385,386,387,389,394,395,398,399,410,417,418,419,424,425,439,440,442,443,444,445,447,453,455,456,458,466,467,470,472,479,483,484],without:[1,2,3,4,6,7,8,9,11,12,14,16,17,20,21,23,24,25,26,27,28,29,30,31,32,35,38,40,43,45,46,47,48,49,51,53,54,56,59,87,109,112,143,147,152,166,171,172,174,175,176,177,179,180,182,183,185,188,190,191,192,194,197,203,205,206,207,208,209,210,215,217,224,227,229,231,233,236,249,252,254,255,256,257,258,259,267,269,270,271,272,279,282,284,285,287,291,293,294,295,296,301,308,311,313,324,328,332,334,336,337,338,339,342,344,347,348,349,358,359,363,364,365,367,370,371,372,373,374,375,376,377,378,379,382,383,385,386,387,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,411,414,415,416,417,419,423,424,425,431,439,440,441,442,443,444,446,447,449,450,451,456,458,466,467,476,479,483,484],witht:[],witi:15,wolf:[],wolff:[414,441],won:[3,291,409],wong:[200,369],word:[2,3,6,8,12,29,63,191,194,201,202,203,204,207,208,209,216,234,261,266,281,286,292,322,333,347,377,414,454,456,458,484,485],work:[1,3,6,7,8,9,11,12,14,16,18,39,54,59,60,88,117,118,144,146,147,148,152,153,154,155,157,158,163,164,188,190,192,195,196,203,207,208,214,226,235,236,237,239,243,249,252,257,258,269,270,271,272,290,292,294,296,311,312,313,318,347,359,363,376,378,381,383,394,408,409,410,414,453,455,456,459,460,462,466,467,469,472,484],workaround:[116,293,414,485],worker:[12,422,423,447],workhors:8,workstat:[363,456],world:[3,12,140,347,358,362,452,455,456,473,484],worlei:383,worri:17,worsen:18,worst:329,worth:[203,204,206,207,208,209,283,294],would:[1,3,4,5,6,7,8,11,12,22,29,37,40,41,42,44,55,70,71,89,91,116,141,145,153,165,166,167,168,173,184,188,191,192,194,195,196,198,201,203,211,214,216,217,221,222,225,228,231,232,233,237,249,252,253,264,274,276,280,282,284,288,291,308,315,319,327,328,331,333,334,335,336,337,339,340,343,348,351,353,355,356,358,359,362,363,364,365,369,376,377,378,379,383,384,385,386,388,394,395,396,410,411,412,416,420,422,423,427,429,430,438,440,442,443,444,447,453,456,458,461,462,463,465,466,467,468,469,473,475,476,479,484,485,487,488],wrap:[1,3,6,11,12,57,59,165,167,187,188,189,191,192,202,208,216,217,218,233,239,249,293,305,308,325,327,329,348,349,358,456,458,459,461,466],wrapper:[],wrigger:297,wright:356,writabl:3,write:[],write_atom_weight:200,write_data:[],write_dump:[],write_freq:423,write_head:8,write_restart:[],writen:294,written:[3,5,6,7,8,9,12,13,14,17,65,69,115,140,163,188,189,190,191,192,194,195,196,197,198,199,200,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,219,221,222,223,224,225,226,227,229,230,231,232,233,234,236,237,238,239,240,241,242,243,244,245,246,248,251,259,260,261,262,263,264,265,266,267,268,273,274,275,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,305,306,308,309,311,312,313,314,315,316,317,319,320,322,323,324,325,327,328,329,330,332,346,351,359,385,394,448,450,453,454,456,459,460,464,465,472,473,474,475,484,486,487,488],wrong:[3,11,215,252,273,325,329,330,359,423,460,465],wrote:[3,460],wt1:414,wt2:414,wt3:414,wurtzit:351,www:[0,2,3,4,5,6,7,8,10,11,12,13,15,364,385,408,421,422,423,483],x86:12,x_ij:420,x_ijkl:334,x_kjli:334,x_ljik:334,xave:6,xavx:16,xcm:[8,293,484],xdr:[12,188],xeon:[1,4,7,9,12,16,17,18,363,471],xflag:[152,153,240,242,248,293,315],xhe:103,xhi:[2,6,57,59,167,188,217,319,325,328,330,458,461,476,484],xhi_bound:[6,188],xhi_new:458,xhost:[12,16],xi_ij:420,xiaowang:[13,388,442,444],xiij:274,xlat:[165,217,234,476],xlo:[2,6,11,57,59,167,188,217,234,319,325,328,330,458,461,476,484],xlo_bound:[6,188],xlo_new:458,xmax:[6,199,222,264,484],xmgrace:[],xmin:484,xml:[192,421],xml_label:421,xmovi:[],xmu:[326,391],xplane:326,xplor:188,xpo:165,xrd:[],xsph:9,xsu:[3,188,459],xt3:188,xt4:[18,188],xt5:[18,188],xtc:[3,7,188,189,190,191,192],xtcdump:191,xvf:12,xwall:[327,328,330],xxx:12,xyz:[3,6,7,13,42,66,71,106,108,153,160,165,188,189,190,191,192,207,215,242,252,253,256,280,290,291,293,305,307,326,328,330,350,357,455,459,485,487],xzhou:[13,388],xzy:455,yang:420,yb2:164,yb3:164,ybox:217,ycm:293,year:[5,7],yeh:348,yellow:[190,191],yellowgreen:191,yet:[3,7,9,17,39,190,195,284,290,325,349,355,356,363,375,377,378,387,450,456,458,459,484,486,487],yflag:[152,153,240,242,248,293,315],yhi:[6,59,167,188,217,319,325,328,330,458,461,476],yhi_bound:[6,188],yield:[6,91,110,117,141,148,153,191,204,215,221,252,270,284,316,322,323,326,331,348,368,383,391,414,419,476,484],yip:317,ylat:[165,217,234,476],ylo:[6,59,167,188,217,319,325,328,330,458,461,476],ylo_bound:[6,188],ymax:[199,484],ymin:484,york:[276,349],yoshida:[252,293],you:[0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,35,38,39,40,41,42,43,45,46,47,48,49,50,51,53,54,56,57,58,59,61,63,66,68,71,73,74,75,77,81,87,88,89,90,91,93,102,103,104,106,107,109,110,112,114,116,117,140,141,143,144,145,148,152,153,158,159,160,161,162,163,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,182,183,184,185,187,188,190,191,192,194,195,196,197,198,201,202,203,204,206,207,208,209,210,211,212,213,214,215,217,218,221,223,224,225,226,227,228,229,230,231,232,233,234,236,237,238,247,249,252,254,255,256,257,258,259,264,266,267,269,270,271,272,275,276,278,279,280,282,284,285,288,291,292,293,295,296,297,305,307,308,309,311,312,313,314,316,317,318,319,320,322,323,324,325,326,328,329,330,331,333,334,336,337,338,339,340,342,344,347,348,349,351,353,355,356,357,358,359,362,363,364,365,367,369,370,371,372,373,374,375,376,377,378,379,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,410,411,412,414,415,416,417,418,419,420,421,422,423,424,425,430,431,432,433,434,435,436,437,438,440,441,442,443,444,446,447,449,450,451,452,453,454,455,456,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,475,476,477,479,483,484,485,486,488],young:[391,426,428],your:[0,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,35,38,39,40,43,45,46,47,48,49,51,53,54,56,59,61,107,109,112,143,144,148,152,158,163,165,166,167,168,169,171,172,174,175,176,177,179,180,182,183,185,187,188,189,190,197,200,204,206,209,210,212,213,214,215,217,218,224,227,228,231,233,236,249,252,254,255,256,257,258,259,267,269,270,272,279,282,285,291,293,295,296,297,310,311,313,316,320,322,323,324,325,326,328,329,330,331,334,336,337,338,339,342,344,349,351,357,358,359,362,363,364,365,367,369,370,371,372,373,374,375,376,377,378,379,382,383,384,385,386,388,389,390,391,392,393,394,395,396,397,399,400,401,402,403,404,405,406,407,408,410,411,412,414,415,416,417,419,420,422,423,424,425,431,438,440,441,442,443,444,446,447,449,450,451,452,455,456,458,460,461,462,465,466,467,468,469,470,471,475,476,483,484,486,488],yourself:[6,8,12,13,215,357],yplane:326,ypo:165,ysu:[3,188,459],yuan:9,yukawa:[],yukawa_1_1:448,yxz:455,yzx:455,z_i:[387,444,451],z_j:[444,451],z_meam:410,zachari:13,zannoni:390,zbl:[],zblcut:444,zblcutinn:430,zblcutout:430,zblexpscal:444,zblz:430,zcm:293,zcylind:326,zepeda:201,zero:[3,4,6,9,11,12,26,27,39,41,48,49,59,61,63,66,71,75,87,88,90,93,102,103,104,105,106,108,109,110,112,113,114,115,116,117,118,121,140,141,144,145,146,153,154,157,158,160,162,163,164,165,167,168,169,171,174,183,185,187,188,190,191,194,195,196,197,199,201,202,203,204,205,206,207,208,209,210,211,212,213,215,217,222,223,224,225,227,228,229,230,232,236,237,238,239,240,242,248,249,250,252,256,264,267,276,281,282,283,284,285,288,290,291,293,294,295,296,299,300,302,308,310,315,316,318,320,323,324,325,326,327,328,330,331,332,333,338,351,354,356,357,358,359,363,366,369,370,372,373,374,377,379,382,383,387,390,392,393,394,395,399,401,403,404,407,409,410,414,419,423,424,425,438,441,445,447,451,453,454,455,458,459,461,463,465,466,467,468,472,473,476,479,484,485,486,488],zeta:[3,239,284,388],zfactor:190,zflag:[152,153,240,242,248,293,315],zhang:[293,316,391],zhi:[3,6,167,188,199,319,325,328,330,458,461,476],zhi_bound:[6,188],zhou:[13,369,388,420,442,444],zhu:437,ziegenhain:13,ziegler:[278,410,439,444,451],zimmerman2004:200,zimmerman2010:200,zimmerman:[9,70,200,369],zlat:[217,234,476],zlib:188,zlo:[3,6,167,188,199,319,325,327,328,330,458,461,476],zlo_bound:[6,188],zmax:[199,239,484],zmin:[239,484],zn2:164,zone:[118,294],zoom:[3,188,190,191],zplane:326,zr4:164,zrest:307,zsu:[3,188,459],zwall:325,zwall_veloc:239,zxy:455,zybin:423,zyx:455},titles:["LAMMPS Documentation","5. Accelerating LAMMPS performance","3. Commands","12. Errors","7. Example problems","13. Future and history","6. How-to discussions","1. Introduction","10. Modifying & extending LAMMPS","4. Packages","8. Performance & scalability","11. Python interface to LAMMPS","2. Getting Started","9. Additional tools","5.USER-CUDA package","5.GPU package","5.USER-INTEL package","5.KOKKOS package","5.USER-OMP package","5.OPT package","angle_style charmm command","angle_style class2 command","angle_coeff command","angle_style cosine command","angle_style cosine/delta command","angle_style cosine/periodic command","angle_style cosine/shift command","angle_style cosine/shift/exp command","angle_style cosine/squared command","angle_style dipole command","angle_style fourier command","angle_style fourier/simple command","angle_style harmonic command","angle_style hybrid command","angle_style none command","angle_style quartic command","angle_style sdk command","angle_style command","angle_style table command","atom_modify command","atom_style command","balance command","Body particles","bond_style class2 command","bond_coeff command","bond_style fene command","bond_style fene/expand command","bond_style harmonic command","bond_style harmonic/shift command","bond_style harmonic/shift/cut command","bond_style hybrid command","bond_style morse command","bond_style none command","bond_style nonlinear command","bond_style quartic command","bond_style command","bond_style table command","boundary command","box command","change_box command","clear command","comm_modify command","comm_style command","compute command","compute ackland/atom command","compute angle/local command","compute angmom/chunk command","compute basal/atom command","compute body/local command","compute bond/local command","compute centro/atom command","compute chunk/atom command","compute cluster/atom command","compute cna/atom command","compute com command","compute com/chunk command","compute contact/atom command","compute coord/atom command","compute damage/atom command","compute dihedral/local command","compute dilatation/atom command","compute displace/atom command","compute erotate/asphere command","compute erotate/rigid command","compute erotate/sphere command","compute erotate/sphere/atom command","compute event/displace command","compute fep command","compute group/group command","compute gyration command","compute gyration/chunk command","compute heat/flux command","compute improper/local command","compute inertia/chunk command","compute ke command","compute ke/atom command","compute ke/atom/eff command","compute ke/eff command","compute ke/rigid command","compute meso_e/atom command","compute meso_rho/atom command","compute meso_t/atom command","compute_modify command","compute msd command","compute msd/chunk command","compute msd/nongauss command","compute omega/chunk command","compute pair command","compute pair/local command","compute pe command","compute pe/atom command","compute plasticity/atom command","compute pressure command","compute property/atom command","compute property/chunk command","compute property/local command","compute rdf command","compute reduce command","compute saed command","compute slice command","compute smd/contact_radius command","compute smd/damage command","compute smd/hourglass_error command","compute smd/internal_energy command","compute smd/plastic_strain command","compute smd/plastic_strain_rate command","compute smd/rho command","compute smd/tlsph_defgrad command","compute smd/tlsph_dt command","compute smd/tlsph_num_neighs command","compute smd/tlsph_shape command","compute smd/tlsph_strain command","compute smd/tlsph_strain_rate command","compute smd/tlsph_stress command","compute smd/triangle_mesh_vertices","compute smd/ulsph_num_neighs command","compute smd/ulsph_strain command","compute smd/ulsph_strain_rate command","compute smd/ulsph_stress command","compute smd/vol command","compute sna/atom command","compute stress/atom command","compute force/tally command","compute temp command","compute temp/asphere command","compute temp/chunk command","compute temp/com command","compute temp/cs command","compute temp/deform command","compute temp/deform/eff command","compute temp/drude command","compute temp/eff command","compute temp/partial command","compute temp/profile command","compute temp/ramp command","compute temp/region command","compute temp/region/eff command","compute temp/rotate command","compute temp/sphere command","compute ti command","compute torque/chunk command","compute vacf command","compute vcm/chunk command","compute voronoi/atom command","compute xrd command","create_atoms command","create_bonds command","create_box command","delete_atoms command","delete_bonds command","dielectric command","dihedral_style charmm command","dihedral_style class2 command","dihedral_coeff command","dihedral_style cosine/shift/exp command","dihedral_style fourier command","dihedral_style harmonic command","dihedral_style helix command","dihedral_style hybrid command","dihedral_style multi/harmonic command","dihedral_style nharmonic command","dihedral_style none command","dihedral_style opls command","dihedral_style quadratic command","dihedral_style command","dihedral_style table command","dimension command","displace_atoms command","dump command","dump h5md command","dump image command","dump_modify command","dump molfile command","echo command","fix command","fix adapt command","fix adapt/fep command","fix addforce command","fix addtorque command","fix append/atoms command","fix atc command","fix atom/swap command","fix ave/atom command","fix ave/chunk command","fix ave/correlate command","fix ave/correlate/long command","fix ave/histo command","fix ave/spatial command","fix ave/spatial/sphere command","fix ave/time command","fix aveforce command","fix balance command","fix bond/break command","fix bond/create command","fix bond/swap command","fix box/relax command","fix colvars command","fix deform command","fix deposit command","fix drag command","fix drude command","fix drude/transform/direct command","fix dt/reset command","fix efield command","fix enforce2d command","fix evaporate command","fix external command","fix freeze command","fix gcmc command","fix gld command","fix gle command","fix gravity command","fix heat command","fix imd command","fix indent command","fix ipi command","fix langevin command","fix langevin/drude command","fix langevin/eff command","fix lb/fluid command","fix lb/momentum command","fix lb/pc command","fix lb/rigid/pc/sphere command","fix lb/viscous command","fix lineforce command","fix meso command","fix meso/stationary command","fix_modify command","fix momentum command","fix move command","fix msst command","fix neb command","fix nvt command","fix nvt/eff command","fix nph/asphere command","fix nph/sphere command","fix nphug command","fix npt/asphere command","fix npt/sphere command","fix nve command","fix nve/asphere command","fix nve/asphere/noforce command","fix nve/body command","fix nve/eff command","fix nve/limit command","fix nve/line command","fix nve/noforce command","fix nve/sphere command","fix nve/tri command","fix nvt/asphere command","fix nvt/sllod command","fix nvt/sllod/eff command","fix nvt/sphere command","fix oneway command","fix orient/fcc command","fix phonon command","fix pimd command","fix planeforce command","fix poems","fix pour command","fix press/berendsen command","fix print command","fix property/atom command","fix qbmsst command","fix qeq/point command","fix qeq/comb command","fix qeq/reax command","fix qmmm command","fix qtb command","fix reax/bonds command","fix reax/c/species command","fix recenter command","fix restrain command","fix rigid command","fix saed/vtk command","fix setforce command","fix shake command","fix smd command","fix smd/adjust_dt command","fix smd/integrate_tlsph command","fix smd/integrate_ulsph command","fix smd/move_tri_surf command","fix smd/setvel command","<no title>","fix smd/wall_surface command","fix spring command","fix spring/rg command","fix spring/self command","fix srd command","fix store/force command","fix store/state command","fix temp/berendsen command","fix temp/csvr command","fix temp/rescale command","fix temp/rescale/eff command","fix tfmc command","fix thermal/conductivity command","fix ti/rs command","fix ti/spring command","fix tmd command","fix ttm command","fix tune/kspace command","fix vector command","fix viscosity command","fix viscous command","fix wall/lj93 command","fix wall/gran command","fix wall/piston command","fix wall/reflect command","fix wall/region command","fix wall/srd command","group command","group2ndx command","if command","improper_style class2 command","improper_coeff command","improper_style cossq command","improper_style cvff command","improper_style fourier command","improper_style harmonic command","improper_style hybrid command","improper_style none command","improper_style ring command","improper_style command","improper_style umbrella command","include command","info command","jump command","kspace_modify command","kspace_style command","label command","lattice command","log command","mass command","min_modify command","min_style command","minimize command","molecule command","neb command","neigh_modify command","neighbor command","newton command","next command","package command","pair_style adp command","pair_style airebo command","pair_style awpmd/cut command","pair_style beck command","pair_style body command","pair_style bop command","pair_style born command","pair_style brownian command","pair_style buck command","pair_style buck/long/coul/long command","pair_style lj/charmm/coul/charmm command","pair_style lj/class2 command","pair_coeff command","pair_style colloid command","pair_style comb command","pair_style coul/cut command","pair_style coul/diel command","pair_style born/coul/long/cs command","pair_style lj/cut/dipole/cut command","pair_style dpd command","pair_style dsmc command","pair_style eam command","pair_style edip command","pair_style eff/cut command","pair_style eim command","pair_style gauss command","pair_style gayberne command","pair_style gran/hooke command","pair_style lj/gromacs command","pair_style hbond/dreiding/lj command","pair_style hybrid command","pair_style kim command","pair_style lcbop command","pair_style line/lj command","pair_style list command","pair_style lj/cut command","pair_style lj96/cut command","pair_style lj/cubic command","pair_style lj/expand command","pair_style lj/long/coul/long command","pair_style lj/sf command","pair_style lj/smooth command","pair_style lj/smooth/linear command","pair_style lj/cut/soft command","pair_style lubricate command","pair_style lubricateU command","pair_style meam command","pair_style meam/spline","pair_style meam/sw/spline","pair_style mie/cut command","pair_modify command","pair_style morse command","pair_style nb3b/harmonic command","pair_style nm/cut command","pair_style none command","pair_style peri/pmb command","pair_style polymorphic command","pair_style quip command","pair_style reax command","pair_style reax/c command","pair_style resquared command","pair_style lj/sdk command","pair_style smd/hertz command","pair_style smd/tlsph command","pair_style smd/tri_surface command","pair_style smd/ulsph command","pair_style snap command","pair_style soft command","pair_style sph/heatconduction command","pair_style sph/idealgas command","pair_style sph/lj command","pair_style sph/rhosum command","pair_style sph/taitwater command","pair_style sph/taitwater/morris command","pair_style srp command","pair_style command","pair_style sw command","pair_style table command","pair_style tersoff command","pair_style tersoff/mod command","pair_style tersoff/zbl command","pair_style thole command","pair_style tri/lj command","pair_style vashishta command","pair_write command","pair_style yukawa command","pair_style yukawa/colloid command","pair_style zbl command","partition command","prd command","print command","processors command","python command","quit command","read_data command","read_dump command","read_restart command","region command","replicate command","rerun command","reset_timestep command","restart command","run command","run_style command","set command","shell command","special_bonds command","suffix command","tad command","temper command","thermo command","thermo_modify command","thermo_style command","timer command","timestep command","<no title>","uncompute command","undump command","unfix command","units command","variable command","velocity command","write_data command","write_dump command","write_restart command"],titleterms:{"break":212,"default":[37,39,40,55,57,58,59,61,62,71,87,88,102,103,105,107,118,122,123,140,145,153,154,158,164,165,168,170,184,186,187,188,190,191,192,193,195,196,197,199,200,201,203,207,208,209,212,213,215,216,217,218,222,225,228,229,234,236,237,238,239,240,242,247,250,252,253,256,270,271,275,276,279,280,281,282,283,285,288,290,291,293,294,308,310,315,316,317,318,321,323,325,327,331,343,346,348,349,351,352,354,355,357,359,360,361,363,366,369,371,387,408,409,414,422,423,438,439,453,454,455,458,459,461,463,465,466,467,470,472,474,475,476,477,478,483,485,486,487],"function":484,"long":[205,370,372,373,374,375,379,381,382,399,403,407,417,425],"new":8,"static":12,acceler:1,ackland:64,acknowledg:7,adapt:[195,196],addforc:197,addit:[12,13],addtorqu:198,adiabat:6,adjust_dt:298,adp:364,airebo:365,alloi:385,amber2lmp:13,amber:6,angl:[8,65],angle_coeff:22,angle_styl:[2,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],angmom:66,append:199,arrai:6,aspher:[6,82,144,254,257,260,261,269],atc:[9,200],atom:[6,7,8,64,67,70,71,72,73,76,77,78,80,81,85,95,96,99,100,101,110,111,113,140,141,163,199,201,202,282,484],atom_modifi:39,atom_styl:40,attract:5,aug:0,aveforc:210,awpmd:[9,366],balanc:[41,211],barostat:6,basal:67,beck:367,berendsen:[280,311],between:6,binary2txt:13,bodi:[6,8,42,68,262,368],bond:[8,13,69,212,213,214,289],bond_coeff:44,bond_styl:[2,43,45,46,47,48,49,50,51,52,53,54,55,56],bop:369,born:[370,381],boundari:[7,57],box:[6,58,215],brownian:371,buck:[372,373,381],bug:3,build:[9,11,12],calcul:6,call:12,categori:2,centro:70,ch2lmp:13,chain:13,change_box:59,charmm:[6,20,171,374,407],chunk:[6,66,71,75,90,93,104,106,114,145,160,162,203],citat:7,class2:[21,43,172,334,375],clear:60,cluster:72,cmm:9,cna:73,code:6,coeffici:6,colloid:[325,377,450],colvar:[9,13,216],com:[74,75,146],comb3:378,comb:[285,378],come:5,comm_modifi:61,comm_styl:62,command:[2,6,8,12,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,480,481,482,483,484,485,486,487,488],common:3,comparison:1,compos:6,compress:9,comput:[2,6,8,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,484],compute_modifi:102,condit:7,conduct:[6,316],constant:6,constraint:7,contact:76,contact_radiu:120,coord:77,core:6,correl:[204,205],cosin:[23,24,25,26,27,28,174],cossq:336,coul:[370,372,373,374,375,379,380,381,392,399,403,407,417,425],coupl:6,creat:213,create_atom:165,create_bond:166,create_box:167,createatom:13,creation:7,csld:312,csvr:312,cubic:401,cuda:[9,14,109,112,143,152,197,210,224,227,231,252,259,295,296,311,313,324,370,372,374,375,385,391,392,399,400,402,405,415,440,442],custom:8,cut:[49,366,372,375,379,382,387,389,399,400,407,413,417],cvff:337,damag:[78,121],data2xmovi:13,data:6,databas:13,deby:[379,399],deform:[148,149,217],delete_atom:168,delete_bond:169,delta:24,deposit:218,descript:[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,480,481,482,483,484,485,486,487,488],diagnost:7,diel:380,dielectr:170,diffract:9,diffus:6,dihedr:[8,79],dihedral_coeff:173,dihedral_styl:[2,171,172,174,175,176,177,178,179,180,181,182,183,184,185],dilat:80,dimens:186,dipol:[6,29,382],direct:221,discuss:6,disp:6,displac:[81,86],displace_atom:187,distribut:[7,12],document:0,dpd:383,drag:219,dreid:[6,393],drude:[6,9,150,220,221,237],dsf:[379,399],dsmc:384,dump:[6,8,188,189,190,192],dump_modifi:191,dynam:284,eam:[13,385],echo:193,edip:386,eff:[9,13,96,97,149,151,156,238,253,263,271,314,387],efield:223,eim:388,elast:6,emac:13,enforce2d:224,ensembl:7,erot:[82,83,84,85],error:3,evapor:225,event:86,exampl:[1,4,6,11,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,471,472,473,474,475,476,477,478,480,481,482,483,484,485,486,487,488],exp:[27,174],expand:[46,402],extend:[8,11],extern:226,fcc:274,featur:[7,8,484],fene:[45,46],fep:[9,13,87,196],field:[6,7],file:6,finit:6,fix:[2,6,8,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,484],fix_modifi:[195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,322,323,324,325,326,327,328,329,330],flow:6,fluid:239,flux:[91,142],forc:[6,7,142,309],fourier:[30,31,175,338],freez:227,from:[6,11],futur:5,gauss:389,gaybern:390,gcmc:228,gener:[1,6,7,13],get:12,gld:229,gle:230,global:6,gpu:[9,15,367,370,372,374,375,377,379,382,383,385,389,390,392,399,400,401,402,413,415,424,425,431,440,441,442,449,450,451],gran:[326,391],granular:6,graviti:231,gromac:392,group2ndx:332,group:[88,331,484],gyrat:[89,90],h5md:[9,188,189],harmon:[32,47,48,49,176,179,325,339,416],hbond:393,heat:[91,142,232],heatconduct:432,helix:177,hertz:[391,426],histo:206,histori:[5,391],hook:391,hourglass_error:122,how:6,hybrid:[33,50,178,340,394],idealga:433,imag:[188,190],imd:233,implicit:374,improp:[8,92],improper_coeff:335,improper_styl:[2,334,336,337,338,339,340,341,342,343,344],includ:345,inclus:8,indent:234,indic:0,individu:2,induc:6,inertia:93,info:[0,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,322,323,324,325,326,327,328,329,330,346],input:[2,6,8],instal:11,instruct:9,integr:[6,7],integrate_tlsph:299,integrate_ulsph:300,intel:[9,16,374,390,399,440],interfac:[6,11],internal_energi:123,introduct:7,invers:221,ipi:235,ipp:13,jul:[],jump:347,kate:13,keyword:414,kim:[9,395],kokko:[9,17],kspace:[2,8,9,321],kspace_modifi:348,kspace_styl:[6,349],label:350,lammp:[0,1,2,6,7,8,11,12],langevin:[236,237,238],lattic:351,lcbop:396,librari:[6,11,12],limit:[264,313],line:[12,265,397],linear:406,lineforc:244,list:[2,398],lj1043:325,lj126:325,lj93:325,lj96:400,lmp2arc:13,lmp2cfg:13,lmp2vmd:13,local:[6,65,68,69,79,92,108,115],log:352,lubric:408,lubricateu:409,make:12,mass:353,math:484,matlab:13,meam:[9,410,411,412],measur:1,meso:[245,246],meso_:99,meso_rho:100,meso_t:101,messag:3,micelle2d:13,mie:413,min_modifi:354,min_styl:355,minim:[8,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,322,323,324,325,326,327,328,329,330,356],misc:9,mod:[320,443],model:[6,7],modifi:8,molecul:357,molfil:[9,188,192],moltempl:13,momentum:[240,248],morri:437,mors:[51,393,415],move:249,move_tri_surf:301,movi:[188,190],mpi:11,msd:[103,104,105],msi2lmp:13,msm:[370,372,374,379,399],msst:250,multi:[6,7,179],multipl:6,nb3b:416,neb:[251,358],neigh_modifi:359,neighbor:360,nemd:6,newton:361,next:362,nharmon:180,noforc:[261,266],non:[6,7],none:[34,52,181,341,418],nongauss:105,nonlinear:53,nph:[252,253,254,255,293],nphug:256,npt:[252,253,257,258,293],nve:[259,260,261,262,263,264,265,266,267,268,293],nvt:[252,253,269,270,271,272,293],omega:106,omp:[9,18,20,21,23,24,25,26,27,28,29,30,31,32,35,38,43,45,46,47,48,49,51,53,54,56,171,172,174,175,176,177,179,180,182,183,185,231,252,254,255,256,257,258,259,267,269,270,272,285,334,336,337,338,339,342,344,364,365,367,370,371,372,373,374,375,377,378,379,380,382,383,385,388,389,390,391,392,393,394,397,399,400,401,402,403,404,405,406,407,408,411,412,415,416,417,419,424,425,431,440,441,442,443,444,446,447,449,450,451],onewai:273,open:7,oper:484,opl:182,opt:[19,374,385,399,403,415],optim:1,option:[6,8,12],orient:274,orthogon:6,other:6,output:[6,7,8,12,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,322,323,324,325,326,327,328,329,330],overlai:394,overview:11,packag:[1,9,12,14,15,16,17,18,19,363],pair:[6,107,108],pair_coeff:376,pair_modifi:414,pair_styl:[2,364,365,366,367,368,369,370,371,372,373,374,375,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,449,450,451],pair_writ:448,pairwis:8,parallel:11,paramet:6,pars:2,partial:152,particl:[6,7,42],partit:452,past:5,per:6,perform:[1,10],peri:419,period:25,phonon:[9,13,275],pimd:276,piston:327,planeforc:277,plastic:111,plastic_strain:124,plastic_strain_r:125,pmb:419,poem:[9,278],point:284,polariz:6,poli:[371,408,409],polym:13,polymorph:420,post:7,potenti:[2,6,8],pour:279,pppm:6,prd:453,pre:7,press:280,pressur:112,previou:12,print:[281,454],problem:[3,4],process:[6,7],processor:455,profil:153,properti:[6,113,114,115,282],pymol_aspher:13,python:[9,11,13,456],qbmsst:283,qeq:[284,285,286],qmmm:[9,287],qtb:[9,288],quadrat:183,quantiti:6,quartic:[35,54],quip:421,quit:457,ramp:154,rattl:296,rdf:116,read_data:458,read_dump:459,read_restart:460,reax:[9,13,286,289,290,422,423],reaxc:9,rebo:365,recent:291,reduc:117,refer:484,reflect:328,region:[8,117,155,156,329,461,484],relat:[20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,40,41,43,44,45,46,47,48,49,50,51,53,54,55,56,57,59,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,83,84,85,86,87,89,91,92,93,94,95,96,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,225,227,228,229,230,231,232,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,288,289,290,291,293,294,295,297,298,299,300,301,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,342,343,344,345,346,347,348,349,351,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,463,464,465,466,467,468,470,471,472,473,474,475,476,477,478,480,481,482,484,485,486,487,488],relax:215,replic:462,replica:[6,7],report:3,requir:12,rerun:463,rescal:[313,314],reset:222,reset_timestep:464,resquar:424,restart2data:13,restart:[6,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,322,323,324,325,326,327,328,329,330,465],restrain:292,restrict:[14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,480,481,482,483,484,485,486,487,488],rho:126,rhosum:435,rigid:[6,83,98,242,293],ring:342,rotat:157,rule:2,run:[6,11,12,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,322,323,324,325,326,327,328,329,330,466],run_styl:467,scalabl:10,scalar:6,screen:12,script:[2,6,8,11],sdk:[36,425],self:307,serial:11,set:[6,468],setforc:295,setvel:302,shake:296,share:[11,12],shell:[6,469],shield:284,shift:[26,27,48,49,174],simpl:31,simul:6,size:6,slater:284,slice:119,sllod:[270,271],small:293,smd:[9,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,297,298,299,300,301,302,304,426,427,428,429],smooth:[405,406],sna:140,snad:140,snap:430,snapshot:6,snav:140,soft:[407,431],solver:2,sourc:7,spatial:[207,208],spc:6,speci:290,special:[7,414,484],special_bond:470,sph:[9,432,433,434,435,436,437],sphere:[84,85,158,208,242,255,258,267,272],spheric:6,spline:[411,412],spring:[305,306,307,318],squar:28,srd:[308,330],srp:438,standard:9,start:[12,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,322,323,324,325,326,327,328,329,330],state:310,stationari:246,stop:[195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,215,216,217,218,219,221,222,223,224,225,226,227,228,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,277,278,279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,322,323,324,325,326,327,328,329,330],store:[309,310],strategi:1,streitz:379,stress:[141,142],structur:2,style:[1,2,6,8],submit:8,suffix:471,summari:6,swap:[201,214],syntax:[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,275,276,277,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,480,481,482,483,484,485,486,487,488],system:6,tabl:[0,6,38,56,185,441,442],tad:472,taitwat:[436,437],talli:142,temp:[143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,311,312,313,314],temper:473,temperatur:6,tersoff:[442,443,444],test:11,tfmc:315,thermal:[6,316],thermo:[6,474],thermo_modifi:475,thermo_styl:476,thermodynam:[6,8],thermostat:6,thole:445,time:[6,209],timer:477,timestep:478,tip3p:6,tip4p:[6,379,399,403,407],tip:12,tlsph:427,tlsph_defgrad:127,tlsph_dt:128,tlsph_num_neigh:129,tlsph_shape:130,tlsph_strain:131,tlsph_strain_rat:132,tlsph_stress:133,tmd:319,tool:[12,13],torqu:160,transform:221,tri:[268,446],tri_surfac:428,triangle_mesh_vertic:134,triclin:6,tstat:383,ttm:320,tune:321,type:7,ulsph:429,ulsph_num_neigh:135,ulsph_strain:136,ulsph_strain_r:137,ulsph_stress:138,umbrella:344,uncomput:480,undump:481,unfix:482,unit:483,user:[9,12,14,16,18],vacf:161,valu:[6,484],variabl:[6,8,484],variou:1,vashishta:447,vcm:162,vector:[6,322,484],veloc:485,version:[0,5,12],via:12,vim:13,viscos:[6,323],viscou:[243,324],visual:6,vol:139,voronoi:[9,163],vtk:294,wall:[6,325,326,327,328,329,330],wall_surfac:304,warn:3,water:6,weight:206,what:[7,12],wolf:[370,379],wrapper:11,write:6,write_data:486,write_dump:487,write_restart:488,xmgrace:13,xmovi:13,xrd:164,xtc:9,yukawa:[449,450],zbl:[444,451]}}) \ No newline at end of file diff --git a/examples/USER/lb/polymer/in.polymer b/examples/USER/lb/polymer/in.polymer_default_gamma similarity index 75% copy from examples/USER/lb/polymer/in.polymer copy to examples/USER/lb/polymer/in.polymer_default_gamma index 932ce989b..4344dc0ef 100755 --- a/examples/USER/lb/polymer/in.polymer +++ b/examples/USER/lb/polymer/in.polymer_default_gamma @@ -1,105 +1,107 @@ #===========================================================================# # polymer test # # # # Run consists of a lone 32-bead coarse-grained polymer # # undergoing Brownian motion in thermal lattice-Boltzmann fluid. # # # # Here, gamma (used in the calculation of the monomer-fluid interaction # # force) is set by the user (gamma = 0.03 for this simulation...this # # value has been calibrated a priori through simulations of the drag # # force acting on a single particle of the same radius). # # Sample output from this run can be found in the file: # # 'dump.polymer.lammpstrj' # # and viewed using, e.g., the VMD software. # # # -# Santtu Ollila # -# santtu.ollila@aalto.fi # -# Aalto University # -# August 14, 2013 # #===========================================================================# units nano dimension 3 boundary p p p atom_style hybrid molecular special_bonds fene read_data data.polymer #---------------------------------------------------------------------------- # Need a neighbor bin size smaller than the lattice-Boltzmann grid spacing # to ensure that the particles belonging to a given processor remain inside # that processors lattice-Boltzmann grid. #---------------------------------------------------------------------------- neighbor 0.5 bin neigh_modify delay 0 every 1 check yes neigh_modify exclude type 2 2 neigh_modify exclude type 2 1 #---------------------------------------------------------------------------- # Implement a hard-sphere interaction between the particles at the center of # each monomer (use a truncated and shifted Lennard-Jones potential). #---------------------------------------------------------------------------- bond_style fene bond_coeff 1 60.0 2.25 4.14195 1.5 pair_style lj/cut 1.68369 pair_coeff 1 1 4.14195 1.5 1.68369 pair_coeff 1 2 4.14195 1.5 1.68369 pair_coeff 2 2 0 1.0 mass * 0.000000771064 timestep 0.00003 #---------------------------------------------------------------------------- # ForceAtoms are the particles at the center of each monomer which # do not interact with the fluid, but are used to implement the hard-sphere # interactions. # FluidAtoms are the particles representing the surface of the monomer -# which do interact with the fluid. +# which do interact with the fluid. Monomer surface is shell of radius 0.7 #---------------------------------------------------------------------------- group ForceAtoms type 1 group FluidAtoms type 2 #--------------------------------------------------------------------------- # Create a lattice-Boltzmann fluid covering the simulation domain. # This fluid feels a force due to the particles specified through FluidAtoms # (however, this fix does not explicity apply a force back on to these -# particles. This is accomplished through the use of the rigid_pc_sphere +# particles. This is accomplished through the use of the lb/viscous # fix). -# Use the LB integration scheme of Ollila et. al. (for stability reasons, -# this integration scheme should be used when a large user set value for -# gamma is specified), a fluid viscosity = 0.023333333, -# fluid density= 0.0000166368, -# value for gamma=0.03, lattice spacing dx=1.0, and mass unit, dm=0.0000166368. +# Uses the standard LB integration scheme, fluid viscosity = 0.023333333, +# fluid density= 0.0000166368, lattice spacing dx=1.0, and mass unit, +# dm=0.0000166368. +# Use the default method to calculate the interaction force between the +# particles and the fluid. This calculation requires the surface area +# of the composite object represented by each particle node. By default +# this area is assumed equal to dx*dx; however, since this is not the case +# here, it is input through the setArea keyword (i.e. particles of type 2 +# correspond to a surface area of 0.2025=4 Pi R^2/N ). +# Use the trilinear interpolation stencil to distribute the force from +# a given particle onto the fluid mesh (results in a smaller hydrodynamic +# radius than if the Peskin stencil is used). # Use a thermal lattice-Boltzmann fluid (temperature 300K, random number # seed=15003). This enables the particles to undergo Brownian motion in # the fluid. #---------------------------------------------------------------------------- -fix 1 FluidAtoms lb/fluid 5 1 0.023333333 0.0000166368 setGamma 0.03 dx 1.0 dm 0.0000166368 noise 300.0 15003 +fix 1 FluidAtoms lb/fluid 3 1 0.023333333 0.0000166368 setArea 2 0.20525 dx 1.0 dm 0.0000166368 noise 300.0 15003 #---------------------------------------------------------------------------- # Apply the force from the fluid to the particles, and integrate their # motion, constraining them to move and rotate together as a single rigid # spherical object. # Since both the ForceAtoms (central atoms), and the FluidAtoms (spherical # shell) should move and rotate together, this fix is applied to all of # the atoms in the system. However, since the central atoms should not -# feel a force due to the fluid, they are excluded from the force -# calculation through the use of the 'innerNodes' keyword. -# NOTE: This fix should only be used when the user specifies a value for -# gamma (through the setGamma keyword) in the lb_fluid fix. +# feel a force due to the fluid, they are excluded from the fluid force +# calculation. #---------------------------------------------------------------------------- -fix 2 all lb/rigid/pc/sphere molecule innerNodes ForceAtoms +fix 2 FluidAtoms lb/viscous +fix 3 all rigid molecule #---------------------------------------------------------------------------- # To ensure that numerical errors do not lead to a buildup of momentum in the # system, the momentum_lb fix is used every 10000 timesteps to zero out the # total (particle plus fluid) momentum in the system. #---------------------------------------------------------------------------- -fix 3 all lb/momentum 10000 linear 1 1 1 +fix 4 all lb/momentum 10000 linear 1 1 1 #---------------------------------------------------------------------------- # Write position and velocity coordinates into a file every 2000 time steps. #---------------------------------------------------------------------------- -dump 1 ForceAtoms custom 2000 dump.polymer.lammpstrj id x y z vx vy vz +dump 1 ForceAtoms custom 2000 dump.polymer_default_gamma.lammpstrj id x y z vx vy vz run 2000001 diff --git a/examples/USER/lb/polymer/in.polymer b/examples/USER/lb/polymer/in.polymer_setgamma similarity index 96% rename from examples/USER/lb/polymer/in.polymer rename to examples/USER/lb/polymer/in.polymer_setgamma index 932ce989b..b5108a60f 100755 --- a/examples/USER/lb/polymer/in.polymer +++ b/examples/USER/lb/polymer/in.polymer_setgamma @@ -1,105 +1,105 @@ #===========================================================================# # polymer test # # # # Run consists of a lone 32-bead coarse-grained polymer # # undergoing Brownian motion in thermal lattice-Boltzmann fluid. # # # # Here, gamma (used in the calculation of the monomer-fluid interaction # # force) is set by the user (gamma = 0.03 for this simulation...this # # value has been calibrated a priori through simulations of the drag # # force acting on a single particle of the same radius). # # Sample output from this run can be found in the file: # # 'dump.polymer.lammpstrj' # # and viewed using, e.g., the VMD software. # # # # Santtu Ollila # # santtu.ollila@aalto.fi # # Aalto University # # August 14, 2013 # #===========================================================================# units nano dimension 3 boundary p p p atom_style hybrid molecular special_bonds fene read_data data.polymer #---------------------------------------------------------------------------- # Need a neighbor bin size smaller than the lattice-Boltzmann grid spacing # to ensure that the particles belonging to a given processor remain inside # that processors lattice-Boltzmann grid. #---------------------------------------------------------------------------- neighbor 0.5 bin neigh_modify delay 0 every 1 check yes neigh_modify exclude type 2 2 neigh_modify exclude type 2 1 #---------------------------------------------------------------------------- # Implement a hard-sphere interaction between the particles at the center of # each monomer (use a truncated and shifted Lennard-Jones potential). #---------------------------------------------------------------------------- bond_style fene bond_coeff 1 60.0 2.25 4.14195 1.5 pair_style lj/cut 1.68369 pair_coeff 1 1 4.14195 1.5 1.68369 pair_coeff 1 2 4.14195 1.5 1.68369 pair_coeff 2 2 0 1.0 mass * 0.000000771064 timestep 0.00003 #---------------------------------------------------------------------------- # ForceAtoms are the particles at the center of each monomer which # do not interact with the fluid, but are used to implement the hard-sphere # interactions. # FluidAtoms are the particles representing the surface of the monomer # which do interact with the fluid. #---------------------------------------------------------------------------- group ForceAtoms type 1 group FluidAtoms type 2 #--------------------------------------------------------------------------- # Create a lattice-Boltzmann fluid covering the simulation domain. # This fluid feels a force due to the particles specified through FluidAtoms # (however, this fix does not explicity apply a force back on to these # particles. This is accomplished through the use of the rigid_pc_sphere # fix). # Use the LB integration scheme of Ollila et. al. (for stability reasons, # this integration scheme should be used when a large user set value for # gamma is specified), a fluid viscosity = 0.023333333, # fluid density= 0.0000166368, # value for gamma=0.03, lattice spacing dx=1.0, and mass unit, dm=0.0000166368. # Use a thermal lattice-Boltzmann fluid (temperature 300K, random number # seed=15003). This enables the particles to undergo Brownian motion in # the fluid. #---------------------------------------------------------------------------- fix 1 FluidAtoms lb/fluid 5 1 0.023333333 0.0000166368 setGamma 0.03 dx 1.0 dm 0.0000166368 noise 300.0 15003 #---------------------------------------------------------------------------- # Apply the force from the fluid to the particles, and integrate their # motion, constraining them to move and rotate together as a single rigid # spherical object. # Since both the ForceAtoms (central atoms), and the FluidAtoms (spherical # shell) should move and rotate together, this fix is applied to all of # the atoms in the system. However, since the central atoms should not # feel a force due to the fluid, they are excluded from the force # calculation through the use of the 'innerNodes' keyword. # NOTE: This fix should only be used when the user specifies a value for # gamma (through the setGamma keyword) in the lb_fluid fix. #---------------------------------------------------------------------------- fix 2 all lb/rigid/pc/sphere molecule innerNodes ForceAtoms #---------------------------------------------------------------------------- # To ensure that numerical errors do not lead to a buildup of momentum in the # system, the momentum_lb fix is used every 10000 timesteps to zero out the # total (particle plus fluid) momentum in the system. #---------------------------------------------------------------------------- fix 3 all lb/momentum 10000 linear 1 1 1 #---------------------------------------------------------------------------- # Write position and velocity coordinates into a file every 2000 time steps. #---------------------------------------------------------------------------- -dump 1 ForceAtoms custom 2000 dump.polymer.lammpstrj id x y z vx vy vz +dump 1 ForceAtoms custom 2000 dump.polymer_setgamma.lammpstrj id x y z vx vy vz run 2000001 diff --git a/examples/USER/lb/polymer/out.polymer b/examples/USER/lb/polymer/out.polymer deleted file mode 100755 index 91a1c4d60..000000000 --- a/examples/USER/lb/polymer/out.polymer +++ /dev/null @@ -1,19 +0,0 @@ -LAMMPS (22 Feb 2013) -Scanning data file ... - 1 = max bonds/atom -Reading data file ... - orthogonal box = (0 0 0) to (40 40 40) - 2 by 2 by 2 MPI processor grid - 992 atoms - 31 bonds -Finding 1-2 1-3 1-4 neighbors ... - 2 = max # of 1-2 neighbors - 2 = max # of special neighbors -32 atoms in group ForceAtoms -960 atoms in group FluidAtoms -Using a lattice-Boltzmann grid of 40 by 40 by 40 total grid points. (fix_lb_fluid.cpp:354) -32 rigid bodies with 992 atoms -Setting up run ... -Memory usage per processor = 0.539707 Mbytes -Step Temp E_pair E_mol TotEng Press - 0 0 -8.2758489 2790.7741 2782.4982 1.8503717e-20 diff --git a/examples/USER/lb/polymer/out.polymer_default_gamma b/examples/USER/lb/polymer/out.polymer_default_gamma new file mode 100644 index 000000000..438e1c2ca --- /dev/null +++ b/examples/USER/lb/polymer/out.polymer_default_gamma @@ -0,0 +1,83 @@ +LAMMPS (10 Aug 2015) +Reading data file ... + orthogonal box = (0 0 0) to (40 40 40) + 2 by 2 by 4 MPI processor grid + reading atoms ... + 992 atoms + scanning bonds ... + 1 = max bonds/atom + reading bonds ... + 31 bonds +Finding 1-2 1-3 1-4 neighbors ... + Special bond factors lj: 0 1 1 + Special bond factors coul: 0 1 1 + 2 = max # of 1-2 neighbors + 2 = max # of special neighbors +32 atoms in group ForceAtoms +960 atoms in group FluidAtoms +Using a lattice-Boltzmann grid of 40 by 40 by 40 total grid points. (../fix_lb_fluid.cpp:385) +32 rigid bodies with 992 atoms +Neighbor list info ... + 1 neighbor list requests + update every 1 steps, delay 0 steps, check yes + master list distance cutoff = 2.18369 + ghost atom cutoff = 2.18369 +Setting up Verlet run ... + Unit style : nano + Current step: 0 + Time step : 3e-05 +Memory usage per processor = 0.111926 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0 -8.2758489 2790.7741 2782.4982 1.9081958e-20 + 2000001 4.3017148 0 2792.6037 2798.2163 -0.00077006865 +Loop time of 51900 on 16 procs for 2000001 steps with 992 atoms + +Pair time (%) = 4.33729 (0.00835701) +Bond time (%) = 3.33134 (0.00641876) +Neigh time (%) = 35.1247 (0.0676777) +Comm time (%) = 61.528 (0.118551) +Outpt time (%) = 0.361813 (0.000697135) +Other time (%) = 51795.3 (99.7983) + +Nlocal: 62 ave 465 max 0 min +Histogram: 11 0 3 1 0 0 0 0 0 1 +Nghost: 94.8125 ave 340 max 0 min +Histogram: 9 0 0 0 4 0 0 1 0 2 +Neighs: 0.25 ave 2 max 0 min +Histogram: 13 0 0 0 0 2 0 0 0 1 + +Total # of neighbors = 4 +Ave neighs/atom = 0.00403226 +Ave special neighs/atom = 0.0625 +Neighbor list builds = 23853 +Dangerous builds = 0 + +------------------------------------------------------------ +Sender: LSF System <lsfadmin@lsfhost.localdomain> +Subject: Job 883849: </opt/hpmpi/bin/mpirun -srun ./lmp_mpi -in in.polymer_default_gamma> Done + +Job </opt/hpmpi/bin/mpirun -srun ./lmp_mpi -in in.polymer_default_gamma> was submitted from host <req770> by user <colin>. +Job was executed on host(s) <16*lsfhost.localdomain>, in queue <mpi>, as user <colin>. +</home/colin> was used as the home directory. +</home/colin/lammps-10Aug15/examples/USER/lb/tested/polymer_default> was used as the working directory. +Started at Mon Aug 24 11:13:12 2015 +Results reported at Tue Aug 25 01:38:50 2015 + +Your job looked like: + +------------------------------------------------------------ +# LSBATCH: User input +/opt/hpmpi/bin/mpirun -srun ./lmp_mpi -in in.polymer_default_gamma +------------------------------------------------------------ + +Successfully completed. + +Resource usage summary: + + CPU time : 829343.88 sec. + Max Memory : 43 MB + Max Swap : 805 MB + + +The output (if any) is above this job summary. + diff --git a/examples/USER/lb/polymer/out.polymer_setgamma b/examples/USER/lb/polymer/out.polymer_setgamma new file mode 100644 index 000000000..5dc141c08 --- /dev/null +++ b/examples/USER/lb/polymer/out.polymer_setgamma @@ -0,0 +1,83 @@ +LAMMPS (10 Aug 2015) +Reading data file ... + orthogonal box = (0 0 0) to (40 40 40) + 2 by 2 by 4 MPI processor grid + reading atoms ... + 992 atoms + scanning bonds ... + 1 = max bonds/atom + reading bonds ... + 31 bonds +Finding 1-2 1-3 1-4 neighbors ... + Special bond factors lj: 0 1 1 + Special bond factors coul: 0 1 1 + 2 = max # of 1-2 neighbors + 2 = max # of special neighbors +32 atoms in group ForceAtoms +960 atoms in group FluidAtoms +Using a lattice-Boltzmann grid of 40 by 40 by 40 total grid points. (../fix_lb_fluid.cpp:385) +32 rigid bodies with 992 atoms +Neighbor list info ... + 1 neighbor list requests + update every 1 steps, delay 0 steps, check yes + master list distance cutoff = 2.18369 + ghost atom cutoff = 2.18369 +Setting up Verlet run ... + Unit style : nano + Current step: 0 + Time step : 3e-05 +Memory usage per processor = 0.108554 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0 -8.2758489 2790.7741 2782.4982 -0.00085093693 + 2000001 0.5548925 0 2792.3403 2803.7286 -0.0037777326 +Loop time of 50862.3 on 16 procs for 2000001 steps with 992 atoms + +Pair time (%) = 4.10128 (0.0080635) +Bond time (%) = 3.29621 (0.00648066) +Neigh time (%) = 40.0195 (0.0786822) +Comm time (%) = 89.3201 (0.175612) +Outpt time (%) = 1.05399 (0.00207224) +Other time (%) = 50724.5 (99.7291) + +Nlocal: 62 ave 501 max 0 min +Histogram: 14 0 0 0 0 0 0 0 0 2 +Nghost: 29 ave 259 max 0 min +Histogram: 14 0 0 0 0 0 0 1 0 1 +Neighs: 0.375 ave 3 max 0 min +Histogram: 14 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 6 +Ave neighs/atom = 0.00604839 +Ave special neighs/atom = 0.0625 +Neighbor list builds = 30671 +Dangerous builds = 0 + +------------------------------------------------------------ +Sender: LSF System <lsfadmin@lsfhost.localdomain> +Subject: Job 883848: </opt/hpmpi/bin/mpirun -srun ./lmp_mpi -in in.polymer> Done + +Job </opt/hpmpi/bin/mpirun -srun ./lmp_mpi -in in.polymer> was submitted from host <req770> by user <colin>. +Job was executed on host(s) <16*lsfhost.localdomain>, in queue <mpi>, as user <colin>. +</home/colin> was used as the home directory. +</home/colin/lammps-10Aug15/examples/USER/lb/tested/polymer> was used as the working directory. +Started at Mon Aug 24 11:12:37 2015 +Results reported at Tue Aug 25 01:20:46 2015 + +Your job looked like: + +------------------------------------------------------------ +# LSBATCH: User input +/opt/hpmpi/bin/mpirun -srun ./lmp_mpi -in in.polymer +------------------------------------------------------------ + +Successfully completed. + +Resource usage summary: + + CPU time : 812767.44 sec. + Max Memory : 44 MB + Max Swap : 812 MB + + +The output (if any) is above this job summary. + diff --git a/src/CORESHELL/compute_temp_cs.cpp b/src/CORESHELL/compute_temp_cs.cpp index cd577291f..8714b5201 100644 --- a/src/CORESHELL/compute_temp_cs.cpp +++ b/src/CORESHELL/compute_temp_cs.cpp @@ -1,499 +1,489 @@ /* ---------------------------------------------------------------------- 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: Hendrik Heenen (Technical University of Munich) (hendrik.heenen at mytum.com) ------------------------------------------------------------------------- */ #include "mpi.h" #include "stdlib.h" #include "string.h" #include "math.h" #include "compute_temp_cs.h" #include "atom.h" #include "atom_vec.h" #include "domain.h" #include "update.h" #include "force.h" #include "group.h" #include "modify.h" #include "fix.h" #include "fix_store.h" #include "comm.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ ComputeTempCS::ComputeTempCS(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { if (narg != 5) error->all(FLERR,"Illegal compute temp/cs command"); if (atom->avec->bonds_allow == 0) error->all(FLERR,"Compute temp/cs used when bonds are not allowed"); scalar_flag = vector_flag = 1; size_vector = 6; extscalar = 0; extvector = 1; tempflag = 1; tempbias = 1; extarray = 0; // find and define groupbits for core and shell groups cgroup = group->find(arg[3]); if (cgroup == -1) error->all(FLERR,"Cannot find specified group ID for core particles"); groupbit_c = group->bitmask[cgroup]; sgroup = group->find(arg[4]); if (sgroup == -1) error->all(FLERR,"Cannot find specified group ID for shell particles"); groupbit_s = group->bitmask[sgroup]; // create a new fix STORE style // id = compute-ID + COMPUTE_STORE, fix group = compute group int n = strlen(id) + strlen("_COMPUTE_STORE") + 1; id_fix = new char[n]; strcpy(id_fix,id); strcat(id_fix,"_COMPUTE_STORE"); char **newarg = new char*[5]; newarg[0] = id_fix; newarg[1] = group->names[igroup]; newarg[2] = (char *) "STORE"; newarg[3] = (char *) "0"; newarg[4] = (char *) "1"; modify->add_fix(5,newarg); fix = (FixStore *) modify->fix[modify->nfix-1]; delete [] newarg; // set fix store values = 0 for now // fill them in via setup() once Comm::borders() has been called // skip if resetting from restart file if (fix->restart_reset) { fix->restart_reset = 0; firstflag = 0; } else { double *partner = fix->vstore; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) partner[i] = ubuf(0).d; firstflag = 1; } // allocate memory vector = new double[6]; maxatom = 0; vint = NULL; // set comm size needed by this Compute comm_reverse = 1; } /* ---------------------------------------------------------------------- */ ComputeTempCS::~ComputeTempCS() { // check nfix in case all fixes have already been deleted if (modify->nfix) modify->delete_fix(id_fix); delete [] id_fix; delete [] vector; memory->destroy(vint); } /* ---------------------------------------------------------------------- */ void ComputeTempCS::init() { if (comm->ghost_velocity == 0) error->all(FLERR,"Compute temp/cs requires ghost atoms store velocity"); } /* ---------------------------------------------------------------------- */ void ComputeTempCS::setup() { if (firstflag) { firstflag = 0; // insure # of core atoms = # of shell atoms int ncores = group->count(cgroup); nshells = group->count(sgroup); if (ncores != nshells) error->all(FLERR,"Number of core atoms != number of shell atoms"); // for each C/S pair: // set partner IDs of both atoms if this atom stores bond between them // will set partner IDs for ghost atoms if needed by another proc // nall loop insures all ghost atom partner IDs are set before reverse comm int *num_bond = atom->num_bond; tagint **bond_atom = atom->bond_atom; tagint *tag = atom->tag; int *mask = atom->mask; int nlocal = atom->nlocal; double *partner = fix->vstore; tagint partnerID; int nall = nlocal + atom->nghost; for (int i = nlocal; i < nall; i++) partner[i] = ubuf(0).d; int i,j,m,match; for (i = 0; i < nlocal; i++) { if (mask[i] & groupbit_c || mask[i] & groupbit_s) { for (m = 0; m < num_bond[i]; m++) { partnerID = bond_atom[i][m]; j = atom->map(partnerID); if (j == -1) error->one(FLERR,"Core/shell partner atom not found"); match = 0; if (mask[i] & groupbit_c && mask[j] & groupbit_s) match = 1; if (mask[i] & groupbit_s && mask[j] & groupbit_c) match = 1; if (match) { partner[i] = ubuf(partnerID).d; partner[j] = ubuf(tag[i]).d; } } } } // reverse comm to acquire unknown partner IDs from ghost atoms // only needed if newton_bond = on if (force->newton_bond) comm->reverse_comm_compute(this); // check that all C/S partners were found int flag = 0; for (i = 0; i < nlocal; i++) { if (mask[i] & groupbit_c || mask[i] & groupbit_s) { partnerID = (tagint) ubuf(partner[i]).i; if (partnerID == 0) flag = 1; } } int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); if (flagall) error->all(FLERR,"Core/shell partners were not all found"); } // calculate DOF for temperature dof_compute(); } /* ---------------------------------------------------------------------- */ void ComputeTempCS::dof_compute() { adjust_dof_fix(); int nper = domain->dimension; natoms_temp = group->count(igroup); dof = nper * natoms_temp; dof -= nper * nshells; dof -= extra_dof + fix_dof; if (dof > 0) tfactor = force->mvv2e / (dof * force->boltz); else tfactor = 0.0; } /* ---------------------------------------------------------------------- */ double ComputeTempCS::compute_scalar() { double vthermal[3]; invoked_scalar = update->ntimestep; vcm_pairs(); // calculate thermal scalar in respect to atom velocities as center-of-mass // velocities of its according core/shell pairs double **v = atom->v; int *mask = atom->mask; int *type = atom->type; double *mass = atom->mass; double *rmass = atom->rmass; int nlocal = atom->nlocal; double t = 0.0; for (int i = 0; i < nlocal; i++){ if (mask[i] & groupbit) { vthermal[0] = v[i][0] - vint[i][0]; vthermal[1] = v[i][1] - vint[i][1]; vthermal[2] = v[i][2] - vint[i][2]; if (rmass) t += (vthermal[0]*vthermal[0] + vthermal[1]*vthermal[1] + vthermal[2]*vthermal[2]) * rmass[i]; else t += (vthermal[0]*vthermal[0] + vthermal[1]*vthermal[1] + vthermal[2]*vthermal[2]) * mass[type[i]]; } } MPI_Allreduce(&t,&scalar,1,MPI_DOUBLE,MPI_SUM,world); if (dynamic) dof_compute(); if (dof < 0.0 && natoms_temp > 0.0) error->all(FLERR,"Temperature compute degrees of freedom < 0"); scalar *= tfactor; return scalar; } /* ---------------------------------------------------------------------- */ void ComputeTempCS::compute_vector() { - double vthermal[3]; - invoked_vector = update->ntimestep; - vcm_pairs(); - - // calculate thermal vector in respect to atom velocities as center-of-mass - // velocities of its according C/S pairs - double **v = atom->v; int *mask = atom->mask; int *type = atom->type; double *mass = atom->mass; double *rmass = atom->rmass; int nlocal = atom->nlocal; double massone; double t[6]; for (int i = 0; i < 6; i++) t[i] = 0.0; for (int i = 0; i < nlocal; i++){ if (mask[i] & groupbit) { - vthermal[0] = v[i][0] - vint[i][0]; - vthermal[1] = v[i][1] - vint[i][1]; - vthermal[2] = v[i][2] - vint[i][2]; if (rmass) massone = rmass[i]; else massone = mass[type[i]]; - t[0] += massone * vthermal[0]*vthermal[0]; - t[1] += massone * vthermal[1]*vthermal[1]; - t[2] += massone * vthermal[2]*vthermal[2]; - t[3] += massone * vthermal[0]*vthermal[1]; - t[4] += massone * vthermal[0]*vthermal[2]; - t[5] += massone * vthermal[1]*vthermal[2]; + t[0] += massone * v[i][0]*v[i][0]; + t[1] += massone * v[i][1]*v[i][1]; + t[2] += massone * v[i][2]*v[i][2]; + t[3] += massone * v[i][0]*v[i][1]; + t[4] += massone * v[i][0]*v[i][2]; + t[5] += massone * v[i][1]*v[i][2]; } } MPI_Allreduce(t,vector,6,MPI_DOUBLE,MPI_SUM,world); for (int i = 0; i < 6; i++) vector[i] *= force->mvv2e; } /* ---------------------------------------------------------------------- */ void ComputeTempCS::vcm_pairs() { int i,j; double massone,masstwo; double vcm[3]; // reallocate vint if necessary int nlocal = atom->nlocal; if (nlocal > maxatom) { memory->destroy(vint); maxatom = atom->nmax; memory->create(vint,maxatom,3,"temp/cs:vint"); } // vcm = COM velocity of each CS pair // vint = internal velocity of each C/S atom, used as bias double **v = atom->v; int *mask = atom->mask; int *type = atom->type; double *mass = atom->mass; double *rmass = atom->rmass; double *partner = fix->vstore; tagint partnerID; for (i = 0; i < nlocal; i++) { if ((mask[i] & groupbit) && (mask[i] & groupbit_c || mask[i] & groupbit_s)) { if (rmass) massone = rmass[i]; else massone = mass[type[i]]; vcm[0] = v[i][0]*massone; vcm[1] = v[i][1]*massone; vcm[2] = v[i][2]*massone; partnerID = (tagint) ubuf(partner[i]).i; j = atom->map(partnerID); if (j == -1) error->one(FLERR,"Core/shell partner atom not found"); if (rmass) masstwo = rmass[j]; else masstwo = mass[type[j]]; vcm[0] += v[j][0]*masstwo; vcm[1] += v[j][1]*masstwo; vcm[2] += v[j][2]*masstwo; vcm[0] /= (massone + masstwo); vcm[1] /= (massone + masstwo); vcm[2] /= (massone + masstwo); vint[i][0] = v[i][0] - vcm[0]; vint[i][1] = v[i][1] - vcm[1]; vint[i][2] = v[i][2] - vcm[2]; } else vint[i][0] = vint[i][1] = vint[i][2] = 0.0; } } /* ---------------------------------------------------------------------- remove velocity bias from atom I to leave thermal velocity thermal velocity in this case is COM velocity of C/S pair ------------------------------------------------------------------------- */ void ComputeTempCS::remove_bias(int i, double *v) { v[0] -= vint[i][0]; v[1] -= vint[i][1]; v[2] -= vint[i][2]; } /* ---------------------------------------------------------------------- remove velocity bias from all atoms to leave thermal velocity thermal velocity in this case is COM velocity of C/S pair ------------------------------------------------------------------------- */ void ComputeTempCS::remove_bias_all() { double **v = atom->v; int *mask = atom->mask; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { v[i][0] -= vint[i][0]; v[i][1] -= vint[i][1]; v[i][2] -= vint[i][2]; } } /* ---------------------------------------------------------------------- reset thermal velocity of all atoms to be consistent with bias called from velocity command after it creates thermal velocities this resets each atom's velocity to COM velocity of C/S pair ------------------------------------------------------------------------- */ void ComputeTempCS::reapply_bias_all() { double **v = atom->v; int *mask = atom->mask; int nlocal = atom->nlocal; // recalculate current COM velocities vcm_pairs(); // zero vint after using ti so that Velocity call to restore_bias_all() // will not further alter the velocities within a C/S pair for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { v[i][0] -= vint[i][0]; v[i][1] -= vint[i][1]; v[i][2] -= vint[i][2]; vint[i][0] = 0.0; vint[i][1] = 0.0; vint[i][2] = 0.0; } } /* ---------------------------------------------------------------------- add back in velocity bias to atom I removed by remove_bias() assume remove_bias() was previously called ------------------------------------------------------------------------- */ void ComputeTempCS::restore_bias(int i, double *v) { v[0] += vint[i][0]; v[1] += vint[i][1]; v[2] += vint[i][2]; } /* ---------------------------------------------------------------------- add back in velocity bias to all atoms removed by remove_bias_all() assume remove_bias_all() was previously called ------------------------------------------------------------------------- */ void ComputeTempCS::restore_bias_all() { double **v = atom->v; int *mask = atom->mask; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { v[i][0] += vint[i][0]; v[i][1] += vint[i][1]; v[i][2] += vint[i][2]; } } /* ---------------------------------------------------------------------- */ int ComputeTempCS::pack_reverse_comm(int n, int first, double *buf) { int i,m,last; double *partner = fix->vstore; m = 0; last = first + n; for (i = first; i < last; i++) buf[m++] = partner[i]; return m; } /* ---------------------------------------------------------------------- */ void ComputeTempCS::unpack_reverse_comm(int n, int *list, double *buf) { int i,j,m; double *partner = fix->vstore; tagint partnerID; m = 0; for (i = 0; i < n; i++) { j = list[i]; partnerID = (tagint) ubuf(buf[m++]).i; if (partnerID) partner[j] = ubuf(partnerID).d; } } /* ---------------------------------------------------------------------- memory usage of local data ------------------------------------------------------------------------- */ double ComputeTempCS::memory_usage() { double bytes = (bigint) maxatom * 3 * sizeof(double); return bytes; } diff --git a/src/MAKE/MINE/Makefile.intel b/src/MAKE/MINE/Makefile.intel new file mode 100755 index 000000000..3acf37769 --- /dev/null +++ b/src/MAKE/MINE/Makefile.intel @@ -0,0 +1,115 @@ +# serial = g++ compiler, no MPI, internal FFT + +SHELL = /bin/sh + +# --------------------------------------------------------------------- +# compiler/linker settings +# specify flags and libraries needed for your compiler + +CC = icpc +CCFLAGS = -g -O3 +SHFLAGS = -fPIC +DEPFLAGS = -M + +LINK = icpc +LINKFLAGS = -g -O -static-intel +LIB = +SIZE = size + +ARCHIVE = ar +ARFLAGS = -rc +SHLIBFLAGS = -shared + +# --------------------------------------------------------------------- +# LAMMPS-specific settings, all OPTIONAL +# specify settings for LAMMPS features you will use +# if you change any -D setting, do full re-compile after "make clean" + +# LAMMPS ifdef settings +# see possible settings in Section 2.2 (step 4) of manual + +LMP_INC = -DLAMMPS_GZIP + +# MPI library +# see discussion in Section 2.2 (step 5) of manual +# MPI wrapper compiler/linker can provide this info +# can point to dummy MPI library in src/STUBS as in Makefile.serial +# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts +# INC = path for mpi.h, MPI compiler settings +# PATH = path for MPI library +# LIB = name of MPI library + +MPI_INC = -I../STUBS +MPI_PATH = -L../STUBS +MPI_LIB = -lmpi_stubs + +# FFT library +# see discussion in Section 2.2 (step 6) of manaul +# can be left blank to use provided KISS FFT library +# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings +# PATH = path for FFT library +# LIB = name of FFT library + +FFT_INC = +FFT_PATH = +FFT_LIB = + +# JPEG and/or PNG library +# see discussion in Section 2.2 (step 7) of manual +# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC +# INC = path(s) for jpeglib.h and/or png.h +# PATH = path(s) for JPEG library and/or PNG library +# LIB = name(s) of JPEG library and/or PNG library + +JPG_INC = +JPG_PATH = +JPG_LIB = + +# --------------------------------------------------------------------- +# build rules and dependencies +# do not edit this section + +include Makefile.package.settings +include Makefile.package + +EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) +EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) +EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) +EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) + +# Path to src files + +vpath %.cpp .. +vpath %.h .. + +# Link target + +$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) + $(SIZE) $(EXE) + +# Library targets + +lib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) + +shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + +# Compilation rules + +%.o:%.cpp $(EXTRA_CPP_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< + +%.d:%.cpp $(EXTRA_CPP_DEPENDS) + $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ + +%.o:%.cu $(EXTRA_CPP_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< + +# Individual dependencies + +DEPENDS = $(OBJ:.o=.d) +sinclude $(DEPENDS) diff --git a/src/MC/fix_bond_break.cpp b/src/MC/fix_bond_break.cpp index 6e050f720..bede607d7 100644 --- a/src/MC/fix_bond_break.cpp +++ b/src/MC/fix_bond_break.cpp @@ -1,858 +1,858 @@ /* ---------------------------------------------------------------------- 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 "math.h" #include "mpi.h" #include "string.h" #include "stdlib.h" #include "fix_bond_break.h" #include "update.h" #include "respa.h" #include "atom.h" #include "atom_vec.h" #include "force.h" #include "comm.h" #include "neighbor.h" #include "domain.h" #include "random_mars.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; #define DELTA 16 /* ---------------------------------------------------------------------- */ FixBondBreak::FixBondBreak(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg < 6) error->all(FLERR,"Illegal fix bond/break command"); MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs); nevery = force->inumeric(FLERR,arg[3]); if (nevery <= 0) error->all(FLERR,"Illegal fix bond/break command"); force_reneighbor = 1; next_reneighbor = -1; vector_flag = 1; size_vector = 2; global_freq = 1; extvector = 0; btype = force->inumeric(FLERR,arg[4]); cutoff = force->numeric(FLERR,arg[5]); if (btype < 1 || btype > atom->nbondtypes) error->all(FLERR,"Invalid bond type in fix bond/break command"); if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/break command"); cutsq = cutoff*cutoff; // optional keywords fraction = 1.0; int seed = 12345; int iarg = 6; while (iarg < narg) { if (strcmp(arg[iarg],"prob") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix bond/break command"); fraction = force->numeric(FLERR,arg[iarg+1]); seed = force->inumeric(FLERR,arg[iarg+2]); if (fraction < 0.0 || fraction > 1.0) error->all(FLERR,"Illegal fix bond/break command"); if (seed <= 0) error->all(FLERR,"Illegal fix bond/break command"); iarg += 3; } else error->all(FLERR,"Illegal fix bond/break command"); } // error check if (atom->molecular != 1) error->all(FLERR,"Cannot use fix bond/break with non-molecular systems"); // initialize Marsaglia RNG with processor-unique seed random = new RanMars(lmp,seed + me); // set comm sizes needed by this fix // forward is big due to comm of broken bonds and 1-2 neighbors comm_forward = MAX(2,2+atom->maxspecial); comm_reverse = 2; // allocate arrays local to this fix nmax = 0; partner = finalpartner = NULL; distsq = NULL; maxbreak = 0; broken = NULL; // copy = special list for one atom // size = ms^2 + ms is sufficient - // b/c in recreate_special() neighs of all 1-2s are added, + // b/c in rebuild_special_one() neighs of all 1-2s are added, // then a dedup(), then neighs of all 1-3s are added, then final dedup() // this means intermediate size cannot exceed ms^2 + ms int maxspecial = atom->maxspecial; copy = new tagint[maxspecial*maxspecial + maxspecial]; // zero out stats breakcount = 0; breakcounttotal = 0; } /* ---------------------------------------------------------------------- */ FixBondBreak::~FixBondBreak() { delete random; // delete locally stored arrays memory->destroy(partner); memory->destroy(finalpartner); memory->destroy(distsq); memory->destroy(broken); delete [] copy; } /* ---------------------------------------------------------------------- */ int FixBondBreak::setmask() { int mask = 0; mask |= POST_INTEGRATE; mask |= POST_INTEGRATE_RESPA; return mask; } /* ---------------------------------------------------------------------- */ void FixBondBreak::init() { if (strstr(update->integrate_style,"respa")) nlevels_respa = ((Respa *) update->integrate)->nlevels; // enable angle/dihedral/improper breaking if any defined if (atom->nangles) angleflag = 1; else angleflag = 0; if (atom->ndihedrals) dihedralflag = 1; else dihedralflag = 0; if (atom->nimpropers) improperflag = 1; else improperflag = 0; if (force->improper) { if (force->improper_match("class2") || force->improper_match("ring")) error->all(FLERR,"Cannot yet use fix bond/break with this " "improper style"); } lastcheck = -1; // DEBUG //print_bb(); } /* ---------------------------------------------------------------------- */ void FixBondBreak::post_integrate() { int i,j,k,m,n,i1,i2,n1,n3,type; double delx,dely,delz,rsq; tagint *slist; if (update->ntimestep % nevery) return; // check that all procs have needed ghost atoms within ghost cutoff // only if neighbor list has changed since last check if (lastcheck < neighbor->lastcall) check_ghosts(); // acquire updated ghost atom positions // necessary b/c are calling this after integrate, but before Verlet comm comm->forward_comm(); // resize bond partner list and initialize it // probability array overlays distsq array // needs to be atom->nmax in length if (atom->nmax > nmax) { memory->destroy(partner); memory->destroy(finalpartner); memory->destroy(distsq); nmax = atom->nmax; memory->create(partner,nmax,"bond/break:partner"); memory->create(finalpartner,nmax,"bond/break:finalpartner"); memory->create(distsq,nmax,"bond/break:distsq"); probability = distsq; } int nlocal = atom->nlocal; int nall = atom->nlocal + atom->nghost; for (i = 0; i < nall; i++) { partner[i] = 0; finalpartner[i] = 0; distsq[i] = 0.0; } // loop over bond list // setup possible partner list of bonds to break double **x = atom->x; tagint *tag = atom->tag; int *mask = atom->mask; int **bondlist = neighbor->bondlist; int nbondlist = neighbor->nbondlist; for (n = 0; n < nbondlist; n++) { i1 = bondlist[n][0]; i2 = bondlist[n][1]; type = bondlist[n][2]; if (!(mask[i1] & groupbit)) continue; if (!(mask[i2] & groupbit)) continue; if (type != btype) continue; delx = x[i1][0] - x[i2][0]; dely = x[i1][1] - x[i2][1]; delz = x[i1][2] - x[i2][2]; rsq = delx*delx + dely*dely + delz*delz; if (rsq <= cutsq) continue; if (rsq > distsq[i1]) { partner[i1] = tag[i2]; distsq[i1] = rsq; } if (rsq > distsq[i2]) { partner[i2] = tag[i1]; distsq[i2] = rsq; } } // reverse comm of partner info if (force->newton_bond) comm->reverse_comm_fix(this); // each atom now knows its winning partner // for prob check, generate random value for each atom with a bond partner // forward comm of partner and random value, so ghosts have it if (fraction < 1.0) { for (i = 0; i < nlocal; i++) if (partner[i]) probability[i] = random->uniform(); } commflag = 1; comm->forward_comm_fix(this,2); // break bonds // if both atoms list each other as winning bond partner // and probability constraint is satisfied int **bond_type = atom->bond_type; tagint **bond_atom = atom->bond_atom; int *num_bond = atom->num_bond; int **nspecial = atom->nspecial; tagint **special = atom->special; nbreak = 0; for (i = 0; i < nlocal; i++) { if (partner[i] == 0) continue; j = atom->map(partner[i]); if (partner[j] != tag[i]) continue; // apply probability constraint using RN for atom with smallest ID if (fraction < 1.0) { if (tag[i] < tag[j]) { if (probability[i] >= fraction) continue; } else { if (probability[j] >= fraction) continue; } } // delete bond from atom I if I stores it // atom J will also do this for (m = 0; m < num_bond[i]; m++) { if (bond_atom[i][m] == partner[i]) { for (k = m; k < num_bond[i]-1; k++) { bond_atom[i][k] = bond_atom[i][k+1]; bond_type[i][k] = bond_type[i][k+1]; } num_bond[i]--; break; } } // remove J from special bond list for atom I // atom J will also do this, whatever proc it is on slist = special[i]; n1 = nspecial[i][0]; for (m = 0; m < n1; m++) if (slist[m] == partner[i]) break; n3 = nspecial[i][2]; for (; m < n3-1; m++) slist[m] = slist[m+1]; nspecial[i][0]--; nspecial[i][1]--; nspecial[i][2]--; // store final broken bond partners and count the broken bond once finalpartner[i] = tag[j]; finalpartner[j] = tag[i]; if (tag[i] < tag[j]) nbreak++; } // tally stats MPI_Allreduce(&nbreak,&breakcount,1,MPI_INT,MPI_SUM,world); breakcounttotal += breakcount; atom->nbonds -= breakcount; // trigger reneighboring if any bonds were broken // this insures neigh lists will immediately reflect the topology changes // done if no bonds broken if (breakcount) next_reneighbor = update->ntimestep; if (!breakcount) return; // communicate final partner and 1-2 special neighbors // 1-2 neighs already reflect broken bonds commflag = 2; comm->forward_comm_fix(this); // create list of broken bonds that influence my owned atoms // even if between owned-ghost or ghost-ghost atoms // finalpartner is now set for owned and ghost atoms so loop over nall // OK if duplicates in broken list due to ghosts duplicating owned atoms // check J < 0 to insure a broken bond to unknown atom is included // i.e. bond partner outside of cutoff length nbreak = 0; for (i = 0; i < nall; i++) { if (finalpartner[i] == 0) continue; j = atom->map(finalpartner[i]); if (j < 0 || tag[i] < tag[j]) { if (nbreak == maxbreak) { maxbreak += DELTA; memory->grow(broken,maxbreak,2,"bond/break:broken"); } broken[nbreak][0] = tag[i]; broken[nbreak][1] = finalpartner[i]; nbreak++; } } // update special neigh lists of all atoms affected by any broken bond // also remove angles/dihedrals/impropers broken by broken bonds update_topology(); // DEBUG // print_bb(); } /* ---------------------------------------------------------------------- insure all atoms 2 hops away from owned atoms are in ghost list this allows dihedral 1-2-3-4 to be properly deleted and special list of 1 to be properly updated if I own atom 1, but not 2,3,4, and bond 3-4 is deleted then 2,3 will be ghosts and 3 will store 4 as its finalpartner ------------------------------------------------------------------------- */ void FixBondBreak::check_ghosts() { int i,j,n; tagint *slist; int **nspecial = atom->nspecial; tagint **special = atom->special; int nlocal = atom->nlocal; int flag = 0; for (i = 0; i < nlocal; i++) { slist = special[i]; n = nspecial[i][1]; for (j = 0; j < n; j++) if (atom->map(slist[j]) < 0) flag = 1; } int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); if (flagall) error->all(FLERR,"Fix bond/break needs ghost atoms from further away"); lastcheck = update->ntimestep; } /* ---------------------------------------------------------------------- double loop over my atoms and broken bonds influenced = 1 if atom's topology is affected by any broken bond yes if is one of 2 atoms in bond yes if both atom IDs appear in atom's special list else no if influenced: check for angles/dihedrals/impropers to break due to specific broken bonds rebuild the atom's special list of 1-2,1-3,1-4 neighs ------------------------------------------------------------------------- */ void FixBondBreak::update_topology() { int i,j,k,n,influence,influenced,found; tagint id1,id2; tagint *slist; tagint *tag = atom->tag; int **nspecial = atom->nspecial; tagint **special = atom->special; int nlocal = atom->nlocal; nangles = 0; ndihedrals = 0; nimpropers = 0; //printf("NBREAK %d: ",nbreak); //for (i = 0; i < nbreak; i++) // printf(" %d %d,",broken[i][0],broken[i][1]); //printf("\n"); for (i = 0; i < nlocal; i++) { influenced = 0; slist = special[i]; for (j = 0; j < nbreak; j++) { id1 = broken[j][0]; id2 = broken[j][1]; influence = 0; if (tag[i] == id1 || tag[i] == id2) influence = 1; else { n = nspecial[i][2]; found = 0; for (k = 0; k < n; k++) if (slist[k] == id1 || slist[k] == id2) found++; if (found == 2) influence = 1; } if (!influence) continue; influenced = 1; if (angleflag) break_angles(i,id1,id2); if (dihedralflag) break_dihedrals(i,id1,id2); if (improperflag) break_impropers(i,id1,id2); } - if (influenced) recreate_special(i); + if (influenced) rebuild_special_one(i); } int newton_bond = force->newton_bond; int all; if (angleflag) { MPI_Allreduce(&nangles,&all,1,MPI_INT,MPI_SUM,world); if (!newton_bond) all /= 3; atom->nangles -= all; } if (dihedralflag) { MPI_Allreduce(&ndihedrals,&all,1,MPI_INT,MPI_SUM,world); if (!newton_bond) all /= 4; atom->ndihedrals -= all; } if (improperflag) { MPI_Allreduce(&nimpropers,&all,1,MPI_INT,MPI_SUM,world); if (!newton_bond) all /= 4; atom->nimpropers -= all; } } /* ---------------------------------------------------------------------- re-build special list of atom M does not affect 1-2 neighs (already include effects of new bond) affects 1-3 and 1-4 neighs due to other atom's augmented 1-2 neighs ------------------------------------------------------------------------- */ -void FixBondBreak::recreate_special(int m) +void FixBondBreak::rebuild_special_one(int m) { int i,j,n,n1,cn1,cn2,cn3; tagint *slist; tagint *tag = atom->tag; int **nspecial = atom->nspecial; tagint **special = atom->special; // existing 1-2 neighs of atom M slist = special[m]; n1 = nspecial[m][0]; cn1 = 0; for (i = 0; i < n1; i++) copy[cn1++] = slist[i]; // new 1-3 neighs of atom M, based on 1-2 neighs of 1-2 neighs // exclude self // remove duplicates after adding all possible 1-3 neighs cn2 = cn1; for (i = 0; i < cn1; i++) { n = atom->map(copy[i]); slist = special[n]; n1 = nspecial[n][0]; for (j = 0; j < n1; j++) if (slist[j] != tag[m]) copy[cn2++] = slist[j]; } cn2 = dedup(cn1,cn2,copy); // new 1-4 neighs of atom M, based on 1-2 neighs of 1-3 neighs // exclude self // remove duplicates after adding all possible 1-4 neighs cn3 = cn2; for (i = cn1; i < cn2; i++) { n = atom->map(copy[i]); slist = special[n]; n1 = nspecial[n][0]; for (j = 0; j < n1; j++) if (slist[j] != tag[m]) copy[cn3++] = slist[j]; } cn3 = dedup(cn2,cn3,copy); // store new special list with atom M nspecial[m][0] = cn1; nspecial[m][1] = cn2; nspecial[m][2] = cn3; memcpy(special[m],copy,cn3*sizeof(int)); } /* ---------------------------------------------------------------------- break any angles owned by atom M that include atom IDs 1 and 2 angle is broken if ID1-ID2 is one of 2 bonds in angle (I-J,J-K) ------------------------------------------------------------------------- */ void FixBondBreak::break_angles(int m, tagint id1, tagint id2) { int j,found; int num_angle = atom->num_angle[m]; int *angle_type = atom->angle_type[m]; tagint *angle_atom1 = atom->angle_atom1[m]; tagint *angle_atom2 = atom->angle_atom2[m]; tagint *angle_atom3 = atom->angle_atom3[m]; int i = 0; while (i < num_angle) { found = 0; if (angle_atom1[i] == id1 && angle_atom2[i] == id2) found = 1; else if (angle_atom2[i] == id1 && angle_atom3[i] == id2) found = 1; else if (angle_atom1[i] == id2 && angle_atom2[i] == id1) found = 1; else if (angle_atom2[i] == id2 && angle_atom3[i] == id1) found = 1; if (!found) i++; else { for (j = i; j < num_angle-1; j++) { angle_type[j] = angle_type[j+1]; angle_atom1[j] = angle_atom1[j+1]; angle_atom2[j] = angle_atom2[j+1]; angle_atom3[j] = angle_atom3[j+1]; } num_angle--; nangles++; } } atom->num_angle[m] = num_angle; } /* ---------------------------------------------------------------------- break any dihedrals owned by atom M that include atom IDs 1 and 2 dihedral is broken if ID1-ID2 is one of 3 bonds in dihedral (I-J,J-K.K-L) ------------------------------------------------------------------------- */ void FixBondBreak::break_dihedrals(int m, tagint id1, tagint id2) { int j,found; int num_dihedral = atom->num_dihedral[m]; int *dihedral_type = atom->dihedral_type[m]; tagint *dihedral_atom1 = atom->dihedral_atom1[m]; tagint *dihedral_atom2 = atom->dihedral_atom2[m]; tagint *dihedral_atom3 = atom->dihedral_atom3[m]; tagint *dihedral_atom4 = atom->dihedral_atom4[m]; int i = 0; while (i < num_dihedral) { found = 0; if (dihedral_atom1[i] == id1 && dihedral_atom2[i] == id2) found = 1; else if (dihedral_atom2[i] == id1 && dihedral_atom3[i] == id2) found = 1; else if (dihedral_atom3[i] == id1 && dihedral_atom4[i] == id2) found = 1; else if (dihedral_atom1[i] == id2 && dihedral_atom2[i] == id1) found = 1; else if (dihedral_atom2[i] == id2 && dihedral_atom3[i] == id1) found = 1; else if (dihedral_atom3[i] == id2 && dihedral_atom4[i] == id1) found = 1; if (!found) i++; else { for (j = i; j < num_dihedral-1; j++) { dihedral_type[j] = dihedral_type[j+1]; dihedral_atom1[j] = dihedral_atom1[j+1]; dihedral_atom2[j] = dihedral_atom2[j+1]; dihedral_atom3[j] = dihedral_atom3[j+1]; dihedral_atom4[j] = dihedral_atom4[j+1]; } num_dihedral--; ndihedrals++; } } atom->num_dihedral[m] = num_dihedral; } /* ---------------------------------------------------------------------- break any impropers owned by atom M that include atom IDs 1 and 2 improper is broken if ID1-ID2 is one of 3 bonds in improper (I-J,I-K,I-L) ------------------------------------------------------------------------- */ void FixBondBreak::break_impropers(int m, tagint id1, tagint id2) { int j,found; int num_improper = atom->num_improper[m]; int *improper_type = atom->improper_type[m]; tagint *improper_atom1 = atom->improper_atom1[m]; tagint *improper_atom2 = atom->improper_atom2[m]; tagint *improper_atom3 = atom->improper_atom3[m]; tagint *improper_atom4 = atom->improper_atom4[m]; int i = 0; while (i < num_improper) { found = 0; if (improper_atom1[i] == id1 && improper_atom2[i] == id2) found = 1; else if (improper_atom1[i] == id1 && improper_atom3[i] == id2) found = 1; else if (improper_atom1[i] == id1 && improper_atom4[i] == id2) found = 1; else if (improper_atom1[i] == id2 && improper_atom2[i] == id1) found = 1; else if (improper_atom1[i] == id2 && improper_atom3[i] == id1) found = 1; else if (improper_atom1[i] == id2 && improper_atom4[i] == id1) found = 1; if (!found) i++; else { for (j = i; j < num_improper-1; j++) { improper_type[j] = improper_type[j+1]; improper_atom1[j] = improper_atom1[j+1]; improper_atom2[j] = improper_atom2[j+1]; improper_atom3[j] = improper_atom3[j+1]; improper_atom4[j] = improper_atom4[j+1]; } num_improper--; nimpropers++; } } atom->num_improper[m] = num_improper; } /* ---------------------------------------------------------------------- remove all ID duplicates in copy from Nstart:Nstop-1 compare to all previous values in copy return N decremented by any discarded duplicates ------------------------------------------------------------------------- */ int FixBondBreak::dedup(int nstart, int nstop, tagint *copy) { int i; int m = nstart; while (m < nstop) { for (i = 0; i < m; i++) if (copy[i] == copy[m]) { copy[m] = copy[nstop-1]; nstop--; break; } if (i == m) m++; } return nstop; } /* ---------------------------------------------------------------------- */ void FixBondBreak::post_integrate_respa(int ilevel, int iloop) { if (ilevel == nlevels_respa-1) post_integrate(); } /* ---------------------------------------------------------------------- */ int FixBondBreak::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { int i,j,k,m,ns; if (commflag == 1) { m = 0; for (i = 0; i < n; i++) { j = list[i]; buf[m++] = ubuf(partner[j]).d; buf[m++] = probability[j]; } return m; } int **nspecial = atom->nspecial; tagint **special = atom->special; m = 0; for (i = 0; i < n; i++) { j = list[i]; buf[m++] = ubuf(finalpartner[j]).d; ns = nspecial[j][0]; buf[m++] = ubuf(ns).d; for (k = 0; k < ns; k++) buf[m++] = ubuf(special[j][k]).d; } return m; } /* ---------------------------------------------------------------------- */ void FixBondBreak::unpack_forward_comm(int n, int first, double *buf) { int i,j,m,ns,last; if (commflag == 1) { m = 0; last = first + n; for (i = first; i < last; i++) { partner[i] = (tagint) ubuf(buf[m++]).i; probability[i] = buf[m++]; } } else { int **nspecial = atom->nspecial; tagint **special = atom->special; m = 0; last = first + n; for (i = first; i < last; i++) { finalpartner[i] = (tagint) ubuf(buf[m++]).i; ns = (int) ubuf(buf[m++]).i; nspecial[i][0] = ns; for (j = 0; j < ns; j++) special[i][j] = (tagint) ubuf(buf[m++]).i; } } } /* ---------------------------------------------------------------------- */ int FixBondBreak::pack_reverse_comm(int n, int first, double *buf) { int i,m,last; m = 0; last = first + n; for (i = first; i < last; i++) { buf[m++] = ubuf(partner[i]).d; buf[m++] = distsq[i]; } return m; } /* ---------------------------------------------------------------------- */ void FixBondBreak::unpack_reverse_comm(int n, int *list, double *buf) { int i,j,m; m = 0; for (i = 0; i < n; i++) { j = list[i]; if (buf[m+1] > distsq[j]) { partner[j] = (tagint) ubuf(buf[m++]).i; distsq[j] = buf[m++]; } else m += 2; } } /* ---------------------------------------------------------------------- */ void FixBondBreak::print_bb() { for (int i = 0; i < atom->nlocal; i++) { printf("TAG " TAGINT_FORMAT ": %d nbonds: ",atom->tag[i],atom->num_bond[i]); for (int j = 0; j < atom->num_bond[i]; j++) { printf(" %d",atom->bond_atom[i][j]); } printf("\n"); printf("TAG " TAGINT_FORMAT ": %d nangles: ",atom->tag[i],atom->num_angle[i]); for (int j = 0; j < atom->num_angle[i]; j++) { printf(" %d %d %d,",atom->angle_atom1[i][j], atom->angle_atom2[i][j],atom->angle_atom3[i][j]); } printf("\n"); printf("TAG " TAGINT_FORMAT ": %d ndihedrals: ",atom->tag[i],atom->num_dihedral[i]); for (int j = 0; j < atom->num_dihedral[i]; j++) { printf(" %d %d %d %d,",atom->dihedral_atom1[i][j], atom->dihedral_atom2[i][j],atom->dihedral_atom3[i][j], atom->dihedral_atom4[i][j]); } printf("\n"); printf("TAG " TAGINT_FORMAT ": %d %d %d nspecial: ",atom->tag[i], atom->nspecial[i][0],atom->nspecial[i][1],atom->nspecial[i][2]); for (int j = 0; j < atom->nspecial[i][2]; j++) { printf(" %d",atom->special[i][j]); } printf("\n"); } } /* ---------------------------------------------------------------------- */ void FixBondBreak::print_copy(const char *str, tagint m, int n1, int n2, int n3, int *v) { printf("%s %i: %d %d %d nspecial: ",str,m,n1,n2,n3); for (int j = 0; j < n3; j++) printf(" %d",v[j]); printf("\n"); } /* ---------------------------------------------------------------------- */ double FixBondBreak::compute_vector(int n) { if (n == 0) return (double) breakcount; return (double) breakcounttotal; } /* ---------------------------------------------------------------------- memory usage of local atom-based arrays ------------------------------------------------------------------------- */ double FixBondBreak::memory_usage() { int nmax = atom->nmax; double bytes = 2*nmax * sizeof(tagint); bytes += nmax * sizeof(double); return bytes; } diff --git a/src/MC/fix_bond_break.h b/src/MC/fix_bond_break.h old mode 100644 new mode 100755 index 3cf24acce..51f926ce9 --- a/src/MC/fix_bond_break.h +++ b/src/MC/fix_bond_break.h @@ -1,113 +1,113 @@ /* -*- c++ -*- ---------------------------------------------------------- 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) #else #ifndef LMP_FIX_BOND_BREAK_H #define LMP_FIX_BOND_BREAK_H #include "fix.h" namespace LAMMPS_NS { class FixBondBreak : public Fix { public: FixBondBreak(class LAMMPS *, int, char **); ~FixBondBreak(); int setmask(); void init(); void post_integrate(); void post_integrate_respa(int,int); int pack_forward_comm(int, int *, double *, int, int *); void unpack_forward_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(); private: int me,nprocs; int btype,seed; double cutoff,cutsq,fraction; int angleflag,dihedralflag,improperflag; bigint lastcheck; int breakcount,breakcounttotal; int nmax; tagint *partner,*finalpartner; double *distsq,*probability; int nbreak,maxbreak; tagint **broken; tagint *copy; class RanMars *random; int nlevels_respa; int commflag; int nbroken; int nangles,ndihedrals,nimpropers; void check_ghosts(); void update_topology(); void break_angles(int, tagint, tagint); void break_dihedrals(int, tagint, tagint); void break_impropers(int, tagint, tagint); - void recreate_special(int); + void rebuild_special_one(int); int dedup(int, int, tagint *); // DEBUG void print_bb(); void print_copy(const char *, tagint, int, int, int, int *); }; } #endif #endif /* ERROR/WARNING messages: E: Illegal ... command 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. E: Invalid bond type in fix bond/break command Self-explanatory. E: Cannot use fix bond/break with non-molecular systems Only systems with bonds that can be changed can be used. Atom_style template does not qualify. E: Cannot yet use fix bond/break with this improper style This is a current restriction in LAMMPS. E: Fix bond/break needs ghost atoms from further away This is because the fix needs to walk bonds to a certain distance to acquire needed info, The comm_modify cutoff command can be used to extend the communication range. */ diff --git a/src/MC/fix_bond_create.cpp b/src/MC/fix_bond_create.cpp index 1d8ecfb7c..7b4e8a03d 100644 --- a/src/MC/fix_bond_create.cpp +++ b/src/MC/fix_bond_create.cpp @@ -1,1444 +1,1444 @@ /* ---------------------------------------------------------------------- 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 "math.h" #include "mpi.h" #include "string.h" #include "stdlib.h" #include "fix_bond_create.h" #include "update.h" #include "respa.h" #include "atom.h" #include "atom_vec.h" #include "force.h" #include "pair.h" #include "comm.h" #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" #include "random_mars.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; #define BIG 1.0e20 #define DELTA 16 /* ---------------------------------------------------------------------- */ FixBondCreate::FixBondCreate(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg < 8) error->all(FLERR,"Illegal fix bond/create command"); MPI_Comm_rank(world,&me); nevery = force->inumeric(FLERR,arg[3]); if (nevery <= 0) error->all(FLERR,"Illegal fix bond/create command"); force_reneighbor = 1; next_reneighbor = -1; vector_flag = 1; size_vector = 2; global_freq = 1; extvector = 0; iatomtype = force->inumeric(FLERR,arg[4]); jatomtype = force->inumeric(FLERR,arg[5]); double cutoff = force->numeric(FLERR,arg[6]); btype = force->inumeric(FLERR,arg[7]); if (iatomtype < 1 || iatomtype > atom->ntypes || jatomtype < 1 || jatomtype > atom->ntypes) error->all(FLERR,"Invalid atom type in fix bond/create command"); if (cutoff < 0.0) error->all(FLERR,"Illegal fix bond/create command"); if (btype < 1 || btype > atom->nbondtypes) error->all(FLERR,"Invalid bond type in fix bond/create command"); cutsq = cutoff*cutoff; // optional keywords imaxbond = 0; inewtype = iatomtype; jmaxbond = 0; jnewtype = jatomtype; fraction = 1.0; int seed = 12345; atype = dtype = itype = 0; int iarg = 8; while (iarg < narg) { if (strcmp(arg[iarg],"iparam") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix bond/create command"); imaxbond = force->inumeric(FLERR,arg[iarg+1]); inewtype = force->inumeric(FLERR,arg[iarg+2]); if (imaxbond < 0) error->all(FLERR,"Illegal fix bond/create command"); if (inewtype < 1 || inewtype > atom->ntypes) error->all(FLERR,"Invalid atom type in fix bond/create command"); iarg += 3; } else if (strcmp(arg[iarg],"jparam") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix bond/create command"); jmaxbond = force->inumeric(FLERR,arg[iarg+1]); jnewtype = force->inumeric(FLERR,arg[iarg+2]); if (jmaxbond < 0) error->all(FLERR,"Illegal fix bond/create command"); if (jnewtype < 1 || jnewtype > atom->ntypes) error->all(FLERR,"Invalid atom type in fix bond/create command"); iarg += 3; } else if (strcmp(arg[iarg],"prob") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix bond/create command"); fraction = force->numeric(FLERR,arg[iarg+1]); seed = force->inumeric(FLERR,arg[iarg+2]); if (fraction < 0.0 || fraction > 1.0) error->all(FLERR,"Illegal fix bond/create command"); if (seed <= 0) error->all(FLERR,"Illegal fix bond/create command"); iarg += 3; } else if (strcmp(arg[iarg],"atype") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix bond/create command"); atype = force->inumeric(FLERR,arg[iarg+1]); if (atype < 0) error->all(FLERR,"Illegal fix bond/create command"); iarg += 2; } else if (strcmp(arg[iarg],"dtype") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix bond/create command"); dtype = force->inumeric(FLERR,arg[iarg+1]); if (dtype < 0) error->all(FLERR,"Illegal fix bond/create command"); iarg += 2; } else if (strcmp(arg[iarg],"itype") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix bond/create command"); itype = force->inumeric(FLERR,arg[iarg+1]); if (itype < 0) error->all(FLERR,"Illegal fix bond/create command"); iarg += 2; } else error->all(FLERR,"Illegal fix bond/create command"); } // error check if (atom->molecular != 1) error->all(FLERR,"Cannot use fix bond/create with non-molecular systems"); if (iatomtype == jatomtype && ((imaxbond != jmaxbond) || (inewtype != jnewtype))) error->all(FLERR, "Inconsistent iparam/jparam values in fix bond/create command"); // initialize Marsaglia RNG with processor-unique seed random = new RanMars(lmp,seed + me); // perform initial allocation of atom-based arrays // register with Atom class // bondcount values will be initialized in setup() bondcount = NULL; grow_arrays(atom->nmax); atom->add_callback(0); countflag = 0; // set comm sizes needed by this fix // forward is big due to comm of broken bonds and 1-2 neighbors comm_forward = MAX(2,2+atom->maxspecial); comm_reverse = 2; // allocate arrays local to this fix nmax = 0; partner = finalpartner = NULL; distsq = NULL; maxcreate = 0; created = NULL; // copy = special list for one atom // size = ms^2 + ms is sufficient - // b/c in recreate_special() neighs of all 1-2s are added, + // b/c in rebuild_special_one() neighs of all 1-2s are added, // then a dedup(), then neighs of all 1-3s are added, then final dedup() // this means intermediate size cannot exceed ms^2 + ms int maxspecial = atom->maxspecial; copy = new tagint[maxspecial*maxspecial + maxspecial]; // zero out stats createcount = 0; createcounttotal = 0; } /* ---------------------------------------------------------------------- */ FixBondCreate::~FixBondCreate() { // unregister callbacks to this fix from Atom class atom->delete_callback(id,0); delete random; // delete locally stored arrays memory->destroy(bondcount); memory->destroy(partner); memory->destroy(finalpartner); memory->destroy(distsq); memory->destroy(created); delete [] copy; } /* ---------------------------------------------------------------------- */ int FixBondCreate::setmask() { int mask = 0; mask |= POST_INTEGRATE; mask |= POST_INTEGRATE_RESPA; return mask; } /* ---------------------------------------------------------------------- */ void FixBondCreate::init() { if (strstr(update->integrate_style,"respa")) nlevels_respa = ((Respa *) update->integrate)->nlevels; // check cutoff for iatomtype,jatomtype if (force->pair == NULL || cutsq > force->pair->cutsq[iatomtype][jatomtype]) error->all(FLERR,"Fix bond/create cutoff is longer than pairwise cutoff"); // enable angle/dihedral/improper creation if atype/dtype/itype // option was used and a force field has been specified if (atype && force->angle) { angleflag = 1; if (atype > atom->nangletypes) error->all(FLERR,"Fix bond/create angle type is invalid"); } else angleflag = 0; if (dtype && force->dihedral) { dihedralflag = 1; if (dtype > atom->ndihedraltypes) error->all(FLERR,"Fix bond/create dihedral type is invalid"); } else dihedralflag = 0; if (itype && force->improper) { improperflag = 1; if (itype > atom->nimpropertypes) error->all(FLERR,"Fix bond/create improper type is invalid"); } else improperflag = 0; if (force->improper) { if (force->improper_match("class2") || force->improper_match("ring")) error->all(FLERR,"Cannot yet use fix bond/create with this " "improper style"); } // need a half neighbor list, built every Nevery steps int irequest = neighbor->request(this,instance_me); neighbor->requests[irequest]->pair = 0; neighbor->requests[irequest]->fix = 1; neighbor->requests[irequest]->occasional = 1; lastcheck = -1; } /* ---------------------------------------------------------------------- */ void FixBondCreate::init_list(int id, NeighList *ptr) { list = ptr; } /* ---------------------------------------------------------------------- */ void FixBondCreate::setup(int vflag) { int i,j,m; // compute initial bondcount if this is first run // can't do this earlier, in constructor or init, b/c need ghost info if (countflag) return; countflag = 1; // count bonds stored with each bond I own // if newton bond is not set, just increment count on atom I // if newton bond is set, also increment count on atom J even if ghost // bondcount is long enough to tally ghost atom counts int *num_bond = atom->num_bond; int **bond_type = atom->bond_type; tagint **bond_atom = atom->bond_atom; int nlocal = atom->nlocal; int nghost = atom->nghost; int nall = nlocal + nghost; int newton_bond = force->newton_bond; for (i = 0; i < nall; i++) bondcount[i] = 0; for (i = 0; i < nlocal; i++) for (j = 0; j < num_bond[i]; j++) { if (bond_type[i][j] == btype) { bondcount[i]++; if (newton_bond) { m = atom->map(bond_atom[i][j]); if (m < 0) error->one(FLERR,"Fix bond/create needs ghost atoms " "from further away"); bondcount[m]++; } } } // if newton_bond is set, need to sum bondcount commflag = 1; if (newton_bond) comm->reverse_comm_fix(this,1); } /* ---------------------------------------------------------------------- */ void FixBondCreate::post_integrate() { int i,j,k,m,n,ii,jj,inum,jnum,itype,jtype,n1,n2,n3,possible; double xtmp,ytmp,ztmp,delx,dely,delz,rsq; int *ilist,*jlist,*numneigh,**firstneigh; tagint *slist; if (update->ntimestep % nevery) return; // check that all procs have needed ghost atoms within ghost cutoff // only if neighbor list has changed since last check // needs to be <= test b/c neighbor list could have been re-built in // same timestep as last post_integrate() call, but afterwards // NOTE: no longer think is needed, due to error tests on atom->map() // NOTE: if delete, can also delete lastcheck and check_ghosts() //if (lastcheck <= neighbor->lastcall) check_ghosts(); // acquire updated ghost atom positions // necessary b/c are calling this after integrate, but before Verlet comm comm->forward_comm(); // forward comm of bondcount, so ghosts have it commflag = 1; comm->forward_comm_fix(this,1); // resize bond partner list and initialize it // probability array overlays distsq array // needs to be atom->nmax in length if (atom->nmax > nmax) { memory->destroy(partner); memory->destroy(finalpartner); memory->destroy(distsq); nmax = atom->nmax; memory->create(partner,nmax,"bond/create:partner"); memory->create(finalpartner,nmax,"bond/create:finalpartner"); memory->create(distsq,nmax,"bond/create:distsq"); probability = distsq; } int nlocal = atom->nlocal; int nall = atom->nlocal + atom->nghost; for (i = 0; i < nall; i++) { partner[i] = 0; finalpartner[i] = 0; distsq[i] = BIG; } // loop over neighbors of my atoms // each atom sets one closest eligible partner atom ID to bond with double **x = atom->x; tagint *tag = atom->tag; tagint **bond_atom = atom->bond_atom; int *num_bond = atom->num_bond; int **nspecial = atom->nspecial; tagint **special = atom->special; int *mask = atom->mask; int *type = atom->type; neighbor->build_one(list,1); inum = list->inum; ilist = list->ilist; numneigh = list->numneigh; firstneigh = list->firstneigh; for (ii = 0; ii < inum; ii++) { i = ilist[ii]; if (!(mask[i] & groupbit)) continue; itype = type[i]; xtmp = x[i][0]; ytmp = x[i][1]; ztmp = x[i][2]; jlist = firstneigh[i]; jnum = numneigh[i]; for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; j &= NEIGHMASK; if (!(mask[j] & groupbit)) continue; jtype = type[j]; possible = 0; if (itype == iatomtype && jtype == jatomtype) { if ((imaxbond == 0 || bondcount[i] < imaxbond) && (jmaxbond == 0 || bondcount[j] < jmaxbond)) possible = 1; } else if (itype == jatomtype && jtype == iatomtype) { if ((jmaxbond == 0 || bondcount[i] < jmaxbond) && (imaxbond == 0 || bondcount[j] < imaxbond)) possible = 1; } if (!possible) continue; // do not allow a duplicate bond to be created // check 1-2 neighbors of atom I for (k = 0; k < nspecial[i][0]; k++) if (special[i][k] == tag[j]) possible = 0; if (!possible) continue; delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; rsq = delx*delx + dely*dely + delz*delz; if (rsq >= cutsq) continue; if (rsq < distsq[i]) { partner[i] = tag[j]; distsq[i] = rsq; } if (rsq < distsq[j]) { partner[j] = tag[i]; distsq[j] = rsq; } } } // reverse comm of distsq and partner // not needed if newton_pair off since I,J pair was seen by both procs commflag = 2; if (force->newton_pair) comm->reverse_comm_fix(this); // each atom now knows its winning partner // for prob check, generate random value for each atom with a bond partner // forward comm of partner and random value, so ghosts have it if (fraction < 1.0) { for (i = 0; i < nlocal; i++) if (partner[i]) probability[i] = random->uniform(); } commflag = 2; comm->forward_comm_fix(this,2); // create bonds for atoms I own // only if both atoms list each other as winning bond partner // and probability constraint is satisfied // if other atom is owned by another proc, it should do same thing int **bond_type = atom->bond_type; int newton_bond = force->newton_bond; ncreate = 0; for (i = 0; i < nlocal; i++) { if (partner[i] == 0) continue; j = atom->map(partner[i]); if (partner[j] != tag[i]) continue; // apply probability constraint using RN for atom with smallest ID if (fraction < 1.0) { if (tag[i] < tag[j]) { if (probability[i] >= fraction) continue; } else { if (probability[j] >= fraction) continue; } } // if newton_bond is set, only store with I or J // if not newton_bond, store bond with both I and J // atom J will also do this consistently, whatever proc it is on if (!newton_bond || tag[i] < tag[j]) { if (num_bond[i] == atom->bond_per_atom) error->one(FLERR,"New bond exceeded bonds per atom in fix bond/create"); bond_type[i][num_bond[i]] = btype; bond_atom[i][num_bond[i]] = tag[j]; num_bond[i]++; } // add a 1-2 neighbor to special bond list for atom I // atom J will also do this, whatever proc it is on // need to first remove tag[j] from later in list if it appears - // prevents list from overflowing, will be rebuilt in recreate_special() + // prevents list from overflowing, will be rebuilt in rebuild_special_one() slist = special[i]; n1 = nspecial[i][0]; n2 = nspecial[i][1]; n3 = nspecial[i][2]; for (m = n1; m < n3; m++) if (slist[m] == tag[j]) break; if (m < n3) { for (n = m; n < n3-1; n++) slist[n] = slist[n+1]; n3--; if (m < n2) n2--; } if (n3 == atom->maxspecial) error->one(FLERR, "New bond exceeded special list size in fix bond/create"); for (m = n3; m > n1; m--) slist[m] = slist[m-1]; slist[n1] = tag[j]; nspecial[i][0] = n1+1; nspecial[i][1] = n2+1; nspecial[i][2] = n3+1; // increment bondcount, convert atom to new type if limit reached // atom J will also do this, whatever proc it is on bondcount[i]++; if (type[i] == iatomtype) { if (bondcount[i] == imaxbond) type[i] = inewtype; } else { if (bondcount[i] == jmaxbond) type[i] = jnewtype; } // store final created bond partners and count the created bond once finalpartner[i] = tag[j]; finalpartner[j] = tag[i]; if (tag[i] < tag[j]) ncreate++; } // tally stats MPI_Allreduce(&ncreate,&createcount,1,MPI_INT,MPI_SUM,world); createcounttotal += createcount; atom->nbonds += createcount; // trigger reneighboring if any bonds were formed // this insures neigh lists will immediately reflect the topology changes // done if any bonds created if (createcount) next_reneighbor = update->ntimestep; if (!createcount) return; // communicate final partner and 1-2 special neighbors // 1-2 neighs already reflect created bonds commflag = 3; comm->forward_comm_fix(this); // create list of broken bonds that influence my owned atoms // even if between owned-ghost or ghost-ghost atoms // finalpartner is now set for owned and ghost atoms so loop over nall // OK if duplicates in broken list due to ghosts duplicating owned atoms // check J < 0 to insure a broken bond to unknown atom is included // i.e. a bond partner outside of cutoff length ncreate = 0; for (i = 0; i < nall; i++) { if (finalpartner[i] == 0) continue; j = atom->map(finalpartner[i]); if (j < 0 || tag[i] < tag[j]) { if (ncreate == maxcreate) { maxcreate += DELTA; memory->grow(created,maxcreate,2,"bond/create:created"); } created[ncreate][0] = tag[i]; created[ncreate][1] = finalpartner[i]; ncreate++; } } // update special neigh lists of all atoms affected by any created bond // also add angles/dihedrals/impropers induced by created bonds update_topology(); // DEBUG //print_bb(); } /* ---------------------------------------------------------------------- insure all atoms 2 hops away from owned atoms are in ghost list this allows dihedral 1-2-3-4 to be properly created and special list of 1 to be properly updated if I own atom 1, but not 2,3,4, and bond 3-4 is added then 2,3 will be ghosts and 3 will store 4 as its finalpartner ------------------------------------------------------------------------- */ void FixBondCreate::check_ghosts() { int i,j,n; tagint *slist; int **nspecial = atom->nspecial; tagint **special = atom->special; int nlocal = atom->nlocal; int flag = 0; for (i = 0; i < nlocal; i++) { slist = special[i]; n = nspecial[i][1]; for (j = 0; j < n; j++) if (atom->map(slist[j]) < 0) flag = 1; } int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); if (flagall) error->all(FLERR,"Fix bond/create needs ghost atoms from further away"); lastcheck = update->ntimestep; } /* ---------------------------------------------------------------------- double loop over my atoms and created bonds influenced = 1 if atom's topology is affected by any created bond yes if is one of 2 atoms in bond yes if either atom ID appears in as 1-2 or 1-3 in atom's special list else no if influenced by any created bond: rebuild the atom's special list of 1-2,1-3,1-4 neighs check for angles/dihedrals/impropers to create due modified special list ------------------------------------------------------------------------- */ void FixBondCreate::update_topology() { int i,j,k,n,influence,influenced; tagint id1,id2; tagint *slist; tagint *tag = atom->tag; int **nspecial = atom->nspecial; tagint **special = atom->special; int nlocal = atom->nlocal; nangles = 0; ndihedrals = 0; nimpropers = 0; overflow = 0; //printf("NCREATE %d: ",ncreate); //for (i = 0; i < ncreate; i++) // printf(" %d %d,",created[i][0],created[i][1]); //printf("\n"); for (i = 0; i < nlocal; i++) { influenced = 0; slist = special[i]; for (j = 0; j < ncreate; j++) { id1 = created[j][0]; id2 = created[j][1]; influence = 0; if (tag[i] == id1 || tag[i] == id2) influence = 1; else { n = nspecial[i][1]; for (k = 0; k < n; k++) if (slist[k] == id1 || slist[k] == id2) { influence = 1; break; } } if (!influence) continue; influenced = 1; } - // recreate_special first, since used by create_angles, etc + // rebuild_special_one() first, since used by create_angles, etc if (influenced) { - recreate_special(i); + rebuild_special_one(i); if (angleflag) create_angles(i); if (dihedralflag) create_dihedrals(i); if (improperflag) create_impropers(i); } } int overflowall; MPI_Allreduce(&overflow,&overflowall,1,MPI_INT,MPI_SUM,world); if (overflowall) error->all(FLERR,"Fix bond/create induced too many " "angles/dihedrals/impropers per atom"); int newton_bond = force->newton_bond; int all; if (angleflag) { MPI_Allreduce(&nangles,&all,1,MPI_INT,MPI_SUM,world); if (!newton_bond) all /= 3; atom->nangles += all; } if (dihedralflag) { MPI_Allreduce(&ndihedrals,&all,1,MPI_INT,MPI_SUM,world); if (!newton_bond) all /= 4; atom->ndihedrals += all; } if (improperflag) { MPI_Allreduce(&nimpropers,&all,1,MPI_INT,MPI_SUM,world); if (!newton_bond) all /= 4; atom->nimpropers += all; } } /* ---------------------------------------------------------------------- re-build special list of atom M does not affect 1-2 neighs (already include effects of new bond) affects 1-3 and 1-4 neighs due to other atom's augmented 1-2 neighs ------------------------------------------------------------------------- */ -void FixBondCreate::recreate_special(int m) +void FixBondCreate::rebuild_special_one(int m) { int i,j,n,n1,cn1,cn2,cn3; tagint *slist; tagint *tag = atom->tag; int **nspecial = atom->nspecial; tagint **special = atom->special; // existing 1-2 neighs of atom M slist = special[m]; n1 = nspecial[m][0]; cn1 = 0; for (i = 0; i < n1; i++) copy[cn1++] = slist[i]; // new 1-3 neighs of atom M, based on 1-2 neighs of 1-2 neighs // exclude self // remove duplicates after adding all possible 1-3 neighs cn2 = cn1; for (i = 0; i < cn1; i++) { n = atom->map(copy[i]); if (n < 0) error->one(FLERR,"Fix bond/create needs ghost atoms from further away"); slist = special[n]; n1 = nspecial[n][0]; for (j = 0; j < n1; j++) if (slist[j] != tag[m]) copy[cn2++] = slist[j]; } cn2 = dedup(cn1,cn2,copy); if (cn2 > atom->maxspecial) error->one(FLERR,"Special list size exceeded in fix bond/create"); // new 1-4 neighs of atom M, based on 1-2 neighs of 1-3 neighs // exclude self // remove duplicates after adding all possible 1-4 neighs cn3 = cn2; for (i = cn1; i < cn2; i++) { n = atom->map(copy[i]); if (n < 0) error->one(FLERR,"Fix bond/create needs ghost atoms from further away"); slist = special[n]; n1 = nspecial[n][0]; for (j = 0; j < n1; j++) if (slist[j] != tag[m]) copy[cn3++] = slist[j]; } cn3 = dedup(cn2,cn3,copy); if (cn3 > atom->maxspecial) error->one(FLERR,"Special list size exceeded in fix bond/create"); // store new special list with atom M nspecial[m][0] = cn1; nspecial[m][1] = cn2; nspecial[m][2] = cn3; memcpy(special[m],copy,cn3*sizeof(int)); } /* ---------------------------------------------------------------------- create any angles owned by atom M induced by newly created bonds walk special list to find all possible angles to create only add an angle if a new bond is one of its 2 bonds (I-J,J-K) for newton_bond on, atom M is central atom for newton_bond off, atom M is any of 3 atoms in angle ------------------------------------------------------------------------- */ void FixBondCreate::create_angles(int m) { int i,j,n,i2local,n1,n2; tagint i1,i2,i3; tagint *s1list,*s2list; tagint *tag = atom->tag; int **nspecial = atom->nspecial; tagint **special = atom->special; int num_angle = atom->num_angle[m]; int *angle_type = atom->angle_type[m]; tagint *angle_atom1 = atom->angle_atom1[m]; tagint *angle_atom2 = atom->angle_atom2[m]; tagint *angle_atom3 = atom->angle_atom3[m]; // atom M is central atom in angle // double loop over 1-2 neighs // avoid double counting by 2nd loop as j = i+1,N not j = 1,N // consider all angles, only add if: // a new bond is in the angle and atom types match i2 = tag[m]; n2 = nspecial[m][0]; s2list = special[m]; for (i = 0; i < n2; i++) { i1 = s2list[i]; for (j = i+1; j < n2; j++) { i3 = s2list[j]; // angle = i1-i2-i3 for (n = 0; n < ncreate; n++) { if (created[n][0] == i1 && created[n][1] == i2) break; if (created[n][0] == i2 && created[n][1] == i1) break; if (created[n][0] == i2 && created[n][1] == i3) break; if (created[n][0] == i3 && created[n][1] == i2) break; } if (n == ncreate) continue; // NOTE: this is place to check atom types of i1,i2,i3 if (num_angle < atom->angle_per_atom) { angle_type[num_angle] = atype; angle_atom1[num_angle] = i1; angle_atom2[num_angle] = i2; angle_atom3[num_angle] = i3; num_angle++; nangles++; } else overflow = 1; } } atom->num_angle[m] = num_angle; if (force->newton_bond) return; // for newton_bond off, also consider atom M as atom 1 in angle i1 = tag[m]; n1 = nspecial[m][0]; s1list = special[m]; for (i = 0; i < n1; i++) { i2 = s1list[i]; i2local = atom->map(i2); if (i2local < 0) error->one(FLERR,"Fix bond/create needs ghost atoms from further away"); s2list = special[i2local]; n2 = nspecial[i2local][0]; for (j = 0; j < n2; j++) { i3 = s2list[j]; if (i3 == i1) continue; // angle = i1-i2-i3 for (n = 0; n < ncreate; n++) { if (created[n][0] == i1 && created[n][1] == i2) break; if (created[n][0] == i2 && created[n][1] == i1) break; if (created[n][0] == i2 && created[n][1] == i3) break; if (created[n][0] == i3 && created[n][1] == i2) break; } if (n == ncreate) continue; // NOTE: this is place to check atom types of i1,i2,i3 if (num_angle < atom->angle_per_atom) { angle_type[num_angle] = atype; angle_atom1[num_angle] = i1; angle_atom2[num_angle] = i2; angle_atom3[num_angle] = i3; num_angle++; nangles++; } else overflow = 1; } } atom->num_angle[m] = num_angle; } /* ---------------------------------------------------------------------- create any dihedrals owned by atom M induced by newly created bonds walk special list to find all possible dihedrals to create only add a dihedral if a new bond is one of its 3 bonds (I-J,J-K,K-L) for newton_bond on, atom M is central atom for newton_bond off, atom M is any of 4 atoms in dihedral ------------------------------------------------------------------------- */ void FixBondCreate::create_dihedrals(int m) { int i,j,k,n,i1local,i2local,i3local,n1,n2,n3; tagint i1,i2,i3,i4; tagint *s1list,*s2list,*s3list; tagint *tag = atom->tag; int **nspecial = atom->nspecial; tagint **special = atom->special; int num_dihedral = atom->num_dihedral[m]; int *dihedral_type = atom->dihedral_type[m]; tagint *dihedral_atom1 = atom->dihedral_atom1[m]; tagint *dihedral_atom2 = atom->dihedral_atom2[m]; tagint *dihedral_atom3 = atom->dihedral_atom3[m]; tagint *dihedral_atom4 = atom->dihedral_atom4[m]; // atom M is 2nd atom in dihedral // double loop over 1-2 neighs // two triple loops: one over neighs at each end of triplet // avoid double counting by 2nd loop as j = i+1,N not j = 1,N // avoid double counting due to another atom being 2nd atom in same dihedral // by requiring ID of 2nd atom < ID of 3rd atom // don't do this if newton bond off since want to double count // consider all dihedrals, only add if: // a new bond is in the dihedral and atom types match i2 = tag[m]; n2 = nspecial[m][0]; s2list = special[m]; for (i = 0; i < n2; i++) { i1 = s2list[i]; for (j = i+1; j < n2; j++) { i3 = s2list[j]; if (force->newton_bond && i2 > i3) continue; i3local = atom->map(i3); if (i3local < 0) error->one(FLERR,"Fix bond/create needs ghost atoms from further away"); s3list = special[i3local]; n3 = nspecial[i3local][0]; for (k = 0; k < n3; k++) { i4 = s3list[k]; if (i4 == i1 || i4 == i2 || i4 == i3) continue; // dihedral = i1-i2-i3-i4 for (n = 0; n < ncreate; n++) { if (created[n][0] == i1 && created[n][1] == i2) break; if (created[n][0] == i2 && created[n][1] == i1) break; if (created[n][0] == i2 && created[n][1] == i3) break; if (created[n][0] == i3 && created[n][1] == i2) break; if (created[n][0] == i3 && created[n][1] == i4) break; if (created[n][0] == i4 && created[n][1] == i3) break; } if (n < ncreate) { // NOTE: this is place to check atom types of i3,i2,i1,i4 if (num_dihedral < atom->dihedral_per_atom) { dihedral_type[num_dihedral] = dtype; dihedral_atom1[num_dihedral] = i1; dihedral_atom2[num_dihedral] = i2; dihedral_atom3[num_dihedral] = i3; dihedral_atom4[num_dihedral] = i4; num_dihedral++; ndihedrals++; } else overflow = 1; } } } } for (i = 0; i < n2; i++) { i1 = s2list[i]; if (force->newton_bond && i2 > i1) continue; i1local = atom->map(i1); if (i1local < 0) error->one(FLERR,"Fix bond/create needs ghost atoms from further away"); s3list = special[i1local]; n3 = nspecial[i1local][0]; for (j = i+1; j < n2; j++) { i3 = s2list[j]; for (k = 0; k < n3; k++) { i4 = s3list[k]; if (i4 == i1 || i4 == i2 || i4 == i3) continue; // dihedral = i3-i2-i1-i4 for (n = 0; n < ncreate; n++) { if (created[n][0] == i3 && created[n][1] == i2) break; if (created[n][0] == i2 && created[n][1] == i3) break; if (created[n][0] == i2 && created[n][1] == i1) break; if (created[n][0] == i1 && created[n][1] == i2) break; if (created[n][0] == i1 && created[n][1] == i4) break; if (created[n][0] == i4 && created[n][1] == i1) break; } if (n < ncreate) { // NOTE: this is place to check atom types of i3,i2,i1,i4 if (num_dihedral < atom->dihedral_per_atom) { dihedral_type[num_dihedral] = dtype; dihedral_atom1[num_dihedral] = i3; dihedral_atom2[num_dihedral] = i2; dihedral_atom3[num_dihedral] = i1; dihedral_atom4[num_dihedral] = i4; num_dihedral++; ndihedrals++; } else overflow = 1; } } } } atom->num_dihedral[m] = num_dihedral; if (force->newton_bond) return; // for newton_bond off, also consider atom M as atom 1 in dihedral i1 = tag[m]; n1 = nspecial[m][0]; s1list = special[m]; for (i = 0; i < n1; i++) { i2 = s1list[i]; i2local = atom->map(i2); if (i2local < 0) error->one(FLERR,"Fix bond/create needs ghost atoms from further away"); s2list = special[i2local]; n2 = nspecial[i2local][0]; for (j = 0; j < n2; j++) { i3 = s2list[j]; if (i3 == i1) continue; i3local = atom->map(i3); if (i3local < 0) error->one(FLERR,"Fix bond/create needs ghost atoms from further away"); s3list = special[i3local]; n3 = nspecial[i3local][0]; for (k = 0; k < n3; k++) { i4 = s3list[k]; if (i4 == i1 || i4 == i2 || i4 == i3) continue; // dihedral = i1-i2-i3-i4 for (n = 0; n < ncreate; n++) { if (created[n][0] == i1 && created[n][1] == i2) break; if (created[n][0] == i2 && created[n][1] == i1) break; if (created[n][0] == i2 && created[n][1] == i3) break; if (created[n][0] == i3 && created[n][1] == i2) break; if (created[n][0] == i3 && created[n][1] == i4) break; if (created[n][0] == i4 && created[n][1] == i3) break; } if (n < ncreate) { // NOTE: this is place to check atom types of i3,i2,i1,i4 if (num_dihedral < atom->dihedral_per_atom) { dihedral_type[num_dihedral] = dtype; dihedral_atom1[num_dihedral] = i1; dihedral_atom2[num_dihedral] = i2; dihedral_atom3[num_dihedral] = i3; dihedral_atom4[num_dihedral] = i4; num_dihedral++; ndihedrals++; } else overflow = 1; } } } } } /* ---------------------------------------------------------------------- create any impropers owned by atom M induced by newly created bonds walk special list to find all possible impropers to create only add an improper if a new bond is one of its 3 bonds (I-J,I-K,I-L) for newton_bond on, atom M is central atom for newton_bond off, atom M is any of 4 atoms in improper ------------------------------------------------------------------------- */ void FixBondCreate::create_impropers(int m) { int i,j,k,n,i1local,n1,n2; tagint i1,i2,i3,i4; tagint *s1list,*s2list; tagint *tag = atom->tag; int **nspecial = atom->nspecial; tagint **special = atom->special; int num_improper = atom->num_improper[m]; int *improper_type = atom->improper_type[m]; tagint *improper_atom1 = atom->improper_atom1[m]; tagint *improper_atom2 = atom->improper_atom2[m]; tagint *improper_atom3 = atom->improper_atom3[m]; tagint *improper_atom4 = atom->improper_atom4[m]; // atom M is central atom in improper // triple loop over 1-2 neighs // avoid double counting by 2nd loop as j = i+1,N not j = 1,N // consider all impropers, only add if: // a new bond is in the improper and atom types match i1 = tag[m]; n1 = nspecial[m][0]; s1list = special[m]; for (i = 0; i < n1; i++) { i2 = s1list[i]; for (j = i+1; j < n1; j++) { i3 = s1list[j]; for (k = j+1; k < n1; k++) { i4 = s1list[k]; // improper = i1-i2-i3-i4 for (n = 0; n < ncreate; n++) { if (created[n][0] == i1 && created[n][1] == i2) break; if (created[n][0] == i2 && created[n][1] == i1) break; if (created[n][0] == i1 && created[n][1] == i3) break; if (created[n][0] == i3 && created[n][1] == i1) break; if (created[n][0] == i1 && created[n][1] == i4) break; if (created[n][0] == i4 && created[n][1] == i1) break; } if (n == ncreate) continue; // NOTE: this is place to check atom types of i1,i2,i3,i4 if (num_improper < atom->improper_per_atom) { improper_type[num_improper] = itype; improper_atom1[num_improper] = i1; improper_atom2[num_improper] = i2; improper_atom3[num_improper] = i3; improper_atom4[num_improper] = i4; num_improper++; nimpropers++; } else overflow = 1; } } } atom->num_improper[m] = num_improper; if (force->newton_bond) return; // for newton_bond off, also consider atom M as atom 2 in improper i2 = tag[m]; n2 = nspecial[m][0]; s2list = special[m]; for (i = 0; i < n2; i++) { i1 = s2list[i]; i1local = atom->map(i1); if (i1local < 0) error->one(FLERR,"Fix bond/create needs ghost atoms from further away"); s1list = special[i1local]; n1 = nspecial[i1local][0]; for (j = 0; j < n1; j++) { i3 = s1list[j]; if (i3 == i1 || i3 == i2) continue; for (k = j+1; k < n1; k++) { i4 = s1list[k]; if (i4 == i1 || i4 == i2) continue; // improper = i1-i2-i3-i4 for (n = 0; n < ncreate; n++) { if (created[n][0] == i1 && created[n][1] == i2) break; if (created[n][0] == i2 && created[n][1] == i1) break; if (created[n][0] == i1 && created[n][1] == i3) break; if (created[n][0] == i3 && created[n][1] == i1) break; if (created[n][0] == i1 && created[n][1] == i4) break; if (created[n][0] == i4 && created[n][1] == i1) break; } if (n < ncreate) { // NOTE: this is place to check atom types of i3,i2,i1,i4 if (num_improper < atom->improper_per_atom) { improper_type[num_improper] = itype; improper_atom1[num_improper] = i1; improper_atom2[num_improper] = i2; improper_atom3[num_improper] = i3; improper_atom4[num_improper] = i4; num_improper++; nimpropers++; } else overflow = 1; } } } } } /* ---------------------------------------------------------------------- remove all ID duplicates in copy from Nstart:Nstop-1 compare to all previous values in copy return N decremented by any discarded duplicates ------------------------------------------------------------------------- */ int FixBondCreate::dedup(int nstart, int nstop, tagint *copy) { int i; int m = nstart; while (m < nstop) { for (i = 0; i < m; i++) if (copy[i] == copy[m]) { copy[m] = copy[nstop-1]; nstop--; break; } if (i == m) m++; } return nstop; } /* ---------------------------------------------------------------------- */ void FixBondCreate::post_integrate_respa(int ilevel, int iloop) { if (ilevel == nlevels_respa-1) post_integrate(); } /* ---------------------------------------------------------------------- */ int FixBondCreate::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { int i,j,k,m,ns; m = 0; if (commflag == 1) { for (i = 0; i < n; i++) { j = list[i]; buf[m++] = ubuf(bondcount[j]).d; } return m; } if (commflag == 2) { for (i = 0; i < n; i++) { j = list[i]; buf[m++] = ubuf(partner[j]).d; buf[m++] = probability[j]; } return m; } int **nspecial = atom->nspecial; tagint **special = atom->special; m = 0; for (i = 0; i < n; i++) { j = list[i]; buf[m++] = ubuf(finalpartner[j]).d; ns = nspecial[j][0]; buf[m++] = ubuf(ns).d; for (k = 0; k < ns; k++) buf[m++] = ubuf(special[j][k]).d; } return m; } /* ---------------------------------------------------------------------- */ void FixBondCreate::unpack_forward_comm(int n, int first, double *buf) { int i,j,m,ns,last; m = 0; last = first + n; if (commflag == 1) { for (i = first; i < last; i++) bondcount[i] = (int) ubuf(buf[m++]).i; } else if (commflag == 2) { for (i = first; i < last; i++) { partner[i] = (tagint) ubuf(buf[m++]).i; probability[i] = buf[m++]; } } else { int **nspecial = atom->nspecial; tagint **special = atom->special; m = 0; last = first + n; for (i = first; i < last; i++) { finalpartner[i] = (tagint) ubuf(buf[m++]).i; ns = (int) ubuf(buf[m++]).i; nspecial[i][0] = ns; for (j = 0; j < ns; j++) special[i][j] = (tagint) ubuf(buf[m++]).i; } } } /* ---------------------------------------------------------------------- */ int FixBondCreate::pack_reverse_comm(int n, int first, double *buf) { int i,m,last; m = 0; last = first + n; if (commflag == 1) { for (i = first; i < last; i++) buf[m++] = ubuf(bondcount[i]).d; return m; } for (i = first; i < last; i++) { buf[m++] = ubuf(partner[i]).d; buf[m++] = distsq[i]; } return m; } /* ---------------------------------------------------------------------- */ void FixBondCreate::unpack_reverse_comm(int n, int *list, double *buf) { int i,j,m; m = 0; if (commflag == 1) { for (i = 0; i < n; i++) { j = list[i]; bondcount[j] += (int) ubuf(buf[m++]).i; } } else { for (i = 0; i < n; i++) { j = list[i]; if (buf[m+1] < distsq[j]) { partner[j] = (tagint) ubuf(buf[m++]).i; distsq[j] = buf[m++]; } else m += 2; } } } /* ---------------------------------------------------------------------- allocate local atom-based arrays ------------------------------------------------------------------------- */ void FixBondCreate::grow_arrays(int nmax) { memory->grow(bondcount,nmax,"bond/create:bondcount"); } /* ---------------------------------------------------------------------- copy values within local atom-based arrays ------------------------------------------------------------------------- */ void FixBondCreate::copy_arrays(int i, int j, int delflag) { bondcount[j] = bondcount[i]; } /* ---------------------------------------------------------------------- pack values in local atom-based arrays for exchange with another proc ------------------------------------------------------------------------- */ int FixBondCreate::pack_exchange(int i, double *buf) { buf[0] = bondcount[i]; return 1; } /* ---------------------------------------------------------------------- unpack values in local atom-based arrays from exchange with another proc ------------------------------------------------------------------------- */ int FixBondCreate::unpack_exchange(int nlocal, double *buf) { bondcount[nlocal] = static_cast<int> (buf[0]); return 1; } /* ---------------------------------------------------------------------- */ double FixBondCreate::compute_vector(int n) { if (n == 0) return (double) createcount; return (double) createcounttotal; } /* ---------------------------------------------------------------------- memory usage of local atom-based arrays ------------------------------------------------------------------------- */ double FixBondCreate::memory_usage() { int nmax = atom->nmax; double bytes = nmax * sizeof(int); bytes = 2*nmax * sizeof(tagint); bytes += nmax * sizeof(double); return bytes; } /* ---------------------------------------------------------------------- */ void FixBondCreate::print_bb() { for (int i = 0; i < atom->nlocal; i++) { printf("TAG " TAGINT_FORMAT ": %d nbonds: ",atom->tag[i],atom->num_bond[i]); for (int j = 0; j < atom->num_bond[i]; j++) { printf(" " TAGINT_FORMAT,atom->bond_atom[i][j]); } printf("\n"); printf("TAG " TAGINT_FORMAT ": %d nangles: ",atom->tag[i],atom->num_angle[i]); for (int j = 0; j < atom->num_angle[i]; j++) { printf(" " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT ",", atom->angle_atom1[i][j], atom->angle_atom2[i][j], atom->angle_atom3[i][j]); } printf("\n"); printf("TAG " TAGINT_FORMAT ": %d ndihedrals: ",atom->tag[i],atom->num_dihedral[i]); for (int j = 0; j < atom->num_dihedral[i]; j++) { printf(" " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT ",", atom->dihedral_atom1[i][j], atom->dihedral_atom2[i][j],atom->dihedral_atom3[i][j], atom->dihedral_atom4[i][j]); } printf("\n"); printf("TAG " TAGINT_FORMAT ": %d nimpropers: ",atom->tag[i],atom->num_improper[i]); for (int j = 0; j < atom->num_improper[i]; j++) { printf(" " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT ",",atom->improper_atom1[i][j], atom->improper_atom2[i][j],atom->improper_atom3[i][j], atom->improper_atom4[i][j]); } printf("\n"); printf("TAG " TAGINT_FORMAT ": %d %d %d nspecial: ",atom->tag[i], atom->nspecial[i][0],atom->nspecial[i][1],atom->nspecial[i][2]); for (int j = 0; j < atom->nspecial[i][2]; j++) { printf(" " TAGINT_FORMAT,atom->special[i][j]); } printf("\n"); } } /* ---------------------------------------------------------------------- */ void FixBondCreate::print_copy(const char *str, tagint m, int n1, int n2, int n3, int *v) { printf("%s " TAGINT_FORMAT ": %d %d %d nspecial: ",str,m,n1,n2,n3); for (int j = 0; j < n3; j++) printf(" %d",v[j]); printf("\n"); } diff --git a/src/MC/fix_bond_create.h b/src/MC/fix_bond_create.h old mode 100644 new mode 100755 index 95c7b4327..707b75406 --- a/src/MC/fix_bond_create.h +++ b/src/MC/fix_bond_create.h @@ -1,173 +1,173 @@ /* -*- c++ -*- ---------------------------------------------------------- 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/create,FixBondCreate) #else #ifndef LMP_FIX_BOND_CREATE_H #define LMP_FIX_BOND_CREATE_H #include "fix.h" namespace LAMMPS_NS { class FixBondCreate : public Fix { public: FixBondCreate(class LAMMPS *, int, char **); ~FixBondCreate(); int setmask(); void init(); void init_list(int, class NeighList *); void setup(int); void post_integrate(); void post_integrate_respa(int, int); int pack_forward_comm(int, int *, double *, int, int *); void unpack_forward_comm(int, int, double *); int pack_reverse_comm(int, int, double *); void unpack_reverse_comm(int, int *, double *); void grow_arrays(int); void copy_arrays(int, int, int); int pack_exchange(int, double *); int unpack_exchange(int, double *); double compute_vector(int); double memory_usage(); private: int me; int iatomtype,jatomtype; int btype,seed; int imaxbond,jmaxbond; int inewtype,jnewtype; double cutsq,fraction; int atype,dtype,itype; int angleflag,dihedralflag,improperflag; int overflow; tagint lastcheck; int *bondcount; int createcount,createcounttotal; int nmax; tagint *partner,*finalpartner; double *distsq,*probability; int ncreate,maxcreate; tagint **created; tagint *copy; class RanMars *random; class NeighList *list; int countflag,commflag; int nlevels_respa; int nangles,ndihedrals,nimpropers; void check_ghosts(); void update_topology(); - void recreate_special(int); + void rebuild_special_one(int); void create_angles(int); void create_dihedrals(int); void create_impropers(int); int dedup(int, int, tagint *); // DEBUG void print_bb(); void print_copy(const char *, tagint, int, int, int, int *); }; } #endif #endif /* ERROR/WARNING messages: E: Illegal ... command 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. E: Invalid atom type in fix bond/create command Self-explanatory. E: Invalid bond type in fix bond/create command Self-explanatory. E: Cannot use fix bond/create with non-molecular systems Only systems with bonds that can be changed can be used. Atom_style template does not qualify. E: Inconsistent iparam/jparam values in fix bond/create command If itype and jtype are the same, then their maxbond and newtype settings must also be the same. E: Fix bond/create cutoff is longer than pairwise cutoff This is not allowed because bond creation is done using the pairwise neighbor list. E: Fix bond/create angle type is invalid Self-explanatory. E: Fix bond/create dihedral type is invalid Self-explanatory. E: Fix bond/create improper type is invalid Self-explanatory. E: Cannot yet use fix bond/create with this improper style This is a current restriction in LAMMPS. E: Fix bond/create needs ghost atoms from further away This is because the fix needs to walk bonds to a certain distance to acquire needed info, The comm_modify cutoff command can be used to extend the communication range. E: New bond exceeded bonds per atom in fix bond/create See the read_data command for info on setting the "extra bond per atom" header value to allow for additional bonds to be formed. E: New bond exceeded special list size in fix bond/create 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. E: Fix bond/create induced too many angles/dihedrals/impropers per atom See the read_data command for info on setting the "extra angle per atom", etc header values to allow for additional angles, etc to be formed. E: Special list size exceeded in fix bond/create See the read_data command for info on setting the "extra special per atom" header value to allow for additional special values to be stored. */ diff --git a/src/RIGID/fix_shake.cpp b/src/RIGID/fix_shake.cpp index 192e888dc..d82445560 100644 --- a/src/RIGID/fix_shake.cpp +++ b/src/RIGID/fix_shake.cpp @@ -1,2706 +1,2707 @@ /* ---------------------------------------------------------------------- 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 "stdlib.h" #include "string.h" #include "stdio.h" #include "fix_shake.h" #include "atom.h" #include "atom_vec.h" #include "molecule.h" #include "update.h" #include "respa.h" #include "modify.h" #include "domain.h" #include "force.h" #include "bond.h" #include "angle.h" #include "comm.h" #include "group.h" #include "fix_respa.h" #include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; // allocate space for static class variable FixShake *FixShake::fsptr; #define BIG 1.0e20 #define MASSDELTA 0.1 /* ---------------------------------------------------------------------- */ FixShake::FixShake(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs); virial_flag = 1; create_attribute = 1; dof_flag = 1; // error check molecular = atom->molecular; if (molecular == 0) error->all(FLERR,"Cannot use fix shake with non-molecular system"); // perform initial allocation of atom-based arrays // register with Atom class shake_flag = NULL; shake_atom = NULL; shake_type = NULL; xshake = NULL; grow_arrays(atom->nmax); atom->add_callback(0); // set comm size needed by this fix comm_forward = 3; // parse SHAKE args if (narg < 8) error->all(FLERR,"Illegal fix shake command"); tolerance = force->numeric(FLERR,arg[3]); max_iter = force->inumeric(FLERR,arg[4]); output_every = force->inumeric(FLERR,arg[5]); // parse SHAKE args for bond and angle types // will be used by find_clusters // store args for "b" "a" "t" as flags in (1:n) list for fast access // store args for "m" in list of length nmass for looping over // for "m" verify that atom masses have been set bond_flag = new int[atom->nbondtypes+1]; for (int i = 1; i <= atom->nbondtypes; i++) bond_flag[i] = 0; angle_flag = new int[atom->nangletypes+1]; for (int i = 1; i <= atom->nangletypes; i++) angle_flag[i] = 0; type_flag = new int[atom->ntypes+1]; for (int i = 1; i <= atom->ntypes; i++) type_flag[i] = 0; mass_list = new double[atom->ntypes]; nmass = 0; char mode = '\0'; int next = 6; while (next < narg) { if (strcmp(arg[next],"b") == 0) mode = 'b'; else if (strcmp(arg[next],"a") == 0) mode = 'a'; else if (strcmp(arg[next],"t") == 0) mode = 't'; else if (strcmp(arg[next],"m") == 0) { mode = 'm'; atom->check_mass(); // break if keyword that is not b,a,t,m } else if (isalpha(arg[next][0])) break; // read numeric args of b,a,t,m else if (mode == 'b') { int i = force->inumeric(FLERR,arg[next]); if (i < 1 || i > atom->nbondtypes) error->all(FLERR,"Invalid bond type index for fix shake"); bond_flag[i] = 1; } else if (mode == 'a') { int i = force->inumeric(FLERR,arg[next]); if (i < 1 || i > atom->nangletypes) error->all(FLERR,"Invalid angle type index for fix shake"); angle_flag[i] = 1; } else if (mode == 't') { int i = force->inumeric(FLERR,arg[next]); if (i < 1 || i > atom->ntypes) error->all(FLERR,"Invalid atom type index for fix shake"); type_flag[i] = 1; } else if (mode == 'm') { double massone = force->numeric(FLERR,arg[next]); if (massone == 0.0) error->all(FLERR,"Invalid atom mass for fix shake"); if (nmass == atom->ntypes) error->all(FLERR,"Too many masses for fix shake"); mass_list[nmass++] = massone; } else error->all(FLERR,"Illegal fix shake command"); next++; } // parse optional args onemols = NULL; int iarg = next; while (iarg < narg) { if (strcmp(arg[next],"mol") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix shake command"); int imol = atom->find_molecule(arg[iarg+1]); if (imol == -1) error->all(FLERR,"Molecule template ID for fix shake does not exist"); if (atom->molecules[imol]->nset > 1 && comm->me == 0) error->warning(FLERR,"Molecule template for " "fix shake has multiple molecules"); onemols = &atom->molecules[imol]; nmol = onemols[0]->nset; iarg += 2; } else error->all(FLERR,"Illegal fix shake command"); } // error check for Molecule template if (onemols) { for (int i = 0; i < nmol; i++) if (onemols[i]->shakeflag == 0) error->all(FLERR,"Fix shake molecule template must have shake info"); } // allocate bond and angle distance arrays, indexed from 1 to n bond_distance = new double[atom->nbondtypes+1]; angle_distance = new double[atom->nangletypes+1]; // allocate statistics arrays if (output_every) { int nb = atom->nbondtypes + 1; b_count = new int[nb]; b_count_all = new int[nb]; b_ave = new double[nb]; b_ave_all = new double[nb]; b_max = new double[nb]; b_max_all = new double[nb]; b_min = new double[nb]; b_min_all = new double[nb]; int na = atom->nangletypes + 1; a_count = new int[na]; a_count_all = new int[na]; a_ave = new double[na]; a_ave_all = new double[na]; a_max = new double[na]; a_max_all = new double[na]; a_min = new double[na]; a_min_all = new double[na]; } // SHAKE vs RATTLE rattle = 0; vflag_post_force = 0; // identify all SHAKE clusters find_clusters(); // initialize list of SHAKE clusters to constrain maxlist = 0; list = NULL; } /* ---------------------------------------------------------------------- */ FixShake::~FixShake() { // unregister callbacks to this fix from Atom class atom->delete_callback(id,0); // set bond_type and angle_type back to positive for SHAKE clusters // must set for all SHAKE bonds and angles stored by each atom int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) { if (shake_flag[i] == 0) continue; else if (shake_flag[i] == 1) { bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); angletype_findset(i,shake_atom[i][1],shake_atom[i][2],1); } else if (shake_flag[i] == 2) { bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); } else if (shake_flag[i] == 3) { bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); } else if (shake_flag[i] == 4) { bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); bondtype_findset(i,shake_atom[i][0],shake_atom[i][3],1); } } // delete locally stored arrays memory->destroy(shake_flag); memory->destroy(shake_atom); memory->destroy(shake_type); memory->destroy(xshake); delete [] bond_flag; delete [] angle_flag; delete [] type_flag; delete [] mass_list; delete [] bond_distance; delete [] angle_distance; if (output_every) { delete [] b_count; delete [] b_count_all; delete [] b_ave; delete [] b_ave_all; delete [] b_max; delete [] b_max_all; delete [] b_min; delete [] b_min_all; delete [] a_count; delete [] a_count_all; delete [] a_ave; delete [] a_ave_all; delete [] a_max; delete [] a_max_all; delete [] a_min; delete [] a_min_all; } memory->destroy(list); } /* ---------------------------------------------------------------------- */ int FixShake::setmask() { int mask = 0; mask |= PRE_NEIGHBOR; mask |= POST_FORCE; mask |= POST_FORCE_RESPA; return mask; } /* ---------------------------------------------------------------------- set bond and angle distances this init must happen after force->bond and force->angle inits ------------------------------------------------------------------------- */ void FixShake::init() { int i,m,flag,flag_all,type1,type2,bond1_type,bond2_type; double rsq,angle; // error if more than one shake fix int count = 0; for (i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"shake") == 0) count++; if (count > 1) error->all(FLERR,"More than one fix shake"); // cannot use with minimization since SHAKE turns off bonds // that should contribute to potential energy if (update->whichflag == 2) error->all(FLERR,"Fix shake cannot be used with minimization"); // error if npt,nph fix comes before shake fix for (i = 0; i < modify->nfix; i++) { if (strcmp(modify->fix[i]->style,"npt") == 0) break; if (strcmp(modify->fix[i]->style,"nph") == 0) break; } if (i < modify->nfix) { for (int j = i; j < modify->nfix; j++) if (strcmp(modify->fix[j]->style,"shake") == 0) error->all(FLERR,"Shake fix must come before NPT/NPH fix"); } // if rRESPA, find associated fix that must exist // could have changed locations in fix list since created // set ptrs to rRESPA variables if (strstr(update->integrate_style,"respa")) { for (i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"RESPA") == 0) ifix_respa = i; nlevels_respa = ((Respa *) update->integrate)->nlevels; loop_respa = ((Respa *) update->integrate)->loop; step_respa = ((Respa *) update->integrate)->step; } // set equilibrium bond distances if (force->bond == NULL) error->all(FLERR,"Bond potential must be defined for SHAKE"); for (i = 1; i <= atom->nbondtypes; i++) bond_distance[i] = force->bond->equilibrium_distance(i); // set equilibrium angle distances int nlocal = atom->nlocal; - + for (i = 1; i <= atom->nangletypes; i++) { if (angle_flag[i] == 0) continue; if (force->angle == NULL) error->all(FLERR,"Angle potential must be defined for SHAKE"); // scan all atoms for a SHAKE angle cluster // extract bond types for the 2 bonds in the cluster // bond types must be same in all clusters of this angle type, // else set error flag flag = 0; bond1_type = bond2_type = 0; for (m = 0; m < nlocal; m++) { if (shake_flag[m] != 1) continue; if (shake_type[m][2] != i) continue; type1 = MIN(shake_type[m][0],shake_type[m][1]); type2 = MAX(shake_type[m][0],shake_type[m][1]); if (bond1_type > 0) { if (type1 != bond1_type || type2 != bond2_type) { flag = 1; break; } } bond1_type = type1; bond2_type = type2; } // error check for any bond types that are not the same MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_MAX,world); if (flag_all) error->all(FLERR,"Shake angles have different bond types"); // insure all procs have bond types MPI_Allreduce(&bond1_type,&flag_all,1,MPI_INT,MPI_MAX,world); bond1_type = flag_all; MPI_Allreduce(&bond2_type,&flag_all,1,MPI_INT,MPI_MAX,world); bond2_type = flag_all; // if bond types are 0, no SHAKE angles of this type exist // just skip this angle if (bond1_type == 0) { angle_distance[i] = 0.0; continue; } // compute the angle distance as a function of 2 bond distances + // formula is now correct for bonds of same or different lengths (Oct15) angle = force->angle->equilibrium_angle(i); const double b1 = bond_distance[bond1_type]; const double b2 = bond_distance[bond2_type]; rsq = b1*b1 + b2*b2 - 2.0*b1*b2*cos(angle); angle_distance[i] = sqrt(rsq); } } /* ---------------------------------------------------------------------- SHAKE as pre-integrator constraint ------------------------------------------------------------------------- */ void FixShake::setup(int vflag) { pre_neighbor(); if (output_every) stats(); // setup SHAKE output bigint ntimestep = update->ntimestep; if (output_every) { next_output = ntimestep + output_every; if (ntimestep % output_every != 0) next_output = (ntimestep/output_every)*output_every + output_every; } else next_output = -1; // half timestep constraint on pre-step, full timestep thereafter if (strstr(update->integrate_style,"verlet")) { respa = 0; dtv = update->dt; dtfsq = 0.5 * update->dt * update->dt * force->ftm2v; FixShake::post_force(vflag); if (!rattle) dtfsq = update->dt * update->dt * force->ftm2v; } else { respa = 1; dtv = step_respa[0]; dtf_innerhalf = 0.5 * step_respa[0] * force->ftm2v; dtf_inner = dtf_innerhalf; // apply correction to all rRESPA levels for (int ilevel = 0; ilevel < nlevels_respa; ilevel++) { ((Respa *) update->integrate)->copy_flevel_f(ilevel); FixShake::post_force_respa(vflag,ilevel,loop_respa[ilevel]-1); ((Respa *) update->integrate)->copy_f_flevel(ilevel); } if (!rattle) dtf_inner = step_respa[0] * force->ftm2v; } } /* ---------------------------------------------------------------------- build list of SHAKE clusters to constrain if one or more atoms in cluster are on this proc, this proc lists the cluster exactly once ------------------------------------------------------------------------- */ void FixShake::pre_neighbor() { int atom1,atom2,atom3,atom4; // local copies of atom quantities // used by SHAKE until next re-neighboring x = atom->x; v = atom->v; f = atom->f; mass = atom->mass; rmass = atom->rmass; type = atom->type; nlocal = atom->nlocal; // extend size of SHAKE list if necessary if (nlocal > maxlist) { maxlist = nlocal; memory->destroy(list); memory->create(list,maxlist,"shake:list"); } // build list of SHAKE clusters I compute nlist = 0; for (int i = 0; i < nlocal; i++) if (shake_flag[i]) { if (shake_flag[i] == 2) { atom1 = atom->map(shake_atom[i][0]); atom2 = atom->map(shake_atom[i][1]); if (atom1 == -1 || atom2 == -1) { char str[128]; sprintf(str,"Shake atoms " TAGINT_FORMAT " " TAGINT_FORMAT " missing on proc %d at step " BIGINT_FORMAT, shake_atom[i][0],shake_atom[i][1],me,update->ntimestep); error->one(FLERR,str); } if (i <= atom1 && i <= atom2) list[nlist++] = i; } else if (shake_flag[i] % 2 == 1) { atom1 = atom->map(shake_atom[i][0]); atom2 = atom->map(shake_atom[i][1]); atom3 = atom->map(shake_atom[i][2]); if (atom1 == -1 || atom2 == -1 || atom3 == -1) { char str[128]; sprintf(str,"Shake atoms " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT " missing on proc %d at step " BIGINT_FORMAT, shake_atom[i][0],shake_atom[i][1],shake_atom[i][2], me,update->ntimestep); error->one(FLERR,str); } if (i <= atom1 && i <= atom2 && i <= atom3) list[nlist++] = i; } else { atom1 = atom->map(shake_atom[i][0]); atom2 = atom->map(shake_atom[i][1]); atom3 = atom->map(shake_atom[i][2]); atom4 = atom->map(shake_atom[i][3]); if (atom1 == -1 || atom2 == -1 || atom3 == -1 || atom4 == -1) { char str[128]; sprintf(str,"Shake atoms " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT " missing on proc %d at step " BIGINT_FORMAT, shake_atom[i][0],shake_atom[i][1], shake_atom[i][2],shake_atom[i][3], me,update->ntimestep); error->one(FLERR,str); } if (i <= atom1 && i <= atom2 && i <= atom3 && i <= atom4) list[nlist++] = i; } } } /* ---------------------------------------------------------------------- compute the force adjustment for SHAKE constraint ------------------------------------------------------------------------- */ void FixShake::post_force(int vflag) { if (update->ntimestep == next_output) stats(); // xshake = unconstrained move with current v,f // communicate results if necessary unconstrained_update(); if (nprocs > 1) comm->forward_comm_fix(this); // virial setup if (vflag) v_setup(vflag); else evflag = 0; // loop over clusters to add constraint forces int m; for (int i = 0; i < nlist; i++) { m = list[i]; if (shake_flag[m] == 2) shake(m); else if (shake_flag[m] == 3) shake3(m); else if (shake_flag[m] == 4) shake4(m); else shake3angle(m); } // store vflag for coordinate_constraints_end_of_step() vflag_post_force = vflag; } /* ---------------------------------------------------------------------- enforce SHAKE constraints from rRESPA xshake prediction portion is different than Verlet ------------------------------------------------------------------------- */ void FixShake::post_force_respa(int vflag, int ilevel, int iloop) { // call stats only on outermost level if (ilevel == nlevels_respa-1 && update->ntimestep == next_output) stats(); // might be OK to skip enforcing SHAKE constraings // on last iteration of inner levels if pressure not requested // however, leads to slightly different trajectories //if (ilevel < nlevels_respa-1 && iloop == loop_respa[ilevel]-1 && !vflag) // return; // xshake = unconstrained move with current v,f as function of level // communicate results if necessary unconstrained_update_respa(ilevel); if (nprocs > 1) comm->forward_comm_fix(this); // virial setup only needed on last iteration of innermost level // and if pressure is requested // virial accumulation happens via evflag at last iteration of each level if (ilevel == 0 && iloop == loop_respa[ilevel]-1 && vflag) v_setup(vflag); if (iloop == loop_respa[ilevel]-1) evflag = 1; else evflag = 0; // loop over clusters to add constraint forces int m; for (int i = 0; i < nlist; i++) { m = list[i]; if (shake_flag[m] == 2) shake(m); else if (shake_flag[m] == 3) shake3(m); else if (shake_flag[m] == 4) shake4(m); else shake3angle(m); } // store vflag for coordinate_constraints_end_of_step() vflag_post_force = vflag; } /* ---------------------------------------------------------------------- count # of degrees-of-freedom removed by SHAKE for atoms in igroup ------------------------------------------------------------------------- */ int FixShake::dof(int igroup) { int groupbit = group->bitmask[igroup]; int *mask = atom->mask; tagint *tag = atom->tag; int nlocal = atom->nlocal; // count dof in a cluster if and only if // the central atom is in group and atom i is the central atom int n = 0; for (int i = 0; i < nlocal; i++) { if (!(mask[i] & groupbit)) continue; if (shake_flag[i] == 0) continue; if (shake_atom[i][0] != tag[i]) continue; if (shake_flag[i] == 1) n += 3; else if (shake_flag[i] == 2) n += 1; else if (shake_flag[i] == 3) n += 2; else if (shake_flag[i] == 4) n += 3; } int nall; MPI_Allreduce(&n,&nall,1,MPI_INT,MPI_SUM,world); return nall; } /* ---------------------------------------------------------------------- identify whether each atom is in a SHAKE cluster only include atoms in fix group and those bonds/angles specified in input test whether all clusters are valid set shake_flag, shake_atom, shake_type values set bond,angle types negative so will be ignored in neighbor lists ------------------------------------------------------------------------- */ void FixShake::find_clusters() { int i,j,m,n,imol,iatom; int flag,flag_all,nbuf,size; tagint tagprev; double massone; tagint *buf; if (me == 0 && screen) { if (!rattle) fprintf(screen,"Finding SHAKE clusters ...\n"); else fprintf(screen,"Finding RATTLE clusters ...\n"); } atommols = atom->avec->onemols; tagint *tag = atom->tag; int *type = atom->type; int *mask = atom->mask; double *mass = atom->mass; double *rmass = atom->rmass; int **nspecial = atom->nspecial; tagint **special = atom->special; int *molindex = atom->molindex; int *molatom = atom->molatom; int nlocal = atom->nlocal; int angles_allow = atom->avec->angles_allow; // setup ring of procs int next = me + 1; int prev = me -1; if (next == nprocs) next = 0; if (prev < 0) prev = nprocs - 1; // ----------------------------------------------------- // allocate arrays for self (1d) and bond partners (2d) // max = max # of bond partners for owned atoms = 2nd dim of partner arrays // npartner[i] = # of bonds attached to atom i // nshake[i] = # of SHAKE bonds attached to atom i // partner_tag[i][] = global IDs of each partner // partner_mask[i][] = mask of each partner // partner_type[i][] = type of each partner // partner_massflag[i][] = 1 if partner meets mass criterion, 0 if not // partner_bondtype[i][] = type of bond attached to each partner // partner_shake[i][] = 1 if SHAKE bonded to partner, 0 if not // partner_nshake[i][] = nshake value for each partner // ----------------------------------------------------- int max = 0; if (molecular == 1) { for (i = 0; i < nlocal; i++) max = MAX(max,nspecial[i][0]); } else { for (i = 0; i < nlocal; i++) { imol = molindex[i]; if (imol < 0) continue; iatom = molatom[i]; max = MAX(max,atommols[imol]->nspecial[iatom][0]); } } int *npartner; memory->create(npartner,nlocal,"shake:npartner"); memory->create(nshake,nlocal,"shake:nshake"); tagint **partner_tag; int **partner_mask,**partner_type,**partner_massflag; int **partner_bondtype,**partner_shake,**partner_nshake; memory->create(partner_tag,nlocal,max,"shake:partner_tag"); memory->create(partner_mask,nlocal,max,"shake:partner_mask"); memory->create(partner_type,nlocal,max,"shake:partner_type"); memory->create(partner_massflag,nlocal,max,"shake:partner_massflag"); memory->create(partner_bondtype,nlocal,max,"shake:partner_bondtype"); memory->create(partner_shake,nlocal,max,"shake:partner_shake"); memory->create(partner_nshake,nlocal,max,"shake:partner_nshake"); // ----------------------------------------------------- // set npartner and partner_tag from special arrays // ----------------------------------------------------- if (molecular == 1) { for (i = 0; i < nlocal; i++) { npartner[i] = nspecial[i][0]; for (j = 0; j < npartner[i]; j++) partner_tag[i][j] = special[i][j]; } } else { for (i = 0; i < nlocal; i++) { imol = molindex[i]; if (imol < 0) continue; iatom = molatom[i]; tagprev = tag[i] - iatom - 1; npartner[i] = atommols[imol]->nspecial[iatom][0]; for (j = 0; j < npartner[i]; j++) partner_tag[i][j] = atommols[imol]->special[iatom][j] + tagprev;; } } // ----------------------------------------------------- // set partner_mask, partner_type, partner_massflag, partner_bondtype // for bonded partners // requires communication for off-proc partners // ----------------------------------------------------- // fill in mask, type, massflag, bondtype if own bond partner // info to store in buf for each off-proc bond = nper = 6 // 2 atoms IDs in bond, space for mask, type, massflag, bondtype // nbufmax = largest buffer needed to hold info from any proc int nper = 6; nbuf = 0; for (i = 0; i < nlocal; i++) { for (j = 0; j < npartner[i]; j++) { partner_mask[i][j] = 0; partner_type[i][j] = 0; partner_massflag[i][j] = 0; partner_bondtype[i][j] = 0; m = atom->map(partner_tag[i][j]); if (m >= 0 && m < nlocal) { partner_mask[i][j] = mask[m]; partner_type[i][j] = type[m]; if (nmass) { if (rmass) massone = rmass[m]; else massone = mass[type[m]]; partner_massflag[i][j] = masscheck(massone); } n = bondtype_findset(i,tag[i],partner_tag[i][j],0); if (n) partner_bondtype[i][j] = n; else { n = bondtype_findset(m,tag[i],partner_tag[i][j],0); if (n) partner_bondtype[i][j] = n; } } else nbuf += nper; } } memory->create(buf,nbuf,"shake:buf"); // fill buffer with info size = 0; for (i = 0; i < nlocal; i++) { for (j = 0; j < npartner[i]; j++) { m = atom->map(partner_tag[i][j]); if (m < 0 || m >= nlocal) { buf[size] = tag[i]; buf[size+1] = partner_tag[i][j]; buf[size+2] = 0; buf[size+3] = 0; buf[size+4] = 0; n = bondtype_findset(i,tag[i],partner_tag[i][j],0); if (n) buf[size+5] = n; else buf[size+5] = 0; size += nper; } } } // cycle buffer around ring of procs back to self fsptr = this; comm->ring(size,sizeof(tagint),buf,1,ring_bonds,buf); // store partner info returned to me m = 0; while (m < size) { i = atom->map(buf[m]); for (j = 0; j < npartner[i]; j++) if (buf[m+1] == partner_tag[i][j]) break; partner_mask[i][j] = buf[m+2]; partner_type[i][j] = buf[m+3]; partner_massflag[i][j] = buf[m+4]; partner_bondtype[i][j] = buf[m+5]; m += nper; } memory->destroy(buf); // error check for unfilled partner info // if partner_type not set, is an error // partner_bondtype may not be set if special list is not consistent // with bondatom (e.g. due to delete_bonds command) // this is OK if one or both atoms are not in fix group, since // bond won't be SHAKEn anyway // else it's an error flag = 0; for (i = 0; i < nlocal; i++) for (j = 0; j < npartner[i]; j++) { if (partner_type[i][j] == 0) flag = 1; if (!(mask[i] & groupbit)) continue; if (!(partner_mask[i][j] & groupbit)) continue; if (partner_bondtype[i][j] == 0) flag = 1; } MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); if (flag_all) error->all(FLERR,"Did not find fix shake partner info"); // ----------------------------------------------------- // identify SHAKEable bonds // set nshake[i] = # of SHAKE bonds attached to atom i // set partner_shake[i][] = 1 if SHAKE bonded to partner, 0 if not // both atoms must be in group, bondtype must be > 0 // check if bondtype is in input bond_flag // check if type of either atom is in input type_flag // check if mass of either atom is in input mass_list // ----------------------------------------------------- int np; for (i = 0; i < nlocal; i++) { nshake[i] = 0; np = npartner[i]; for (j = 0; j < np; j++) { partner_shake[i][j] = 0; if (!(mask[i] & groupbit)) continue; if (!(partner_mask[i][j] & groupbit)) continue; if (partner_bondtype[i][j] <= 0) continue; if (bond_flag[partner_bondtype[i][j]]) { partner_shake[i][j] = 1; nshake[i]++; continue; } if (type_flag[type[i]] || type_flag[partner_type[i][j]]) { partner_shake[i][j] = 1; nshake[i]++; continue; } if (nmass) { if (partner_massflag[i][j]) { partner_shake[i][j] = 1; nshake[i]++; continue; } else { if (rmass) massone = rmass[i]; else massone = mass[type[i]]; if (masscheck(massone)) { partner_shake[i][j] = 1; nshake[i]++; continue; } } } } } // ----------------------------------------------------- // set partner_nshake for bonded partners // requires communication for off-proc partners // ----------------------------------------------------- // fill in partner_nshake if own bond partner // info to store in buf for each off-proc bond = // 2 atoms IDs in bond, space for nshake value // nbufmax = largest buffer needed to hold info from any proc nbuf = 0; for (i = 0; i < nlocal; i++) { for (j = 0; j < npartner[i]; j++) { m = atom->map(partner_tag[i][j]); if (m >= 0 && m < nlocal) partner_nshake[i][j] = nshake[m]; else nbuf += 3; } } memory->create(buf,nbuf,"shake:buf"); // fill buffer with info size = 0; for (i = 0; i < nlocal; i++) { for (j = 0; j < npartner[i]; j++) { m = atom->map(partner_tag[i][j]); if (m < 0 || m >= nlocal) { buf[size] = tag[i]; buf[size+1] = partner_tag[i][j]; size += 3; } } } // cycle buffer around ring of procs back to self fsptr = this; comm->ring(size,sizeof(tagint),buf,2,ring_nshake,buf); // store partner info returned to me m = 0; while (m < size) { i = atom->map(buf[m]); for (j = 0; j < npartner[i]; j++) if (buf[m+1] == partner_tag[i][j]) break; partner_nshake[i][j] = buf[m+2]; m += 3; } memory->destroy(buf); // ----------------------------------------------------- // error checks // no atom with nshake > 3 // no connected atoms which both have nshake > 1 // ----------------------------------------------------- flag = 0; for (i = 0; i < nlocal; i++) if (nshake[i] > 3) flag = 1; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); if (flag_all) error->all(FLERR,"Shake cluster of more than 4 atoms"); flag = 0; for (i = 0; i < nlocal; i++) { if (nshake[i] <= 1) continue; for (j = 0; j < npartner[i]; j++) if (partner_shake[i][j] && partner_nshake[i][j] > 1) flag = 1; } MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); if (flag_all) error->all(FLERR,"Shake clusters are connected"); // ----------------------------------------------------- // set SHAKE arrays that are stored with atoms & add angle constraints // zero shake arrays for all owned atoms // if I am central atom set shake_flag & shake_atom & shake_type // for 2-atom clusters, I am central atom if my atom ID < partner ID // for 3-atom clusters, test for angle constraint // angle will be stored by this atom if it exists // if angle type matches angle_flag, then it is angle-constrained // shake_flag[] = 0 if atom not in SHAKE cluster // 2,3,4 = size of bond-only cluster // 1 = 3-atom angle cluster // shake_atom[][] = global IDs of 2,3,4 atoms in cluster // central atom is 1st // for 2-atom cluster, lowest ID is 1st // shake_type[][] = bondtype of each bond in cluster // for 3-atom angle cluster, 3rd value is angletype // ----------------------------------------------------- for (i = 0; i < nlocal; i++) { shake_flag[i] = 0; shake_atom[i][0] = 0; shake_atom[i][1] = 0; shake_atom[i][2] = 0; shake_atom[i][3] = 0; shake_type[i][0] = 0; shake_type[i][1] = 0; shake_type[i][2] = 0; if (nshake[i] == 1) { for (j = 0; j < npartner[i]; j++) if (partner_shake[i][j]) break; if (partner_nshake[i][j] == 1 && tag[i] < partner_tag[i][j]) { shake_flag[i] = 2; shake_atom[i][0] = tag[i]; shake_atom[i][1] = partner_tag[i][j]; shake_type[i][0] = partner_bondtype[i][j]; } } if (nshake[i] > 1) { shake_flag[i] = 1; shake_atom[i][0] = tag[i]; for (j = 0; j < npartner[i]; j++) if (partner_shake[i][j]) { m = shake_flag[i]; shake_atom[i][m] = partner_tag[i][j]; shake_type[i][m-1] = partner_bondtype[i][j]; shake_flag[i]++; } } if (nshake[i] == 2 && angles_allow) { n = angletype_findset(i,shake_atom[i][1],shake_atom[i][2],0); if (n <= 0) continue; if (angle_flag[n]) { shake_flag[i] = 1; shake_type[i][2] = n; } } } // ----------------------------------------------------- // set shake_flag,shake_atom,shake_type for non-central atoms // requires communication for off-proc atoms // ----------------------------------------------------- // fill in shake arrays for each bond partner I own // info to store in buf for each off-proc bond = // all values from shake_flag, shake_atom, shake_type // nbufmax = largest buffer needed to hold info from any proc nbuf = 0; for (i = 0; i < nlocal; i++) { if (shake_flag[i] == 0) continue; for (j = 0; j < npartner[i]; j++) { if (partner_shake[i][j] == 0) continue; m = atom->map(partner_tag[i][j]); if (m >= 0 && m < nlocal) { shake_flag[m] = shake_flag[i]; shake_atom[m][0] = shake_atom[i][0]; shake_atom[m][1] = shake_atom[i][1]; shake_atom[m][2] = shake_atom[i][2]; shake_atom[m][3] = shake_atom[i][3]; shake_type[m][0] = shake_type[i][0]; shake_type[m][1] = shake_type[i][1]; shake_type[m][2] = shake_type[i][2]; } else nbuf += 9; } } memory->create(buf,nbuf,"shake:buf"); // fill buffer with info size = 0; for (i = 0; i < nlocal; i++) { if (shake_flag[i] == 0) continue; for (j = 0; j < npartner[i]; j++) { if (partner_shake[i][j] == 0) continue; m = atom->map(partner_tag[i][j]); if (m < 0 || m >= nlocal) { buf[size] = partner_tag[i][j]; buf[size+1] = shake_flag[i]; buf[size+2] = shake_atom[i][0]; buf[size+3] = shake_atom[i][1]; buf[size+4] = shake_atom[i][2]; buf[size+5] = shake_atom[i][3]; buf[size+6] = shake_type[i][0]; buf[size+7] = shake_type[i][1]; buf[size+8] = shake_type[i][2]; size += 9; } } } // cycle buffer around ring of procs back to self fsptr = this; comm->ring(size,sizeof(tagint),buf,3,ring_shake,NULL); memory->destroy(buf); // ----------------------------------------------------- // free local memory // ----------------------------------------------------- memory->destroy(npartner); memory->destroy(nshake); memory->destroy(partner_tag); memory->destroy(partner_mask); memory->destroy(partner_type); memory->destroy(partner_massflag); memory->destroy(partner_bondtype); memory->destroy(partner_shake); memory->destroy(partner_nshake); // ----------------------------------------------------- // set bond_type and angle_type negative for SHAKE clusters // must set for all SHAKE bonds and angles stored by each atom // ----------------------------------------------------- for (i = 0; i < nlocal; i++) { if (shake_flag[i] == 0) continue; else if (shake_flag[i] == 1) { bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],-1); bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],-1); angletype_findset(i,shake_atom[i][1],shake_atom[i][2],-1); } else if (shake_flag[i] == 2) { bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],-1); } else if (shake_flag[i] == 3) { bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],-1); bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],-1); } else if (shake_flag[i] == 4) { bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],-1); bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],-1); bondtype_findset(i,shake_atom[i][0],shake_atom[i][3],-1); } } // ----------------------------------------------------- // print info on SHAKE clusters // ----------------------------------------------------- int count1,count2,count3,count4; count1 = count2 = count3 = count4 = 0; for (i = 0; i < nlocal; i++) { if (shake_flag[i] == 1) count1++; else if (shake_flag[i] == 2) count2++; else if (shake_flag[i] == 3) count3++; else if (shake_flag[i] == 4) count4++; } int tmp; tmp = count1; MPI_Allreduce(&tmp,&count1,1,MPI_INT,MPI_SUM,world); tmp = count2; MPI_Allreduce(&tmp,&count2,1,MPI_INT,MPI_SUM,world); tmp = count3; MPI_Allreduce(&tmp,&count3,1,MPI_INT,MPI_SUM,world); tmp = count4; MPI_Allreduce(&tmp,&count4,1,MPI_INT,MPI_SUM,world); if (me == 0) { if (screen) { fprintf(screen," %d = # of size 2 clusters\n",count2/2); fprintf(screen," %d = # of size 3 clusters\n",count3/3); fprintf(screen," %d = # of size 4 clusters\n",count4/4); fprintf(screen," %d = # of frozen angles\n",count1/3); } if (logfile) { fprintf(logfile," %d = # of size 2 clusters\n",count2/2); fprintf(logfile," %d = # of size 3 clusters\n",count3/3); fprintf(logfile," %d = # of size 4 clusters\n",count4/4); fprintf(logfile," %d = # of frozen angles\n",count1/3); } } } /* ---------------------------------------------------------------------- when receive buffer, scan bond partner IDs for atoms I own if I own partner: fill in mask and type and massflag search for bond with 1st atom and fill in bondtype ------------------------------------------------------------------------- */ void FixShake::ring_bonds(int ndatum, char *cbuf) { Atom *atom = fsptr->atom; double *rmass = atom->rmass; double *mass = atom->mass; int *mask = atom->mask; int *type = atom->type; int nlocal = atom->nlocal; int nmass = fsptr->nmass; tagint *buf = (tagint *) cbuf; int m,n; double massone; for (int i = 0; i < ndatum; i += 6) { m = atom->map(buf[i+1]); if (m >= 0 && m < nlocal) { buf[i+2] = mask[m]; buf[i+3] = type[m]; if (nmass) { if (rmass) massone = rmass[m]; else massone = mass[type[m]]; buf[i+4] = fsptr->masscheck(massone); } if (buf[i+5] == 0) { n = fsptr->bondtype_findset(m,buf[i],buf[i+1],0); if (n) buf[i+5] = n; } } } } /* ---------------------------------------------------------------------- when receive buffer, scan bond partner IDs for atoms I own if I own partner, fill in nshake value ------------------------------------------------------------------------- */ void FixShake::ring_nshake(int ndatum, char *cbuf) { Atom *atom = fsptr->atom; int nlocal = atom->nlocal; int *nshake = fsptr->nshake; tagint *buf = (tagint *) cbuf; int m; for (int i = 0; i < ndatum; i += 3) { m = atom->map(buf[i+1]); if (m >= 0 && m < nlocal) buf[i+2] = nshake[m]; } } /* ---------------------------------------------------------------------- when receive buffer, scan bond partner IDs for atoms I own if I own partner, fill in nshake value ------------------------------------------------------------------------- */ void FixShake::ring_shake(int ndatum, char *cbuf) { Atom *atom = fsptr->atom; int nlocal = atom->nlocal; int *shake_flag = fsptr->shake_flag; tagint **shake_atom = fsptr->shake_atom; int **shake_type = fsptr->shake_type; tagint *buf = (tagint *) cbuf; int m; for (int i = 0; i < ndatum; i += 9) { m = atom->map(buf[i]); if (m >= 0 && m < nlocal) { shake_flag[m] = buf[i+1]; shake_atom[m][0] = buf[i+2]; shake_atom[m][1] = buf[i+3]; shake_atom[m][2] = buf[i+4]; shake_atom[m][3] = buf[i+5]; shake_type[m][0] = buf[i+6]; shake_type[m][1] = buf[i+7]; shake_type[m][2] = buf[i+8]; } } } /* ---------------------------------------------------------------------- check if massone is within MASSDELTA of any mass in mass_list return 1 if yes, 0 if not ------------------------------------------------------------------------- */ int FixShake::masscheck(double massone) { for (int i = 0; i < nmass; i++) if (fabs(mass_list[i]-massone) <= MASSDELTA) return 1; return 0; } /* ---------------------------------------------------------------------- update the unconstrained position of each atom only for SHAKE clusters, else set to 0.0 assumes NVE update, seems to be accurate enough for NVT,NPT,NPH as well ------------------------------------------------------------------------- */ void FixShake::unconstrained_update() { double dtfmsq; if (rmass) { for (int i = 0; i < nlocal; i++) { if (shake_flag[i]) { dtfmsq = dtfsq / rmass[i]; xshake[i][0] = x[i][0] + dtv*v[i][0] + dtfmsq*f[i][0]; xshake[i][1] = x[i][1] + dtv*v[i][1] + dtfmsq*f[i][1]; xshake[i][2] = x[i][2] + dtv*v[i][2] + dtfmsq*f[i][2]; } else xshake[i][2] = xshake[i][1] = xshake[i][0] = 0.0; } } else { for (int i = 0; i < nlocal; i++) { if (shake_flag[i]) { dtfmsq = dtfsq / mass[type[i]]; xshake[i][0] = x[i][0] + dtv*v[i][0] + dtfmsq*f[i][0]; xshake[i][1] = x[i][1] + dtv*v[i][1] + dtfmsq*f[i][1]; xshake[i][2] = x[i][2] + dtv*v[i][2] + dtfmsq*f[i][2]; } else xshake[i][2] = xshake[i][1] = xshake[i][0] = 0.0; } } } /* ---------------------------------------------------------------------- update the unconstrained position of each atom in a rRESPA step only for SHAKE clusters, else set to 0.0 assumes NVE update, seems to be accurate enough for NVT,NPT,NPH as well ------------------------------------------------------------------------- */ void FixShake::unconstrained_update_respa(int ilevel) { // xshake = atom coords after next x update in innermost loop // depends on rRESPA level // for levels > 0 this includes more than one velocity update // xshake = predicted position from call to this routine at level N = // x + dt0 (v + dtN/m fN + 1/2 dt(N-1)/m f(N-1) + ... + 1/2 dt0/m f0) // also set dtfsq = dt0*dtN so that shake,shake3,etc can use it double ***f_level = ((FixRespa *) modify->fix[ifix_respa])->f_level; dtfsq = dtf_inner * step_respa[ilevel]; double invmass,dtfmsq; int jlevel; if (rmass) { for (int i = 0; i < nlocal; i++) { if (shake_flag[i]) { invmass = 1.0 / rmass[i]; dtfmsq = dtfsq * invmass; xshake[i][0] = x[i][0] + dtv*v[i][0] + dtfmsq*f[i][0]; xshake[i][1] = x[i][1] + dtv*v[i][1] + dtfmsq*f[i][1]; xshake[i][2] = x[i][2] + dtv*v[i][2] + dtfmsq*f[i][2]; for (jlevel = 0; jlevel < ilevel; jlevel++) { dtfmsq = dtf_innerhalf * step_respa[jlevel] * invmass; xshake[i][0] += dtfmsq*f_level[i][jlevel][0]; xshake[i][1] += dtfmsq*f_level[i][jlevel][1]; xshake[i][2] += dtfmsq*f_level[i][jlevel][2]; } } else xshake[i][2] = xshake[i][1] = xshake[i][0] = 0.0; } } else { for (int i = 0; i < nlocal; i++) { if (shake_flag[i]) { invmass = 1.0 / mass[type[i]]; dtfmsq = dtfsq * invmass; xshake[i][0] = x[i][0] + dtv*v[i][0] + dtfmsq*f[i][0]; xshake[i][1] = x[i][1] + dtv*v[i][1] + dtfmsq*f[i][1]; xshake[i][2] = x[i][2] + dtv*v[i][2] + dtfmsq*f[i][2]; for (jlevel = 0; jlevel < ilevel; jlevel++) { dtfmsq = dtf_innerhalf * step_respa[jlevel] * invmass; xshake[i][0] += dtfmsq*f_level[i][jlevel][0]; xshake[i][1] += dtfmsq*f_level[i][jlevel][1]; xshake[i][2] += dtfmsq*f_level[i][jlevel][2]; } } else xshake[i][2] = xshake[i][1] = xshake[i][0] = 0.0; } } } /* ---------------------------------------------------------------------- */ void FixShake::shake(int m) { int nlist,list[2]; double v[6]; double invmass0,invmass1; // local atom IDs and constraint distances int i0 = atom->map(shake_atom[m][0]); int i1 = atom->map(shake_atom[m][1]); double bond1 = bond_distance[shake_type[m][0]]; // r01 = distance vec between atoms, with PBC double r01[3]; r01[0] = x[i0][0] - x[i1][0]; r01[1] = x[i0][1] - x[i1][1]; r01[2] = x[i0][2] - x[i1][2]; domain->minimum_image(r01); // s01 = distance vec after unconstrained update, with PBC double s01[3]; s01[0] = xshake[i0][0] - xshake[i1][0]; s01[1] = xshake[i0][1] - xshake[i1][1]; s01[2] = xshake[i0][2] - xshake[i1][2]; domain->minimum_image(s01); // scalar distances between atoms double r01sq = r01[0]*r01[0] + r01[1]*r01[1] + r01[2]*r01[2]; double s01sq = s01[0]*s01[0] + s01[1]*s01[1] + s01[2]*s01[2]; // a,b,c = coeffs in quadratic equation for lamda if (rmass) { invmass0 = 1.0/rmass[i0]; invmass1 = 1.0/rmass[i1]; } else { invmass0 = 1.0/mass[type[i0]]; invmass1 = 1.0/mass[type[i1]]; } double a = (invmass0+invmass1)*(invmass0+invmass1) * r01sq; double b = 2.0 * (invmass0+invmass1) * (s01[0]*r01[0] + s01[1]*r01[1] + s01[2]*r01[2]); double c = s01sq - bond1*bond1; // error check double determ = b*b - 4.0*a*c; if (determ < 0.0) { error->warning(FLERR,"Shake determinant < 0.0",0); determ = 0.0; } // exact quadratic solution for lamda double lamda,lamda1,lamda2; lamda1 = (-b+sqrt(determ)) / (2.0*a); lamda2 = (-b-sqrt(determ)) / (2.0*a); if (fabs(lamda1) <= fabs(lamda2)) lamda = lamda1; else lamda = lamda2; // update forces if atom is owned by this processor lamda /= dtfsq; if (i0 < nlocal) { f[i0][0] += lamda*r01[0]; f[i0][1] += lamda*r01[1]; f[i0][2] += lamda*r01[2]; } if (i1 < nlocal) { f[i1][0] -= lamda*r01[0]; f[i1][1] -= lamda*r01[1]; f[i1][2] -= lamda*r01[2]; } if (evflag) { nlist = 0; if (i0 < nlocal) list[nlist++] = i0; if (i1 < nlocal) list[nlist++] = i1; v[0] = lamda*r01[0]*r01[0]; v[1] = lamda*r01[1]*r01[1]; v[2] = lamda*r01[2]*r01[2]; v[3] = lamda*r01[0]*r01[1]; v[4] = lamda*r01[0]*r01[2]; v[5] = lamda*r01[1]*r01[2]; v_tally(nlist,list,2.0,v); } } /* ---------------------------------------------------------------------- */ void FixShake::shake3(int m) { int nlist,list[3]; double v[6]; double invmass0,invmass1,invmass2; // local atom IDs and constraint distances int i0 = atom->map(shake_atom[m][0]); int i1 = atom->map(shake_atom[m][1]); int i2 = atom->map(shake_atom[m][2]); double bond1 = bond_distance[shake_type[m][0]]; double bond2 = bond_distance[shake_type[m][1]]; // r01,r02 = distance vec between atoms, with PBC double r01[3]; r01[0] = x[i0][0] - x[i1][0]; r01[1] = x[i0][1] - x[i1][1]; r01[2] = x[i0][2] - x[i1][2]; domain->minimum_image(r01); double r02[3]; r02[0] = x[i0][0] - x[i2][0]; r02[1] = x[i0][1] - x[i2][1]; r02[2] = x[i0][2] - x[i2][2]; domain->minimum_image(r02); // s01,s02 = distance vec after unconstrained update, with PBC double s01[3]; s01[0] = xshake[i0][0] - xshake[i1][0]; s01[1] = xshake[i0][1] - xshake[i1][1]; s01[2] = xshake[i0][2] - xshake[i1][2]; domain->minimum_image(s01); double s02[3]; s02[0] = xshake[i0][0] - xshake[i2][0]; s02[1] = xshake[i0][1] - xshake[i2][1]; s02[2] = xshake[i0][2] - xshake[i2][2]; domain->minimum_image(s02); // scalar distances between atoms double r01sq = r01[0]*r01[0] + r01[1]*r01[1] + r01[2]*r01[2]; double r02sq = r02[0]*r02[0] + r02[1]*r02[1] + r02[2]*r02[2]; double s01sq = s01[0]*s01[0] + s01[1]*s01[1] + s01[2]*s01[2]; double s02sq = s02[0]*s02[0] + s02[1]*s02[1] + s02[2]*s02[2]; // matrix coeffs and rhs for lamda equations if (rmass) { invmass0 = 1.0/rmass[i0]; invmass1 = 1.0/rmass[i1]; invmass2 = 1.0/rmass[i2]; } else { invmass0 = 1.0/mass[type[i0]]; invmass1 = 1.0/mass[type[i1]]; invmass2 = 1.0/mass[type[i2]]; } double a11 = 2.0 * (invmass0+invmass1) * (s01[0]*r01[0] + s01[1]*r01[1] + s01[2]*r01[2]); double a12 = 2.0 * invmass0 * (s01[0]*r02[0] + s01[1]*r02[1] + s01[2]*r02[2]); double a21 = 2.0 * invmass0 * (s02[0]*r01[0] + s02[1]*r01[1] + s02[2]*r01[2]); double a22 = 2.0 * (invmass0+invmass2) * (s02[0]*r02[0] + s02[1]*r02[1] + s02[2]*r02[2]); // inverse of matrix double determ = a11*a22 - a12*a21; if (determ == 0.0) error->one(FLERR,"Shake determinant = 0.0"); double determinv = 1.0/determ; double a11inv = a22*determinv; double a12inv = -a12*determinv; double a21inv = -a21*determinv; double a22inv = a11*determinv; // quadratic correction coeffs double r0102 = (r01[0]*r02[0] + r01[1]*r02[1] + r01[2]*r02[2]); double quad1_0101 = (invmass0+invmass1)*(invmass0+invmass1) * r01sq; double quad1_0202 = invmass0*invmass0 * r02sq; double quad1_0102 = 2.0 * (invmass0+invmass1)*invmass0 * r0102; double quad2_0202 = (invmass0+invmass2)*(invmass0+invmass2) * r02sq; double quad2_0101 = invmass0*invmass0 * r01sq; double quad2_0102 = 2.0 * (invmass0+invmass2)*invmass0 * r0102; // iterate until converged double lamda01 = 0.0; double lamda02 = 0.0; int niter = 0; int done = 0; double quad1,quad2,b1,b2,lamda01_new,lamda02_new; while (!done && niter < max_iter) { quad1 = quad1_0101 * lamda01*lamda01 + quad1_0202 * lamda02*lamda02 + quad1_0102 * lamda01*lamda02; quad2 = quad2_0101 * lamda01*lamda01 + quad2_0202 * lamda02*lamda02 + quad2_0102 * lamda01*lamda02; b1 = bond1*bond1 - s01sq - quad1; b2 = bond2*bond2 - s02sq - quad2; lamda01_new = a11inv*b1 + a12inv*b2; lamda02_new = a21inv*b1 + a22inv*b2; done = 1; if (fabs(lamda01_new-lamda01) > tolerance) done = 0; if (fabs(lamda02_new-lamda02) > tolerance) done = 0; lamda01 = lamda01_new; lamda02 = lamda02_new; niter++; } // update forces if atom is owned by this processor lamda01 = lamda01/dtfsq; lamda02 = lamda02/dtfsq; if (i0 < nlocal) { f[i0][0] += lamda01*r01[0] + lamda02*r02[0]; f[i0][1] += lamda01*r01[1] + lamda02*r02[1]; f[i0][2] += lamda01*r01[2] + lamda02*r02[2]; } if (i1 < nlocal) { f[i1][0] -= lamda01*r01[0]; f[i1][1] -= lamda01*r01[1]; f[i1][2] -= lamda01*r01[2]; } if (i2 < nlocal) { f[i2][0] -= lamda02*r02[0]; f[i2][1] -= lamda02*r02[1]; f[i2][2] -= lamda02*r02[2]; } if (evflag) { nlist = 0; if (i0 < nlocal) list[nlist++] = i0; if (i1 < nlocal) list[nlist++] = i1; if (i2 < nlocal) list[nlist++] = i2; v[0] = lamda01*r01[0]*r01[0] + lamda02*r02[0]*r02[0]; v[1] = lamda01*r01[1]*r01[1] + lamda02*r02[1]*r02[1]; v[2] = lamda01*r01[2]*r01[2] + lamda02*r02[2]*r02[2]; v[3] = lamda01*r01[0]*r01[1] + lamda02*r02[0]*r02[1]; v[4] = lamda01*r01[0]*r01[2] + lamda02*r02[0]*r02[2]; v[5] = lamda01*r01[1]*r01[2] + lamda02*r02[1]*r02[2]; v_tally(nlist,list,3.0,v); } } /* ---------------------------------------------------------------------- */ void FixShake::shake4(int m) { int nlist,list[4]; double v[6]; double invmass0,invmass1,invmass2,invmass3; // local atom IDs and constraint distances int i0 = atom->map(shake_atom[m][0]); int i1 = atom->map(shake_atom[m][1]); int i2 = atom->map(shake_atom[m][2]); int i3 = atom->map(shake_atom[m][3]); double bond1 = bond_distance[shake_type[m][0]]; double bond2 = bond_distance[shake_type[m][1]]; double bond3 = bond_distance[shake_type[m][2]]; // r01,r02,r03 = distance vec between atoms, with PBC double r01[3]; r01[0] = x[i0][0] - x[i1][0]; r01[1] = x[i0][1] - x[i1][1]; r01[2] = x[i0][2] - x[i1][2]; domain->minimum_image(r01); double r02[3]; r02[0] = x[i0][0] - x[i2][0]; r02[1] = x[i0][1] - x[i2][1]; r02[2] = x[i0][2] - x[i2][2]; domain->minimum_image(r02); double r03[3]; r03[0] = x[i0][0] - x[i3][0]; r03[1] = x[i0][1] - x[i3][1]; r03[2] = x[i0][2] - x[i3][2]; domain->minimum_image(r03); // s01,s02,s03 = distance vec after unconstrained update, with PBC double s01[3]; s01[0] = xshake[i0][0] - xshake[i1][0]; s01[1] = xshake[i0][1] - xshake[i1][1]; s01[2] = xshake[i0][2] - xshake[i1][2]; domain->minimum_image(s01); double s02[3]; s02[0] = xshake[i0][0] - xshake[i2][0]; s02[1] = xshake[i0][1] - xshake[i2][1]; s02[2] = xshake[i0][2] - xshake[i2][2]; domain->minimum_image(s02); double s03[3]; s03[0] = xshake[i0][0] - xshake[i3][0]; s03[1] = xshake[i0][1] - xshake[i3][1]; s03[2] = xshake[i0][2] - xshake[i3][2]; domain->minimum_image(s03); // scalar distances between atoms double r01sq = r01[0]*r01[0] + r01[1]*r01[1] + r01[2]*r01[2]; double r02sq = r02[0]*r02[0] + r02[1]*r02[1] + r02[2]*r02[2]; double r03sq = r03[0]*r03[0] + r03[1]*r03[1] + r03[2]*r03[2]; double s01sq = s01[0]*s01[0] + s01[1]*s01[1] + s01[2]*s01[2]; double s02sq = s02[0]*s02[0] + s02[1]*s02[1] + s02[2]*s02[2]; double s03sq = s03[0]*s03[0] + s03[1]*s03[1] + s03[2]*s03[2]; // matrix coeffs and rhs for lamda equations if (rmass) { invmass0 = 1.0/rmass[i0]; invmass1 = 1.0/rmass[i1]; invmass2 = 1.0/rmass[i2]; invmass3 = 1.0/rmass[i3]; } else { invmass0 = 1.0/mass[type[i0]]; invmass1 = 1.0/mass[type[i1]]; invmass2 = 1.0/mass[type[i2]]; invmass3 = 1.0/mass[type[i3]]; } double a11 = 2.0 * (invmass0+invmass1) * (s01[0]*r01[0] + s01[1]*r01[1] + s01[2]*r01[2]); double a12 = 2.0 * invmass0 * (s01[0]*r02[0] + s01[1]*r02[1] + s01[2]*r02[2]); double a13 = 2.0 * invmass0 * (s01[0]*r03[0] + s01[1]*r03[1] + s01[2]*r03[2]); double a21 = 2.0 * invmass0 * (s02[0]*r01[0] + s02[1]*r01[1] + s02[2]*r01[2]); double a22 = 2.0 * (invmass0+invmass2) * (s02[0]*r02[0] + s02[1]*r02[1] + s02[2]*r02[2]); double a23 = 2.0 * invmass0 * (s02[0]*r03[0] + s02[1]*r03[1] + s02[2]*r03[2]); double a31 = 2.0 * invmass0 * (s03[0]*r01[0] + s03[1]*r01[1] + s03[2]*r01[2]); double a32 = 2.0 * invmass0 * (s03[0]*r02[0] + s03[1]*r02[1] + s03[2]*r02[2]); double a33 = 2.0 * (invmass0+invmass3) * (s03[0]*r03[0] + s03[1]*r03[1] + s03[2]*r03[2]); // inverse of matrix; double determ = a11*a22*a33 + a12*a23*a31 + a13*a21*a32 - a11*a23*a32 - a12*a21*a33 - a13*a22*a31; if (determ == 0.0) error->one(FLERR,"Shake determinant = 0.0"); double determinv = 1.0/determ; double a11inv = determinv * (a22*a33 - a23*a32); double a12inv = -determinv * (a12*a33 - a13*a32); double a13inv = determinv * (a12*a23 - a13*a22); double a21inv = -determinv * (a21*a33 - a23*a31); double a22inv = determinv * (a11*a33 - a13*a31); double a23inv = -determinv * (a11*a23 - a13*a21); double a31inv = determinv * (a21*a32 - a22*a31); double a32inv = -determinv * (a11*a32 - a12*a31); double a33inv = determinv * (a11*a22 - a12*a21); // quadratic correction coeffs double r0102 = (r01[0]*r02[0] + r01[1]*r02[1] + r01[2]*r02[2]); double r0103 = (r01[0]*r03[0] + r01[1]*r03[1] + r01[2]*r03[2]); double r0203 = (r02[0]*r03[0] + r02[1]*r03[1] + r02[2]*r03[2]); double quad1_0101 = (invmass0+invmass1)*(invmass0+invmass1) * r01sq; double quad1_0202 = invmass0*invmass0 * r02sq; double quad1_0303 = invmass0*invmass0 * r03sq; double quad1_0102 = 2.0 * (invmass0+invmass1)*invmass0 * r0102; double quad1_0103 = 2.0 * (invmass0+invmass1)*invmass0 * r0103; double quad1_0203 = 2.0 * invmass0*invmass0 * r0203; double quad2_0101 = invmass0*invmass0 * r01sq; double quad2_0202 = (invmass0+invmass2)*(invmass0+invmass2) * r02sq; double quad2_0303 = invmass0*invmass0 * r03sq; double quad2_0102 = 2.0 * (invmass0+invmass2)*invmass0 * r0102; double quad2_0103 = 2.0 * invmass0*invmass0 * r0103; double quad2_0203 = 2.0 * (invmass0+invmass2)*invmass0 * r0203; double quad3_0101 = invmass0*invmass0 * r01sq; double quad3_0202 = invmass0*invmass0 * r02sq; double quad3_0303 = (invmass0+invmass3)*(invmass0+invmass3) * r03sq; double quad3_0102 = 2.0 * invmass0*invmass0 * r0102; double quad3_0103 = 2.0 * (invmass0+invmass3)*invmass0 * r0103; double quad3_0203 = 2.0 * (invmass0+invmass3)*invmass0 * r0203; // iterate until converged double lamda01 = 0.0; double lamda02 = 0.0; double lamda03 = 0.0; int niter = 0; int done = 0; double quad1,quad2,quad3,b1,b2,b3,lamda01_new,lamda02_new,lamda03_new; while (!done && niter < max_iter) { quad1 = quad1_0101 * lamda01*lamda01 + quad1_0202 * lamda02*lamda02 + quad1_0303 * lamda03*lamda03 + quad1_0102 * lamda01*lamda02 + quad1_0103 * lamda01*lamda03 + quad1_0203 * lamda02*lamda03; quad2 = quad2_0101 * lamda01*lamda01 + quad2_0202 * lamda02*lamda02 + quad2_0303 * lamda03*lamda03 + quad2_0102 * lamda01*lamda02 + quad2_0103 * lamda01*lamda03 + quad2_0203 * lamda02*lamda03; quad3 = quad3_0101 * lamda01*lamda01 + quad3_0202 * lamda02*lamda02 + quad3_0303 * lamda03*lamda03 + quad3_0102 * lamda01*lamda02 + quad3_0103 * lamda01*lamda03 + quad3_0203 * lamda02*lamda03; b1 = bond1*bond1 - s01sq - quad1; b2 = bond2*bond2 - s02sq - quad2; b3 = bond3*bond3 - s03sq - quad3; lamda01_new = a11inv*b1 + a12inv*b2 + a13inv*b3; lamda02_new = a21inv*b1 + a22inv*b2 + a23inv*b3; lamda03_new = a31inv*b1 + a32inv*b2 + a33inv*b3; done = 1; if (fabs(lamda01_new-lamda01) > tolerance) done = 0; if (fabs(lamda02_new-lamda02) > tolerance) done = 0; if (fabs(lamda03_new-lamda03) > tolerance) done = 0; lamda01 = lamda01_new; lamda02 = lamda02_new; lamda03 = lamda03_new; niter++; } // update forces if atom is owned by this processor lamda01 = lamda01/dtfsq; lamda02 = lamda02/dtfsq; lamda03 = lamda03/dtfsq; if (i0 < nlocal) { f[i0][0] += lamda01*r01[0] + lamda02*r02[0] + lamda03*r03[0]; f[i0][1] += lamda01*r01[1] + lamda02*r02[1] + lamda03*r03[1]; f[i0][2] += lamda01*r01[2] + lamda02*r02[2] + lamda03*r03[2]; } if (i1 < nlocal) { f[i1][0] -= lamda01*r01[0]; f[i1][1] -= lamda01*r01[1]; f[i1][2] -= lamda01*r01[2]; } if (i2 < nlocal) { f[i2][0] -= lamda02*r02[0]; f[i2][1] -= lamda02*r02[1]; f[i2][2] -= lamda02*r02[2]; } if (i3 < nlocal) { f[i3][0] -= lamda03*r03[0]; f[i3][1] -= lamda03*r03[1]; f[i3][2] -= lamda03*r03[2]; } if (evflag) { nlist = 0; if (i0 < nlocal) list[nlist++] = i0; if (i1 < nlocal) list[nlist++] = i1; if (i2 < nlocal) list[nlist++] = i2; if (i3 < nlocal) list[nlist++] = i3; v[0] = lamda01*r01[0]*r01[0]+lamda02*r02[0]*r02[0]+lamda03*r03[0]*r03[0]; v[1] = lamda01*r01[1]*r01[1]+lamda02*r02[1]*r02[1]+lamda03*r03[1]*r03[1]; v[2] = lamda01*r01[2]*r01[2]+lamda02*r02[2]*r02[2]+lamda03*r03[2]*r03[2]; v[3] = lamda01*r01[0]*r01[1]+lamda02*r02[0]*r02[1]+lamda03*r03[0]*r03[1]; v[4] = lamda01*r01[0]*r01[2]+lamda02*r02[0]*r02[2]+lamda03*r03[0]*r03[2]; v[5] = lamda01*r01[1]*r01[2]+lamda02*r02[1]*r02[2]+lamda03*r03[1]*r03[2]; v_tally(nlist,list,4.0,v); } } /* ---------------------------------------------------------------------- */ void FixShake::shake3angle(int m) { int nlist,list[3]; double v[6]; double invmass0,invmass1,invmass2; // local atom IDs and constraint distances int i0 = atom->map(shake_atom[m][0]); int i1 = atom->map(shake_atom[m][1]); int i2 = atom->map(shake_atom[m][2]); double bond1 = bond_distance[shake_type[m][0]]; double bond2 = bond_distance[shake_type[m][1]]; double bond12 = angle_distance[shake_type[m][2]]; // r01,r02,r12 = distance vec between atoms, with PBC double r01[3]; r01[0] = x[i0][0] - x[i1][0]; r01[1] = x[i0][1] - x[i1][1]; r01[2] = x[i0][2] - x[i1][2]; domain->minimum_image(r01); double r02[3]; r02[0] = x[i0][0] - x[i2][0]; r02[1] = x[i0][1] - x[i2][1]; r02[2] = x[i0][2] - x[i2][2]; domain->minimum_image(r02); double r12[3]; r12[0] = x[i1][0] - x[i2][0]; r12[1] = x[i1][1] - x[i2][1]; r12[2] = x[i1][2] - x[i2][2]; domain->minimum_image(r12); // s01,s02,s12 = distance vec after unconstrained update, with PBC double s01[3]; s01[0] = xshake[i0][0] - xshake[i1][0]; s01[1] = xshake[i0][1] - xshake[i1][1]; s01[2] = xshake[i0][2] - xshake[i1][2]; domain->minimum_image(s01); double s02[3]; s02[0] = xshake[i0][0] - xshake[i2][0]; s02[1] = xshake[i0][1] - xshake[i2][1]; s02[2] = xshake[i0][2] - xshake[i2][2]; domain->minimum_image(s02); double s12[3]; s12[0] = xshake[i1][0] - xshake[i2][0]; s12[1] = xshake[i1][1] - xshake[i2][1]; s12[2] = xshake[i1][2] - xshake[i2][2]; domain->minimum_image(s12); // scalar distances between atoms double r01sq = r01[0]*r01[0] + r01[1]*r01[1] + r01[2]*r01[2]; double r02sq = r02[0]*r02[0] + r02[1]*r02[1] + r02[2]*r02[2]; double r12sq = r12[0]*r12[0] + r12[1]*r12[1] + r12[2]*r12[2]; double s01sq = s01[0]*s01[0] + s01[1]*s01[1] + s01[2]*s01[2]; double s02sq = s02[0]*s02[0] + s02[1]*s02[1] + s02[2]*s02[2]; double s12sq = s12[0]*s12[0] + s12[1]*s12[1] + s12[2]*s12[2]; // matrix coeffs and rhs for lamda equations if (rmass) { invmass0 = 1.0/rmass[i0]; invmass1 = 1.0/rmass[i1]; invmass2 = 1.0/rmass[i2]; } else { invmass0 = 1.0/mass[type[i0]]; invmass1 = 1.0/mass[type[i1]]; invmass2 = 1.0/mass[type[i2]]; } double a11 = 2.0 * (invmass0+invmass1) * (s01[0]*r01[0] + s01[1]*r01[1] + s01[2]*r01[2]); double a12 = 2.0 * invmass0 * (s01[0]*r02[0] + s01[1]*r02[1] + s01[2]*r02[2]); double a13 = - 2.0 * invmass1 * (s01[0]*r12[0] + s01[1]*r12[1] + s01[2]*r12[2]); double a21 = 2.0 * invmass0 * (s02[0]*r01[0] + s02[1]*r01[1] + s02[2]*r01[2]); double a22 = 2.0 * (invmass0+invmass2) * (s02[0]*r02[0] + s02[1]*r02[1] + s02[2]*r02[2]); double a23 = 2.0 * invmass2 * (s02[0]*r12[0] + s02[1]*r12[1] + s02[2]*r12[2]); double a31 = - 2.0 * invmass1 * (s12[0]*r01[0] + s12[1]*r01[1] + s12[2]*r01[2]); double a32 = 2.0 * invmass2 * (s12[0]*r02[0] + s12[1]*r02[1] + s12[2]*r02[2]); double a33 = 2.0 * (invmass1+invmass2) * (s12[0]*r12[0] + s12[1]*r12[1] + s12[2]*r12[2]); // inverse of matrix double determ = a11*a22*a33 + a12*a23*a31 + a13*a21*a32 - a11*a23*a32 - a12*a21*a33 - a13*a22*a31; if (determ == 0.0) error->one(FLERR,"Shake determinant = 0.0"); double determinv = 1.0/determ; double a11inv = determinv * (a22*a33 - a23*a32); double a12inv = -determinv * (a12*a33 - a13*a32); double a13inv = determinv * (a12*a23 - a13*a22); double a21inv = -determinv * (a21*a33 - a23*a31); double a22inv = determinv * (a11*a33 - a13*a31); double a23inv = -determinv * (a11*a23 - a13*a21); double a31inv = determinv * (a21*a32 - a22*a31); double a32inv = -determinv * (a11*a32 - a12*a31); double a33inv = determinv * (a11*a22 - a12*a21); // quadratic correction coeffs double r0102 = (r01[0]*r02[0] + r01[1]*r02[1] + r01[2]*r02[2]); double r0112 = (r01[0]*r12[0] + r01[1]*r12[1] + r01[2]*r12[2]); double r0212 = (r02[0]*r12[0] + r02[1]*r12[1] + r02[2]*r12[2]); double quad1_0101 = (invmass0+invmass1)*(invmass0+invmass1) * r01sq; double quad1_0202 = invmass0*invmass0 * r02sq; double quad1_1212 = invmass1*invmass1 * r12sq; double quad1_0102 = 2.0 * (invmass0+invmass1)*invmass0 * r0102; double quad1_0112 = - 2.0 * (invmass0+invmass1)*invmass1 * r0112; double quad1_0212 = - 2.0 * invmass0*invmass1 * r0212; double quad2_0101 = invmass0*invmass0 * r01sq; double quad2_0202 = (invmass0+invmass2)*(invmass0+invmass2) * r02sq; double quad2_1212 = invmass2*invmass2 * r12sq; double quad2_0102 = 2.0 * (invmass0+invmass2)*invmass0 * r0102; double quad2_0112 = 2.0 * invmass0*invmass2 * r0112; double quad2_0212 = 2.0 * (invmass0+invmass2)*invmass2 * r0212; double quad3_0101 = invmass1*invmass1 * r01sq; double quad3_0202 = invmass2*invmass2 * r02sq; double quad3_1212 = (invmass1+invmass2)*(invmass1+invmass2) * r12sq; double quad3_0102 = - 2.0 * invmass1*invmass2 * r0102; double quad3_0112 = - 2.0 * (invmass1+invmass2)*invmass1 * r0112; double quad3_0212 = 2.0 * (invmass1+invmass2)*invmass2 * r0212; // iterate until converged double lamda01 = 0.0; double lamda02 = 0.0; double lamda12 = 0.0; int niter = 0; int done = 0; double quad1,quad2,quad3,b1,b2,b3,lamda01_new,lamda02_new,lamda12_new; while (!done && niter < max_iter) { quad1 = quad1_0101 * lamda01*lamda01 + quad1_0202 * lamda02*lamda02 + quad1_1212 * lamda12*lamda12 + quad1_0102 * lamda01*lamda02 + quad1_0112 * lamda01*lamda12 + quad1_0212 * lamda02*lamda12; quad2 = quad2_0101 * lamda01*lamda01 + quad2_0202 * lamda02*lamda02 + quad2_1212 * lamda12*lamda12 + quad2_0102 * lamda01*lamda02 + quad2_0112 * lamda01*lamda12 + quad2_0212 * lamda02*lamda12; quad3 = quad3_0101 * lamda01*lamda01 + quad3_0202 * lamda02*lamda02 + quad3_1212 * lamda12*lamda12 + quad3_0102 * lamda01*lamda02 + quad3_0112 * lamda01*lamda12 + quad3_0212 * lamda02*lamda12; b1 = bond1*bond1 - s01sq - quad1; b2 = bond2*bond2 - s02sq - quad2; b3 = bond12*bond12 - s12sq - quad3; lamda01_new = a11inv*b1 + a12inv*b2 + a13inv*b3; lamda02_new = a21inv*b1 + a22inv*b2 + a23inv*b3; lamda12_new = a31inv*b1 + a32inv*b2 + a33inv*b3; done = 1; if (fabs(lamda01_new-lamda01) > tolerance) done = 0; if (fabs(lamda02_new-lamda02) > tolerance) done = 0; if (fabs(lamda12_new-lamda12) > tolerance) done = 0; lamda01 = lamda01_new; lamda02 = lamda02_new; lamda12 = lamda12_new; niter++; } // update forces if atom is owned by this processor lamda01 = lamda01/dtfsq; lamda02 = lamda02/dtfsq; lamda12 = lamda12/dtfsq; if (i0 < nlocal) { f[i0][0] += lamda01*r01[0] + lamda02*r02[0]; f[i0][1] += lamda01*r01[1] + lamda02*r02[1]; f[i0][2] += lamda01*r01[2] + lamda02*r02[2]; } if (i1 < nlocal) { f[i1][0] -= lamda01*r01[0] - lamda12*r12[0]; f[i1][1] -= lamda01*r01[1] - lamda12*r12[1]; f[i1][2] -= lamda01*r01[2] - lamda12*r12[2]; } if (i2 < nlocal) { f[i2][0] -= lamda02*r02[0] + lamda12*r12[0]; f[i2][1] -= lamda02*r02[1] + lamda12*r12[1]; f[i2][2] -= lamda02*r02[2] + lamda12*r12[2]; } if (evflag) { nlist = 0; if (i0 < nlocal) list[nlist++] = i0; if (i1 < nlocal) list[nlist++] = i1; if (i2 < nlocal) list[nlist++] = i2; v[0] = lamda01*r01[0]*r01[0]+lamda02*r02[0]*r02[0]+lamda12*r12[0]*r12[0]; v[1] = lamda01*r01[1]*r01[1]+lamda02*r02[1]*r02[1]+lamda12*r12[1]*r12[1]; v[2] = lamda01*r01[2]*r01[2]+lamda02*r02[2]*r02[2]+lamda12*r12[2]*r12[2]; v[3] = lamda01*r01[0]*r01[1]+lamda02*r02[0]*r02[1]+lamda12*r12[0]*r12[1]; v[4] = lamda01*r01[0]*r01[2]+lamda02*r02[0]*r02[2]+lamda12*r12[0]*r12[2]; v[5] = lamda01*r01[1]*r01[2]+lamda02*r02[1]*r02[2]+lamda12*r12[1]*r12[2]; v_tally(nlist,list,3.0,v); } } /* ---------------------------------------------------------------------- print-out bond & angle statistics ------------------------------------------------------------------------- */ void FixShake::stats() { int i,j,m,n,iatom,jatom,katom; double delx,dely,delz; double r,r1,r2,r3,angle; // zero out accumulators int nb = atom->nbondtypes + 1; int na = atom->nangletypes + 1; for (i = 0; i < nb; i++) { b_count[i] = 0; b_ave[i] = b_max[i] = 0.0; b_min[i] = BIG; } for (i = 0; i < na; i++) { a_count[i] = 0; a_ave[i] = a_max[i] = 0.0; a_min[i] = BIG; } // log stats for each bond & angle // OK to double count since are just averaging double **x = atom->x; int nlocal = atom->nlocal; for (i = 0; i < nlocal; i++) { if (shake_flag[i] == 0) continue; // bond stats n = shake_flag[i]; if (n == 1) n = 3; iatom = atom->map(shake_atom[i][0]); for (j = 1; j < n; j++) { jatom = atom->map(shake_atom[i][j]); delx = x[iatom][0] - x[jatom][0]; dely = x[iatom][1] - x[jatom][1]; delz = x[iatom][2] - x[jatom][2]; domain->minimum_image(delx,dely,delz); r = sqrt(delx*delx + dely*dely + delz*delz); m = shake_type[i][j-1]; b_count[m]++; b_ave[m] += r; b_max[m] = MAX(b_max[m],r); b_min[m] = MIN(b_min[m],r); } // angle stats if (shake_flag[i] == 1) { iatom = atom->map(shake_atom[i][0]); jatom = atom->map(shake_atom[i][1]); katom = atom->map(shake_atom[i][2]); delx = x[iatom][0] - x[jatom][0]; dely = x[iatom][1] - x[jatom][1]; delz = x[iatom][2] - x[jatom][2]; domain->minimum_image(delx,dely,delz); r1 = sqrt(delx*delx + dely*dely + delz*delz); delx = x[iatom][0] - x[katom][0]; dely = x[iatom][1] - x[katom][1]; delz = x[iatom][2] - x[katom][2]; domain->minimum_image(delx,dely,delz); r2 = sqrt(delx*delx + dely*dely + delz*delz); delx = x[jatom][0] - x[katom][0]; dely = x[jatom][1] - x[katom][1]; delz = x[jatom][2] - x[katom][2]; domain->minimum_image(delx,dely,delz); r3 = sqrt(delx*delx + dely*dely + delz*delz); angle = acos((r1*r1 + r2*r2 - r3*r3) / (2.0*r1*r2)); angle *= 180.0/MY_PI; m = shake_type[i][2]; a_count[m]++; a_ave[m] += angle; a_max[m] = MAX(a_max[m],angle); a_min[m] = MIN(a_min[m],angle); } } // sum across all procs MPI_Allreduce(b_count,b_count_all,nb,MPI_INT,MPI_SUM,world); MPI_Allreduce(b_ave,b_ave_all,nb,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(b_max,b_max_all,nb,MPI_DOUBLE,MPI_MAX,world); MPI_Allreduce(b_min,b_min_all,nb,MPI_DOUBLE,MPI_MIN,world); MPI_Allreduce(a_count,a_count_all,na,MPI_INT,MPI_SUM,world); MPI_Allreduce(a_ave,a_ave_all,na,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(a_max,a_max_all,na,MPI_DOUBLE,MPI_MAX,world); MPI_Allreduce(a_min,a_min_all,na,MPI_DOUBLE,MPI_MIN,world); // print stats only for non-zero counts if (me == 0) { if (screen) { fprintf(screen, "SHAKE stats (type/ave/delta) on step " BIGINT_FORMAT "\n", update->ntimestep); for (i = 1; i < nb; i++) if (b_count_all[i]) fprintf(screen," %d %g %g %d\n",i, b_ave_all[i]/b_count_all[i],b_max_all[i]-b_min_all[i], b_count_all[i]); for (i = 1; i < na; i++) if (a_count_all[i]) fprintf(screen," %d %g %g\n",i, a_ave_all[i]/a_count_all[i],a_max_all[i]-a_min_all[i]); } if (logfile) { fprintf(logfile, "SHAKE stats (type/ave/delta) on step " BIGINT_FORMAT "\n", update->ntimestep); for (i = 0; i < nb; i++) if (b_count_all[i]) fprintf(logfile," %d %g %g\n",i, b_ave_all[i]/b_count_all[i],b_max_all[i]-b_min_all[i]); for (i = 0; i < na; i++) if (a_count_all[i]) fprintf(logfile," %d %g %g\n",i, a_ave_all[i]/a_count_all[i],a_max_all[i]-a_min_all[i]); } } // next timestep for stats next_output += output_every; } /* ---------------------------------------------------------------------- find a bond between global atom IDs n1 and n2 stored with local atom i if find it: if setflag = 0, return bond type if setflag = -1/1, set bond type to negative/positive and return 0 if do not find it, return 0 ------------------------------------------------------------------------- */ int FixShake::bondtype_findset(int i, tagint n1, tagint n2, int setflag) { int m,nbonds; int *btype; if (molecular == 1) { tagint *tag = atom->tag; tagint **bond_atom = atom->bond_atom; nbonds = atom->num_bond[i]; for (m = 0; m < nbonds; m++) { if (n1 == tag[i] && n2 == bond_atom[i][m]) break; if (n1 == bond_atom[i][m] && n2 == tag[i]) break; } } else { int imol = atom->molindex[i]; int iatom = atom->molatom[i]; tagint *tag = atom->tag; tagint tagprev = tag[i] - iatom - 1; tagint *batom = atommols[imol]->bond_atom[iatom]; btype = atommols[imol]->bond_type[iatom]; nbonds = atommols[imol]->num_bond[iatom]; for (m = 0; m < nbonds; m++) { if (n1 == tag[i] && n2 == batom[m]+tagprev) break; if (n1 == batom[m]+tagprev && n2 == tag[i]) break; } } if (m < nbonds) { if (setflag == 0) { if (molecular == 1) return atom->bond_type[i][m]; else return btype[m]; } if (molecular == 1) { if ((setflag < 0 && atom->bond_type[i][m] > 0) || (setflag > 0 && atom->bond_type[i][m] < 0)) atom->bond_type[i][m] = -atom->bond_type[i][m]; } else { if ((setflag < 0 && btype[m] > 0) || (setflag > 0 && btype[m] < 0)) btype[m] = -btype[m]; } } return 0; } /* ---------------------------------------------------------------------- find an angle with global end atom IDs n1 and n2 stored with local atom i if find it: if setflag = 0, return angle type if setflag = -1/1, set angle type to negative/positive and return 0 if do not find it, return 0 ------------------------------------------------------------------------- */ int FixShake::angletype_findset(int i, tagint n1, tagint n2, int setflag) { int m,nangles; int *atype; if (molecular == 1) { tagint **angle_atom1 = atom->angle_atom1; tagint **angle_atom3 = atom->angle_atom3; nangles = atom->num_angle[i]; for (m = 0; m < nangles; m++) { if (n1 == angle_atom1[i][m] && n2 == angle_atom3[i][m]) break; if (n1 == angle_atom3[i][m] && n2 == angle_atom1[i][m]) break; } } else { int imol = atom->molindex[i]; int iatom = atom->molatom[i]; tagint *tag = atom->tag; tagint tagprev = tag[i] - iatom - 1; tagint *aatom1 = atommols[imol]->angle_atom1[iatom]; tagint *aatom3 = atommols[imol]->angle_atom3[iatom]; atype = atommols[imol]->angle_type[iatom]; nangles = atommols[imol]->num_angle[iatom]; for (m = 0; m < nangles; m++) { if (n1 == aatom1[m]+tagprev && n2 == aatom3[m]+tagprev) break; if (n1 == aatom3[m]+tagprev && n2 == aatom1[m]+tagprev) break; } } if (m < nangles) { if (setflag == 0) { if (molecular == 1) return atom->angle_type[i][m]; else return atype[m]; } if (molecular == 1) { if ((setflag < 0 && atom->angle_type[i][m] > 0) || (setflag > 0 && atom->angle_type[i][m] < 0)) atom->angle_type[i][m] = -atom->angle_type[i][m]; } else { if ((setflag < 0 && atype[m] > 0) || (setflag > 0 && atype[m] < 0)) atype[m] = -atype[m]; } } return 0; } /* ---------------------------------------------------------------------- memory usage of local atom-based arrays ------------------------------------------------------------------------- */ double FixShake::memory_usage() { int nmax = atom->nmax; double bytes = nmax * sizeof(int); bytes += nmax*4 * sizeof(int); bytes += nmax*3 * sizeof(int); bytes += nmax*3 * sizeof(double); bytes += maxvatom*6 * sizeof(double); return bytes; } /* ---------------------------------------------------------------------- allocate local atom-based arrays ------------------------------------------------------------------------- */ void FixShake::grow_arrays(int nmax) { memory->grow(shake_flag,nmax,"shake:shake_flag"); memory->grow(shake_atom,nmax,4,"shake:shake_atom"); memory->grow(shake_type,nmax,3,"shake:shake_type"); memory->destroy(xshake); memory->create(xshake,nmax,3,"shake:xshake"); } /* ---------------------------------------------------------------------- copy values within local atom-based arrays ------------------------------------------------------------------------- */ void FixShake::copy_arrays(int i, int j, int delflag) { int flag = shake_flag[j] = shake_flag[i]; if (flag == 1) { shake_atom[j][0] = shake_atom[i][0]; shake_atom[j][1] = shake_atom[i][1]; shake_atom[j][2] = shake_atom[i][2]; shake_type[j][0] = shake_type[i][0]; shake_type[j][1] = shake_type[i][1]; shake_type[j][2] = shake_type[i][2]; } else if (flag == 2) { shake_atom[j][0] = shake_atom[i][0]; shake_atom[j][1] = shake_atom[i][1]; shake_type[j][0] = shake_type[i][0]; } else if (flag == 3) { shake_atom[j][0] = shake_atom[i][0]; shake_atom[j][1] = shake_atom[i][1]; shake_atom[j][2] = shake_atom[i][2]; shake_type[j][0] = shake_type[i][0]; shake_type[j][1] = shake_type[i][1]; } else if (flag == 4) { shake_atom[j][0] = shake_atom[i][0]; shake_atom[j][1] = shake_atom[i][1]; shake_atom[j][2] = shake_atom[i][2]; shake_atom[j][3] = shake_atom[i][3]; shake_type[j][0] = shake_type[i][0]; shake_type[j][1] = shake_type[i][1]; shake_type[j][2] = shake_type[i][2]; } } /* ---------------------------------------------------------------------- initialize one atom's array values, called when atom is created ------------------------------------------------------------------------- */ void FixShake::set_arrays(int i) { shake_flag[i] = 0; } /* ---------------------------------------------------------------------- update one atom's array values called when molecule is created from fix gcmc ------------------------------------------------------------------------- */ void FixShake::update_arrays(int i, int atom_offset) { int flag = shake_flag[i]; if (flag == 1) { shake_atom[i][0] += atom_offset; shake_atom[i][1] += atom_offset; shake_atom[i][2] += atom_offset; } else if (flag == 2) { shake_atom[i][0] += atom_offset; shake_atom[i][1] += atom_offset; } else if (flag == 3) { shake_atom[i][0] += atom_offset; shake_atom[i][1] += atom_offset; shake_atom[i][2] += atom_offset; } else if (flag == 4) { shake_atom[i][0] += atom_offset; shake_atom[i][1] += atom_offset; shake_atom[i][2] += atom_offset; shake_atom[i][3] += atom_offset; } } /* ---------------------------------------------------------------------- initialize a molecule inserted by another fix, e.g. deposit or pour called when molecule is created nlocalprev = # of atoms on this proc before molecule inserted tagprev = atom ID previous to new atoms in the molecule xgeom,vcm,quat ignored ------------------------------------------------------------------------- */ void FixShake::set_molecule(int nlocalprev, tagint tagprev, int imol, double *xgeom, double *vcm, double *quat) { int m,flag; int nlocal = atom->nlocal; if (nlocalprev == nlocal) return; tagint *tag = atom->tag; tagint **mol_shake_atom = onemols[imol]->shake_atom; int **mol_shake_type = onemols[imol]->shake_type; for (int i = nlocalprev; i < nlocal; i++) { m = tag[i] - tagprev-1; flag = shake_flag[i] = onemols[imol]->shake_flag[m]; if (flag == 1) { shake_atom[i][0] = mol_shake_atom[m][0] + tagprev; shake_atom[i][1] = mol_shake_atom[m][1] + tagprev; shake_atom[i][2] = mol_shake_atom[m][2] + tagprev; shake_type[i][0] = mol_shake_type[m][0]; shake_type[i][1] = mol_shake_type[m][1]; shake_type[i][2] = mol_shake_type[m][2]; } else if (flag == 2) { shake_atom[i][0] = mol_shake_atom[m][0] + tagprev; shake_atom[i][1] = mol_shake_atom[m][1] + tagprev; shake_type[i][0] = mol_shake_type[m][0]; } else if (flag == 3) { shake_atom[i][0] = mol_shake_atom[m][0] + tagprev; shake_atom[i][1] = mol_shake_atom[m][1] + tagprev; shake_atom[i][2] = mol_shake_atom[m][2] + tagprev; shake_type[i][0] = mol_shake_type[m][0]; shake_type[i][1] = mol_shake_type[m][1]; } else if (flag == 4) { shake_atom[i][0] = mol_shake_atom[m][0] + tagprev; shake_atom[i][1] = mol_shake_atom[m][1] + tagprev; shake_atom[i][2] = mol_shake_atom[m][2] + tagprev; shake_atom[i][3] = mol_shake_atom[m][3] + tagprev; shake_type[i][0] = mol_shake_type[m][0]; shake_type[i][1] = mol_shake_type[m][1]; shake_type[i][2] = mol_shake_type[m][2]; } } } /* ---------------------------------------------------------------------- pack values in local atom-based arrays for exchange with another proc ------------------------------------------------------------------------- */ int FixShake::pack_exchange(int i, double *buf) { int m = 0; buf[m++] = shake_flag[i]; int flag = shake_flag[i]; if (flag == 1) { buf[m++] = shake_atom[i][0]; buf[m++] = shake_atom[i][1]; buf[m++] = shake_atom[i][2]; buf[m++] = shake_type[i][0]; buf[m++] = shake_type[i][1]; buf[m++] = shake_type[i][2]; } else if (flag == 2) { buf[m++] = shake_atom[i][0]; buf[m++] = shake_atom[i][1]; buf[m++] = shake_type[i][0]; } else if (flag == 3) { buf[m++] = shake_atom[i][0]; buf[m++] = shake_atom[i][1]; buf[m++] = shake_atom[i][2]; buf[m++] = shake_type[i][0]; buf[m++] = shake_type[i][1]; } else if (flag == 4) { buf[m++] = shake_atom[i][0]; buf[m++] = shake_atom[i][1]; buf[m++] = shake_atom[i][2]; buf[m++] = shake_atom[i][3]; buf[m++] = shake_type[i][0]; buf[m++] = shake_type[i][1]; buf[m++] = shake_type[i][2]; } return m; } /* ---------------------------------------------------------------------- unpack values in local atom-based arrays from exchange with another proc ------------------------------------------------------------------------- */ int FixShake::unpack_exchange(int nlocal, double *buf) { int m = 0; int flag = shake_flag[nlocal] = static_cast<int> (buf[m++]); if (flag == 1) { shake_atom[nlocal][0] = static_cast<tagint> (buf[m++]); shake_atom[nlocal][1] = static_cast<tagint> (buf[m++]); shake_atom[nlocal][2] = static_cast<tagint> (buf[m++]); shake_type[nlocal][0] = static_cast<int> (buf[m++]); shake_type[nlocal][1] = static_cast<int> (buf[m++]); shake_type[nlocal][2] = static_cast<int> (buf[m++]); } else if (flag == 2) { shake_atom[nlocal][0] = static_cast<tagint> (buf[m++]); shake_atom[nlocal][1] = static_cast<tagint> (buf[m++]); shake_type[nlocal][0] = static_cast<int> (buf[m++]); } else if (flag == 3) { shake_atom[nlocal][0] = static_cast<tagint> (buf[m++]); shake_atom[nlocal][1] = static_cast<tagint> (buf[m++]); shake_atom[nlocal][2] = static_cast<tagint> (buf[m++]); shake_type[nlocal][0] = static_cast<int> (buf[m++]); shake_type[nlocal][1] = static_cast<int> (buf[m++]); } else if (flag == 4) { shake_atom[nlocal][0] = static_cast<tagint> (buf[m++]); shake_atom[nlocal][1] = static_cast<tagint> (buf[m++]); shake_atom[nlocal][2] = static_cast<tagint> (buf[m++]); shake_atom[nlocal][3] = static_cast<tagint> (buf[m++]); shake_type[nlocal][0] = static_cast<int> (buf[m++]); shake_type[nlocal][1] = static_cast<int> (buf[m++]); shake_type[nlocal][2] = static_cast<int> (buf[m++]); } return m; } /* ---------------------------------------------------------------------- */ int FixShake::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) { int i,j,m; double dx,dy,dz; m = 0; if (pbc_flag == 0) { for (i = 0; i < n; i++) { j = list[i]; buf[m++] = xshake[j][0]; buf[m++] = xshake[j][1]; buf[m++] = xshake[j][2]; } } else { if (domain->triclinic == 0) { dx = pbc[0]*domain->xprd; dy = pbc[1]*domain->yprd; dz = pbc[2]*domain->zprd; } else { dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; dz = pbc[2]*domain->zprd; } for (i = 0; i < n; i++) { j = list[i]; buf[m++] = xshake[j][0] + dx; buf[m++] = xshake[j][1] + dy; buf[m++] = xshake[j][2] + dz; } } return m; } /* ---------------------------------------------------------------------- */ void FixShake::unpack_forward_comm(int n, int first, double *buf) { int i,m,last; m = 0; last = first + n; for (i = first; i < last; i++) { xshake[i][0] = buf[m++]; xshake[i][1] = buf[m++]; xshake[i][2] = buf[m++]; } } /* ---------------------------------------------------------------------- */ void FixShake::reset_dt() { if (strstr(update->integrate_style,"verlet")) { dtv = update->dt; if (rattle) dtfsq = 0.5 * update->dt * update->dt * force->ftm2v; else dtfsq = update->dt * update->dt * force->ftm2v; } else { dtv = step_respa[0]; dtf_innerhalf = 0.5 * step_respa[0] * force->ftm2v; if (rattle) dtf_inner = dtf_innerhalf; else dtf_inner = step_respa[0] * force->ftm2v; } } /* ---------------------------------------------------------------------- extract Molecule ptr ------------------------------------------------------------------------- */ void *FixShake::extract(const char *str, int &dim) { dim = 0; if (strcmp(str,"onemol") == 0) { return onemols; } return NULL; } /* ---------------------------------------------------------------------- wrapper method for end_of_step fixes which modify the coordinates ------------------------------------------------------------------------- */ void FixShake::coordinate_constraints_end_of_step() { if (!respa) { dtfsq = 0.5 * update->dt * update->dt * force->ftm2v; FixShake::post_force(vflag_post_force); if (!rattle) dtfsq = update->dt * update->dt * force->ftm2v; } else { dtf_innerhalf = 0.5 * step_respa[0] * force->ftm2v; dtf_inner = dtf_innerhalf; // apply correction to all rRESPA levels for (int ilevel = 0; ilevel < nlevels_respa; ilevel++) { ((Respa *) update->integrate)->copy_flevel_f(ilevel); FixShake::post_force_respa(vflag_post_force,ilevel,loop_respa[ilevel]-1); ((Respa *) update->integrate)->copy_f_flevel(ilevel); } if (!rattle) dtf_inner = step_respa[0] * force->ftm2v; } } diff --git a/src/USER-DRUDE/fix_drude.cpp b/src/USER-DRUDE/fix_drude.cpp index 9b95c1506..46b49707d 100644 --- a/src/USER-DRUDE/fix_drude.cpp +++ b/src/USER-DRUDE/fix_drude.cpp @@ -1,496 +1,497 @@ /* ---------------------------------------------------------------------- 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 "stdlib.h" #include "fix_drude.h" #include "atom.h" #include "comm.h" #include "modify.h" #include "error.h" #include "memory.h" #include <set> #include <vector> using namespace LAMMPS_NS; using namespace FixConst; FixDrude *FixDrude::sptr = NULL; /* ---------------------------------------------------------------------- */ FixDrude::FixDrude(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg != 3 + atom->ntypes) error->all(FLERR,"Illegal fix drude command"); comm_border = 1; // drudeid special_alter_flag = 1; create_attribute = 1; memory->create(drudetype, atom->ntypes+1, "fix_drude::drudetype"); for (int i=3; i<narg; i++) { if (arg[i][0] == 'n' || arg[i][0] == 'N' || arg[i][0] == '0') drudetype[i-2] = NOPOL_TYPE; else if (arg[i][0] == 'c' || arg[i][0] == 'C' || arg[i][0] == '1') drudetype[i-2] = CORE_TYPE; else if (arg[i][0] == 'd' || arg[i][0] == 'D' || arg[i][0] == '2') drudetype[i-2] = DRUDE_TYPE; else error->all(FLERR, "Illegal fix drude command"); } drudeid = NULL; grow_arrays(atom->nmax); atom->add_callback(0); atom->add_callback(1); atom->add_callback(2); // one-time assignment of Drude partners build_drudeid(); // set rebuildflag = 0 to indicate special lists have never been rebuilt rebuildflag = 0; } /* ---------------------------------------------------------------------- */ FixDrude::~FixDrude() { atom->delete_callback(id,2); atom->delete_callback(id,1); atom->delete_callback(id,0); memory->destroy(drudetype); memory->destroy(drudeid); } /* ---------------------------------------------------------------------- */ void FixDrude::init() { int count = 0; for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"drude") == 0) count++; if (count > 1) error->all(FLERR,"More than one fix drude"); if (!rebuildflag) rebuild_special(); } /* ---------------------------------------------------------------------- */ int FixDrude::setmask() { int mask = 0; return mask; } /* ---------------------------------------------------------------------- look in bond lists for Drude partner tags and fill drudeid ------------------------------------------------------------------------- */ void FixDrude::build_drudeid(){ int nlocal = atom->nlocal; int *type = atom->type; std::vector<tagint> drude_vec; // list of my Drudes' tags std::vector<tagint> core_drude_vec; partner_set = new std::set<tagint>[nlocal]; // Temporary sets of bond partner tags sptr = this; // Build list of my atoms' bond partners for (int i=0; i<nlocal; i++){ if (drudetype[type[i]] == NOPOL_TYPE) continue; drudeid[i] = 0; for (int k=0; k<atom->num_bond[i]; k++){ core_drude_vec.push_back(atom->tag[i]); core_drude_vec.push_back(atom->bond_atom[i][k]); } } // Loop on procs to fill my atoms' sets of bond partners comm->ring(core_drude_vec.size(), sizeof(tagint), (char *) core_drude_vec.data(), 4, ring_build_partner, NULL, 1); // Build the list of my Drudes' tags // The only bond partners of a Drude particle is its core, // so fill drudeid for my Drudes. for (int i=0; i<nlocal; i++){ if (drudetype[type[i]] == DRUDE_TYPE){ drude_vec.push_back(atom->tag[i]); drudeid[i] = *partner_set[i].begin(); // only one 1-2 neighbor, the core } } // At this point each of my Drudes knows its core. // Send my list of Drudes to other procs and myself // so that each core finds its Drude. comm->ring(drude_vec.size(), sizeof(tagint), (char *) drude_vec.data(), 3, ring_search_drudeid, NULL, 1); delete [] partner_set; } /* ---------------------------------------------------------------------- * when receive buffer, build the set of received Drude tags. * Look in my cores' bond partner tags if there is a Drude tag. * If so fill this core's dureid. ------------------------------------------------------------------------- */ void FixDrude::ring_search_drudeid(int size, char *cbuf){ // Search for the drude partner of my cores Atom *atom = sptr->atom; int nlocal = atom->nlocal; int *type = atom->type; std::set<tagint> *partner_set = sptr->partner_set; tagint *drudeid = sptr->drudeid; int *drudetype = sptr->drudetype; tagint *first = (tagint *) cbuf; tagint *last = first + size; std::set<tagint> drude_set(first, last); std::set<tagint>::iterator it; for (int i=0; i<nlocal; i++) { if (drudetype[type[i]] != CORE_TYPE || drudeid[i] > 0) continue; for (it = partner_set[i].begin(); it != partner_set[i].end(); it++) { // Drude-core are 1-2 neighbors if (drude_set.count(*it) > 0){ drudeid[i] = *it; break; } } } } /* ---------------------------------------------------------------------- * buffer contains bond partners. Look for my atoms and add their partner's * tag in its set of bond partners. ------------------------------------------------------------------------- */ void FixDrude::ring_build_partner(int size, char *cbuf){ // Add partners from incoming list Atom *atom = sptr->atom; int nlocal = atom->nlocal; std::set<tagint> *partner_set = sptr->partner_set; tagint *it = (tagint *) cbuf; tagint *last = it + size; while (it < last) { int j = atom->map(*it); if (j >= 0 && j < nlocal) partner_set[j].insert(*(it+1)); j = atom->map(*(it+1)); if (j >= 0 && j < nlocal) partner_set[j].insert(*it); it += 2; } } /* ---------------------------------------------------------------------- allocate atom-based array for drudeid ------------------------------------------------------------------------- */ void FixDrude::grow_arrays(int nmax) { memory->grow(drudeid,nmax,"fix_drude:drudeid"); } /* ---------------------------------------------------------------------- copy values within local atom-based array ------------------------------------------------------------------------- */ void FixDrude::copy_arrays(int i, int j, int delflag) { drudeid[j] = drudeid[i]; } /* ---------------------------------------------------------------------- pack values in local atom-based array for exchange with another proc ------------------------------------------------------------------------- */ int FixDrude::pack_exchange(int i, double *buf) { int m = 0; buf[m++] = ubuf(drudeid[i]).d; return m; } /* ---------------------------------------------------------------------- unpack values in local atom-based array from exchange with another proc ------------------------------------------------------------------------- */ int FixDrude::unpack_exchange(int nlocal, double *buf) { int m = 0; drudeid[nlocal] = (tagint) ubuf(buf[m++]).i; return m; } /* ---------------------------------------------------------------------- pack values for border communication at re-neighboring ------------------------------------------------------------------------- */ int FixDrude::pack_border(int n, int *list, double *buf) { int m = 0; for (int i=0; i<n; i++){ int j = list[i]; buf[m++] = ubuf(drudeid[j]).d; } return m; } /* ---------------------------------------------------------------------- unpack values for border communication at re-neighboring ------------------------------------------------------------------------- */ int FixDrude::unpack_border(int n, int first, double *buf) { int m = 0; for (int i=first; i<first+n; i++){ drudeid[i] = (tagint) ubuf(buf[m++]).i; } return m; } /* ---------------------------------------------------------------------- Rebuild the list of special neighbors if atom_style is Drude so that each Drude particle is equivalent to its core atom. ------------------------------------------------------------------------- */ + void FixDrude::rebuild_special(){ rebuildflag = 1; int nlocal = atom->nlocal; int **nspecial = atom->nspecial; tagint **special = atom->special; int *type = atom->type; // Make sure that drude partners know each other //build_drudeid(); // Log info if (comm->me == 0) { if (screen) fprintf(screen, "Rebuild special list taking Drude particles into account\n"); if (logfile) fprintf(logfile, "Rebuild special list taking Drude particles into account\n"); } int nspecmax, nspecmax_old, nspecmax_loc; nspecmax_loc = 0; for (int i=0; i<nlocal; i++) { if (nspecmax_loc < nspecial[i][2]) nspecmax_loc = nspecial[i][2]; } MPI_Allreduce(&nspecmax_loc, &nspecmax_old, 1, MPI_INT, MPI_MAX, world); if (comm->me == 0) { if (screen) fprintf(screen, "Old max number of 1-2 to 1-4 neighbors: %d\n", nspecmax_old); if (logfile) fprintf(logfile, "Old max number of 1-2 to 1-4 neighbors: %d\n", nspecmax_old); } // Build lists of drude and core-drude pairs std::vector<tagint> drude_vec, core_drude_vec, core_special_vec; for (int i=0; i<nlocal; i++) { if (drudetype[type[i]] == DRUDE_TYPE) { drude_vec.push_back(atom->tag[i]); } else if (drudetype[type[i]] == CORE_TYPE){ core_drude_vec.push_back(atom->tag[i]); core_drude_vec.push_back(drudeid[i]); } } // Remove Drude particles from the special lists of each proc comm->ring(drude_vec.size(), sizeof(tagint), (char *) drude_vec.data(), 9, ring_remove_drude, NULL, 1); // Add back Drude particles in the lists just after their core comm->ring(core_drude_vec.size(), sizeof(tagint), (char *) core_drude_vec.data(), 10, ring_add_drude, NULL, 1); // Check size of special list nspecmax_loc = 0; for (int i=0; i<nlocal; i++) { if (nspecmax_loc < nspecial[i][2]) nspecmax_loc = nspecial[i][2]; } MPI_Allreduce(&nspecmax_loc, &nspecmax, 1, MPI_INT, MPI_MAX, world); if (comm->me == 0) { if (screen) fprintf(screen, "New max number of 1-2 to 1-4 neighbors: %d (+%d)\n", nspecmax, nspecmax - nspecmax_old); if (logfile) fprintf(logfile, "New max number of 1-2 to 1-4 neighbors: %d (+%d)\n", nspecmax, nspecmax - nspecmax_old); } if (atom->maxspecial < nspecmax) { char str[1024]; sprintf(str, "Not enough space in special: special_bonds extra should be at least %d", nspecmax - nspecmax_old); error->all(FLERR, str); } // Build list of cores' special lists to communicate to ghost drude particles for (int i=0; i<nlocal; i++) { if (drudetype[type[i]] != CORE_TYPE) continue; core_special_vec.push_back(atom->tag[i]); core_special_vec.push_back((tagint) nspecial[i][0]); core_special_vec.push_back((tagint) nspecial[i][1]); core_special_vec.push_back((tagint) nspecial[i][2]); for (int j=1; j<nspecial[i][2]; j++) core_special_vec.push_back(special[i][j]); } // Copy core's list into their drude list comm->ring(core_special_vec.size(), sizeof(tagint), (char *) core_special_vec.data(), 11, ring_copy_drude, NULL, 1); } /* ---------------------------------------------------------------------- * When receive buffer, build a set of drude tags, look into my atoms' * special list if some tags are drude particles. If so, remove it. ------------------------------------------------------------------------- */ void FixDrude::ring_remove_drude(int size, char *cbuf){ // Remove all drude particles from special list Atom *atom = sptr->atom; int nlocal = atom->nlocal; int **nspecial = atom->nspecial; tagint **special = atom->special; int *type = atom->type; tagint *first = (tagint *) cbuf; tagint *last = first + size; std::set<tagint> drude_set(first, last); int *drudetype = sptr->drudetype; for (int i=0; i<nlocal; i++) { if (drudetype[type[i]] == DRUDE_TYPE) continue; for (int j=0; j<nspecial[i][2]; j++) { if (drude_set.count(special[i][j]) > 0) { // I identify a drude in my special list, remove it // left shift nspecial[i][2]--; for (int k=j; k<nspecial[i][2]; k++) special[i][k] = special[i][k+1]; if (j < nspecial[i][1]) { nspecial[i][1]--; if (j < nspecial[i][0]) nspecial[i][0]--; } j--; } } } } /* ---------------------------------------------------------------------- * When receive buffer, build a map core tag -> drude tag. * Loop on my atoms' special list to find core tags. Insert their Drude * particle if they have one. ------------------------------------------------------------------------- */ void FixDrude::ring_add_drude(int size, char *cbuf){ // Assume special array size is big enough // Add all particle just after their core in the special list Atom *atom = sptr->atom; int nlocal = atom->nlocal; int **nspecial = atom->nspecial; tagint **special = atom->special; int *type = atom->type; tagint *drudeid = sptr->drudeid; int *drudetype = sptr->drudetype; tagint *first = (tagint *) cbuf; tagint *last = first + size; std::map<tagint, tagint> core_drude_map; tagint *it = first; while (it < last) { tagint core_tag = *it; it++; core_drude_map[core_tag] = *it; it++; } for (int i=0; i<nlocal; i++) { if (drudetype[type[i]] == DRUDE_TYPE) continue; if (core_drude_map.count(atom->tag[i]) > 0) { // I identify myself as a core, add my own drude // right shift for (int k=nspecial[i][2]-1; k>=0; k--) special[i][k+1] = special[i][k]; special[i][0] = drudeid[i]; nspecial[i][0]++; nspecial[i][1]++; nspecial[i][2]++; } for (int j=0; j<nspecial[i][2]; j++) { if (core_drude_map.count(special[i][j]) > 0) { // I identify a core in my special list, add his drude // right shift for (int k=nspecial[i][2]-1; k>j; k--) special[i][k+1] = special[i][k]; special[i][j+1] = core_drude_map[special[i][j]]; nspecial[i][2]++; if (j < nspecial[i][1]) { nspecial[i][1]++; if (j < nspecial[i][0]) nspecial[i][0]++; } j++; } } } } /* ---------------------------------------------------------------------- * When receive buffer, build a map core tag -> pointer to special info * in the buffer. Loop on my Drude particles and copy their special * info from that of their core if the latter is found in the map. ------------------------------------------------------------------------- */ void FixDrude::ring_copy_drude(int size, char *cbuf){ // Copy special list of drude from its core (except itself) Atom *atom = sptr->atom; int nlocal = atom->nlocal; int **nspecial = atom->nspecial; tagint **special = atom->special; int *type = atom->type; tagint *drudeid = sptr->drudeid; int *drudetype = sptr->drudetype; tagint *first = (tagint *) cbuf; tagint *last = first + size; std::map<tagint, tagint*> core_special_map; tagint *it = first; while (it < last) { tagint core_tag = *it; it++; core_special_map[core_tag] = it; it += 2; it += (int) *it; } for (int i=0; i<nlocal; i++) { if (drudetype[type[i]] != DRUDE_TYPE) continue; if (core_special_map.count(drudeid[i]) > 0) { // My core is in this list, copy its special info it = core_special_map[drudeid[i]]; nspecial[i][0] = (int) *it; it++; nspecial[i][1] = (int) *it; it++; nspecial[i][2] = (int) *it; it++; special[i][0] = drudeid[i]; for (int k=1; k<nspecial[i][2]; k++) { special[i][k] = *it; it++; } } } } /* ---------------------------------------------------------------------- * Set drudeid when a new atom is created, * special list must be up-to-date * ----------------------------------------------------------------------*/ void FixDrude::set_arrays(int i){ if (drudetype[atom->type[i]] != NOPOL_TYPE){ if (atom->nspecial[i] ==0) error->all(FLERR, "Polarizable atoms cannot be inserted with special lists info from the molecule template"); drudeid[i] = atom->special[i][0]; // Drude partner should be at first place in the special list } else { drudeid[i] = 0; } } diff --git a/src/USER-INTEL/fix_intel.cpp b/src/USER-INTEL/fix_intel.cpp index a67eb58b6..9bd1a632c 100644 --- a/src/USER-INTEL/fix_intel.cpp +++ b/src/USER-INTEL/fix_intel.cpp @@ -1,800 +1,803 @@ /* ---------------------------------------------------------------------- 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: W. Michael Brown (Intel) Anupama Kurpad (Intel) - Host Affinitization ------------------------------------------------------------------------- */ #include "comm.h" #include "error.h" #include "force.h" #include "neighbor.h" #include "neigh_request.h" #include "pair.h" #include "pair_hybrid.h" #include "pair_hybrid_overlay.h" #include "timer.h" #include "universe.h" #include "update.h" #include "fix_intel.h" #include <string.h> #include <stdlib.h> #include <stdio.h> #ifdef _LMP_INTEL_OFFLOAD #ifndef INTEL_OFFLOAD_NOAFFINITY #include <unistd.h> #endif #endif #include "suffix.h" using namespace LAMMPS_NS; using namespace FixConst; #ifdef __INTEL_OFFLOAD #ifndef _LMP_INTEL_OFFLOAD #warning "Not building Intel package with Xeon Phi offload support." #endif #endif enum{NSQ,BIN,MULTI}; /* ---------------------------------------------------------------------- */ FixIntel::FixIntel(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg < 4) error->all(FLERR,"Illegal package intel command"); int ncops = force->inumeric(FLERR,arg[3]); _precision_mode = PREC_MODE_MIXED; _offload_balance = 1.0; _overflow_flag[LMP_OVERFLOW] = 0; _off_overflow_flag[LMP_OVERFLOW] = 0; _offload_affinity_balanced = 0; _offload_threads = 0; _offload_tpc = 4; #ifdef _LMP_INTEL_OFFLOAD if (ncops < 0) error->all(FLERR,"Illegal package intel command"); _offload_affinity_set = 0; _off_force_array_s = 0; _off_force_array_m = 0; _off_force_array_d = 0; _off_ev_array_s = 0; _off_ev_array_d = 0; _balance_fixed = 0.0; _cop = 0; #endif // optional keywords int nomp = 0, no_affinity = 0; _allow_separate_buffers = 1; _offload_ghost = -1; int iarg = 4; while (iarg < narg) { if (strcmp(arg[iarg],"omp") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal package intel command"); nomp = force->inumeric(FLERR,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"mode") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal package intel command"); if (strcmp(arg[iarg+1],"single") == 0) _precision_mode = PREC_MODE_SINGLE; else if (strcmp(arg[iarg+1],"mixed") == 0) _precision_mode = PREC_MODE_MIXED; else if (strcmp(arg[iarg+1],"double") == 0) _precision_mode = PREC_MODE_DOUBLE; else error->all(FLERR,"Illegal package intel command"); iarg += 2; } else if (strcmp(arg[iarg],"balance") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal package intel command"); _offload_balance = force->numeric(FLERR,arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg], "ghost") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal package intel command"); if (strcmp(arg[iarg+1],"yes") == 0) _offload_ghost = 1; else if (strcmp(arg[iarg+1],"no") == 0) _offload_ghost = 0; else error->all(FLERR,"Illegal package intel command"); iarg += 2; } else if (strcmp(arg[iarg], "tpc") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal package intel command"); _offload_tpc = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"tptask") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal package intel command"); _offload_threads = atoi(arg[iarg+1]); iarg += 2; } else if (strcmp(arg[iarg],"no_affinity") == 0) { no_affinity = 1; iarg++; } // undocumented options else if (strcmp(arg[iarg],"offload_affinity_balanced") == 0) { _offload_affinity_balanced = 1; iarg++; } else if (strcmp(arg[iarg],"buffers") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal package intel command"); _allow_separate_buffers = atoi(arg[iarg+1]); iarg += 2; } else error->all(FLERR,"Illegal package intel command"); } // if ncops is zero, just run on the cpu if (ncops < 1) { ncops = -1; _offload_balance = 0.0; } // error check if (_offload_balance > 1.0 || _offload_threads < 0 || _offload_tpc <= 0 || _offload_tpc > 4 || nomp < 0) error->all(FLERR,"Illegal package intel command"); #ifdef _LMP_INTEL_OFFLOAD _ncops = ncops; if (_offload_balance != 0.0) { _real_space_comm = MPI_COMM_WORLD; if (no_affinity == 0) if (set_host_affinity(nomp) != 0) error->all(FLERR,"Could not set host affinity for offload tasks"); } int max_offload_threads = 0, offload_cores = 0; if (_offload_balance != 0.0) { #pragma offload target(mic:_cop) mandatory \ out(max_offload_threads,offload_cores) { offload_cores = omp_get_num_procs(); omp_set_num_threads(offload_cores); max_offload_threads = omp_get_max_threads(); } _max_offload_threads = max_offload_threads; _offload_cores = offload_cores; if (_offload_threads == 0) _offload_threads = offload_cores; } #endif // set OpenMP threads // nomp is user setting, default = 0 #if defined(_OPENMP) + #if defined(__INTEL_COMPILER) + kmp_set_blocktime(0); + #endif if (nomp != 0) { omp_set_num_threads(nomp); comm->nthreads = nomp; } else { int nthreads; #pragma omp parallel default(none) shared(nthreads) nthreads = omp_get_num_threads(); comm->nthreads = nthreads; } #endif // set offload params #ifdef _LMP_INTEL_OFFLOAD if (_offload_balance < 0.0) { _balance_neighbor = 0.9; _balance_pair = 0.9; } else { _balance_neighbor = _offload_balance; _balance_pair = _offload_balance; } _tscreen = screen; zero_timers(); _setup_time_cleared = false; _timers_allocated = false; #else _offload_balance = 0.0; #endif // set precision if (_precision_mode == PREC_MODE_SINGLE) _single_buffers = new IntelBuffers<float,float>(lmp); else if (_precision_mode == PREC_MODE_MIXED) _mixed_buffers = new IntelBuffers<float,double>(lmp); else _double_buffers = new IntelBuffers<double,double>(lmp); } /* ---------------------------------------------------------------------- */ FixIntel::~FixIntel() { #ifdef _LMP_INTEL_OFFLOAD output_timing_data(); if (_timers_allocated) { double *time1 = off_watch_pair(); double *time2 = off_watch_neighbor(); int *overflow = get_off_overflow_flag(); if (_offload_balance != 0.0 && time1 != NULL && time2 != NULL && overflow != NULL) { #pragma offload_transfer target(mic:_cop) \ nocopy(time1,time2,overflow:alloc_if(0) free_if(1)) } } #endif if (_precision_mode == PREC_MODE_SINGLE) delete _single_buffers; else if (_precision_mode == PREC_MODE_MIXED) delete _mixed_buffers; else delete _double_buffers; } /* ---------------------------------------------------------------------- */ int FixIntel::setmask() { int mask = 0; return mask; } /* ---------------------------------------------------------------------- */ void FixIntel::init() { #ifdef _LMP_INTEL_OFFLOAD output_timing_data(); #endif int nstyles = 0; if (force->pair_match("hybrid", 1) != NULL) { PairHybrid *hybrid = (PairHybrid *) force->pair; for (int i = 0; i < hybrid->nstyles; i++) if (strstr(hybrid->keywords[i], "/intel") != NULL) nstyles++; } else if (force->pair_match("hybrid/overlay", 1) != NULL) { PairHybridOverlay *hybrid = (PairHybridOverlay *) force->pair; for (int i = 0; i < hybrid->nstyles; i++) if (strstr(hybrid->keywords[i], "/intel") != NULL) nstyles++; else force->pair->no_virial_fdotr_compute = 1; } if (nstyles > 1) error->all(FLERR, "Currently, cannot use more than one intel style with hybrid."); neighbor->fix_intel = (void *)this; check_neighbor_intel(); if (_precision_mode == PREC_MODE_SINGLE) _single_buffers->zero_ev(); else if (_precision_mode == PREC_MODE_MIXED) _mixed_buffers->zero_ev(); else _double_buffers->zero_ev(); } /* ---------------------------------------------------------------------- */ void FixIntel::setup(int vflag) { if (neighbor->style != BIN) error->all(FLERR, "Currently, neighbor style BIN must be used with Intel package."); if (neighbor->exclude_setting() != 0) error->all(FLERR, "Currently, cannot use neigh_modify exclude with Intel package."); } /* ---------------------------------------------------------------------- */ void FixIntel::pair_init_check() { #ifdef INTEL_VMASK atom->sortfreq = 1; #endif #ifdef _LMP_INTEL_OFFLOAD if (_offload_balance != 0.0) atom->sortfreq = 1; if (force->newton_pair == 0) _offload_noghost = 0; else if (_offload_ghost == 0) _offload_noghost = 1; set_offload_affinity(); if (!_timers_allocated) { double *time1 = off_watch_pair(); double *time2 = off_watch_neighbor(); int *overflow = get_off_overflow_flag(); if (_offload_balance !=0.0 && time1 != NULL && time2 != NULL && overflow != NULL) { #pragma offload_transfer target(mic:_cop) \ nocopy(time1,time2:length(1) alloc_if(1) free_if(0)) \ in(overflow:length(5) alloc_if(1) free_if(0)) } _timers_allocated = true; } if (update->whichflag == 2 && _offload_balance != 0.0) { if (_offload_balance == 1.0 && _offload_noghost == 0) _sync_at_pair = 1; else _sync_at_pair = 2; } else { _sync_at_pair = 0; if (strstr(update->integrate_style,"intel") == 0) error->all(FLERR, "Specified run_style does not support the Intel package."); } #endif _nthreads = comm->nthreads; if (_offload_balance != 0.0 && comm->me == 0) { #ifndef __INTEL_COMPILER_BUILD_DATE error->warning(FLERR, "Unknown Intel Compiler Version\n"); #else if (__INTEL_COMPILER_BUILD_DATE != 20131008 && __INTEL_COMPILER_BUILD_DATE < 20141023) error->warning(FLERR, "Unsupported Intel Compiler."); #endif #if !defined(__INTEL_COMPILER) error->warning(FLERR, "Unsupported Intel Compiler."); #endif } int need_tag = 0; if (atom->molecular) need_tag = 1; // Clear buffers used for pair style char kmode[80]; if (_precision_mode == PREC_MODE_SINGLE) { strcpy(kmode, "single"); get_single_buffers()->free_all_nbor_buffers(); get_single_buffers()->need_tag(need_tag); } else if (_precision_mode == PREC_MODE_MIXED) { strcpy(kmode, "mixed"); get_mixed_buffers()->free_all_nbor_buffers(); get_mixed_buffers()->need_tag(need_tag); } else { strcpy(kmode, "double"); get_double_buffers()->free_all_nbor_buffers(); get_double_buffers()->need_tag(need_tag); } #ifdef _LMP_INTEL_OFFLOAD set_offload_affinity(); #endif if (comm->me == 0) { if (screen) { fprintf(screen, "----------------------------------------------------------\n"); if (_offload_balance != 0.0) { fprintf(screen,"Using Intel Coprocessor with %d threads per core, ", _offload_tpc); fprintf(screen,"%d threads per task\n",_offload_threads); } else { fprintf(screen,"Using Intel Package without Coprocessor.\n"); } fprintf(screen,"Precision: %s\n",kmode); fprintf(screen, "----------------------------------------------------------\n"); } } } /* ---------------------------------------------------------------------- */ void FixIntel::check_neighbor_intel() { #ifdef _LMP_INTEL_OFFLOAD _full_host_list = 0; #endif const int nrequest = neighbor->nrequest; for (int i = 0; i < nrequest; ++i) { #ifdef _LMP_INTEL_OFFLOAD if (_offload_balance != 0.0 && neighbor->requests[i]->intel == 0) { _full_host_list = 1; _offload_noghost = 0; } #endif if (neighbor->requests[i]->skip) error->all(FLERR, "Cannot yet use hybrid styles with Intel package."); } } /* ---------------------------------------------------------------------- */ void FixIntel::sync_coprocessor() { #ifdef _LMP_INTEL_OFFLOAD if (_offload_balance != 0.0) { if (_off_force_array_m != 0) { add_off_results(_off_force_array_m, _off_ev_array_d); _off_force_array_m = 0; } else if (_off_force_array_d != 0) { add_off_results(_off_force_array_d, _off_ev_array_d); _off_force_array_d = 0; } else if (_off_force_array_s != 0) { add_off_results(_off_force_array_s, _off_ev_array_s); _off_force_array_s = 0; } } #endif } /* ---------------------------------------------------------------------- */ double FixIntel::memory_usage() { double bytes; if (_precision_mode == PREC_MODE_SINGLE) bytes = _single_buffers->memory_usage(_nthreads); else if (_precision_mode == PREC_MODE_MIXED) bytes = _mixed_buffers->memory_usage(_nthreads); else bytes = _double_buffers->memory_usage(_nthreads); return bytes; } /* ---------------------------------------------------------------------- */ #ifdef _LMP_INTEL_OFFLOAD void FixIntel::output_timing_data() { if (_im_real_space_task == 0 || _offload_affinity_set == 0) return; double timer_total = 0.0; int size, rank; double timers[NUM_ITIMERS]; MPI_Comm_size(_real_space_comm, &size); MPI_Comm_rank(_real_space_comm, &rank); MPI_Allreduce(&_timers, &timers, NUM_ITIMERS, MPI_DOUBLE, MPI_SUM, _real_space_comm); for (int i=0; i < NUM_ITIMERS; i++) { timers[i] /= size; timer_total += timers[i]; } #ifdef TIME_BALANCE double timers_min[NUM_ITIMERS], timers_max[NUM_ITIMERS]; MPI_Allreduce(&_timers, &timers_max, NUM_ITIMERS, MPI_DOUBLE, MPI_MAX, _real_space_comm); MPI_Allreduce(&_timers, &timers_min, NUM_ITIMERS, MPI_DOUBLE, MPI_MIN, _real_space_comm); #endif if (timer_total > 0.0) { double balance_out[2], balance_in[2]; balance_out[0] = _balance_pair; balance_out[1] = _balance_neighbor; MPI_Reduce(balance_out, balance_in, 2, MPI_DOUBLE, MPI_SUM, 0, _real_space_comm); balance_in[0] /= size; balance_in[1] /= size; if (rank == 0 && _tscreen) { fprintf(_tscreen, "\n------------------------------------------------\n"); fprintf(_tscreen, " Offload Timing Data\n"); fprintf(_tscreen, "------------------------------------------------\n"); fprintf(_tscreen, " Data Pack/Cast Seconds %f\n", timers[TIME_PACK]); if (_offload_balance != 0.0) { fprintf(_tscreen, " Host Neighbor Seconds %f\n", timers[TIME_HOST_NEIGHBOR]); fprintf(_tscreen, " Host Pair Seconds %f\n", timers[TIME_HOST_PAIR]); fprintf(_tscreen, " Offload Neighbor Seconds %f\n", timers[TIME_OFFLOAD_NEIGHBOR]); fprintf(_tscreen, " Offload Pair Seconds %f\n", timers[TIME_OFFLOAD_PAIR]); fprintf(_tscreen, " Offload Wait Seconds %f\n", timers[TIME_OFFLOAD_WAIT]); fprintf(_tscreen, " Offload Latency Seconds %f\n", timers[TIME_OFFLOAD_LATENCY]); fprintf(_tscreen, " Offload Neighbor Balance %f\n", balance_in[1]); fprintf(_tscreen, " Offload Pair Balance %f\n", balance_in[0]); fprintf(_tscreen, " Offload Ghost Atoms "); if (_offload_noghost) fprintf(_tscreen,"No\n"); else fprintf(_tscreen,"Yes\n"); #ifdef TIME_BALANCE fprintf(_tscreen, " Offload Imbalance Seconds %f\n", timers[TIME_IMBALANCE]); fprintf(_tscreen, " Offload Min/Max Seconds "); for (int i = 0; i < NUM_ITIMERS; i++) fprintf(_tscreen, "[%f, %f] ",timers_min[i],timers_max[i]); fprintf(_tscreen, "\n"); #endif double ht = timers[TIME_HOST_NEIGHBOR] + timers[TIME_HOST_PAIR] + timers[TIME_OFFLOAD_WAIT]; double ct = timers[TIME_OFFLOAD_NEIGHBOR] + timers[TIME_OFFLOAD_PAIR]; double tt = MAX(ht,ct); if (timers[TIME_OFFLOAD_LATENCY] / tt > 0.07 && _separate_coi == 0) error->warning(FLERR, "Leaving a core free can improve performance for offload"); } fprintf(_tscreen, "------------------------------------------------\n"); } zero_timers(); _setup_time_cleared = false; } } /* ---------------------------------------------------------------------- */ int FixIntel::get_ppn(int &node_rank) { int nprocs; int rank; MPI_Comm_size(_real_space_comm, &nprocs); MPI_Comm_rank(_real_space_comm, &rank); int name_length; char node_name[MPI_MAX_PROCESSOR_NAME]; MPI_Get_processor_name(node_name,&name_length); node_name[name_length] = '\0'; char *node_names = new char[MPI_MAX_PROCESSOR_NAME*nprocs]; MPI_Allgather(node_name, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, node_names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, _real_space_comm); int ppn = 0; node_rank = 0; for (int i = 0; i < nprocs; i++) { if (strcmp(node_name, node_names + i * MPI_MAX_PROCESSOR_NAME) == 0) { ppn++; if (i < rank) node_rank++; } } return ppn; } /* ---------------------------------------------------------------------- */ void FixIntel::set_offload_affinity() { _separate_buffers = 0; if (_allow_separate_buffers) if (_offload_balance != 0.0 && _offload_balance < 1.0) _separate_buffers = 1; _im_real_space_task = 1; if (strncmp(update->integrate_style,"verlet/split",12) == 0) { _real_space_comm = world; if (universe->iworld != 0) { _im_real_space_task = 0; return; } } else _real_space_comm = universe->uworld; if (_offload_balance == 0.0) _cop = -1; if (_offload_balance == 0.0 || _offload_affinity_set == 1) return; _offload_affinity_set = 1; int node_rank; int ppn = get_ppn(node_rank); if (ppn % _ncops != 0) error->all(FLERR, "MPI tasks per node must be multiple of offload_cards"); ppn = ppn / _ncops; _cop = node_rank / ppn; node_rank = node_rank % ppn; int max_threads_per_task = _offload_cores / 4 * _offload_tpc / ppn; if (_offload_threads > max_threads_per_task) _offload_threads = max_threads_per_task; if (_offload_threads > _max_offload_threads) _offload_threads = _max_offload_threads; int offload_threads = _offload_threads; int offload_tpc = _offload_tpc; int offload_affinity_balanced = _offload_affinity_balanced; #pragma offload target(mic:_cop) mandatory \ in(node_rank,offload_threads,offload_tpc,offload_affinity_balanced) { omp_set_num_threads(offload_threads); #pragma omp parallel { int tnum = omp_get_thread_num(); kmp_affinity_mask_t mask; kmp_create_affinity_mask(&mask); int proc; if (offload_affinity_balanced) { proc = offload_threads * node_rank + tnum; proc = proc * 4 - (proc / 60) * 240 + proc / 60 + 1; } else { proc = offload_threads * node_rank + tnum; proc += (proc / 4) * (4 - offload_tpc) + 1; } kmp_set_affinity_mask_proc(proc, &mask); if (kmp_set_affinity(&mask) != 0) printf("Could not set affinity on rank %d thread %d to %d\n", node_rank, tnum, proc); } } if (_precision_mode == PREC_MODE_SINGLE) _single_buffers->set_off_params(offload_threads, _cop, _separate_buffers); else if (_precision_mode == PREC_MODE_MIXED) _mixed_buffers->set_off_params(offload_threads, _cop, _separate_buffers); else _double_buffers->set_off_params(offload_threads, _cop, _separate_buffers); } /* ---------------------------------------------------------------------- */ int FixIntel::set_host_affinity(const int nomp) { #ifndef INTEL_OFFLOAD_NOAFFINITY _separate_coi = 1; int rank = comm->me; int node_rank; int ppn = get_ppn(node_rank); int cop = node_rank / (ppn / _ncops); // Get a sorted list of logical cores int proc_list[INTEL_MAX_HOST_CORE_COUNT]; int ncores; FILE *p; char cmd[512]; char readbuf[INTEL_MAX_HOST_CORE_COUNT*5]; sprintf(cmd, "lscpu -p=cpu,core,socket | grep -v '#' |" "sort -t, -k 3,3n -k 2,2n | awk -F, '{print $1}'"); p = popen(cmd, "r"); if (p == NULL) return -1; ncores = 0; while(fgets(readbuf, 512, p)) { proc_list[ncores] = atoi(readbuf); ncores++; } pclose(p); // Sanity checks for core list if (ncores < 2) return -1; int nzero = 0; for (int i = 0; i < ncores; i++) { if (proc_list[i] == 0) nzero++; if (proc_list[i] < 0 || proc_list[i] >= ncores) return -1; } if (nzero > 1) return -1; // Determine the OpenMP/MPI configuration char *estring; int nthreads = nomp; if (nthreads == 0) { estring = getenv("OMP_NUM_THREADS"); if (estring != NULL) { nthreads = atoi(estring); if (nthreads < 2) nthreads = 1; } else nthreads = 1; } // Determine how many logical cores for COI and MPI tasks int coi_cores = 0, mpi_cores; int subscription = nthreads * ppn; if (subscription > ncores) { if (rank == 0) error->warning(FLERR, "More MPI tasks/OpenMP threads than available cores"); return 0; } if (subscription == ncores) _separate_coi = 0; if (subscription > ncores / 2) { coi_cores = ncores - subscription; if (coi_cores > INTEL_MAX_COI_CORES) coi_cores = INTEL_MAX_COI_CORES; } mpi_cores = (ncores - coi_cores) / ppn; // Get ids of all LWPs that COI spawned and affinitize int lwp = 0, plwp = 0, nlwp = 0, mlwp = 0, fail = 0; cpu_set_t cpuset; pid_t pid = getpid(); if (coi_cores) { sprintf(cmd, "ps -Lp %d -o lwp | awk ' (NR > 2) {print}'", pid); p = popen(cmd, "r"); if (p == NULL) return -1; while(fgets(readbuf, 512, p)) { lwp = atoi(readbuf); int first = coi_cores + node_rank * mpi_cores; CPU_ZERO(&cpuset); for (int i = first; i < first + mpi_cores; i++) CPU_SET(proc_list[i], &cpuset); if (sched_setaffinity(lwp, sizeof(cpu_set_t), &cpuset)) { fail = 1; break; } plwp++; } pclose(p); // Do async offload to create COI threads int sig1, sig2; float *buf1; int pragma_size = 1024; buf1 = (float*) malloc(sizeof(float)*pragma_size); #pragma offload target (mic:0) mandatory \ in(buf1:length(pragma_size) alloc_if(1) free_if(0)) \ signal(&sig1) { buf1[0] = 0.0; } #pragma offload_wait target(mic:0) wait(&sig1) #pragma offload target (mic:0) mandatory \ out(buf1:length(pragma_size) alloc_if(0) free_if(1)) \ signal(&sig2) { buf1[0] = 1.0; } #pragma offload_wait target(mic:0) wait(&sig2) free(buf1); p = popen(cmd, "r"); if (p == NULL) return -1; while(fgets(readbuf, 512, p)) { lwp = atoi(readbuf); nlwp++; if (nlwp <= plwp) continue; CPU_ZERO(&cpuset); for(int i=0; i<coi_cores; i++) CPU_SET(proc_list[i], &cpuset); if (sched_setaffinity(lwp, sizeof(cpu_set_t), &cpuset)) { fail = 1; break; } } pclose(p); nlwp -= plwp; // Get stats on the number of LWPs per process MPI_Reduce(&nlwp, &mlwp, 1, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD); } if (screen && rank == 0) { if (coi_cores) fprintf(screen,"Intel Package: Affinitizing %d Offload Threads to %d Cores\n", mlwp, coi_cores); fprintf(screen,"Intel Package: Affinitizing MPI Tasks to %d Cores Each\n",mpi_cores); } if (fail) return -1; // Affinitize MPI Ranks CPU_ZERO(&cpuset); int first = coi_cores + node_rank * mpi_cores; for (int i = first; i < first+mpi_cores; i++) CPU_SET(proc_list[i], &cpuset); if (sched_setaffinity(pid, sizeof(cpu_set_t), &cpuset)) return -1; #endif return 0; } #endif diff --git a/src/USER-MISC/README b/src/USER-MISC/README index a4b13967b..c8ca571b4 100644 --- a/src/USER-MISC/README +++ b/src/USER-MISC/README @@ -1,61 +1,61 @@ The files in this package are a potpourri of (mostly) unrelated features contributed to LAMMPS by users. Each feature is a single pair of files (*.cpp and *.h). More information about each feature can be found by reading its doc page in the LAMMPS doc directory. The doc page which lists all LAMMPS input script commands is as follows: doc/Section_commands.html, subsection 3.5 User-contributed features are listed at the bottom of the fix, compute, pair, etc sections. The list of features and author of each is given below. You should contact the author directly if you have specific questions about the feature or its coding. ------------------------------------------------------------ angle_style cosine/shift, Carsten Svaneborg, science at zqex.dk, 8 Aug 11 angle_style cosine/shift/exp, Carsten Svaneborg, science at zqex.dk, 8 Aug 11 angle_style fourier, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12 angle_style fourier/simple, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12 angle_style dipole, Mario Orsi, orsimario at gmail.com, 10 Jan 12 angle_style quartic, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12 bond_style harmonic/shift, Carsten Svaneborg, science at zqex.dk, 8 Aug 11 bond_style harmonic/shift/cut, Carsten Svaneborg, science at zqex.dk, 8 Aug 11 compute ackland/atom, Gerolf Ziegenhain, gerolf at ziegenhain.com, 4 Oct 2007 compute basal/atom, Christopher Barrett, cdb333 at cavs.msstate.edu, 3 Mar 2013 compute temp/rotate, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11 dihedral_style cosine/shift/exp, Carsten Svaneborg, science at zqex.dk, 8 Aug 11 dihedral_style fourier, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12 dihedral_style nharmonic, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12 dihedral_style quadratic, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12 dihedral_style table, Andrew Jewett, jewett.aij@gmail.com, 10 Jan 12 fix addtorque, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11 fix ave/spatial/sphere, Niall Jackson (Imperial College), niall.jackson at gmail.com, 18 Nov 14 -fix correlator, Jorge Ramirez (UPM Madrid), jorge.ramirez at upm.es, 28 Sep 2015 +fix ave/correlate/long, Jorge Ramirez (UPM Madrid), jorge.ramirez at upm.es, 21 Oct 2015 fix gle, Michele Ceriotti (EPFL Lausanne), michele.ceriotti at gmail.com, 24 Nov 2014 fix imd, Axel Kohlmeyer, akohlmey at gmail.com, 9 Nov 2009 fix ipi, Michele Ceriotti (EPFL Lausanne), michele.ceriotti at gmail.com, 24 Nov 2014 fix pimd, Yuxing Peng (U Chicago), yuxing at uchicago.edu, 24 Nov 2014 fix smd, Axel Kohlmeyer, akohlmey at gmail.com, 19 May 2008 fix ti/rs, Rodrigo Freitas (Unicamp/Brazil), rodrigohb at gmail.com, 7 Nov 2013 fix ti/spring, Rodrigo Freitas (Unicamp/Brazil), rodrigohb at gmail.com, 7 Nov 2013 fix ttm/mod, Sergey Starikov and Vasily Pisarev (JIHT), pisarevvv at gmail.com, 2 Feb 2015 improper_style cossq, Georgios Vogiatzis, gvog at chemeng.ntua.gr, 25 May 12 improper_style fourier, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12 improper_style ring, Georgios Vogiatzis, gvog at chemeng.ntua.gr, 25 May 12 pair_style coul/diel, Axel Kohlmeyer, akohlmey at gmail.com, 1 Dec 11 pair_style dipole/sf, Mario Orsi, orsimario at gmail.com, 8 Aug 11 pair_style edip, Luca Ferraro, luca.ferraro at caspur.it, 15 Sep 11 pair_style eam/cd, Alexander Stukowski, stukowski at mm.tu-darmstadt.de, 7 Nov 09 pair_style gauss/cut, Axel Kohlmeyer, akohlmey at gmail.com, 1 Dec 11 pair_style list, Axel Kohlmeyer (Temple U), akohlmey at gmail.com, 1 Jun 13 pair_style lj/sf, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11 pair_style meam/spline, Alexander Stukowski (LLNL), alex at stukowski.com, 1 Feb 12 pair_style meam/sw/spline, Robert Rudd (LLNL), robert.rudd at llnl.gov, 1 Oct 12 pair_style srp, Tim Sirk, tim.sirk at us.army.mil, 21 Nov 14 pair_style tersoff/table, Luca Ferraro, luca.ferraro@caspur.it, 1 Dec 11 diff --git a/src/USER-MISC/fix_ave_correlate_long.cpp b/src/USER-MISC/fix_ave_correlate_long.cpp new file mode 100644 index 000000000..03fdd1367 --- /dev/null +++ b/src/USER-MISC/fix_ave_correlate_long.cpp @@ -0,0 +1,785 @@ +/* ---------------------------------------------------------------------- + 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: + Jorge Ramirez (jorge.ramirez@upm.es, Universidad Politecnica de Madrid), + Alexei Likhtman (University of Reading) + Structure and syntax of fix inspired by fix_ave_correlate + Scalar Correlator f(tau)=<A(t)A(t+tau)> and + Cross-correlator f(tau)=<A(t)B(t+tau)> + see J. Chem. Phys. 133, 154103 (2010) +------------------------------------------------------------------------- */ + +#include "math.h" +#include "stdlib.h" +#include "string.h" +#include "unistd.h" +#include "fix_ave_correlate_long.h" +#include "update.h" +#include "modify.h" +#include "compute.h" +#include "input.h" +#include "variable.h" +#include "memory.h" +#include "error.h" +#include "force.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +enum{COMPUTE,FIX,VARIABLE}; +enum{AUTO,UPPER,LOWER,AUTOUPPER,AUTOLOWER,FULL}; + +#define INVOKED_SCALAR 1 +#define INVOKED_VECTOR 2 +#define INVOKED_ARRAY 4 + +/* ---------------------------------------------------------------------- */ + +FixAveCorrelateLong::FixAveCorrelateLong(LAMMPS * lmp, int narg, char **arg): + Fix (lmp, narg, arg) +{ + // At least nevery nfrez and one value are needed + if (narg < 6) error->all(FLERR,"Illegal fix ave/correlate/long command"); + + MPI_Comm_rank(world,&me); + + nevery = force->inumeric(FLERR,arg[3]); + nfreq = force->inumeric(FLERR,arg[4]); + + restart_global = 1; + global_freq = nfreq; + + // parse values until one isn't recognized + + which = new int[narg-5]; + argindex = new int[narg-5]; + ids = new char*[narg-5]; + value2index = new int[narg-5]; + nvalues = 0; + + int iarg = 5; + while (iarg < narg) { + if (strncmp(arg[iarg],"c_",2) == 0 || + strncmp(arg[iarg],"f_",2) == 0 || + strncmp(arg[iarg],"v_",2) == 0) { + if (arg[iarg][0] == 'c') which[nvalues] = COMPUTE; + else if (arg[iarg][0] == 'f') which[nvalues] = FIX; + else if (arg[iarg][0] == 'v') which[nvalues] = VARIABLE; + + int n = strlen(arg[iarg]); + char *suffix = new char[n]; + strcpy(suffix,&arg[iarg][2]); + + char *ptr = strchr(suffix,'['); + if (ptr) { + if (suffix[strlen(suffix)-1] != ']') + error->all(FLERR,"Illegal fix ave/correlate/long command"); + argindex[nvalues] = atoi(ptr+1); + *ptr = '\0'; + } else argindex[nvalues] = 0; + + n = strlen(suffix) + 1; + ids[nvalues] = new char[n]; + strcpy(ids[nvalues],suffix); + delete [] suffix; + + nvalues++; + iarg++; + } else break; + } + + // optional args + + type = AUTO; + startstep = 0; + fp = NULL; + overwrite = 0; + numcorrelators=20; + p = 16; + m = 2; + char *title1 = NULL; + char *title2 = NULL; + + while (iarg < narg) { + if (strcmp(arg[iarg],"type") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal fix ave/correlate/long command"); + if (strcmp(arg[iarg+1],"auto") == 0) type = AUTO; + else if (strcmp(arg[iarg+1],"upper") == 0) type = UPPER; + else if (strcmp(arg[iarg+1],"lower") == 0) type = LOWER; + else if (strcmp(arg[iarg+1],"auto/upper") == 0) type = AUTOUPPER; + else if (strcmp(arg[iarg+1],"auto/lower") == 0) type = AUTOLOWER; + else if (strcmp(arg[iarg+1],"full") == 0) type = FULL; + else error->all(FLERR,"Illegal fix ave/correlate/long command"); + iarg += 2; + } else if (strcmp(arg[iarg],"start") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal fix ave/correlate/long command"); + startstep = force->inumeric(FLERR,arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"ncorr") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal fix ave/correlate/long command"); + numcorrelators = force->inumeric(FLERR,arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"nlen") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal fix ave/correlate/long command"); + p = force->inumeric(FLERR,arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"ncount") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal fix ave/correlate/long command"); + m = force->inumeric(FLERR,arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"file") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal fix ave/correlate/long command"); + if (me == 0) { + fp = fopen(arg[iarg+1],"w"); + if (fp == NULL) { + char str[128]; + sprintf(str,"Cannot open fix ave/correlate/long file %s",arg[iarg+1]); + error->one(FLERR,str); + } + } + iarg += 2; + } else if (strcmp(arg[iarg],"overwrite") == 0) { + overwrite = 1; + iarg += 1; + } else if (strcmp(arg[iarg],"title1") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal fix ave/correlate/long command"); + delete [] title1; + int n = strlen(arg[iarg+1]) + 1; + title1 = new char[n]; + strcpy(title1,arg[iarg+1]); + iarg += 2; + } else if (strcmp(arg[iarg],"title2") == 0) { + if (iarg+2 > narg) + error->all(FLERR,"Illegal fix ave/correlate/long command"); + delete [] title2; + int n = strlen(arg[iarg+1]) + 1; + title2 = new char[n]; + strcpy(title2,arg[iarg+1]); + iarg += 2; + } else error->all(FLERR,"Illegal fix ave/correlate/long command"); + } + + if (p % m != 0) error->all(FLERR,"fix_correlator: p mod m must be 0"); + dmin = p/m; + length = numcorrelators*p; + npcorr = 0; + kmax = 0; + + // setup and error check + // for fix inputs, check that fix frequency is acceptable + + if (nevery <= 0 || nfreq <= 0) + error->all(FLERR,"Illegal fix ave/correlate/long command"); + if (nfreq % nevery) + error->all(FLERR,"Illegal fix ave/correlate/long command"); + + for (int i = 0; i < nvalues; i++) { + if (which[i] == COMPUTE) { + int icompute = modify->find_compute(ids[i]); + if (icompute < 0) + error->all(FLERR,"Compute ID for fix ave/correlate/long does not exist"); + if (argindex[i] == 0 && modify->compute[icompute]->scalar_flag == 0) + error->all(FLERR, + "Fix ave/correlate/long compute does not calculate a scalar"); + if (argindex[i] && modify->compute[icompute]->vector_flag == 0) + error->all(FLERR, + "Fix ave/correlate/long compute does not calculate a vector"); + if (argindex[i] && argindex[i] > modify->compute[icompute]->size_vector) + error->all(FLERR,"Fix ave/correlate/long compute vector " + "is accessed out-of-range"); + + } else if (which[i] == FIX) { + int ifix = modify->find_fix(ids[i]); + if (ifix < 0) + error->all(FLERR,"Fix ID for fix ave/correlate/long does not exist"); + if (argindex[i] == 0 && modify->fix[ifix]->scalar_flag == 0) + error->all(FLERR,"Fix ave/correlate/long fix does not calculate a scalar"); + if (argindex[i] && modify->fix[ifix]->vector_flag == 0) + error->all(FLERR,"Fix ave/correlate/long fix does not calculate a vector"); + if (argindex[i] && argindex[i] > modify->fix[ifix]->size_vector) + error->all(FLERR, + "Fix ave/correlate/long fix vector is accessed out-of-range"); + if (nevery % modify->fix[ifix]->global_freq) + error->all(FLERR,"Fix for fix ave/correlate/long " + "not computed at compatible time"); + + } else if (which[i] == VARIABLE) { + int ivariable = input->variable->find(ids[i]); + if (ivariable < 0) + error->all(FLERR,"Variable name for fix ave/correlate/long does not exist"); + if (input->variable->equalstyle(ivariable) == 0) + error->all(FLERR, + "Fix ave/correlate/long variable is not equal-style variable"); + } + } + + // npair = # of correlation pairs to calculate + if (type == AUTO) npair = nvalues; + if (type == UPPER || type == LOWER) npair = nvalues*(nvalues-1)/2; + if (type == AUTOUPPER || type == AUTOLOWER) npair = nvalues*(nvalues+1)/2; + if (type == FULL) npair = nvalues*nvalues; + + // print file comment lines + if (fp && me == 0) { + if (title1) fprintf(fp,"%s\n",title1); + else fprintf(fp,"# Time-correlated data for fix %s\n",id); + if (title2) fprintf(fp,"%s\n",title2); + else { + fprintf(fp,"# Time"); + if (type == AUTO) + for (int i = 0; i < nvalues; i++) + fprintf(fp," %s*%s",arg[5+i],arg[5+i]); + else if (type == UPPER) + for (int i = 0; i < nvalues; i++) + for (int j = i+1; j < nvalues; j++) + fprintf(fp," %s*%s",arg[5+i],arg[5+j]); + else if (type == LOWER) + for (int i = 0; i < nvalues; i++) + for (int j = 0; j < i-1; j++) + fprintf(fp," %s*%s",arg[5+i],arg[5+j]); + else if (type == AUTOUPPER) + for (int i = 0; i < nvalues; i++) + for (int j = i; j < nvalues; j++) + fprintf(fp," %s*%s",arg[5+i],arg[5+j]); + else if (type == AUTOLOWER) + for (int i = 0; i < nvalues; i++) + for (int j = 0; j < i; j++) + fprintf(fp," %s*%s",arg[5+i],arg[5+j]); + else if (type == FULL) + for (int i = 0; i < nvalues; i++) + for (int j = 0; j < nvalues; j++) + fprintf(fp," %s*%s",arg[5+i],arg[5+j]); + fprintf(fp,"\n"); + } + filepos = ftell(fp); + } + + delete [] title1; + delete [] title2; + + // allocate and initialize memory for calculated values and correlators + + memory->create(values,nvalues,"correlator:values"); + memory->create(shift,npair,numcorrelators,p,"correlator:shift"); + memory->create(shift2,npair,numcorrelators,p,"correlator:shift2"); //NOT OPTMAL + memory->create(correlation,npair,numcorrelators,p,"correlator:correlation"); + memory->create(accumulator,npair,numcorrelators,"correlator:accumulator"); + memory->create(accumulator2,npair,numcorrelators,"correlator:accumulator2"); // NOT OPTIMAL + + memory->create(ncorrelation,numcorrelators,p,"correlator:ncorrelation"); + memory->create(naccumulator,numcorrelators,"correlator:naccumulator"); + memory->create(insertindex,numcorrelators,"correlator:insertindex"); + memory->create(t,length,"correlator:t"); + memory->create(f,npair,length,"correlator:f"); + + for (int i=0;i<npair;i++) + for (int j=0;j<numcorrelators;j++) { + for (int k=0;k<p;k++) { + shift[i][j][k]=-2E10; + shift2[i][j][k]=0.0; + correlation[i][j][k]=0.0; + } + accumulator[i][j]=0.0; + accumulator2[i][j]=0.0; + } + + for (int i=0;i<numcorrelators;i++) { + for (int j=0;j<p;j++) ncorrelation[i][j]=0; + naccumulator[i]=0; + insertindex[i]=0; + } + + for (int i=0;i<length;i++) t[i]=0.0; + for (int i=0;i<npair;i++) + for (int j=0;j<length;j++) f[i][j]=0.0; + + + // nvalid = next step on which end_of_step does something + // add nvalid to all computes that store invocation times + // since don't know a priori which are invoked by this fix + // once in end_of_step() can set timestep for ones actually invoked + + nvalid_last = -1; + nvalid = nextvalid(); + modify->addstep_compute_all(nvalid); +} + +/* ---------------------------------------------------------------------- */ + +FixAveCorrelateLong::~FixAveCorrelateLong() +{ + delete [] which; + delete [] argindex; + delete [] value2index; + for (int i = 0; i < nvalues; i++) delete [] ids[i]; + delete [] ids; + + memory->destroy(values); + memory->destroy(shift); + memory->destroy(shift2); + memory->destroy(correlation); + memory->destroy(accumulator); + memory->destroy(accumulator2); + memory->destroy(ncorrelation); + memory->destroy(naccumulator); + memory->destroy(insertindex); + memory->destroy(t); + memory->destroy(f); + + if (fp && me == 0) fclose(fp); +} + +/* ---------------------------------------------------------------------- */ + +int FixAveCorrelateLong::setmask() +{ + int mask = 0; + mask |= END_OF_STEP; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixAveCorrelateLong::init() +{ + // set current indices for all computes,fixes,variables + + for (int i = 0; i < nvalues; i++) { + if (which[i] == COMPUTE) { + int icompute = modify->find_compute(ids[i]); + if (icompute < 0) + error->all(FLERR,"Compute ID for fix ave/correlate/long does not exist"); + value2index[i] = icompute; + + } else if (which[i] == FIX) { + int ifix = modify->find_fix(ids[i]); + if (ifix < 0) + error->all(FLERR,"Fix ID for fix ave/correlate/long does not exist"); + value2index[i] = ifix; + + } else if (which[i] == VARIABLE) { + int ivariable = input->variable->find(ids[i]); + if (ivariable < 0) + error->all(FLERR,"Variable name for fix ave/correlate/long does not exist"); + value2index[i] = ivariable; + } + } + + // need to reset nvalid if nvalid < ntimestep b/c minimize was performed + + if (nvalid < update->ntimestep) { + nvalid = nextvalid(); + modify->addstep_compute_all(nvalid); + } +} + +/* ---------------------------------------------------------------------- + only does something if nvalid = current timestep +------------------------------------------------------------------------- */ + +void FixAveCorrelateLong::setup(int vflag) +{ + end_of_step(); +} + +/* ---------------------------------------------------------------------- */ + +void FixAveCorrelateLong::end_of_step() +{ + int i,m; + double scalar; + + // skip if not step which requires doing something + // error check if timestep was reset in an invalid manner + + bigint ntimestep = update->ntimestep; + if (ntimestep < nvalid_last || ntimestep > nvalid) + error->all(FLERR,"Invalid timestep reset for fix ave/correlate/long"); + if (ntimestep != nvalid) return; + nvalid_last = nvalid; + + // accumulate results of computes,fixes,variables to origin + // compute/fix/variable may invoke computes so wrap with clear/add + + modify->clearstep_compute(); + + for (i = 0; i < nvalues; i++) { + m = value2index[i]; + + // invoke compute if not previously invoked + + if (which[i] == COMPUTE) { + Compute *compute = modify->compute[m]; + + if (argindex[i] == 0) { + if (!(compute->invoked_flag & INVOKED_SCALAR)) { + compute->compute_scalar(); + compute->invoked_flag |= INVOKED_SCALAR; + } + scalar = compute->scalar; + } else { + if (!(compute->invoked_flag & INVOKED_VECTOR)) { + compute->compute_vector(); + compute->invoked_flag |= INVOKED_VECTOR; + } + scalar = compute->vector[argindex[i]-1]; + } + + // access fix fields, guaranteed to be ready + + } else if (which[i] == FIX) { + if (argindex[i] == 0) + scalar = modify->fix[m]->compute_scalar(); + else + scalar = modify->fix[m]->compute_vector(argindex[i]-1); + + // evaluate equal-style variable + + } else if (which[i] == VARIABLE) + scalar = input->variable->compute_equal(m); + + values[i] = scalar; + } + + // fistindex = index in values ring of earliest time sample + + nvalid += nevery; + modify->addstep_compute(nvalid); + + // calculate all Cij() enabled by latest values + + accumulate(); + if (ntimestep % nfreq) return; + + // output result to file + evaluate(); + + if (fp && me == 0) { + if(overwrite) fseek(fp,filepos,SEEK_SET); + fprintf(fp,"# Timestep: " BIGINT_FORMAT "\n", ntimestep); + for (unsigned int i=0;i<npcorr;++i) { + fprintf(fp, "%lg ", t[i]*update->dt); + for (unsigned int j=0;j<npair;++j) { + fprintf(fp, "%lg ", f[j][i]); + } + fprintf(fp, "\n"); + } + fflush(fp); + if (overwrite) { + long fileend = ftell(fp); + if (fileend > 0) ftruncate(fileno(fp),fileend); + } + } + + return; + +} + +void FixAveCorrelateLong::evaluate() { + unsigned int jm=0; + + // First correlator + for (unsigned int j=0;j<p;++j) { + if (ncorrelation[0][j] > 0) { + t[jm] = j; + for (int i=0;i<npair;++i) + f[i][jm] = correlation[i][0][j]/ncorrelation[0][j]; + ++jm; + } + } + + // Subsequent correlators + for (int k=1;k<kmax;++k) { + for (int j=dmin;j<p;++j) { + if (ncorrelation[k][j]>0) { + t[jm] = j * pow((double)m, k); + for (int i=0;i<npair;++i) + f[i][jm] = correlation[i][k][j] / ncorrelation[k][j]; + ++jm; + } + } + } + + npcorr = jm; +} + + +/* ---------------------------------------------------------------------- + accumulate correlation data using more recently added values +------------------------------------------------------------------------- */ + +void FixAveCorrelateLong::accumulate() +{ + int i,j,ipair; + + //printf("DEBUG %i %i\n", nvalues, npair); + + if (type == AUTO) { + for (i=0; i<nvalues;i++) add(i,values[i]); + } else if (type == UPPER) { + ipair = 0; + for (i=0;i<nvalues;i++) + for (j=i+1;j<nvalues;j++) add(ipair++,values[i],values[j]); + } else if (type == LOWER) { + ipair = 0; + for (i=0;i<nvalues;i++) + for (j=0;j<i;j++) add(ipair++,values[i],values[j]); + } else if (type == AUTOUPPER) { + ipair = 0; + for (i=0;i<nvalues;i++) + for (j=i;j<nvalues;j++) { + if (i==j) add(ipair++,values[i]); + else add(ipair++,values[i],values[j]); + } + } else if (type == AUTOLOWER) { + ipair = 0; + for (i=0;i<nvalues;i++) + for (j=0;j<=i;j++) { + if (i==j) add(ipair++,values[i]); + else add(ipair++,values[i],values[j]); + } + } else if (type == FULL) { + ipair = 0; + for (i=0;i<nvalues;i++) + for (j=0;j<nvalues;j++) { + if (i==j) add(ipair++,values[i]); + else add(ipair++,values[i],values[j]); + } + } +} + + +/* ---------------------------------------------------------------------- + Add a scalar value to the autocorrelator k of pair i +------------------------------------------------------------------------- */ +void FixAveCorrelateLong::add(const int i, const double w, const unsigned int k){ + // If we exceed the correlator side, the value is discarded + if (k == numcorrelators) return; + if (k > kmax) kmax=k; + + // Insert new value in shift array + shift[i][k][insertindex[k]] = w; + + // Add to accumulator and, if needed, add to next correlator + accumulator[i][k] += w; + if (i==0) ++naccumulator[k]; + if (naccumulator[k]==m) { + add(i,accumulator[i][k]/m, k+1); + accumulator[i][k]=0; + if (i==npair-1) naccumulator[k]=0; + } + + // Calculate correlation function + unsigned int ind1=insertindex[k]; + if (k==0) { // First correlator is different + int ind2=ind1; + for (unsigned int j=0;j<p;++j) { + if (shift[i][k][ind2] > -1e10) { + correlation[i][k][j]+= shift[i][k][ind1]*shift[i][k][ind2]; + if (i==0) ++ncorrelation[k][j]; + } + --ind2; + if (ind2<0) ind2+=p; + } + } else { + int ind2=ind1-dmin; + for (unsigned int j=dmin;j<p;++j) { + if (ind2<0) ind2+=p; + if (shift[i][k][ind2] > -1e10) { + correlation[i][k][j]+= shift[i][k][ind1]*shift[i][k][ind2]; + if (i==0) ++ncorrelation[k][j]; + } + --ind2; + } + } + + if (i==npair-1) { + ++insertindex[k]; + if (insertindex[k]==p) insertindex[k]=0; + } +} + + +/* ---------------------------------------------------------------------- + Add 2 scalar values to the cross-correlator k of pair i +------------------------------------------------------------------------- */ +void FixAveCorrelateLong::add(const int i, const double wA, const double wB, + const unsigned int k) { + if (k == numcorrelators) return; + if (k > kmax) kmax=k; + + shift[i][k][insertindex[k]] = wA; + shift2[i][k][insertindex[k]] = wB; + + accumulator[i][k] += wA; + accumulator2[i][k] += wB; + if (i==0) ++naccumulator[k]; + if (naccumulator[k]==m) { + add(i,accumulator[i][k]/m, accumulator2[i][k]/m,k+1); + accumulator[i][k]=0; + accumulator2[i][k]=0; + if (i==npair-1) naccumulator[k]=0; + } + + unsigned int ind1=insertindex[k]; + if (k==0) { + int ind2=ind1; + for (unsigned int j=0;j<p;++j) { + if (shift[i][k][ind2] > -1e10) { + correlation[i][k][j]+= shift[i][k][ind1]*shift2[i][k][ind2]; + if (i==0) ++ncorrelation[k][j]; + } + --ind2; + if (ind2<0) ind2+=p; + } + } + else { + int ind2=ind1-dmin; + for (unsigned int j=dmin;j<p;++j) { + if (ind2<0) ind2+=p; + if (shift[i][k][ind2] > -1e10) { + correlation[i][k][j]+= shift[i][k][ind1]*shift2[i][k][ind2]; + if (i==0) ++ncorrelation[k][j]; + } + --ind2; + } + } + + if (i==npair-1) { + ++insertindex[k]; + if (insertindex[k]==p) insertindex[k]=0; + } +} + + +/* ---------------------------------------------------------------------- + nvalid = next step on which end_of_step does something + this step if multiple of nevery, else next multiple + startstep is lower bound +------------------------------------------------------------------------- */ + +bigint FixAveCorrelateLong::nextvalid() +{ + bigint nvalid = update->ntimestep; + if (startstep > nvalid) nvalid = startstep; + if (nvalid % nevery) nvalid = (nvalid/nevery)*nevery + nevery; + return nvalid; +} + + +/* ---------------------------------------------------------------------- + memory_usage +------------------------------------------------------------------------- */ +double FixAveCorrelateLong::memory_usage() { + // shift: npair x numcorrelators x p + // shift2: npair x numcorrelators x p + // correlation: npair x numcorrelators x p + // accumulator: npair x numcorrelators + // accumulator2: npair x numcorrelators + // ncorrelation: numcorrelators x p + // naccumulator: numcorrelators + // insertindex: numcorrelators + // t: numcorrelators x p + // f: npair x numcorrelators x p + double bytes = (4*npair*numcorrelators*p + 2*npair*numcorrelators + + numcorrelators*p)*sizeof(double) + + numcorrelators*p*sizeof(unsigned long int) + + 2*numcorrelators*sizeof(unsigned int); + return bytes; +} + +/* ---------------------------------------------------------------------- + Write Restart data to restart file +------------------------------------------------------------------------- */ +// Save everything except t and f +void FixAveCorrelateLong::write_restart(FILE *fp) { + if (me == 0) { + int nsize = 3*npair*numcorrelators*p + 2*npair*numcorrelators + + numcorrelators*p + 2*numcorrelators + 6; + int n=0; + double *list; + memory->create(list,nsize,"correlator:list"); + list[n++]=npair; + list[n++]=numcorrelators; + list[n++]=p; + list[n++]=m; + list[n++]=nvalid; + list[n++]=nvalid_last; + for (int i=0;i<npair;i++) + for (int j=0;j<numcorrelators;j++) { + for (int k=0;k<p;k++) { + list[n++]=shift[i][j][k]; + list[n++]=shift2[i][j][k]; + list[n++]=correlation[i][j][k]; + } + list[n++]=accumulator[i][j]; + list[n++]=accumulator2[i][j]; + } + for (int i=0;i<numcorrelators;i++) { + for (int j=0;j<p;j++) list[n++]=ncorrelation[i][j]; + list[n++]=naccumulator[i]; + list[n++]=insertindex[i]; + } + + int size = n*sizeof(double); + fwrite(&size,sizeof(int),1,fp); + fwrite(list,sizeof(double),n,fp); + memory->destroy(list); + } +} + + +/* ---------------------------------------------------------------------- + use state info from restart file to restart the Fix +------------------------------------------------------------------------- */ +void FixAveCorrelateLong::restart(char *buf) +{ + int n = 0; + double *list = (double *) buf; + int npairin = static_cast<int> (list[n++]); + int numcorrelatorsin = static_cast<int> (list[n++]); + int pin = static_cast<int> (list[n++]); + int min = static_cast<int> (list[n++]); + nvalid = static_cast<int> (list[n++]); + nvalid_last = static_cast<int> (list[n++]); + + if ((npairin!=npair) || (numcorrelatorsin!=numcorrelators) + || (pin!=p) || (min!=m)) + error->all(FLERR,"Fix ave/correlate/long: restart and input data are different"); + + for (int i=0;i<npair;i++) + for (int j=0;j<numcorrelators;j++) { + for (int k=0;k<p;k++) { + shift[i][j][k] = list[n++]; + shift2[i][j][k] = list[n++]; + correlation[i][j][k] = list[n++]; + } + accumulator[i][j] = list[n++]; + accumulator2[i][j] = list[n++]; + } + for (int i=0;i<numcorrelators;i++) { + for (int j=0;j<p;j++) + ncorrelation[i][j] = static_cast<unsigned long int>(list[n++]); + naccumulator[i] = static_cast<unsigned int> (list[n++]); + insertindex[i] = static_cast<unsigned int> (list[n++]); + } +} diff --git a/src/USER-MISC/fix_ave_correlate_long.h b/src/USER-MISC/fix_ave_correlate_long.h new file mode 100644 index 000000000..49e840e89 --- /dev/null +++ b/src/USER-MISC/fix_ave_correlate_long.h @@ -0,0 +1,152 @@ +/* -*- c++ -*- ---------------------------------------------------------- + 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(ave/correlate/long,FixAveCorrelateLong) + +#else + +#ifndef LMP_FIX_AVE_CORRELATE_LONG_H +#define LMP_FIX_AVE_CORRELATE_LONG_H + +#include "stdio.h" +#include "fix.h" + +namespace LAMMPS_NS { + +class FixAveCorrelateLong : public Fix { + public: + FixAveCorrelateLong(class LAMMPS *, int, char **); + ~FixAveCorrelateLong(); + int setmask(); + void init(); + void setup(int); + void end_of_step(); + + void write_restart(FILE *); + void restart(char *); + double memory_usage(); + + double *t; // Time steps for result arrays + double **f; // Result arrays + unsigned int npcorr; + + private: + // NOT OPTIMAL: shift2 and accumulator2 only needed in cross-correlations + double ***shift, *** shift2; + double ***correlation; + double **accumulator, **accumulator2; + unsigned long int **ncorrelation; + unsigned int *naccumulator; + unsigned int *insertindex; + + unsigned int numcorrelators; // Recommended 20 + unsigned int p; // Points per correlator (recommended 16) + unsigned int m; // Num points for average (recommended 2; p mod m = 0) + unsigned int dmin; // Min distance between ponts for correlators k>0; dmin=p/m + + unsigned int length; // Length of result arrays + unsigned int kmax; // Maximum correlator attained during simulation + + int me,nvalues; + int nfreq; + bigint nvalid,nvalid_last; + int *which,*argindex,*value2index; + char **ids; + FILE *fp; + + int type,startstep,overwrite; + long filepos; + + int npair; // number of correlation pairs to calculate + double *values; + + void accumulate(); + void evaluate(); + bigint nextvalid(); + + void add(const int i, const double w, const unsigned int k = 0); + void add(const int i, const double wA, const double wB, const unsigned int k = 0); + +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +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. + +E: Cannot open fix ave/correlate/long file %s + +The specified file cannot be opened. Check that the path and name are +correct. + +E: Compute ID for fix ave/correlate/long does not exist + +Self-explanatory. + +E: Fix ave/correlate/long compute does not calculate a scalar + +Self-explanatory. + +E: Fix ave/correlate/long compute does not calculate a vector + +Self-explanatory. + +E: Fix ave/correlate/long compute vector is accessed out-of-range + +The index for the vector is out of bounds. + +E: Fix ID for fix ave/correlate/long does not exist + +Self-explanatory. + +E: Fix ave/correlate/long fix does not calculate a scalar + +Self-explanatory. + +E: Fix ave/correlate/long fix does not calculate a vector + +Self-explanatory. + +E: Fix ave/correlate/long fix vector is accessed out-of-range + +The index for the vector is out of bounds. + +E: Fix for fix ave/correlate/long not computed at compatible time + +Fixes generate their values on specific timesteps. Fix ave/correlate/long +is requesting a value on a non-allowed timestep. + +E: Variable name for fix ave/correlate/long does not exist + +Self-explanatory. + +E: Fix ave/correlate/long variable is not equal-style variable + +Self-explanatory. + +E: Invalid timestep reset for fix ave/correlate/long + +Resetting the timestep has invalidated the sequence of timesteps this +fix needs to process. + +*/ diff --git a/src/compute_msd_chunk.cpp b/src/compute_msd_chunk.cpp index 08701982e..3b2730001 100644 --- a/src/compute_msd_chunk.cpp +++ b/src/compute_msd_chunk.cpp @@ -1,264 +1,265 @@ /* ---------------------------------------------------------------------- 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 "compute_msd_chunk.h" #include "atom.h" #include "update.h" #include "modify.h" #include "compute_chunk_atom.h" #include "domain.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ ComputeMSDChunk::ComputeMSDChunk(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { if (narg != 4) error->all(FLERR,"Illegal compute msd/chunk command"); array_flag = 1; size_array_cols = 4; size_array_rows = 0; size_array_rows_variable = 1; extarray = 0; // ID of compute chunk/atom int n = strlen(arg[3]) + 1; idchunk = new char[n]; strcpy(idchunk,arg[3]); init(); massproc = masstotal = NULL; com = comall = cominit = NULL; msd = NULL; firstflag = 1; } /* ---------------------------------------------------------------------- */ ComputeMSDChunk::~ComputeMSDChunk() { delete [] idchunk; memory->destroy(massproc); memory->destroy(masstotal); memory->destroy(com); memory->destroy(comall); memory->destroy(cominit); memory->destroy(msd); } /* ---------------------------------------------------------------------- */ void ComputeMSDChunk::init() { int icompute = modify->find_compute(idchunk); if (icompute < 0) error->all(FLERR,"Chunk/atom compute does not exist for compute msd/chunk"); cchunk = (ComputeChunkAtom *) modify->compute[icompute]; if (strcmp(cchunk->style,"chunk/atom") != 0) error->all(FLERR,"Compute msd/chunk does not use chunk/atom compute"); } /* ---------------------------------------------------------------------- compute initial COM for each chunk only once on timestep compute is defined, when firstflag = 1 ------------------------------------------------------------------------- */ void ComputeMSDChunk::setup() { if (!firstflag) return; compute_array(); firstflag = 0; for (int i = 0; i < nchunk; i++) { cominit[i][0] = comall[i][0]; cominit[i][1] = comall[i][1]; cominit[i][2] = comall[i][2]; msd[i][0] = msd[i][1] = msd[i][2] = msd[i][3] = 0.0; } } /* ---------------------------------------------------------------------- */ void ComputeMSDChunk::compute_array() { int index; double massone; double unwrap[3]; invoked_array = update->ntimestep; // compute chunk/atom assigns atoms to chunk IDs // extract ichunk index vector from compute // ichunk = 1 to Nchunk for included atoms, 0 for excluded atoms int n = cchunk->setup_chunks(); cchunk->compute_ichunk(); int *ichunk = cchunk->ichunk; // first time call, allocate per-chunk arrays // thereafter, require nchunk remain the same if (firstflag) { nchunk = n; size_array_rows = nchunk; allocate(); + size_array_rows = nchunk; } else if (n != nchunk) error->all(FLERR,"Compute msd/chunk nchunk is not static"); // zero local per-chunk values for (int i = 0; i < nchunk; i++) { massproc[i] = 0.0; com[i][0] = com[i][1] = com[i][2] = 0.0; } // compute current COM for each chunk double **x = atom->x; int *mask = atom->mask; int *type = atom->type; imageint *image = atom->image; double *mass = atom->mass; double *rmass = atom->rmass; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { index = ichunk[i]-1; if (index < 0) continue; if (rmass) massone = rmass[i]; else massone = mass[type[i]]; domain->unmap(x[i],image[i],unwrap); massproc[index] += massone; com[index][0] += unwrap[0] * massone; com[index][1] += unwrap[1] * massone; com[index][2] += unwrap[2] * massone; } MPI_Allreduce(massproc,masstotal,nchunk,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&com[0][0],&comall[0][0],3*nchunk,MPI_DOUBLE,MPI_SUM,world); for (int i = 0; i < nchunk; i++) { comall[i][0] /= masstotal[i]; comall[i][1] /= masstotal[i]; comall[i][2] /= masstotal[i]; } // MSD is difference between current and initial COM // cominit does not yet exist when called first time from setup() if (firstflag) return; double dx,dy,dz; for (int i = 0; i < nchunk; i++) { dx = comall[i][0] - cominit[i][0]; dy = comall[i][1] - cominit[i][1]; dz = comall[i][2] - cominit[i][2]; msd[i][0] = dx*dx; msd[i][1] = dy*dy; msd[i][2] = dz*dz; msd[i][3] = dx*dx + dy*dy + dz*dz; } } /* ---------------------------------------------------------------------- lock methods: called by fix ave/time these methods insure vector/array size is locked for Nfreq epoch by passing lock info along to compute chunk/atom ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- increment lock counter ------------------------------------------------------------------------- */ void ComputeMSDChunk::lock_enable() { cchunk->lockcount++; } /* ---------------------------------------------------------------------- decrement lock counter in compute chunk/atom, it if still exists ------------------------------------------------------------------------- */ void ComputeMSDChunk::lock_disable() { int icompute = modify->find_compute(idchunk); if (icompute >= 0) { cchunk = (ComputeChunkAtom *) modify->compute[icompute]; cchunk->lockcount--; } } /* ---------------------------------------------------------------------- calculate and return # of chunks = length of vector/array ------------------------------------------------------------------------- */ int ComputeMSDChunk::lock_length() { nchunk = cchunk->setup_chunks(); return nchunk; } /* ---------------------------------------------------------------------- set the lock from startstep to stopstep ------------------------------------------------------------------------- */ void ComputeMSDChunk::lock(Fix *fixptr, bigint startstep, bigint stopstep) { cchunk->lock(fixptr,startstep,stopstep); } /* ---------------------------------------------------------------------- unset the lock ------------------------------------------------------------------------- */ void ComputeMSDChunk::unlock(Fix *fixptr) { cchunk->unlock(fixptr); } /* ---------------------------------------------------------------------- one-time allocate of per-chunk arrays ------------------------------------------------------------------------- */ void ComputeMSDChunk::allocate() { memory->create(massproc,nchunk,"msd/chunk:massproc"); memory->create(masstotal,nchunk,"msd/chunk:masstotal"); memory->create(com,nchunk,3,"msd/chunk:com"); memory->create(comall,nchunk,3,"msd/chunk:comall"); memory->create(cominit,nchunk,3,"msd/chunk:cominit"); memory->create(msd,nchunk,4,"msd/chunk:msd"); array = msd; } /* ---------------------------------------------------------------------- memory usage of local data ------------------------------------------------------------------------- */ double ComputeMSDChunk::memory_usage() { double bytes = (bigint) nchunk * 2 * sizeof(double); bytes += (bigint) nchunk * 3*3 * sizeof(double); bytes += (bigint) nchunk * 4 * sizeof(double); return bytes; } diff --git a/src/fix_adapt.cpp b/src/fix_adapt.cpp index 56a3538f5..d5ae80c07 100644 --- a/src/fix_adapt.cpp +++ b/src/fix_adapt.cpp @@ -1,570 +1,586 @@ /* ---------------------------------------------------------------------- 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 "math.h" #include "string.h" #include "stdlib.h" #include "fix_adapt.h" #include "atom.h" #include "update.h" #include "group.h" #include "modify.h" #include "force.h" #include "pair.h" #include "pair_hybrid.h" #include "kspace.h" #include "fix_store.h" #include "input.h" #include "variable.h" #include "respa.h" #include "math_const.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; enum{PAIR,KSPACE,ATOM}; enum{DIAMETER,CHARGE}; /* ---------------------------------------------------------------------- */ FixAdapt::FixAdapt(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg < 5) error->all(FLERR,"Illegal fix adapt command"); nevery = force->inumeric(FLERR,arg[3]); if (nevery < 0) error->all(FLERR,"Illegal fix adapt command"); dynamic_group_allow = 1; create_attribute = 1; // count # of adaptations nadapt = 0; int iarg = 4; while (iarg < narg) { if (strcmp(arg[iarg],"pair") == 0) { if (iarg+6 > narg) error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 6; } else if (strcmp(arg[iarg],"kspace") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 2; } else if (strcmp(arg[iarg],"atom") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 3; } else break; } if (nadapt == 0) error->all(FLERR,"Illegal fix adapt command"); adapt = new Adapt[nadapt]; // parse keywords nadapt = 0; diamflag = 0; chgflag = 0; iarg = 4; while (iarg < narg) { if (strcmp(arg[iarg],"pair") == 0) { if (iarg+6 > narg) error->all(FLERR,"Illegal fix adapt command"); adapt[nadapt].which = PAIR; int n = strlen(arg[iarg+1]) + 1; adapt[nadapt].pstyle = new char[n]; strcpy(adapt[nadapt].pstyle,arg[iarg+1]); n = strlen(arg[iarg+2]) + 1; adapt[nadapt].pparam = new char[n]; strcpy(adapt[nadapt].pparam,arg[iarg+2]); force->bounds(arg[iarg+3],atom->ntypes, adapt[nadapt].ilo,adapt[nadapt].ihi); force->bounds(arg[iarg+4],atom->ntypes, adapt[nadapt].jlo,adapt[nadapt].jhi); if (strstr(arg[iarg+5],"v_") == arg[iarg+5]) { n = strlen(&arg[iarg+5][2]) + 1; adapt[nadapt].var = new char[n]; strcpy(adapt[nadapt].var,&arg[iarg+5][2]); } else error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 6; } else if (strcmp(arg[iarg],"kspace") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command"); adapt[nadapt].which = KSPACE; if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) { int n = strlen(&arg[iarg+1][2]) + 1; adapt[nadapt].var = new char[n]; strcpy(adapt[nadapt].var,&arg[iarg+1][2]); } else error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 2; } else if (strcmp(arg[iarg],"atom") == 0) { if (iarg+3 > narg) error->all(FLERR,"Illegal fix adapt command"); adapt[nadapt].which = ATOM; if (strcmp(arg[iarg+1],"diameter") == 0) { adapt[nadapt].aparam = DIAMETER; diamflag = 1; } else if (strcmp(arg[iarg+1],"charge") == 0) { adapt[nadapt].aparam = CHARGE; chgflag = 1; } else error->all(FLERR,"Illegal fix adapt command"); if (strstr(arg[iarg+2],"v_") == arg[iarg+2]) { int n = strlen(&arg[iarg+2][2]) + 1; adapt[nadapt].var = new char[n]; strcpy(adapt[nadapt].var,&arg[iarg+2][2]); } else error->all(FLERR,"Illegal fix adapt command"); nadapt++; iarg += 3; } else break; } // optional keywords resetflag = 0; scaleflag = 0; while (iarg < narg) { if (strcmp(arg[iarg],"reset") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command"); if (strcmp(arg[iarg+1],"no") == 0) resetflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) resetflag = 1; else error->all(FLERR,"Illegal fix adapt command"); iarg += 2; } else if (strcmp(arg[iarg],"scale") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix adapt command"); if (strcmp(arg[iarg+1],"no") == 0) scaleflag = 0; else if (strcmp(arg[iarg+1],"yes") == 0) scaleflag = 1; else error->all(FLERR,"Illegal fix adapt command"); iarg += 2; } else error->all(FLERR,"Illegal fix adapt command"); } // allocate pair style arrays int n = atom->ntypes; for (int m = 0; m < nadapt; m++) if (adapt[m].which == PAIR) memory->create(adapt[m].array_orig,n+1,n+1,"adapt:array_orig"); id_fix_diam = id_fix_chg = NULL; } /* ---------------------------------------------------------------------- */ FixAdapt::~FixAdapt() { for (int m = 0; m < nadapt; m++) { delete [] adapt[m].var; if (adapt[m].which == PAIR) { delete [] adapt[m].pstyle; delete [] adapt[m].pparam; memory->destroy(adapt[m].array_orig); } } delete [] adapt; // check nfix in case all fixes have already been deleted if (id_fix_diam && modify->nfix) modify->delete_fix(id_fix_diam); if (id_fix_chg && modify->nfix) modify->delete_fix(id_fix_chg); delete [] id_fix_diam; delete [] id_fix_chg; } /* ---------------------------------------------------------------------- */ int FixAdapt::setmask() { int mask = 0; mask |= PRE_FORCE; mask |= POST_RUN; mask |= PRE_FORCE_RESPA; return mask; } /* ---------------------------------------------------------------------- if need to restore per-atom quantities, create new fix STORE styles ------------------------------------------------------------------------- */ void FixAdapt::post_constructor() { if (!resetflag) return; if (!diamflag && !chgflag) return; // new id = fix-ID + FIX_STORE_ATTRIBUTE // new fix group = group for this fix id_fix_diam = NULL; id_fix_chg = NULL; char **newarg = new char*[5]; newarg[1] = group->names[igroup]; newarg[2] = (char *) "STORE"; newarg[3] = (char *) "1"; newarg[4] = (char *) "1"; if (diamflag) { int n = strlen(id) + strlen("_FIX_STORE_DIAM") + 1; id_fix_diam = new char[n]; strcpy(id_fix_diam,id); strcat(id_fix_diam,"_FIX_STORE_DIAM"); newarg[0] = id_fix_diam; modify->add_fix(5,newarg); fix_diam = (FixStore *) modify->fix[modify->nfix-1]; if (fix_diam->restart_reset) fix_diam->restart_reset = 0; else { double *vec = fix_diam->vstore; double *radius = atom->radius; int *mask = atom->mask; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) vec[i] = radius[i]; else vec[i] = 0.0; } } } if (chgflag) { int n = strlen(id) + strlen("_FIX_STORE_CHG") + 1; id_fix_chg = new char[n]; strcpy(id_fix_chg,id); strcat(id_fix_chg,"_FIX_STORE_CHG"); newarg[0] = id_fix_chg; modify->add_fix(5,newarg); fix_chg = (FixStore *) modify->fix[modify->nfix-1]; if (fix_chg->restart_reset) fix_chg->restart_reset = 0; else { double *vec = fix_chg->vstore; double *q = atom->q; int *mask = atom->mask; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) vec[i] = q[i]; else vec[i] = 0.0; } } } delete [] newarg; } /* ---------------------------------------------------------------------- */ void FixAdapt::init() { int i,j; // allow a dynamic group only if ATOM attribute not used if (group->dynamic[igroup]) for (int i = 0; i < nadapt; i++) if (adapt[i].which == ATOM) error->all(FLERR,"Cannot use dynamic group with fix adapt atom"); // setup and error checks anypair = 0; for (int m = 0; m < nadapt; m++) { Adapt *ad = &adapt[m]; ad->ivar = input->variable->find(ad->var); if (ad->ivar < 0) error->all(FLERR,"Variable name for fix adapt does not exist"); if (!input->variable->equalstyle(ad->ivar)) error->all(FLERR,"Variable for fix adapt is invalid style"); if (ad->which == PAIR) { anypair = 1; Pair *pair = NULL; + // if ad->pstyle has trailing sub-style annotation ":N", + // strip it for pstyle arg to pair_match() and set nsub = N + // this should work for appended suffixes as well + + int n = strlen(ad->pstyle) + 1; + char *pstyle = new char[n]; + strcpy(pstyle,ad->pstyle); + + char *cptr; + int nsub = 0; + if (cptr = strchr(pstyle,':')) { + *cptr = '\0'; + nsub = force->inumeric(FLERR,cptr+1); + } + if (lmp->suffix_enable) { - int len = 2 + strlen(ad->pstyle) + strlen(lmp->suffix); + int len = 2 + strlen(pstyle) + strlen(lmp->suffix); char *psuffix = new char[len]; - - strcpy(psuffix,ad->pstyle); + strcpy(psuffix,pstyle); strcat(psuffix,"/"); strcat(psuffix,lmp->suffix); - pair = force->pair_match(psuffix,1); + pair = force->pair_match(psuffix,1,nsub); delete[] psuffix; } - if (pair == NULL) pair = force->pair_match(ad->pstyle,1); + if (pair == NULL) pair = force->pair_match(pstyle,1,nsub); if (pair == NULL) error->all(FLERR,"Fix adapt pair style does not exist"); void *ptr = pair->extract(ad->pparam,ad->pdim); if (ptr == NULL) error->all(FLERR,"Fix adapt pair style param not supported"); ad->pdim = 2; if (ad->pdim == 0) ad->scalar = (double *) ptr; if (ad->pdim == 2) ad->array = (double **) ptr; // if pair hybrid, test that ilo,ihi,jlo,jhi are valid for sub-style if (ad->pdim == 2 && (strcmp(force->pair_style,"hybrid") == 0 || strcmp(force->pair_style,"hybrid/overlay") == 0)) { PairHybrid *pair = (PairHybrid *) force->pair; for (i = ad->ilo; i <= ad->ihi; i++) for (j = MAX(ad->jlo,i); j <= ad->jhi; j++) - if (!pair->check_ijtype(i,j,ad->pstyle)) + if (!pair->check_ijtype(i,j,pstyle)) error->all(FLERR,"Fix adapt type pair range is not valid for " "pair hybrid sub-style"); } + delete [] pstyle; + } else if (ad->which == KSPACE) { if (force->kspace == NULL) error->all(FLERR,"Fix adapt kspace style does not exist"); kspace_scale = (double *) force->kspace->extract("scale"); } else if (ad->which == ATOM) { if (ad->aparam == DIAMETER) { if (!atom->radius_flag) error->all(FLERR,"Fix adapt requires atom attribute diameter"); } if (ad->aparam == CHARGE) { if (!atom->q_flag) error->all(FLERR,"Fix adapt requires atom attribute charge"); } } } // make copy of original pair array values for (int m = 0; m < nadapt; m++) { Adapt *ad = &adapt[m]; if (ad->which == PAIR && ad->pdim == 2) { for (i = ad->ilo; i <= ad->ihi; i++) for (j = MAX(ad->jlo,i); j <= ad->jhi; j++) ad->array_orig[i][j] = ad->array[i][j]; } } // fixes that store initial per-atom values if (id_fix_diam) { int ifix = modify->find_fix(id_fix_diam); if (ifix < 0) error->all(FLERR,"Could not find fix adapt storage fix ID"); fix_diam = (FixStore *) modify->fix[ifix]; } if (id_fix_chg) { int ifix = modify->find_fix(id_fix_chg); if (ifix < 0) error->all(FLERR,"Could not find fix adapt storage fix ID"); fix_chg = (FixStore *) modify->fix[ifix]; } if (strstr(update->integrate_style,"respa")) nlevels_respa = ((Respa *) update->integrate)->nlevels; } /* ---------------------------------------------------------------------- */ void FixAdapt::setup_pre_force(int vflag) { change_settings(); } /* ---------------------------------------------------------------------- */ void FixAdapt::setup_pre_force_respa(int vflag, int ilevel) { if (ilevel < nlevels_respa-1) return; setup_pre_force(vflag); } /* ---------------------------------------------------------------------- */ void FixAdapt::pre_force(int vflag) { if (nevery == 0) return; if (update->ntimestep % nevery) return; change_settings(); } /* ---------------------------------------------------------------------- */ void FixAdapt::pre_force_respa(int vflag, int ilevel, int) { if (ilevel < nlevels_respa-1) return; pre_force(vflag); } /* ---------------------------------------------------------------------- */ void FixAdapt::post_run() { if (resetflag) restore_settings(); } /* ---------------------------------------------------------------------- change pair,kspace,atom parameters based on variable evaluation ------------------------------------------------------------------------- */ void FixAdapt::change_settings() { int i,j; // variable evaluation may invoke computes so wrap with clear/add modify->clearstep_compute(); for (int m = 0; m < nadapt; m++) { Adapt *ad = &adapt[m]; double value = input->variable->compute_equal(ad->ivar); // set global scalar or type pair array values if (ad->which == PAIR) { if (ad->pdim == 0) { if (scaleflag) *ad->scalar = value * ad->scalar_orig; else *ad->scalar = value; } else if (ad->pdim == 2) { if (scaleflag) for (i = ad->ilo; i <= ad->ihi; i++) for (j = MAX(ad->jlo,i); j <= ad->jhi; j++) ad->array[i][j] = value*ad->array_orig[i][j]; else for (i = ad->ilo; i <= ad->ihi; i++) for (j = MAX(ad->jlo,i); j <= ad->jhi; j++) ad->array[i][j] = value; } // set kspace scale factor } else if (ad->which == KSPACE) { *kspace_scale = value; // set per atom values, also make changes for ghost atoms } else if (ad->which == ATOM) { // reset radius from diameter // also scale rmass to new value if (ad->aparam == DIAMETER) { int mflag = 0; if (atom->rmass_flag) mflag = 1; double density; double *radius = atom->radius; double *rmass = atom->rmass; int *mask = atom->mask; int nlocal = atom->nlocal; int nall = nlocal + atom->nghost; if (mflag == 0) { for (i = 0; i < nall; i++) if (mask[i] & groupbit) radius[i] = 0.5*value; } else { for (i = 0; i < nall; i++) if (mask[i] & groupbit) { density = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); radius[i] = 0.5*value; rmass[i] = 4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i] * density; } } } else if (ad->aparam == CHARGE) { double *q = atom->q; int *mask = atom->mask; int nlocal = atom->nlocal; int nall = nlocal + atom->nghost; for (i = 0; i < nall; i++) if (mask[i] & groupbit) q[i] = value; } } } modify->addstep_compute(update->ntimestep + nevery); // re-initialize pair styles if any PAIR settings were changed // this resets other coeffs that may depend on changed values, // and also offset and tail corrections if (anypair) force->pair->reinit(); // reset KSpace charges if charges have changed if (chgflag && force->kspace) force->kspace->qsum_qsq(); } /* ---------------------------------------------------------------------- restore pair,kspace,atom parameters to original values ------------------------------------------------------------------------- */ void FixAdapt::restore_settings() { for (int m = 0; m < nadapt; m++) { Adapt *ad = &adapt[m]; if (ad->which == PAIR) { if (ad->pdim == 0) *ad->scalar = ad->scalar_orig; else if (ad->pdim == 2) { for (int i = ad->ilo; i <= ad->ihi; i++) for (int j = MAX(ad->jlo,i); j <= ad->jhi; j++) ad->array[i][j] = ad->array_orig[i][j]; } } else if (ad->which == KSPACE) { *kspace_scale = 1.0; } else if (ad->which == ATOM) { if (diamflag) { double density; double *vec = fix_diam->vstore; double *radius = atom->radius; double *rmass = atom->rmass; int *mask = atom->mask; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { density = rmass[i] / (4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i]); radius[i] = vec[i]; rmass[i] = 4.0*MY_PI/3.0 * radius[i]*radius[i]*radius[i] * density; } } if (chgflag) { double *vec = fix_chg->vstore; double *q = atom->q; int *mask = atom->mask; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) q[i] = vec[i]; } } } if (anypair) force->pair->reinit(); if (chgflag && force->kspace) force->kspace->qsum_qsq(); } /* ---------------------------------------------------------------------- initialize one atom's storage values, called when atom is created ------------------------------------------------------------------------- */ void FixAdapt::set_arrays(int i) { if (fix_diam) fix_diam->vstore[i] = atom->radius[i]; if (fix_chg) fix_chg->vstore[i] = atom->q[i]; } diff --git a/src/fix_nh.cpp b/src/fix_nh.cpp index 730b247cd..92da3e33c 100644 --- a/src/fix_nh.cpp +++ b/src/fix_nh.cpp @@ -1,2300 +1,2302 @@ /* ---------------------------------------------------------------------- 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), Aidan Thompson (SNL) ------------------------------------------------------------------------- */ #include "string.h" #include "stdlib.h" #include "math.h" #include "fix_nh.h" #include "math_extra.h" #include "atom.h" #include "force.h" #include "group.h" #include "comm.h" #include "neighbor.h" #include "irregular.h" #include "modify.h" #include "fix_deform.h" #include "compute.h" #include "kspace.h" #include "update.h" #include "respa.h" #include "domain.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; #define DELTAFLIP 0.1 #define TILTMAX 1.5 enum{NOBIAS,BIAS}; enum{NONE,XYZ,XY,YZ,XZ}; enum{ISO,ANISO,TRICLINIC}; /* ---------------------------------------------------------------------- NVT,NPH,NPT integrators for improved Nose-Hoover equations of motion ---------------------------------------------------------------------- */ FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg < 4) error->all(FLERR,"Illegal fix nvt/npt/nph command"); restart_global = 1; dynamic_group_allow = 1; time_integrate = 1; scalar_flag = 1; vector_flag = 1; global_freq = 1; extscalar = 1; extvector = 0; // default values pcouple = NONE; drag = 0.0; allremap = 1; id_dilate = NULL; mtchain = mpchain = 3; nc_tchain = nc_pchain = 1; mtk_flag = 1; deviatoric_flag = 0; nreset_h0 = 0; eta_mass_flag = 1; omega_mass_flag = 0; etap_mass_flag = 0; flipflag = 1; // turn on tilt factor scaling, whenever applicable dimension = domain->dimension; scaleyz = scalexz = scalexy = 0; if (domain->yperiodic && domain->xy != 0.0) scalexy = 1; if (domain->zperiodic && dimension == 3) { if (domain->yz != 0.0) scaleyz = 1; if (domain->xz != 0.0) scalexz = 1; } // set fixed-point to default = center of cell fixedpoint[0] = 0.5*(domain->boxlo[0]+domain->boxhi[0]); fixedpoint[1] = 0.5*(domain->boxlo[1]+domain->boxhi[1]); fixedpoint[2] = 0.5*(domain->boxlo[2]+domain->boxhi[2]); // used by FixNVTSllod to preserve non-default value mtchain_default_flag = 1; tstat_flag = 0; double t_period = 0.0; double p_period[6]; for (int i = 0; i < 6; i++) { p_start[i] = p_stop[i] = p_period[i] = p_target[i] = 0.0; p_flag[i] = 0; } // process keywords int iarg = 3; while (iarg < narg) { if (strcmp(arg[iarg],"temp") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); tstat_flag = 1; t_start = force->numeric(FLERR,arg[iarg+1]); t_target = t_start; t_stop = force->numeric(FLERR,arg[iarg+2]); t_period = force->numeric(FLERR,arg[iarg+3]); if (t_start < 0.0 || t_stop <= 0.0) error->all(FLERR, "Target temperature for fix nvt/npt/nph cannot be 0.0"); iarg += 4; } else if (strcmp(arg[iarg],"iso") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); pcouple = XYZ; p_start[0] = p_start[1] = p_start[2] = force->numeric(FLERR,arg[iarg+1]); p_stop[0] = p_stop[1] = p_stop[2] = force->numeric(FLERR,arg[iarg+2]); p_period[0] = p_period[1] = p_period[2] = force->numeric(FLERR,arg[iarg+3]); p_flag[0] = p_flag[1] = p_flag[2] = 1; if (dimension == 2) { p_start[2] = p_stop[2] = p_period[2] = 0.0; p_flag[2] = 0; } iarg += 4; } else if (strcmp(arg[iarg],"aniso") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); pcouple = NONE; p_start[0] = p_start[1] = p_start[2] = force->numeric(FLERR,arg[iarg+1]); p_stop[0] = p_stop[1] = p_stop[2] = force->numeric(FLERR,arg[iarg+2]); p_period[0] = p_period[1] = p_period[2] = force->numeric(FLERR,arg[iarg+3]); p_flag[0] = p_flag[1] = p_flag[2] = 1; if (dimension == 2) { p_start[2] = p_stop[2] = p_period[2] = 0.0; p_flag[2] = 0; } iarg += 4; } else if (strcmp(arg[iarg],"tri") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); pcouple = NONE; scalexy = scalexz = scaleyz = 0; p_start[0] = p_start[1] = p_start[2] = force->numeric(FLERR,arg[iarg+1]); p_stop[0] = p_stop[1] = p_stop[2] = force->numeric(FLERR,arg[iarg+2]); p_period[0] = p_period[1] = p_period[2] = force->numeric(FLERR,arg[iarg+3]); p_flag[0] = p_flag[1] = p_flag[2] = 1; p_start[3] = p_start[4] = p_start[5] = 0.0; p_stop[3] = p_stop[4] = p_stop[5] = 0.0; p_period[3] = p_period[4] = p_period[5] = force->numeric(FLERR,arg[iarg+3]); p_flag[3] = p_flag[4] = p_flag[5] = 1; if (dimension == 2) { p_start[2] = p_stop[2] = p_period[2] = 0.0; p_flag[2] = 0; p_start[3] = p_stop[3] = p_period[3] = 0.0; p_flag[3] = 0; p_start[4] = p_stop[4] = p_period[4] = 0.0; p_flag[4] = 0; } iarg += 4; } else if (strcmp(arg[iarg],"x") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[0] = force->numeric(FLERR,arg[iarg+1]); p_stop[0] = force->numeric(FLERR,arg[iarg+2]); p_period[0] = force->numeric(FLERR,arg[iarg+3]); p_flag[0] = 1; deviatoric_flag = 1; iarg += 4; } else if (strcmp(arg[iarg],"y") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[1] = force->numeric(FLERR,arg[iarg+1]); p_stop[1] = force->numeric(FLERR,arg[iarg+2]); p_period[1] = force->numeric(FLERR,arg[iarg+3]); p_flag[1] = 1; deviatoric_flag = 1; iarg += 4; } else if (strcmp(arg[iarg],"z") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[2] = force->numeric(FLERR,arg[iarg+1]); p_stop[2] = force->numeric(FLERR,arg[iarg+2]); p_period[2] = force->numeric(FLERR,arg[iarg+3]); p_flag[2] = 1; deviatoric_flag = 1; iarg += 4; if (dimension == 2) error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); } else if (strcmp(arg[iarg],"yz") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[3] = force->numeric(FLERR,arg[iarg+1]); p_stop[3] = force->numeric(FLERR,arg[iarg+2]); p_period[3] = force->numeric(FLERR,arg[iarg+3]); p_flag[3] = 1; deviatoric_flag = 1; scaleyz = 0; iarg += 4; if (dimension == 2) error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); } else if (strcmp(arg[iarg],"xz") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[4] = force->numeric(FLERR,arg[iarg+1]); p_stop[4] = force->numeric(FLERR,arg[iarg+2]); p_period[4] = force->numeric(FLERR,arg[iarg+3]); p_flag[4] = 1; deviatoric_flag = 1; scalexz = 0; iarg += 4; if (dimension == 2) error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); } else if (strcmp(arg[iarg],"xy") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); p_start[5] = force->numeric(FLERR,arg[iarg+1]); p_stop[5] = force->numeric(FLERR,arg[iarg+2]); p_period[5] = force->numeric(FLERR,arg[iarg+3]); p_flag[5] = 1; deviatoric_flag = 1; scalexy = 0; iarg += 4; } else if (strcmp(arg[iarg],"couple") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"xyz") == 0) pcouple = XYZ; else if (strcmp(arg[iarg+1],"xy") == 0) pcouple = XY; else if (strcmp(arg[iarg+1],"yz") == 0) pcouple = YZ; else if (strcmp(arg[iarg+1],"xz") == 0) pcouple = XZ; else if (strcmp(arg[iarg+1],"none") == 0) pcouple = NONE; else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"drag") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); drag = force->numeric(FLERR,arg[iarg+1]); if (drag < 0.0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"dilate") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"all") == 0) allremap = 1; else { allremap = 0; delete [] id_dilate; int n = strlen(arg[iarg+1]) + 1; id_dilate = new char[n]; strcpy(id_dilate,arg[iarg+1]); int idilate = group->find(id_dilate); if (idilate == -1) error->all(FLERR,"Fix nvt/npt/nph dilate group ID does not exist"); } iarg += 2; } else if (strcmp(arg[iarg],"tchain") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); mtchain = force->inumeric(FLERR,arg[iarg+1]); // used by FixNVTSllod to preserve non-default value mtchain_default_flag = 0; if (mtchain < 1) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"pchain") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); mpchain = force->inumeric(FLERR,arg[iarg+1]); if (mpchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"mtk") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"yes") == 0) mtk_flag = 1; else if (strcmp(arg[iarg+1],"no") == 0) mtk_flag = 0; else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"tloop") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); nc_tchain = force->inumeric(FLERR,arg[iarg+1]); if (nc_tchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"ploop") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); nc_pchain = force->inumeric(FLERR,arg[iarg+1]); if (nc_pchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"nreset") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); nreset_h0 = force->inumeric(FLERR,arg[iarg+1]); if (nreset_h0 < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"scalexy") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"yes") == 0) scalexy = 1; else if (strcmp(arg[iarg+1],"no") == 0) scalexy = 0; else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"scalexz") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"yes") == 0) scalexz = 1; else if (strcmp(arg[iarg+1],"no") == 0) scalexz = 0; else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"scaleyz") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"yes") == 0) scaleyz = 1; else if (strcmp(arg[iarg+1],"no") == 0) scaleyz = 0; else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"flip") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); if (strcmp(arg[iarg+1],"yes") == 0) flipflag = 1; else if (strcmp(arg[iarg+1],"no") == 0) flipflag = 0; else error->all(FLERR,"Illegal fix nvt/npt/nph command"); iarg += 2; } else if (strcmp(arg[iarg],"fixedpoint") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command"); fixedpoint[0] = force->numeric(FLERR,arg[iarg+1]); fixedpoint[1] = force->numeric(FLERR,arg[iarg+2]); fixedpoint[2] = force->numeric(FLERR,arg[iarg+3]); iarg += 4; } else error->all(FLERR,"Illegal fix nvt/npt/nph command"); } // error checks if (dimension == 2 && (p_flag[2] || p_flag[3] || p_flag[4])) error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); if (dimension == 2 && (pcouple == YZ || pcouple == XZ)) error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); if (dimension == 2 && (scalexz == 1 || scaleyz == 1 )) error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation"); if (pcouple == XYZ && (p_flag[0] == 0 || p_flag[1] == 0)) error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == XYZ && dimension == 3 && p_flag[2] == 0) error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == XY && (p_flag[0] == 0 || p_flag[1] == 0)) error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == YZ && (p_flag[1] == 0 || p_flag[2] == 0)) error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); if (pcouple == XZ && (p_flag[0] == 0 || p_flag[2] == 0)) error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings"); // require periodicity in tensile dimension if (p_flag[0] && domain->xperiodic == 0) error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension"); if (p_flag[1] && domain->yperiodic == 0) error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension"); if (p_flag[2] && domain->zperiodic == 0) error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension"); // require periodicity in 2nd dim of off-diagonal tilt component if (p_flag[3] && domain->zperiodic == 0) error->all(FLERR, "Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); if (p_flag[4] && domain->zperiodic == 0) error->all(FLERR, "Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); if (p_flag[5] && domain->yperiodic == 0) error->all(FLERR, "Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension"); if (scaleyz == 1 && domain->zperiodic == 0) error->all(FLERR,"Cannot use fix nvt/npt/nph " "with yz scaling when z is non-periodic dimension"); if (scalexz == 1 && domain->zperiodic == 0) error->all(FLERR,"Cannot use fix nvt/npt/nph " "with xz scaling when z is non-periodic dimension"); if (scalexy == 1 && domain->yperiodic == 0) error->all(FLERR,"Cannot use fix nvt/npt/nph " "with xy scaling when y is non-periodic dimension"); if (p_flag[3] && scaleyz == 1) error->all(FLERR,"Cannot use fix nvt/npt/nph with " "both yz dynamics and yz scaling"); if (p_flag[4] && scalexz == 1) error->all(FLERR,"Cannot use fix nvt/npt/nph with " "both xz dynamics and xz scaling"); if (p_flag[5] && scalexy == 1) error->all(FLERR,"Cannot use fix nvt/npt/nph with " "both xy dynamics and xy scaling"); if (!domain->triclinic && (p_flag[3] || p_flag[4] || p_flag[5])) error->all(FLERR,"Can not specify Pxy/Pxz/Pyz in " "fix nvt/npt/nph with non-triclinic box"); if (pcouple == XYZ && dimension == 3 && (p_start[0] != p_start[1] || p_start[0] != p_start[2] || p_stop[0] != p_stop[1] || p_stop[0] != p_stop[2] || p_period[0] != p_period[1] || p_period[0] != p_period[2])) error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == XYZ && dimension == 2 && (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || p_period[0] != p_period[1])) error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == XY && (p_start[0] != p_start[1] || p_stop[0] != p_stop[1] || p_period[0] != p_period[1])) error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == YZ && (p_start[1] != p_start[2] || p_stop[1] != p_stop[2] || p_period[1] != p_period[2])) error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if (pcouple == XZ && (p_start[0] != p_start[2] || p_stop[0] != p_stop[2] || p_period[0] != p_period[2])) error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings"); if ((tstat_flag && t_period <= 0.0) || (p_flag[0] && p_period[0] <= 0.0) || (p_flag[1] && p_period[1] <= 0.0) || (p_flag[2] && p_period[2] <= 0.0) || (p_flag[3] && p_period[3] <= 0.0) || (p_flag[4] && p_period[4] <= 0.0) || (p_flag[5] && p_period[5] <= 0.0)) error->all(FLERR,"Fix nvt/npt/nph damping parameters must be > 0.0"); // set pstat_flag and box change and restart_pbc variables + pre_exchange_flag = 0; pstat_flag = 0; + pstyle = ISO; + for (int i = 0; i < 6; i++) if (p_flag[i]) pstat_flag = 1; if (pstat_flag) { if (p_flag[0] || p_flag[1] || p_flag[2]) box_change_size = 1; if (p_flag[3] || p_flag[4] || p_flag[5]) box_change_shape = 1; no_change_box = 1; if (allremap == 0) restart_pbc = 1; - } - // pstyle = TRICLINIC if any off-diagonal term is controlled -> 6 dof - // else pstyle = ISO if XYZ coupling or XY coupling in 2d -> 1 dof - // else pstyle = ANISO -> 3 dof + // pstyle = TRICLINIC if any off-diagonal term is controlled -> 6 dof + // else pstyle = ISO if XYZ coupling or XY coupling in 2d -> 1 dof + // else pstyle = ANISO -> 3 dof - if (p_flag[3] || p_flag[4] || p_flag[5]) pstyle = TRICLINIC; - else if (pcouple == XYZ || (dimension == 2 && pcouple == XY)) pstyle = ISO; - else pstyle = ANISO; + if (p_flag[3] || p_flag[4] || p_flag[5]) pstyle = TRICLINIC; + else if (pcouple == XYZ || (dimension == 2 && pcouple == XY)) pstyle = ISO; + else pstyle = ANISO; - // pre_exchange only required if flips can occur due to shape changes + // pre_exchange only required if flips can occur due to shape changes - pre_exchange_flag = 0; - if (flipflag && (p_flag[3] || p_flag[4] || p_flag[5])) pre_exchange_flag = 1; - if (flipflag && (domain->yz != 0.0 || domain->xz != 0.0 || domain->xy != 0.0)) - pre_exchange_flag = 1; + if (flipflag && (p_flag[3] || p_flag[4] || p_flag[5])) pre_exchange_flag = 1; + if (flipflag && (domain->yz != 0.0 || domain->xz != 0.0 || domain->xy != 0.0)) + pre_exchange_flag = 1; + } // convert input periods to frequencies t_freq = 0.0; p_freq[0] = p_freq[1] = p_freq[2] = p_freq[3] = p_freq[4] = p_freq[5] = 0.0; if (tstat_flag) t_freq = 1.0 / t_period; if (p_flag[0]) p_freq[0] = 1.0 / p_period[0]; if (p_flag[1]) p_freq[1] = 1.0 / p_period[1]; if (p_flag[2]) p_freq[2] = 1.0 / p_period[2]; if (p_flag[3]) p_freq[3] = 1.0 / p_period[3]; if (p_flag[4]) p_freq[4] = 1.0 / p_period[4]; if (p_flag[5]) p_freq[5] = 1.0 / p_period[5]; // Nose/Hoover temp and pressure init size_vector = 0; if (tstat_flag) { int ich; eta = new double[mtchain]; // add one extra dummy thermostat, set to zero eta_dot = new double[mtchain+1]; eta_dot[mtchain] = 0.0; eta_dotdot = new double[mtchain]; for (ich = 0; ich < mtchain; ich++) { eta[ich] = eta_dot[ich] = eta_dotdot[ich] = 0.0; } eta_mass = new double[mtchain]; size_vector += 2*2*mtchain; } if (pstat_flag) { omega[0] = omega[1] = omega[2] = 0.0; omega_dot[0] = omega_dot[1] = omega_dot[2] = 0.0; omega_mass[0] = omega_mass[1] = omega_mass[2] = 0.0; omega[3] = omega[4] = omega[5] = 0.0; omega_dot[3] = omega_dot[4] = omega_dot[5] = 0.0; omega_mass[3] = omega_mass[4] = omega_mass[5] = 0.0; if (pstyle == ISO) size_vector += 2*2*1; else if (pstyle == ANISO) size_vector += 2*2*3; else if (pstyle == TRICLINIC) size_vector += 2*2*6; if (mpchain) { int ich; etap = new double[mpchain]; // add one extra dummy thermostat, set to zero etap_dot = new double[mpchain+1]; etap_dot[mpchain] = 0.0; etap_dotdot = new double[mpchain]; for (ich = 0; ich < mpchain; ich++) { etap[ich] = etap_dot[ich] = etap_dotdot[ich] = 0.0; } etap_mass = new double[mpchain]; size_vector += 2*2*mpchain; } if (deviatoric_flag) size_vector += 1; } nrigid = 0; rfix = NULL; if (pre_exchange_flag) irregular = new Irregular(lmp); else irregular = NULL; // initialize vol0,t0 to zero to signal uninitialized // values then assigned in init(), if necessary vol0 = t0 = 0.0; } /* ---------------------------------------------------------------------- */ FixNH::~FixNH() { if (copymode) return; delete [] id_dilate; delete [] rfix; delete irregular; // delete temperature and pressure if fix created them if (tflag) modify->delete_compute(id_temp); delete [] id_temp; if (tstat_flag) { delete [] eta; delete [] eta_dot; delete [] eta_dotdot; delete [] eta_mass; } if (pstat_flag) { if (pflag) modify->delete_compute(id_press); delete [] id_press; if (mpchain) { delete [] etap; delete [] etap_dot; delete [] etap_dotdot; delete [] etap_mass; } } } /* ---------------------------------------------------------------------- */ int FixNH::setmask() { int mask = 0; mask |= INITIAL_INTEGRATE; mask |= FINAL_INTEGRATE; mask |= THERMO_ENERGY; mask |= INITIAL_INTEGRATE_RESPA; mask |= FINAL_INTEGRATE_RESPA; if (pre_exchange_flag) mask |= PRE_EXCHANGE; return mask; } /* ---------------------------------------------------------------------- */ void FixNH::init() { // recheck that dilate group has not been deleted if (allremap == 0) { int idilate = group->find(id_dilate); if (idilate == -1) error->all(FLERR,"Fix nvt/npt/nph dilate group ID does not exist"); dilate_group_bit = group->bitmask[idilate]; } // ensure no conflict with fix deform if (pstat_flag) for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"deform") == 0) { int *dimflag = ((FixDeform *) modify->fix[i])->dimflag; if ((p_flag[0] && dimflag[0]) || (p_flag[1] && dimflag[1]) || (p_flag[2] && dimflag[2]) || (p_flag[3] && dimflag[3]) || (p_flag[4] && dimflag[4]) || (p_flag[5] && dimflag[5])) error->all(FLERR,"Cannot use fix npt and fix deform on " "same component of stress tensor"); } // set temperature and pressure ptrs int icompute = modify->find_compute(id_temp); if (icompute < 0) error->all(FLERR,"Temperature ID for fix nvt/npt does not exist"); temperature = modify->compute[icompute]; if (temperature->tempbias) which = BIAS; else which = NOBIAS; if (pstat_flag) { icompute = modify->find_compute(id_press); if (icompute < 0) error->all(FLERR,"Pressure ID for fix npt/nph does not exist"); pressure = modify->compute[icompute]; } // set timesteps and frequencies dtv = update->dt; dtf = 0.5 * update->dt * force->ftm2v; dthalf = 0.5 * update->dt; dt4 = 0.25 * update->dt; dt8 = 0.125 * update->dt; dto = dthalf; p_freq_max = 0.0; if (pstat_flag) { p_freq_max = MAX(p_freq[0],p_freq[1]); p_freq_max = MAX(p_freq_max,p_freq[2]); if (pstyle == TRICLINIC) { p_freq_max = MAX(p_freq_max,p_freq[3]); p_freq_max = MAX(p_freq_max,p_freq[4]); p_freq_max = MAX(p_freq_max,p_freq[5]); } pdrag_factor = 1.0 - (update->dt * p_freq_max * drag / nc_pchain); } if (tstat_flag) tdrag_factor = 1.0 - (update->dt * t_freq * drag / nc_tchain); // tally the number of dimensions that are barostatted // set initial volume and reference cell, if not already done if (pstat_flag) { pdim = p_flag[0] + p_flag[1] + p_flag[2]; if (vol0 == 0.0) { if (dimension == 3) vol0 = domain->xprd * domain->yprd * domain->zprd; else vol0 = domain->xprd * domain->yprd; h0_inv[0] = domain->h_inv[0]; h0_inv[1] = domain->h_inv[1]; h0_inv[2] = domain->h_inv[2]; h0_inv[3] = domain->h_inv[3]; h0_inv[4] = domain->h_inv[4]; h0_inv[5] = domain->h_inv[5]; } } boltz = force->boltz; nktv2p = force->nktv2p; if (force->kspace) kspace_flag = 1; else kspace_flag = 0; if (strstr(update->integrate_style,"respa")) { nlevels_respa = ((Respa *) update->integrate)->nlevels; step_respa = ((Respa *) update->integrate)->step; dto = 0.5*step_respa[0]; } // detect if any rigid fixes exist so rigid bodies move when box is remapped // rfix[] = indices to each fix rigid delete [] rfix; nrigid = 0; rfix = NULL; for (int i = 0; i < modify->nfix; i++) if (modify->fix[i]->rigid_flag) nrigid++; if (nrigid) { rfix = new int[nrigid]; nrigid = 0; for (int i = 0; i < modify->nfix; i++) if (modify->fix[i]->rigid_flag) rfix[nrigid++] = i; } } /* ---------------------------------------------------------------------- compute T,P before integrator starts ------------------------------------------------------------------------- */ void FixNH::setup(int vflag) { // t_target is needed by NPH and NPT in compute_scalar() // If no thermostat or using fix nphug, // t_target must be defined by other means. if (tstat_flag && strcmp(style,"nphug") != 0) { compute_temp_target(); } else if (pstat_flag) { // t0 = reference temperature for masses // cannot be done in init() b/c temperature cannot be called there // is b/c Modify::init() inits computes after fixes due to dof dependence // guesstimate a unit-dependent t0 if actual T = 0.0 // if it was read in from a restart file, leave it be if (t0 == 0.0) { t0 = temperature->compute_scalar(); if (t0 == 0.0) { if (strcmp(update->unit_style,"lj") == 0) t0 = 1.0; else t0 = 300.0; } } t_target = t0; } if (pstat_flag) compute_press_target(); t_current = temperature->compute_scalar(); tdof = temperature->dof; if (pstat_flag) { if (pstyle == ISO) pressure->compute_scalar(); else pressure->compute_vector(); couple(); pressure->addstep(update->ntimestep+1); } // masses and initial forces on thermostat variables if (tstat_flag) { eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq); for (int ich = 1; ich < mtchain; ich++) eta_mass[ich] = boltz * t_target / (t_freq*t_freq); for (int ich = 1; ich < mtchain; ich++) { eta_dotdot[ich] = (eta_mass[ich-1]*eta_dot[ich-1]*eta_dot[ich-1] - boltz * t_target) / eta_mass[ich]; } } // masses and initial forces on barostat variables if (pstat_flag) { double kt = boltz * t_target; double nkt = atom->natoms * kt; for (int i = 0; i < 3; i++) if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]); if (pstyle == TRICLINIC) { for (int i = 3; i < 6; i++) if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]); } // masses and initial forces on barostat thermostat variables if (mpchain) { etap_mass[0] = boltz * t_target / (p_freq_max*p_freq_max); for (int ich = 1; ich < mpchain; ich++) etap_mass[ich] = boltz * t_target / (p_freq_max*p_freq_max); for (int ich = 1; ich < mpchain; ich++) etap_dotdot[ich] = (etap_mass[ich-1]*etap_dot[ich-1]*etap_dot[ich-1] - boltz * t_target) / etap_mass[ich]; } } } /* ---------------------------------------------------------------------- 1st half of Verlet update ------------------------------------------------------------------------- */ void FixNH::initial_integrate(int vflag) { // update eta_press_dot if (pstat_flag && mpchain) nhc_press_integrate(); // update eta_dot if (tstat_flag) { compute_temp_target(); nhc_temp_integrate(); } // need to recompute pressure to account for change in KE // t_current is up-to-date, but compute_temperature is not // compute appropriately coupled elements of mvv_current if (pstat_flag) { if (pstyle == ISO) { temperature->compute_scalar(); pressure->compute_scalar(); } else { temperature->compute_vector(); pressure->compute_vector(); } couple(); pressure->addstep(update->ntimestep+1); } if (pstat_flag) { compute_press_target(); nh_omega_dot(); nh_v_press(); } nve_v(); // remap simulation box by 1/2 step if (pstat_flag) remap(); nve_x(); // remap simulation box by 1/2 step // redo KSpace coeffs since volume has changed if (pstat_flag) { remap(); if (kspace_flag) force->kspace->setup(); } } /* ---------------------------------------------------------------------- 2nd half of Verlet update ------------------------------------------------------------------------- */ void FixNH::final_integrate() { nve_v(); // re-compute temp before nh_v_press() // only needed for temperature computes with BIAS on reneighboring steps: // b/c some biases store per-atom values (e.g. temp/profile) // per-atom values are invalid if reneigh/comm occurred // since temp->compute() in initial_integrate() if (which == BIAS && neighbor->ago == 0) t_current = temperature->compute_scalar(); if (pstat_flag) nh_v_press(); // compute new T,P after velocities rescaled by nh_v_press() // compute appropriately coupled elements of mvv_current t_current = temperature->compute_scalar(); tdof = temperature->dof; if (pstat_flag) { if (pstyle == ISO) pressure->compute_scalar(); else pressure->compute_vector(); couple(); pressure->addstep(update->ntimestep+1); } if (pstat_flag) nh_omega_dot(); // update eta_dot // update eta_press_dot if (tstat_flag) nhc_temp_integrate(); if (pstat_flag && mpchain) nhc_press_integrate(); } /* ---------------------------------------------------------------------- */ void FixNH::initial_integrate_respa(int vflag, int ilevel, int iloop) { // set timesteps by level dtv = step_respa[ilevel]; dtf = 0.5 * step_respa[ilevel] * force->ftm2v; dthalf = 0.5 * step_respa[ilevel]; // outermost level - update eta_dot and omega_dot, apply to v // all other levels - NVE update of v // x,v updates only performed for atoms in group if (ilevel == nlevels_respa-1) { // update eta_press_dot if (pstat_flag && mpchain) nhc_press_integrate(); // update eta_dot if (tstat_flag) { compute_temp_target(); nhc_temp_integrate(); } // recompute pressure to account for change in KE // t_current is up-to-date, but compute_temperature is not // compute appropriately coupled elements of mvv_current if (pstat_flag) { if (pstyle == ISO) { temperature->compute_scalar(); pressure->compute_scalar(); } else { temperature->compute_vector(); pressure->compute_vector(); } couple(); pressure->addstep(update->ntimestep+1); } if (pstat_flag) { compute_press_target(); nh_omega_dot(); nh_v_press(); } nve_v(); } else nve_v(); // innermost level - also update x only for atoms in group // if barostat, perform 1/2 step remap before and after if (ilevel == 0) { if (pstat_flag) remap(); nve_x(); if (pstat_flag) remap(); } // if barostat, redo KSpace coeffs at outermost level, // since volume has changed if (ilevel == nlevels_respa-1 && kspace_flag && pstat_flag) force->kspace->setup(); } /* ---------------------------------------------------------------------- */ void FixNH::final_integrate_respa(int ilevel, int iloop) { // set timesteps by level dtf = 0.5 * step_respa[ilevel] * force->ftm2v; dthalf = 0.5 * step_respa[ilevel]; // outermost level - update eta_dot and omega_dot, apply via final_integrate // all other levels - NVE update of v if (ilevel == nlevels_respa-1) final_integrate(); else nve_v(); } /* ---------------------------------------------------------------------- */ void FixNH::couple() { double *tensor = pressure->vector; if (pstyle == ISO) p_current[0] = p_current[1] = p_current[2] = pressure->scalar; else if (pcouple == XYZ) { double ave = 1.0/3.0 * (tensor[0] + tensor[1] + tensor[2]); p_current[0] = p_current[1] = p_current[2] = ave; } else if (pcouple == XY) { double ave = 0.5 * (tensor[0] + tensor[1]); p_current[0] = p_current[1] = ave; p_current[2] = tensor[2]; } else if (pcouple == YZ) { double ave = 0.5 * (tensor[1] + tensor[2]); p_current[1] = p_current[2] = ave; p_current[0] = tensor[0]; } else if (pcouple == XZ) { double ave = 0.5 * (tensor[0] + tensor[2]); p_current[0] = p_current[2] = ave; p_current[1] = tensor[1]; } else { p_current[0] = tensor[0]; p_current[1] = tensor[1]; p_current[2] = tensor[2]; } // switch order from xy-xz-yz to Voigt if (pstyle == TRICLINIC) { p_current[3] = tensor[5]; p_current[4] = tensor[4]; p_current[5] = tensor[3]; } } /* ---------------------------------------------------------------------- change box size remap all atoms or dilate group atoms depending on allremap flag if rigid bodies exist, scale rigid body centers-of-mass ------------------------------------------------------------------------- */ void FixNH::remap() { int i; double oldlo,oldhi; double expfac; double **x = atom->x; int *mask = atom->mask; int nlocal = atom->nlocal; double *h = domain->h; // omega is not used, except for book-keeping for (int i = 0; i < 6; i++) omega[i] += dto*omega_dot[i]; // convert pertinent atoms and rigid bodies to lamda coords if (allremap) domain->x2lamda(nlocal); else { for (i = 0; i < nlocal; i++) if (mask[i] & dilate_group_bit) domain->x2lamda(x[i],x[i]); } if (nrigid) for (i = 0; i < nrigid; i++) modify->fix[rfix[i]]->deform(0); // reset global and local box to new size/shape // this operation corresponds to applying the // translate and scale operations // corresponding to the solution of the following ODE: // // h_dot = omega_dot * h // // where h_dot, omega_dot and h are all upper-triangular // 3x3 tensors. In Voigt notation, the elements of the // RHS product tensor are: // h_dot = [0*0, 1*1, 2*2, 1*3+3*2, 0*4+5*3+4*2, 0*5+5*1] // // Ordering of operations preserves time symmetry. double dto2 = dto/2.0; double dto4 = dto/4.0; double dto8 = dto/8.0; // off-diagonal components, first half if (pstyle == TRICLINIC) { if (p_flag[4]) { expfac = exp(dto8*omega_dot[0]); h[4] *= expfac; h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]); h[4] *= expfac; } if (p_flag[3]) { expfac = exp(dto4*omega_dot[1]); h[3] *= expfac; h[3] += dto2*(omega_dot[3]*h[2]); h[3] *= expfac; } if (p_flag[5]) { expfac = exp(dto4*omega_dot[0]); h[5] *= expfac; h[5] += dto2*(omega_dot[5]*h[1]); h[5] *= expfac; } if (p_flag[4]) { expfac = exp(dto8*omega_dot[0]); h[4] *= expfac; h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]); h[4] *= expfac; } } // scale diagonal components // scale tilt factors with cell, if set if (p_flag[0]) { oldlo = domain->boxlo[0]; oldhi = domain->boxhi[0]; expfac = exp(dto*omega_dot[0]); domain->boxlo[0] = (oldlo-fixedpoint[0])*expfac + fixedpoint[0]; domain->boxhi[0] = (oldhi-fixedpoint[0])*expfac + fixedpoint[0]; } if (p_flag[1]) { oldlo = domain->boxlo[1]; oldhi = domain->boxhi[1]; expfac = exp(dto*omega_dot[1]); domain->boxlo[1] = (oldlo-fixedpoint[1])*expfac + fixedpoint[1]; domain->boxhi[1] = (oldhi-fixedpoint[1])*expfac + fixedpoint[1]; if (scalexy) h[5] *= expfac; } if (p_flag[2]) { oldlo = domain->boxlo[2]; oldhi = domain->boxhi[2]; expfac = exp(dto*omega_dot[2]); domain->boxlo[2] = (oldlo-fixedpoint[2])*expfac + fixedpoint[2]; domain->boxhi[2] = (oldhi-fixedpoint[2])*expfac + fixedpoint[2]; if (scalexz) h[4] *= expfac; if (scaleyz) h[3] *= expfac; } // off-diagonal components, second half if (pstyle == TRICLINIC) { if (p_flag[4]) { expfac = exp(dto8*omega_dot[0]); h[4] *= expfac; h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]); h[4] *= expfac; } if (p_flag[3]) { expfac = exp(dto4*omega_dot[1]); h[3] *= expfac; h[3] += dto2*(omega_dot[3]*h[2]); h[3] *= expfac; } if (p_flag[5]) { expfac = exp(dto4*omega_dot[0]); h[5] *= expfac; h[5] += dto2*(omega_dot[5]*h[1]); h[5] *= expfac; } if (p_flag[4]) { expfac = exp(dto8*omega_dot[0]); h[4] *= expfac; h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]); h[4] *= expfac; } } domain->yz = h[3]; domain->xz = h[4]; domain->xy = h[5]; // tilt factor to cell length ratio can not exceed TILTMAX in one step if (domain->yz < -TILTMAX*domain->yprd || domain->yz > TILTMAX*domain->yprd || domain->xz < -TILTMAX*domain->xprd || domain->xz > TILTMAX*domain->xprd || domain->xy < -TILTMAX*domain->xprd || domain->xy > TILTMAX*domain->xprd) error->all(FLERR,"Fix npt/nph has tilted box too far in one step - " "periodic cell is too far from equilibrium state"); domain->set_global_box(); domain->set_local_box(); // convert pertinent atoms and rigid bodies back to box coords if (allremap) domain->lamda2x(nlocal); else { for (i = 0; i < nlocal; i++) if (mask[i] & dilate_group_bit) domain->lamda2x(x[i],x[i]); } if (nrigid) for (i = 0; i < nrigid; i++) modify->fix[rfix[i]]->deform(1); } /* ---------------------------------------------------------------------- pack entire state of Fix into one write ------------------------------------------------------------------------- */ void FixNH::write_restart(FILE *fp) { int nsize = size_restart_global(); double *list; memory->create(list,nsize,"nh:list"); pack_restart_data(list); if (comm->me == 0) { int size = nsize * sizeof(double); fwrite(&size,sizeof(int),1,fp); fwrite(list,sizeof(double),nsize,fp); } memory->destroy(list); } /* ---------------------------------------------------------------------- calculate the number of data to be packed ------------------------------------------------------------------------- */ int FixNH::size_restart_global() { int nsize = 2; if (tstat_flag) nsize += 1 + 2*mtchain; if (pstat_flag) { nsize += 16 + 2*mpchain; if (deviatoric_flag) nsize += 6; } return nsize; } /* ---------------------------------------------------------------------- pack restart data ------------------------------------------------------------------------- */ int FixNH::pack_restart_data(double *list) { int n = 0; list[n++] = tstat_flag; if (tstat_flag) { list[n++] = mtchain; for (int ich = 0; ich < mtchain; ich++) list[n++] = eta[ich]; for (int ich = 0; ich < mtchain; ich++) list[n++] = eta_dot[ich]; } list[n++] = pstat_flag; if (pstat_flag) { list[n++] = omega[0]; list[n++] = omega[1]; list[n++] = omega[2]; list[n++] = omega[3]; list[n++] = omega[4]; list[n++] = omega[5]; list[n++] = omega_dot[0]; list[n++] = omega_dot[1]; list[n++] = omega_dot[2]; list[n++] = omega_dot[3]; list[n++] = omega_dot[4]; list[n++] = omega_dot[5]; list[n++] = vol0; list[n++] = t0; list[n++] = mpchain; if (mpchain) { for (int ich = 0; ich < mpchain; ich++) list[n++] = etap[ich]; for (int ich = 0; ich < mpchain; ich++) list[n++] = etap_dot[ich]; } list[n++] = deviatoric_flag; if (deviatoric_flag) { list[n++] = h0_inv[0]; list[n++] = h0_inv[1]; list[n++] = h0_inv[2]; list[n++] = h0_inv[3]; list[n++] = h0_inv[4]; list[n++] = h0_inv[5]; } } return n; } /* ---------------------------------------------------------------------- use state info from restart file to restart the Fix ------------------------------------------------------------------------- */ void FixNH::restart(char *buf) { int n = 0; double *list = (double *) buf; int flag = static_cast<int> (list[n++]); if (flag) { int m = static_cast<int> (list[n++]); if (tstat_flag && m == mtchain) { for (int ich = 0; ich < mtchain; ich++) eta[ich] = list[n++]; for (int ich = 0; ich < mtchain; ich++) eta_dot[ich] = list[n++]; } else n += 2*m; } flag = static_cast<int> (list[n++]); if (flag) { omega[0] = list[n++]; omega[1] = list[n++]; omega[2] = list[n++]; omega[3] = list[n++]; omega[4] = list[n++]; omega[5] = list[n++]; omega_dot[0] = list[n++]; omega_dot[1] = list[n++]; omega_dot[2] = list[n++]; omega_dot[3] = list[n++]; omega_dot[4] = list[n++]; omega_dot[5] = list[n++]; vol0 = list[n++]; t0 = list[n++]; int m = static_cast<int> (list[n++]); if (pstat_flag && m == mpchain) { for (int ich = 0; ich < mpchain; ich++) etap[ich] = list[n++]; for (int ich = 0; ich < mpchain; ich++) etap_dot[ich] = list[n++]; } else n+=2*m; flag = static_cast<int> (list[n++]); if (flag) { h0_inv[0] = list[n++]; h0_inv[1] = list[n++]; h0_inv[2] = list[n++]; h0_inv[3] = list[n++]; h0_inv[4] = list[n++]; h0_inv[5] = list[n++]; } } } /* ---------------------------------------------------------------------- */ int FixNH::modify_param(int narg, char **arg) { if (strcmp(arg[0],"temp") == 0) { if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (tflag) { modify->delete_compute(id_temp); tflag = 0; } delete [] id_temp; int n = strlen(arg[1]) + 1; id_temp = new char[n]; strcpy(id_temp,arg[1]); int icompute = modify->find_compute(arg[1]); if (icompute < 0) error->all(FLERR,"Could not find fix_modify temperature ID"); temperature = modify->compute[icompute]; if (temperature->tempflag == 0) error->all(FLERR, "Fix_modify temperature ID does not compute temperature"); if (temperature->igroup != 0 && comm->me == 0) error->warning(FLERR,"Temperature for fix modify is not for group all"); // reset id_temp of pressure to new temperature ID if (pstat_flag) { icompute = modify->find_compute(id_press); if (icompute < 0) error->all(FLERR,"Pressure ID for fix modify does not exist"); modify->compute[icompute]->reset_extra_compute_fix(id_temp); } return 2; } else if (strcmp(arg[0],"press") == 0) { if (narg < 2) error->all(FLERR,"Illegal fix_modify command"); if (!pstat_flag) error->all(FLERR,"Illegal fix_modify command"); if (pflag) { modify->delete_compute(id_press); pflag = 0; } delete [] id_press; int n = strlen(arg[1]) + 1; id_press = new char[n]; strcpy(id_press,arg[1]); int icompute = modify->find_compute(arg[1]); if (icompute < 0) error->all(FLERR,"Could not find fix_modify pressure ID"); pressure = modify->compute[icompute]; if (pressure->pressflag == 0) error->all(FLERR,"Fix_modify pressure ID does not compute pressure"); return 2; } return 0; } /* ---------------------------------------------------------------------- */ double FixNH::compute_scalar() { int i; double volume; double energy; double kt = boltz * t_target; double lkt_press = kt; int ich; if (dimension == 3) volume = domain->xprd * domain->yprd * domain->zprd; else volume = domain->xprd * domain->yprd; energy = 0.0; // thermostat chain energy is equivalent to Eq. (2) in // Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117 // Sum(0.5*p_eta_k^2/Q_k,k=1,M) + L*k*T*eta_1 + Sum(k*T*eta_k,k=2,M), // where L = tdof // M = mtchain // p_eta_k = Q_k*eta_dot[k-1] // Q_1 = L*k*T/t_freq^2 // Q_k = k*T/t_freq^2, k > 1 if (tstat_flag) { energy += ke_target * eta[0] + 0.5*eta_mass[0]*eta_dot[0]*eta_dot[0]; for (ich = 1; ich < mtchain; ich++) energy += kt * eta[ich] + 0.5*eta_mass[ich]*eta_dot[ich]*eta_dot[ich]; } // barostat energy is equivalent to Eq. (8) in // Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117 // Sum(0.5*p_omega^2/W + P*V), // where N = natoms // p_omega = W*omega_dot // W = N*k*T/p_freq^2 // sum is over barostatted dimensions if (pstat_flag) { for (i = 0; i < 3; i++) if (p_flag[i]) energy += 0.5*omega_dot[i]*omega_dot[i]*omega_mass[i] + p_hydro*(volume-vol0) / (pdim*nktv2p); if (pstyle == TRICLINIC) { for (i = 3; i < 6; i++) if (p_flag[i]) energy += 0.5*omega_dot[i]*omega_dot[i]*omega_mass[i]; } // extra contributions from thermostat chain for barostat if (mpchain) { energy += lkt_press * etap[0] + 0.5*etap_mass[0]*etap_dot[0]*etap_dot[0]; for (ich = 1; ich < mpchain; ich++) energy += kt * etap[ich] + 0.5*etap_mass[ich]*etap_dot[ich]*etap_dot[ich]; } // extra contribution from strain energy if (deviatoric_flag) energy += compute_strain_energy(); } return energy; } /* ---------------------------------------------------------------------- return a single element of the following vectors, in this order: eta[tchain], eta_dot[tchain], omega[ndof], omega_dot[ndof] etap[pchain], etap_dot[pchain], PE_eta[tchain], KE_eta_dot[tchain] PE_omega[ndof], KE_omega_dot[ndof], PE_etap[pchain], KE_etap_dot[pchain] PE_strain[1] if no thermostat exists, related quantities are omitted from the list if no barostat exists, related quantities are omitted from the list ndof = 1,3,6 degrees of freedom for pstyle = ISO,ANISO,TRI ------------------------------------------------------------------------- */ double FixNH::compute_vector(int n) { int ilen; if (tstat_flag) { ilen = mtchain; if (n < ilen) return eta[n]; n -= ilen; ilen = mtchain; if (n < ilen) return eta_dot[n]; n -= ilen; } if (pstat_flag) { if (pstyle == ISO) { ilen = 1; if (n < ilen) return omega[n]; n -= ilen; } else if (pstyle == ANISO) { ilen = 3; if (n < ilen) return omega[n]; n -= ilen; } else { ilen = 6; if (n < ilen) return omega[n]; n -= ilen; } if (pstyle == ISO) { ilen = 1; if (n < ilen) return omega_dot[n]; n -= ilen; } else if (pstyle == ANISO) { ilen = 3; if (n < ilen) return omega_dot[n]; n -= ilen; } else { ilen = 6; if (n < ilen) return omega_dot[n]; n -= ilen; } if (mpchain) { ilen = mpchain; if (n < ilen) return etap[n]; n -= ilen; ilen = mpchain; if (n < ilen) return etap_dot[n]; n -= ilen; } } double volume; double kt = boltz * t_target; double lkt_press = kt; int ich; if (dimension == 3) volume = domain->xprd * domain->yprd * domain->zprd; else volume = domain->xprd * domain->yprd; if (tstat_flag) { ilen = mtchain; if (n < ilen) { ich = n; if (ich == 0) return ke_target * eta[0]; else return kt * eta[ich]; } n -= ilen; ilen = mtchain; if (n < ilen) { ich = n; if (ich == 0) return 0.5*eta_mass[0]*eta_dot[0]*eta_dot[0]; else return 0.5*eta_mass[ich]*eta_dot[ich]*eta_dot[ich]; } n -= ilen; } if (pstat_flag) { if (pstyle == ISO) { ilen = 1; if (n < ilen) return p_hydro*(volume-vol0) / nktv2p; n -= ilen; } else if (pstyle == ANISO) { ilen = 3; if (n < ilen) { if (p_flag[n]) return p_hydro*(volume-vol0) / (pdim*nktv2p); else return 0.0; } n -= ilen; } else { ilen = 6; if (n < ilen) { if (n > 2) return 0.0; else if (p_flag[n]) return p_hydro*(volume-vol0) / (pdim*nktv2p); else return 0.0; } n -= ilen; } if (pstyle == ISO) { ilen = 1; if (n < ilen) return pdim*0.5*omega_dot[n]*omega_dot[n]*omega_mass[n]; n -= ilen; } else if (pstyle == ANISO) { ilen = 3; if (n < ilen) { if (p_flag[n]) return 0.5*omega_dot[n]*omega_dot[n]*omega_mass[n]; else return 0.0; } n -= ilen; } else { ilen = 6; if (n < ilen) { if (p_flag[n]) return 0.5*omega_dot[n]*omega_dot[n]*omega_mass[n]; else return 0.0; } n -= ilen; } if (mpchain) { ilen = mpchain; if (n < ilen) { ich = n; if (ich == 0) return lkt_press * etap[0]; else return kt * etap[ich]; } n -= ilen; ilen = mpchain; if (n < ilen) { ich = n; if (ich == 0) return 0.5*etap_mass[0]*etap_dot[0]*etap_dot[0]; else return 0.5*etap_mass[ich]*etap_dot[ich]*etap_dot[ich]; } n -= ilen; } if (deviatoric_flag) { ilen = 1; if (n < ilen) return compute_strain_energy(); n -= ilen; } } return 0.0; } /* ---------------------------------------------------------------------- */ void FixNH::reset_target(double t_new) { t_target = t_start = t_stop = t_new; } /* ---------------------------------------------------------------------- */ void FixNH::reset_dt() { dtv = update->dt; dtf = 0.5 * update->dt * force->ftm2v; dthalf = 0.5 * update->dt; dt4 = 0.25 * update->dt; dt8 = 0.125 * update->dt; dto = dthalf; // If using respa, then remap is performed in innermost level if (strstr(update->integrate_style,"respa")) dto = 0.5*step_respa[0]; if (pstat_flag) pdrag_factor = 1.0 - (update->dt * p_freq_max * drag / nc_pchain); if (tstat_flag) tdrag_factor = 1.0 - (update->dt * t_freq * drag / nc_tchain); } /* ---------------------------------------------------------------------- extract thermostat properties ------------------------------------------------------------------------- */ void *FixNH::extract(const char *str, int &dim) { dim=0; if (strcmp(str,"t_target") == 0) { return &t_target; } else if (strcmp(str,"mtchain") == 0) { return &mtchain; } dim=1; if (strcmp(str,"eta") == 0) { return η } return NULL; } /* ---------------------------------------------------------------------- perform half-step update of chain thermostat variables ------------------------------------------------------------------------- */ void FixNH::nhc_temp_integrate() { int ich; double expfac; double kecurrent = tdof * boltz * t_current; // Update masses, to preserve initial freq, if flag set if (eta_mass_flag) { eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq); for (int ich = 1; ich < mtchain; ich++) eta_mass[ich] = boltz * t_target / (t_freq*t_freq); } if (eta_mass[0] > 0.0) eta_dotdot[0] = (kecurrent - ke_target)/eta_mass[0]; else eta_dotdot[0] = 0.0; double ncfac = 1.0/nc_tchain; for (int iloop = 0; iloop < nc_tchain; iloop++) { for (ich = mtchain-1; ich > 0; ich--) { expfac = exp(-ncfac*dt8*eta_dot[ich+1]); eta_dot[ich] *= expfac; eta_dot[ich] += eta_dotdot[ich] * ncfac*dt4; eta_dot[ich] *= tdrag_factor; eta_dot[ich] *= expfac; } expfac = exp(-ncfac*dt8*eta_dot[1]); eta_dot[0] *= expfac; eta_dot[0] += eta_dotdot[0] * ncfac*dt4; eta_dot[0] *= tdrag_factor; eta_dot[0] *= expfac; factor_eta = exp(-ncfac*dthalf*eta_dot[0]); nh_v_temp(); // rescale temperature due to velocity scaling // should not be necessary to explicitly recompute the temperature t_current *= factor_eta*factor_eta; kecurrent = tdof * boltz * t_current; if (eta_mass[0] > 0.0) eta_dotdot[0] = (kecurrent - ke_target)/eta_mass[0]; else eta_dotdot[0] = 0.0; for (ich = 0; ich < mtchain; ich++) eta[ich] += ncfac*dthalf*eta_dot[ich]; eta_dot[0] *= expfac; eta_dot[0] += eta_dotdot[0] * ncfac*dt4; eta_dot[0] *= expfac; for (ich = 1; ich < mtchain; ich++) { expfac = exp(-ncfac*dt8*eta_dot[ich+1]); eta_dot[ich] *= expfac; eta_dotdot[ich] = (eta_mass[ich-1]*eta_dot[ich-1]*eta_dot[ich-1] - boltz * t_target)/eta_mass[ich]; eta_dot[ich] += eta_dotdot[ich] * ncfac*dt4; eta_dot[ich] *= expfac; } } } /* ---------------------------------------------------------------------- perform half-step update of chain thermostat variables for barostat scale barostat velocities ------------------------------------------------------------------------- */ void FixNH::nhc_press_integrate() { int ich,i; double expfac,factor_etap,kecurrent; double kt = boltz * t_target; double lkt_press = kt; // Update masses, to preserve initial freq, if flag set if (omega_mass_flag) { double nkt = atom->natoms * kt; for (int i = 0; i < 3; i++) if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]); if (pstyle == TRICLINIC) { for (int i = 3; i < 6; i++) if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]); } } if (etap_mass_flag) { if (mpchain) { etap_mass[0] = boltz * t_target / (p_freq_max*p_freq_max); for (int ich = 1; ich < mpchain; ich++) etap_mass[ich] = boltz * t_target / (p_freq_max*p_freq_max); for (int ich = 1; ich < mpchain; ich++) etap_dotdot[ich] = (etap_mass[ich-1]*etap_dot[ich-1]*etap_dot[ich-1] - boltz * t_target) / etap_mass[ich]; } } kecurrent = 0.0; for (i = 0; i < 3; i++) if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i]; if (pstyle == TRICLINIC) { for (i = 3; i < 6; i++) if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i]; } etap_dotdot[0] = (kecurrent - lkt_press)/etap_mass[0]; double ncfac = 1.0/nc_pchain; for (int iloop = 0; iloop < nc_pchain; iloop++) { for (ich = mpchain-1; ich > 0; ich--) { expfac = exp(-ncfac*dt8*etap_dot[ich+1]); etap_dot[ich] *= expfac; etap_dot[ich] += etap_dotdot[ich] * ncfac*dt4; etap_dot[ich] *= pdrag_factor; etap_dot[ich] *= expfac; } expfac = exp(-ncfac*dt8*etap_dot[1]); etap_dot[0] *= expfac; etap_dot[0] += etap_dotdot[0] * ncfac*dt4; etap_dot[0] *= pdrag_factor; etap_dot[0] *= expfac; for (ich = 0; ich < mpchain; ich++) etap[ich] += ncfac*dthalf*etap_dot[ich]; factor_etap = exp(-ncfac*dthalf*etap_dot[0]); for (i = 0; i < 3; i++) if (p_flag[i]) omega_dot[i] *= factor_etap; if (pstyle == TRICLINIC) { for (i = 3; i < 6; i++) if (p_flag[i]) omega_dot[i] *= factor_etap; } kecurrent = 0.0; for (i = 0; i < 3; i++) if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i]; if (pstyle == TRICLINIC) { for (i = 3; i < 6; i++) if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i]; } etap_dotdot[0] = (kecurrent - lkt_press)/etap_mass[0]; etap_dot[0] *= expfac; etap_dot[0] += etap_dotdot[0] * ncfac*dt4; etap_dot[0] *= expfac; for (ich = 1; ich < mpchain; ich++) { expfac = exp(-ncfac*dt8*etap_dot[ich+1]); etap_dot[ich] *= expfac; etap_dotdot[ich] = (etap_mass[ich-1]*etap_dot[ich-1]*etap_dot[ich-1] - boltz*t_target) / etap_mass[ich]; etap_dot[ich] += etap_dotdot[ich] * ncfac*dt4; etap_dot[ich] *= expfac; } } } /* ---------------------------------------------------------------------- perform half-step barostat scaling of velocities -----------------------------------------------------------------------*/ void FixNH::nh_v_press() { double factor[3]; double **v = atom->v; int *mask = atom->mask; int nlocal = atom->nlocal; if (igroup == atom->firstgroup) nlocal = atom->nfirst; factor[0] = exp(-dt4*(omega_dot[0]+mtk_term2)); factor[1] = exp(-dt4*(omega_dot[1]+mtk_term2)); factor[2] = exp(-dt4*(omega_dot[2]+mtk_term2)); if (which == NOBIAS) { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { v[i][0] *= factor[0]; v[i][1] *= factor[1]; v[i][2] *= factor[2]; if (pstyle == TRICLINIC) { v[i][0] += -dthalf*(v[i][1]*omega_dot[5] + v[i][2]*omega_dot[4]); v[i][1] += -dthalf*v[i][2]*omega_dot[3]; } v[i][0] *= factor[0]; v[i][1] *= factor[1]; v[i][2] *= factor[2]; } } } else if (which == BIAS) { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { temperature->remove_bias(i,v[i]); v[i][0] *= factor[0]; v[i][1] *= factor[1]; v[i][2] *= factor[2]; if (pstyle == TRICLINIC) { v[i][0] += -dthalf*(v[i][1]*omega_dot[5] + v[i][2]*omega_dot[4]); v[i][1] += -dthalf*v[i][2]*omega_dot[3]; } v[i][0] *= factor[0]; v[i][1] *= factor[1]; v[i][2] *= factor[2]; temperature->restore_bias(i,v[i]); } } } } /* ---------------------------------------------------------------------- perform half-step update of velocities -----------------------------------------------------------------------*/ void FixNH::nve_v() { double dtfm; double **v = atom->v; double **f = atom->f; double *rmass = atom->rmass; double *mass = atom->mass; int *type = atom->type; int *mask = atom->mask; int nlocal = atom->nlocal; if (igroup == atom->firstgroup) nlocal = atom->nfirst; if (rmass) { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { dtfm = dtf / rmass[i]; v[i][0] += dtfm*f[i][0]; v[i][1] += dtfm*f[i][1]; v[i][2] += dtfm*f[i][2]; } } } else { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { dtfm = dtf / mass[type[i]]; v[i][0] += dtfm*f[i][0]; v[i][1] += dtfm*f[i][1]; v[i][2] += dtfm*f[i][2]; } } } } /* ---------------------------------------------------------------------- perform full-step update of positions -----------------------------------------------------------------------*/ void FixNH::nve_x() { double **x = atom->x; double **v = atom->v; int *mask = atom->mask; int nlocal = atom->nlocal; if (igroup == atom->firstgroup) nlocal = atom->nfirst; // x update by full step only for atoms in group for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { x[i][0] += dtv * v[i][0]; x[i][1] += dtv * v[i][1]; x[i][2] += dtv * v[i][2]; } } } /* ---------------------------------------------------------------------- perform half-step thermostat scaling of velocities -----------------------------------------------------------------------*/ void FixNH::nh_v_temp() { double **v = atom->v; int *mask = atom->mask; int nlocal = atom->nlocal; if (igroup == atom->firstgroup) nlocal = atom->nfirst; if (which == NOBIAS) { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { v[i][0] *= factor_eta; v[i][1] *= factor_eta; v[i][2] *= factor_eta; } } } else if (which == BIAS) { for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { temperature->remove_bias(i,v[i]); v[i][0] *= factor_eta; v[i][1] *= factor_eta; v[i][2] *= factor_eta; temperature->restore_bias(i,v[i]); } } } } /* ---------------------------------------------------------------------- compute sigma tensor needed whenever p_target or h0_inv changes -----------------------------------------------------------------------*/ void FixNH::compute_sigma() { // if nreset_h0 > 0, reset vol0 and h0_inv // every nreset_h0 timesteps if (nreset_h0 > 0) { int delta = update->ntimestep - update->beginstep; if (delta % nreset_h0 == 0) { if (dimension == 3) vol0 = domain->xprd * domain->yprd * domain->zprd; else vol0 = domain->xprd * domain->yprd; h0_inv[0] = domain->h_inv[0]; h0_inv[1] = domain->h_inv[1]; h0_inv[2] = domain->h_inv[2]; h0_inv[3] = domain->h_inv[3]; h0_inv[4] = domain->h_inv[4]; h0_inv[5] = domain->h_inv[5]; } } // generate upper-triangular half of // sigma = vol0*h0inv*(p_target-p_hydro)*h0inv^t // units of sigma are are PV/L^2 e.g. atm.A // // [ 0 5 4 ] [ 0 5 4 ] [ 0 5 4 ] [ 0 - - ] // [ 5 1 3 ] = [ - 1 3 ] [ 5 1 3 ] [ 5 1 - ] // [ 4 3 2 ] [ - - 2 ] [ 4 3 2 ] [ 4 3 2 ] sigma[0] = vol0*(h0_inv[0]*((p_target[0]-p_hydro)*h0_inv[0] + p_target[5]*h0_inv[5]+p_target[4]*h0_inv[4]) + h0_inv[5]*(p_target[5]*h0_inv[0] + (p_target[1]-p_hydro)*h0_inv[5]+p_target[3]*h0_inv[4]) + h0_inv[4]*(p_target[4]*h0_inv[0]+p_target[3]*h0_inv[5] + (p_target[2]-p_hydro)*h0_inv[4])); sigma[1] = vol0*(h0_inv[1]*((p_target[1]-p_hydro)*h0_inv[1] + p_target[3]*h0_inv[3]) + h0_inv[3]*(p_target[3]*h0_inv[1] + (p_target[2]-p_hydro)*h0_inv[3])); sigma[2] = vol0*(h0_inv[2]*((p_target[2]-p_hydro)*h0_inv[2])); sigma[3] = vol0*(h0_inv[1]*(p_target[3]*h0_inv[2]) + h0_inv[3]*((p_target[2]-p_hydro)*h0_inv[2])); sigma[4] = vol0*(h0_inv[0]*(p_target[4]*h0_inv[2]) + h0_inv[5]*(p_target[3]*h0_inv[2]) + h0_inv[4]*((p_target[2]-p_hydro)*h0_inv[2])); sigma[5] = vol0*(h0_inv[0]*(p_target[5]*h0_inv[1]+p_target[4]*h0_inv[3]) + h0_inv[5]*((p_target[1]-p_hydro)*h0_inv[1]+p_target[3]*h0_inv[3]) + h0_inv[4]*(p_target[3]*h0_inv[1]+(p_target[2]-p_hydro)*h0_inv[3])); } /* ---------------------------------------------------------------------- compute strain energy -----------------------------------------------------------------------*/ double FixNH::compute_strain_energy() { // compute strain energy = 0.5*Tr(sigma*h*h^t) in energy units double* h = domain->h; double d0,d1,d2; d0 = sigma[0]*(h[0]*h[0]+h[5]*h[5]+h[4]*h[4]) + sigma[5]*( h[1]*h[5]+h[3]*h[4]) + sigma[4]*( h[2]*h[4]); d1 = sigma[5]*( h[5]*h[1]+h[4]*h[3]) + sigma[1]*( h[1]*h[1]+h[3]*h[3]) + sigma[3]*( h[2]*h[3]); d2 = sigma[4]*( h[4]*h[2]) + sigma[3]*( h[3]*h[2]) + sigma[2]*( h[2]*h[2]); double energy = 0.5*(d0+d1+d2)/nktv2p; return energy; } /* ---------------------------------------------------------------------- compute deviatoric barostat force = h*sigma*h^t -----------------------------------------------------------------------*/ void FixNH::compute_deviatoric() { // generate upper-triangular part of h*sigma*h^t // units of fdev are are PV, e.g. atm*A^3 // [ 0 5 4 ] [ 0 5 4 ] [ 0 5 4 ] [ 0 - - ] // [ 5 1 3 ] = [ - 1 3 ] [ 5 1 3 ] [ 5 1 - ] // [ 4 3 2 ] [ - - 2 ] [ 4 3 2 ] [ 4 3 2 ] double* h = domain->h; fdev[0] = h[0]*(sigma[0]*h[0]+sigma[5]*h[5]+sigma[4]*h[4]) + h[5]*(sigma[5]*h[0]+sigma[1]*h[5]+sigma[3]*h[4]) + h[4]*(sigma[4]*h[0]+sigma[3]*h[5]+sigma[2]*h[4]); fdev[1] = h[1]*( sigma[1]*h[1]+sigma[3]*h[3]) + h[3]*( sigma[3]*h[1]+sigma[2]*h[3]); fdev[2] = h[2]*( sigma[2]*h[2]); fdev[3] = h[1]*( sigma[3]*h[2]) + h[3]*( sigma[2]*h[2]); fdev[4] = h[0]*( sigma[4]*h[2]) + h[5]*( sigma[3]*h[2]) + h[4]*( sigma[2]*h[2]); fdev[5] = h[0]*( sigma[5]*h[1]+sigma[4]*h[3]) + h[5]*( sigma[1]*h[1]+sigma[3]*h[3]) + h[4]*( sigma[3]*h[1]+sigma[2]*h[3]); } /* ---------------------------------------------------------------------- compute target temperature and kinetic energy -----------------------------------------------------------------------*/ void FixNH::compute_temp_target() { double delta = update->ntimestep - update->beginstep; if (delta != 0.0) delta /= update->endstep - update->beginstep; t_target = t_start + delta * (t_stop-t_start); ke_target = tdof * boltz * t_target; } /* ---------------------------------------------------------------------- compute hydrostatic target pressure -----------------------------------------------------------------------*/ void FixNH::compute_press_target() { double delta = update->ntimestep - update->beginstep; if (delta != 0.0) delta /= update->endstep - update->beginstep; p_hydro = 0.0; for (int i = 0; i < 3; i++) if (p_flag[i]) { p_target[i] = p_start[i] + delta * (p_stop[i]-p_start[i]); p_hydro += p_target[i]; } p_hydro /= pdim; if (pstyle == TRICLINIC) for (int i = 3; i < 6; i++) p_target[i] = p_start[i] + delta * (p_stop[i]-p_start[i]); // if deviatoric, recompute sigma each time p_target changes if (deviatoric_flag) compute_sigma(); } /* ---------------------------------------------------------------------- update omega_dot, omega -----------------------------------------------------------------------*/ void FixNH::nh_omega_dot() { double f_omega,volume; if (dimension == 3) volume = domain->xprd*domain->yprd*domain->zprd; else volume = domain->xprd*domain->yprd; if (deviatoric_flag) compute_deviatoric(); mtk_term1 = 0.0; if (mtk_flag) { if (pstyle == ISO) { mtk_term1 = tdof * boltz * t_current; mtk_term1 /= pdim * atom->natoms; } else { double *mvv_current = temperature->vector; for (int i = 0; i < 3; i++) if (p_flag[i]) mtk_term1 += mvv_current[i]; mtk_term1 /= pdim * atom->natoms; } } for (int i = 0; i < 3; i++) if (p_flag[i]) { f_omega = (p_current[i]-p_hydro)*volume / (omega_mass[i] * nktv2p) + mtk_term1 / omega_mass[i]; if (deviatoric_flag) f_omega -= fdev[i]/(omega_mass[i] * nktv2p); omega_dot[i] += f_omega*dthalf; omega_dot[i] *= pdrag_factor; } mtk_term2 = 0.0; if (mtk_flag) { for (int i = 0; i < 3; i++) if (p_flag[i]) mtk_term2 += omega_dot[i]; mtk_term2 /= pdim * atom->natoms; } if (pstyle == TRICLINIC) { for (int i = 3; i < 6; i++) { if (p_flag[i]) { f_omega = p_current[i]*volume/(omega_mass[i] * nktv2p); if (deviatoric_flag) f_omega -= fdev[i]/(omega_mass[i] * nktv2p); omega_dot[i] += f_omega*dthalf; omega_dot[i] *= pdrag_factor; } } } } /* ---------------------------------------------------------------------- if any tilt ratios exceed limits, set flip = 1 and compute new tilt values do not flip in x or y if non-periodic (can tilt but not flip) this is b/c the box length would be changed (dramatically) by flip if yz tilt exceeded, adjust C vector by one B vector if xz tilt exceeded, adjust C vector by one A vector if xy tilt exceeded, adjust B vector by one A vector check yz first since it may change xz, then xz check comes after if any flip occurs, create new box in domain image_flip() adjusts image flags due to box shape change induced by flip remap() puts atoms outside the new box back into the new box perform irregular on atoms in lamda coords to migrate atoms to new procs important that image_flip comes before remap, since remap may change image flags to new values, making eqs in doc of Domain:image_flip incorrect ------------------------------------------------------------------------- */ void FixNH::pre_exchange() { double xprd = domain->xprd; double yprd = domain->yprd; // flip is only triggered when tilt exceeds 0.5 by DELTAFLIP // this avoids immediate re-flipping due to tilt oscillations double xtiltmax = (0.5+DELTAFLIP)*xprd; double ytiltmax = (0.5+DELTAFLIP)*yprd; int flipxy,flipxz,flipyz; flipxy = flipxz = flipyz = 0; if (domain->yperiodic) { if (domain->yz < -ytiltmax) { domain->yz += yprd; domain->xz += domain->xy; flipyz = 1; } else if (domain->yz >= ytiltmax) { domain->yz -= yprd; domain->xz -= domain->xy; flipyz = -1; } } if (domain->xperiodic) { if (domain->xz < -xtiltmax) { domain->xz += xprd; flipxz = 1; } else if (domain->xz >= xtiltmax) { domain->xz -= xprd; flipxz = -1; } if (domain->xy < -xtiltmax) { domain->xy += xprd; flipxy = 1; } else if (domain->xy >= xtiltmax) { domain->xy -= xprd; flipxy = -1; } } int flip = 0; if (flipxy || flipxz || flipyz) flip = 1; if (flip) { domain->set_global_box(); domain->set_local_box(); domain->image_flip(flipxy,flipxz,flipyz); double **x = atom->x; imageint *image = atom->image; int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) domain->remap(x[i],image[i]); domain->x2lamda(atom->nlocal); irregular->migrate_atoms(); domain->lamda2x(atom->nlocal); } } /* ---------------------------------------------------------------------- memory usage of Irregular ------------------------------------------------------------------------- */ double FixNH::memory_usage() { double bytes = 0.0; if (irregular) bytes += irregular->memory_usage(); return bytes; } diff --git a/src/fix_wall_region.cpp b/src/fix_wall_region.cpp index d854410b4..08aa7c9f9 100644 --- a/src/fix_wall_region.cpp +++ b/src/fix_wall_region.cpp @@ -1,361 +1,363 @@ /* ---------------------------------------------------------------------- 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 "math.h" #include "stdlib.h" #include "string.h" #include "fix_wall_region.h" #include "atom.h" #include "atom_vec.h" #include "domain.h" #include "region.h" #include "force.h" #include "lattice.h" #include "update.h" #include "output.h" #include "respa.h" #include "error.h" using namespace LAMMPS_NS; using namespace FixConst; enum{LJ93,LJ126,COLLOID,HARMONIC}; /* ---------------------------------------------------------------------- */ FixWallRegion::FixWallRegion(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { if (narg != 8) error->all(FLERR,"Illegal fix wall/region command"); scalar_flag = 1; vector_flag = 1; size_vector = 3; global_freq = 1; extscalar = 1; extvector = 1; // parse args iregion = domain->find_region(arg[3]); if (iregion == -1) error->all(FLERR,"Region ID for fix wall/region does not exist"); int n = strlen(arg[3]) + 1; idregion = new char[n]; strcpy(idregion,arg[3]); if (strcmp(arg[4],"lj93") == 0) style = LJ93; else if (strcmp(arg[4],"lj126") == 0) style = LJ126; else if (strcmp(arg[4],"colloid") == 0) style = COLLOID; else if (strcmp(arg[4],"harmonic") == 0) style = HARMONIC; else error->all(FLERR,"Illegal fix wall/region command"); epsilon = force->numeric(FLERR,arg[5]); sigma = force->numeric(FLERR,arg[6]); cutoff = force->numeric(FLERR,arg[7]); if (cutoff <= 0.0) error->all(FLERR,"Fix wall/region cutoff <= 0.0"); eflag = 0; ewall[0] = ewall[1] = ewall[2] = ewall[3] = 0.0; } /* ---------------------------------------------------------------------- */ FixWallRegion::~FixWallRegion() { delete [] idregion; } /* ---------------------------------------------------------------------- */ int FixWallRegion::setmask() { int mask = 0; mask |= POST_FORCE; mask |= THERMO_ENERGY; mask |= POST_FORCE_RESPA; mask |= MIN_POST_FORCE; return mask; } /* ---------------------------------------------------------------------- */ void FixWallRegion::init() { // set index and check validity of region iregion = domain->find_region(idregion); if (iregion == -1) error->all(FLERR,"Region ID for fix wall/region does not exist"); // error checks for style COLLOID // insure all particles in group are extended particles if (style == COLLOID) { if (!atom->sphere_flag) error->all(FLERR,"Fix wall/region colloid requires atom style sphere"); double *radius = atom->radius; int *mask = atom->mask; int nlocal = atom->nlocal; int flag = 0; for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) if (radius[i] == 0.0) flag = 1; int flagall; MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world); if (flagall) error->all(FLERR,"Fix wall/region colloid requires extended particles"); } // setup coefficients for each style if (style == LJ93) { coeff1 = 6.0/5.0 * epsilon * pow(sigma,9.0); coeff2 = 3.0 * epsilon * pow(sigma,3.0); coeff3 = 2.0/15.0 * epsilon * pow(sigma,9.0); coeff4 = epsilon * pow(sigma,3.0); double rinv = 1.0/cutoff; double r2inv = rinv*rinv; double r4inv = r2inv*r2inv; offset = coeff3*r4inv*r4inv*rinv - coeff4*r2inv*rinv; } else if (style == LJ126) { coeff1 = 48.0 * epsilon * pow(sigma,12.0); coeff2 = 24.0 * epsilon * pow(sigma,6.0); coeff3 = 4.0 * epsilon * pow(sigma,12.0); coeff4 = 4.0 * epsilon * pow(sigma,6.0); double r2inv = 1.0/(cutoff*cutoff); double r6inv = r2inv*r2inv*r2inv; offset = r6inv*(coeff3*r6inv - coeff4); } else if (style == COLLOID) { coeff1 = -4.0/315.0 * epsilon * pow(sigma,6.0); coeff2 = -2.0/3.0 * epsilon; coeff3 = epsilon * pow(sigma,6.0)/7560.0; coeff4 = epsilon/6.0; double rinv = 1.0/cutoff; double r2inv = rinv*rinv; double r4inv = r2inv*r2inv; offset = coeff3*r4inv*r4inv*rinv - coeff4*r2inv*rinv; } if (strstr(update->integrate_style,"respa")) nlevels_respa = ((Respa *) update->integrate)->nlevels; } /* ---------------------------------------------------------------------- */ void FixWallRegion::setup(int vflag) { if (strstr(update->integrate_style,"verlet")) 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 FixWallRegion::min_setup(int vflag) { post_force(vflag); } /* ---------------------------------------------------------------------- */ void FixWallRegion::post_force(int vflag) { int i,m,n; double rinv,fx,fy,fz,tooclose; - eflag = 0; - ewall[0] = ewall[1] = ewall[2] = ewall[3] = 0.0; - double **x = atom->x; double **f = atom->f; double *radius = atom->radius; int *mask = atom->mask; int nlocal = atom->nlocal; Region *region = domain->regions[iregion]; region->prematch(); int onflag = 0; // region->match() insures particle is in region or on surface, else error // if returned contact dist r = 0, is on surface, also an error // in COLLOID case, r <= radius is an error + // initilize ewall after region->prematch(), + // so a dynamic region can access last timestep values + + eflag = 0; + ewall[0] = ewall[1] = ewall[2] = ewall[3] = 0.0; for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) { if (!region->match(x[i][0],x[i][1],x[i][2])) { onflag = 1; continue; } if (style == COLLOID) tooclose = radius[i]; else tooclose = 0.0; n = region->surface(x[i][0],x[i][1],x[i][2],cutoff); for (m = 0; m < n; m++) { if (region->contact[m].r <= tooclose) { onflag = 1; continue; } else rinv = 1.0/region->contact[m].r; if (style == LJ93) lj93(region->contact[m].r); else if (style == LJ126) lj126(region->contact[m].r); else if (style == COLLOID) colloid(region->contact[m].r,radius[i]); else harmonic(region->contact[m].r); ewall[0] += eng; fx = fwall * region->contact[m].delx * rinv; fy = fwall * region->contact[m].dely * rinv; fz = fwall * region->contact[m].delz * rinv; f[i][0] += fx; f[i][1] += fy; f[i][2] += fz; ewall[1] -= fx; ewall[2] -= fy; ewall[3] -= fz; } } if (onflag) error->one(FLERR,"Particle outside surface of region " "used in fix wall/region"); } /* ---------------------------------------------------------------------- */ void FixWallRegion::post_force_respa(int vflag, int ilevel, int iloop) { if (ilevel == nlevels_respa-1) post_force(vflag); } /* ---------------------------------------------------------------------- */ void FixWallRegion::min_post_force(int vflag) { post_force(vflag); } /* ---------------------------------------------------------------------- energy of wall interaction ------------------------------------------------------------------------- */ double FixWallRegion::compute_scalar() { // only sum across procs one time if (eflag == 0) { MPI_Allreduce(ewall,ewall_all,4,MPI_DOUBLE,MPI_SUM,world); eflag = 1; } return ewall_all[0]; } /* ---------------------------------------------------------------------- components of force on wall ------------------------------------------------------------------------- */ double FixWallRegion::compute_vector(int n) { // only sum across procs one time if (eflag == 0) { MPI_Allreduce(ewall,ewall_all,4,MPI_DOUBLE,MPI_SUM,world); eflag = 1; } return ewall_all[n+1]; } /* ---------------------------------------------------------------------- LJ 9/3 interaction for particle with wall compute eng and fwall = magnitude of wall force ------------------------------------------------------------------------- */ void FixWallRegion::lj93(double r) { double rinv = 1.0/r; double r2inv = rinv*rinv; double r4inv = r2inv*r2inv; double r10inv = r4inv*r4inv*r2inv; fwall = coeff1*r10inv - coeff2*r4inv; eng = coeff3*r4inv*r4inv*rinv - coeff4*r2inv*rinv - offset; } /* ---------------------------------------------------------------------- LJ 12/6 interaction for particle with wall compute eng and fwall = magnitude of wall force ------------------------------------------------------------------------- */ void FixWallRegion::lj126(double r) { double rinv = 1.0/r; double r2inv = rinv*rinv; double r6inv = r2inv*r2inv*r2inv; fwall = r6inv*(coeff1*r6inv - coeff2) * rinv; eng = r6inv*(coeff3*r6inv - coeff4) - offset; } /* ---------------------------------------------------------------------- colloid interaction for finite-size particle of rad with wall compute eng and fwall = magnitude of wall force ------------------------------------------------------------------------- */ void FixWallRegion::colloid(double r, double rad) { double new_coeff2 = coeff2*rad*rad*rad; double diam = 2.0*rad; double rad2 = rad*rad; double rad4 = rad2*rad2; double rad8 = rad4*rad4; double delta2 = rad2 - r*r; double rinv = 1.0/delta2; double r2inv = rinv*rinv; double r4inv = r2inv*r2inv; double r8inv = r4inv*r4inv; fwall = coeff1*(rad8*rad + 27.0*rad4*rad2*rad*pow(r,2.0) + 63.0*rad4*rad*pow(r,4.0) + 21.0*rad2*rad*pow(r,6.0))*r8inv - new_coeff2*r2inv; double r2 = 0.5*diam - r; double rinv2 = 1.0/r2; double r2inv2 = rinv2*rinv2; double r4inv2 = r2inv2*r2inv2; double r3 = r + 0.5*diam; double rinv3 = 1.0/r3; double r2inv3 = rinv3*rinv3; double r4inv3 = r2inv3*r2inv3; eng = coeff3*((-3.5*diam+r)*r4inv2*r2inv2*rinv2 + (3.5*diam+r)*r4inv3*r2inv3*rinv3) - coeff4*((-diam*r+r2*r3*(log(-r2)-log(r3)))* (-rinv2)*rinv3) - offset; } /* ---------------------------------------------------------------------- harmonic interaction for particle with wall compute eng and fwall = magnitude of wall force ------------------------------------------------------------------------- */ void FixWallRegion::harmonic(double r) { double dr = cutoff - r; fwall = 2.0*epsilon*dr; eng = epsilon*dr*dr; } diff --git a/src/force.cpp b/src/force.cpp index aa70874ad..f51b0c181 100644 --- a/src/force.cpp +++ b/src/force.cpp @@ -1,1020 +1,1023 @@ /* ---------------------------------------------------------------------- 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 "stdlib.h" #include "string.h" #include "ctype.h" #include "force.h" #include "style_bond.h" #include "style_angle.h" #include "style_dihedral.h" #include "style_improper.h" #include "style_pair.h" #include "style_kspace.h" #include "atom.h" #include "comm.h" #include "pair.h" #include "pair_hybrid.h" #include "pair_hybrid_overlay.h" #include "bond.h" #include "bond_hybrid.h" #include "angle.h" #include "dihedral.h" #include "improper.h" #include "kspace.h" #include "group.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; #define MAXLINE 1024 /* ---------------------------------------------------------------------- */ Force::Force(LAMMPS *lmp) : Pointers(lmp) { newton = newton_pair = newton_bond = 1; special_lj[0] = special_coul[0] = 1.0; special_lj[1] = special_lj[2] = special_lj[3] = 0.0; special_coul[1] = special_coul[2] = special_coul[3] = 0.0; special_angle = special_dihedral = 0; special_extra = 0; dielectric = 1.0; pair = NULL; bond = NULL; angle = NULL; dihedral = NULL; improper = NULL; kspace = NULL; char *str = (char *) "none"; int n = strlen(str) + 1; pair_style = new char[n]; strcpy(pair_style,str); bond_style = new char[n]; strcpy(bond_style,str); angle_style = new char[n]; strcpy(angle_style,str); dihedral_style = new char[n]; strcpy(dihedral_style,str); improper_style = new char[n]; strcpy(improper_style,str); kspace_style = new char[n]; strcpy(kspace_style,str); // fill pair map with pair styles listed in style_pair.h pair_map = new std::map<std::string,PairCreator>(); #define PAIR_CLASS #define PairStyle(key,Class) \ (*pair_map)[#key] = &pair_creator<Class>; #include "style_pair.h" #undef PairStyle #undef PAIR_CLASS } /* ---------------------------------------------------------------------- */ Force::~Force() { delete [] pair_style; delete [] bond_style; delete [] angle_style; delete [] dihedral_style; delete [] improper_style; delete [] kspace_style; if (pair) delete pair; if (bond) delete bond; if (angle) delete angle; if (dihedral) delete dihedral; if (improper) delete improper; if (kspace) delete kspace; pair = NULL; bond = NULL; angle = NULL; dihedral = NULL; improper = NULL; kspace = NULL; delete pair_map; } /* ---------------------------------------------------------------------- */ void Force::init() { qqrd2e = qqr2e/dielectric; if (kspace) kspace->init(); // kspace must come before pair if (pair) pair->init(); // so g_ewald is defined if (bond) bond->init(); if (angle) angle->init(); if (dihedral) dihedral->init(); if (improper) improper->init(); } /* ---------------------------------------------------------------------- create a pair style, called from input script or restart file ------------------------------------------------------------------------- */ void Force::create_pair(const char *style, int trysuffix) { delete [] pair_style; if (pair) delete pair; int sflag; pair = new_pair(style,trysuffix,sflag); store_style(pair_style,style,sflag); } /* ---------------------------------------------------------------------- generate a pair class if trysuffix = 1, try first with suffix1/2 appended return sflag = 0 for no suffix added, 1 or 2 for suffix1/2 added ------------------------------------------------------------------------- */ Pair *Force::new_pair(const char *style, int trysuffix, int &sflag) { if (trysuffix && lmp->suffix_enable) { if (lmp->suffix) { sflag = 1; char estyle[256]; sprintf(estyle,"%s/%s",style,lmp->suffix); if (pair_map->find(estyle) != pair_map->end()) { PairCreator pair_creator = (*pair_map)[estyle]; return pair_creator(lmp); } } if (lmp->suffix2) { sflag = 2; char estyle[256]; sprintf(estyle,"%s/%s",style,lmp->suffix2); if (pair_map->find(estyle) != pair_map->end()) { PairCreator pair_creator = (*pair_map)[estyle]; return pair_creator(lmp); } } } sflag = 0; if (strcmp(style,"none") == 0) return NULL; if (pair_map->find(style) != pair_map->end()) { PairCreator pair_creator = (*pair_map)[style]; return pair_creator(lmp); } error->all(FLERR,"Unknown pair style"); return NULL; } /* ---------------------------------------------------------------------- one instance per pair style in style_pair.h ------------------------------------------------------------------------- */ template <typename T> Pair *Force::pair_creator(LAMMPS *lmp) { return new T(lmp); } /* ---------------------------------------------------------------------- return ptr to Pair class if matches word or matches hybrid sub-style if exact, then style name must be exact match to word if not exact, style name must contain word - return NULL if no match or multiple sub-styles match + if nsub > 0, match Nth hybrid sub-style + return NULL if no match or if nsub=0 and multiple sub-styles match ------------------------------------------------------------------------- */ -Pair *Force::pair_match(const char *word, int exact) +Pair *Force::pair_match(const char *word, int exact, int nsub) { int iwhich,count; if (exact && strcmp(pair_style,word) == 0) return pair; else if (!exact && strstr(pair_style,word)) return pair; else if (strstr(pair_style,"hybrid/overlay")) { PairHybridOverlay *hybrid = (PairHybridOverlay *) pair; count = 0; for (int i = 0; i < hybrid->nstyles; i++) if ((exact && strcmp(hybrid->keywords[i],word) == 0) || (!exact && strstr(hybrid->keywords[i],word))) { iwhich = i; count++; + if (nsub == count) return hybrid->styles[iwhich]; } if (count == 1) return hybrid->styles[iwhich]; } else if (strstr(pair_style,"hybrid")) { PairHybrid *hybrid = (PairHybrid *) pair; count = 0; for (int i = 0; i < hybrid->nstyles; i++) if ((exact && strcmp(hybrid->keywords[i],word) == 0) || (!exact && strstr(hybrid->keywords[i],word))) { iwhich = i; count++; + if (nsub == count) return hybrid->styles[iwhich]; } if (count == 1) return hybrid->styles[iwhich]; } return NULL; } /* ---------------------------------------------------------------------- create a bond style, called from input script or restart file ------------------------------------------------------------------------- */ void Force::create_bond(const char *style, int trysuffix) { delete [] bond_style; if (bond) delete bond; int sflag; bond = new_bond(style,trysuffix,sflag); store_style(bond_style,style,sflag); } /* ---------------------------------------------------------------------- generate a bond class, fist with suffix appended ------------------------------------------------------------------------- */ Bond *Force::new_bond(const char *style, int trysuffix, int &sflag) { if (trysuffix && lmp->suffix_enable) { if (lmp->suffix) { sflag = 1; char estyle[256]; sprintf(estyle,"%s/%s",style,lmp->suffix); if (0) return NULL; #define BOND_CLASS #define BondStyle(key,Class) \ else if (strcmp(estyle,#key) == 0) return new Class(lmp); #include "style_bond.h" #undef BondStyle #undef BOND_CLASS } if (lmp->suffix2) { sflag = 2; char estyle[256]; sprintf(estyle,"%s/%s",style,lmp->suffix2); if (0) return NULL; #define BOND_CLASS #define BondStyle(key,Class) \ else if (strcmp(estyle,#key) == 0) return new Class(lmp); #include "style_bond.h" #undef BondStyle #undef BOND_CLASS } } sflag = 0; if (strcmp(style,"none") == 0) return NULL; #define BOND_CLASS #define BondStyle(key,Class) \ else if (strcmp(style,#key) == 0) return new Class(lmp); #include "style_bond.h" #undef BOND_CLASS else error->all(FLERR,"Unknown bond style"); return NULL; } /* ---------------------------------------------------------------------- return ptr to current bond class or hybrid sub-class if matches style ------------------------------------------------------------------------- */ Bond *Force::bond_match(const char *style) { if (strcmp(bond_style,style) == 0) return bond; else if (strcmp(bond_style,"hybrid") == 0) { BondHybrid *hybrid = (BondHybrid *) bond; for (int i = 0; i < hybrid->nstyles; i++) if (strcmp(hybrid->keywords[i],style) == 0) return hybrid->styles[i]; } return NULL; } /* ---------------------------------------------------------------------- create an angle style, called from input script or restart file ------------------------------------------------------------------------- */ void Force::create_angle(const char *style, int trysuffix) { delete [] angle_style; if (angle) delete angle; int sflag; angle = new_angle(style,trysuffix,sflag); store_style(angle_style,style,sflag); } /* ---------------------------------------------------------------------- generate an angle class ------------------------------------------------------------------------- */ Angle *Force::new_angle(const char *style, int trysuffix, int &sflag) { if (trysuffix && lmp->suffix_enable) { if (lmp->suffix) { sflag = 1; char estyle[256]; sprintf(estyle,"%s/%s",style,lmp->suffix); if (0) return NULL; #define ANGLE_CLASS #define AngleStyle(key,Class) \ else if (strcmp(estyle,#key) == 0) return new Class(lmp); #include "style_angle.h" #undef AngleStyle #undef ANGLE_CLASS } if (lmp->suffix2) { sflag = 2; char estyle[256]; sprintf(estyle,"%s/%s",style,lmp->suffix); if (0) return NULL; #define ANGLE_CLASS #define AngleStyle(key,Class) \ else if (strcmp(estyle,#key) == 0) return new Class(lmp); #include "style_angle.h" #undef AngleStyle #undef ANGLE_CLASS } } sflag = 0; if (strcmp(style,"none") == 0) return NULL; #define ANGLE_CLASS #define AngleStyle(key,Class) \ else if (strcmp(style,#key) == 0) return new Class(lmp); #include "style_angle.h" #undef ANGLE_CLASS else error->all(FLERR,"Unknown angle style"); return NULL; } /* ---------------------------------------------------------------------- create a dihedral style, called from input script or restart file ------------------------------------------------------------------------- */ void Force::create_dihedral(const char *style, int trysuffix) { delete [] dihedral_style; if (dihedral) delete dihedral; int sflag; dihedral = new_dihedral(style,trysuffix,sflag); store_style(dihedral_style,style,sflag); } /* ---------------------------------------------------------------------- generate a dihedral class ------------------------------------------------------------------------- */ Dihedral *Force::new_dihedral(const char *style, int trysuffix, int &sflag) { if (trysuffix && lmp->suffix_enable) { if (lmp->suffix) { sflag = 1; char estyle[256]; sprintf(estyle,"%s/%s",style,lmp->suffix); if (0) return NULL; #define DIHEDRAL_CLASS #define DihedralStyle(key,Class) \ else if (strcmp(estyle,#key) == 0) return new Class(lmp); #include "style_dihedral.h" #undef DihedralStyle #undef DIHEDRAL_CLASS } if (lmp->suffix2) { sflag = 2; char estyle[256]; sprintf(estyle,"%s/%s",style,lmp->suffix2); if (0) return NULL; #define DIHEDRAL_CLASS #define DihedralStyle(key,Class) \ else if (strcmp(estyle,#key) == 0) return new Class(lmp); #include "style_dihedral.h" #undef DihedralStyle #undef DIHEDRAL_CLASS } } sflag = 0; if (strcmp(style,"none") == 0) return NULL; #define DIHEDRAL_CLASS #define DihedralStyle(key,Class) \ else if (strcmp(style,#key) == 0) return new Class(lmp); #include "style_dihedral.h" #undef DihedralStyle #undef DIHEDRAL_CLASS else error->all(FLERR,"Unknown dihedral style"); return NULL; } /* ---------------------------------------------------------------------- create an improper style, called from input script or restart file ------------------------------------------------------------------------- */ void Force::create_improper(const char *style, int trysuffix) { delete [] improper_style; if (improper) delete improper; int sflag; improper = new_improper(style,trysuffix,sflag); store_style(improper_style,style,sflag); } /* ---------------------------------------------------------------------- generate a improper class ------------------------------------------------------------------------- */ Improper *Force::new_improper(const char *style, int trysuffix, int &sflag) { if (trysuffix && lmp->suffix_enable) { if (lmp->suffix) { sflag = 1; char estyle[256]; sprintf(estyle,"%s/%s",style,lmp->suffix); if (0) return NULL; #define IMPROPER_CLASS #define ImproperStyle(key,Class) \ else if (strcmp(estyle,#key) == 0) return new Class(lmp); #include "style_improper.h" #undef ImproperStyle #undef IMPROPER_CLASS } if (lmp->suffix2) { sflag = 2; char estyle[256]; sprintf(estyle,"%s/%s",style,lmp->suffix2); if (0) return NULL; #define IMPROPER_CLASS #define ImproperStyle(key,Class) \ else if (strcmp(estyle,#key) == 0) return new Class(lmp); #include "style_improper.h" #undef ImproperStyle #undef IMPROPER_CLASS } } sflag = 0; if (strcmp(style,"none") == 0) return NULL; #define IMPROPER_CLASS #define ImproperStyle(key,Class) \ else if (strcmp(style,#key) == 0) return new Class(lmp); #include "style_improper.h" #undef IMPROPER_CLASS else error->all(FLERR,"Unknown improper style"); return NULL; } /* ---------------------------------------------------------------------- return ptr to current improper class or hybrid sub-class if matches style ------------------------------------------------------------------------- */ Improper *Force::improper_match(const char *style) { if (strcmp(improper_style,style) == 0) return improper; else if (strcmp(improper_style,"hybrid") == 0) { ImproperHybrid *hybrid = (ImproperHybrid *) bond; for (int i = 0; i < hybrid->nstyles; i++) if (strcmp(hybrid->keywords[i],style) == 0) return hybrid->styles[i]; } return NULL; } /* ---------------------------------------------------------------------- new kspace style ------------------------------------------------------------------------- */ void Force::create_kspace(int narg, char **arg, int trysuffix) { delete [] kspace_style; if (kspace) delete kspace; int sflag; kspace = new_kspace(narg,arg,trysuffix,sflag); store_style(kspace_style,arg[0],sflag); if (comm->style == 1 && !kspace_match("ewald",0)) error->all(FLERR, "Cannot yet use KSpace solver with grid with comm style tiled"); } /* ---------------------------------------------------------------------- generate a kspace class ------------------------------------------------------------------------- */ KSpace *Force::new_kspace(int narg, char **arg, int trysuffix, int &sflag) { if (trysuffix && lmp->suffix_enable) { if (lmp->suffix) { sflag = 1; char estyle[256]; sprintf(estyle,"%s/%s",arg[0],lmp->suffix); if (0) return NULL; #define KSPACE_CLASS #define KSpaceStyle(key,Class) \ else if (strcmp(estyle,#key) == 0) return new Class(lmp,narg-1,&arg[1]); #include "style_kspace.h" #undef KSpaceStyle #undef KSPACE_CLASS } if (lmp->suffix2) { sflag = 1; char estyle[256]; sprintf(estyle,"%s/%s",arg[0],lmp->suffix2); if (0) return NULL; #define KSPACE_CLASS #define KSpaceStyle(key,Class) \ else if (strcmp(estyle,#key) == 0) return new Class(lmp,narg-1,&arg[1]); #include "style_kspace.h" #undef KSpaceStyle #undef KSPACE_CLASS } } sflag = 0; if (strcmp(arg[0],"none") == 0) return NULL; #define KSPACE_CLASS #define KSpaceStyle(key,Class) \ else if (strcmp(arg[0],#key) == 0) return new Class(lmp,narg-1,&arg[1]); #include "style_kspace.h" #undef KSPACE_CLASS else error->all(FLERR,"Unknown kspace style"); return NULL; } /* ---------------------------------------------------------------------- return ptr to Kspace class if matches word if exact, then style name must be exact match to word if not exact, style name must contain word return NULL if no match ------------------------------------------------------------------------- */ KSpace *Force::kspace_match(const char *word, int exact) { if (exact && strcmp(kspace_style,word) == 0) return kspace; else if (!exact && strstr(kspace_style,word)) return kspace; return NULL; } /* ---------------------------------------------------------------------- store style name in str allocated here if sflag = 0, no suffix if sflag = 1/2, append suffix or suffix2 to style ------------------------------------------------------------------------- */ void Force::store_style(char *&str, const char *style, int sflag) { if (sflag) { char estyle[256]; if (sflag == 1) sprintf(estyle,"%s/%s",style,lmp->suffix); else sprintf(estyle,"%s/%s",style,lmp->suffix2); int n = strlen(estyle) + 1; str = new char[n]; strcpy(str,estyle); } else { int n = strlen(style) + 1; str = new char[n]; strcpy(str,style); } } /* ---------------------------------------------------------------------- set special bond values ------------------------------------------------------------------------- */ void Force::set_special(int narg, char **arg) { if (narg == 0) error->all(FLERR,"Illegal special_bonds command"); // defaults, but do not reset special_extra special_lj[1] = special_lj[2] = special_lj[3] = 0.0; special_coul[1] = special_coul[2] = special_coul[3] = 0.0; special_angle = special_dihedral = 0; int iarg = 0; while (iarg < narg) { if (strcmp(arg[iarg],"amber") == 0) { if (iarg+1 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = 0.0; special_lj[2] = 0.0; special_lj[3] = 0.5; special_coul[1] = 0.0; special_coul[2] = 0.0; special_coul[3] = 5.0/6.0; iarg += 1; } else if (strcmp(arg[iarg],"charmm") == 0) { if (iarg+1 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = 0.0; special_lj[2] = 0.0; special_lj[3] = 0.0; special_coul[1] = 0.0; special_coul[2] = 0.0; special_coul[3] = 0.0; iarg += 1; } else if (strcmp(arg[iarg],"dreiding") == 0) { if (iarg+1 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = 0.0; special_lj[2] = 0.0; special_lj[3] = 1.0; special_coul[1] = 0.0; special_coul[2] = 0.0; special_coul[3] = 1.0; iarg += 1; } else if (strcmp(arg[iarg],"fene") == 0) { if (iarg+1 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = 0.0; special_lj[2] = 1.0; special_lj[3] = 1.0; special_coul[1] = 0.0; special_coul[2] = 1.0; special_coul[3] = 1.0; iarg += 1; } else if (strcmp(arg[iarg],"lj/coul") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = special_coul[1] = numeric(FLERR,arg[iarg+1]); special_lj[2] = special_coul[2] = numeric(FLERR,arg[iarg+2]); special_lj[3] = special_coul[3] = numeric(FLERR,arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"lj") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal special_bonds command"); special_lj[1] = numeric(FLERR,arg[iarg+1]); special_lj[2] = numeric(FLERR,arg[iarg+2]); special_lj[3] = numeric(FLERR,arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"coul") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal special_bonds command"); special_coul[1] = numeric(FLERR,arg[iarg+1]); special_coul[2] = numeric(FLERR,arg[iarg+2]); special_coul[3] = numeric(FLERR,arg[iarg+3]); iarg += 4; } else if (strcmp(arg[iarg],"angle") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal special_bonds command"); if (strcmp(arg[iarg+1],"no") == 0) special_angle = 0; else if (strcmp(arg[iarg+1],"yes") == 0) special_angle = 1; else error->all(FLERR,"Illegal special_bonds command"); iarg += 2; } else if (strcmp(arg[iarg],"dihedral") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal special_bonds command"); if (strcmp(arg[iarg+1],"no") == 0) special_dihedral = 0; else if (strcmp(arg[iarg+1],"yes") == 0) special_dihedral = 1; else error->all(FLERR,"Illegal special_bonds command"); iarg += 2; } else if (strcmp(arg[iarg],"extra") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal special_bonds command"); special_extra = atoi(arg[iarg+1]); iarg += 2; } else error->all(FLERR,"Illegal special_bonds command"); } for (int i = 1; i <= 3; i++) if (special_lj[i] < 0.0 || special_lj[i] > 1.0 || special_coul[i] < 0.0 || special_coul[i] > 1.0) error->all(FLERR,"Illegal special_bonds command"); if (special_extra < 0) error->all(FLERR,"Illegal special_bonds command"); } /* ---------------------------------------------------------------------- compute bounds implied by numeric str with a possible wildcard asterik 1 = lower bound, nmax = upper bound 5 possibilities: (1) i = i to i, (2) * = nmin to nmax, (3) i* = i to nmax, (4) *j = nmin to j, (5) i*j = i to j return nlo,nhi ------------------------------------------------------------------------- */ void Force::bounds(char *str, int nmax, int &nlo, int &nhi, int nmin) { char *ptr = strchr(str,'*'); if (ptr == NULL) { nlo = nhi = atoi(str); } else if (strlen(str) == 1) { nlo = nmin; nhi = nmax; } else if (ptr == str) { nlo = nmin; nhi = atoi(ptr+1); } else if (strlen(ptr+1) == 0) { nlo = atoi(str); nhi = nmax; } else { nlo = atoi(str); nhi = atoi(ptr+1); } if (nlo < nmin || nhi > nmax || nlo > nhi) error->all(FLERR,"Numeric index is out of bounds"); } /* ---------------------------------------------------------------------- compute bounds implied by numeric str with a possible wildcard asterik 1 = lower bound, nmax = upper bound 5 possibilities: (1) i = i to i, (2) * = nmin to nmax, (3) i* = i to nmax, (4) *j = nmin to j, (5) i*j = i to j return nlo,nhi ------------------------------------------------------------------------- */ void Force::boundsbig(char *str, bigint nmax, bigint &nlo, bigint &nhi, bigint nmin) { char *ptr = strchr(str,'*'); if (ptr == NULL) { nlo = nhi = ATOBIGINT(str); } else if (strlen(str) == 1) { nlo = nmin; nhi = nmax; } else if (ptr == str) { nlo = nmin; nhi = ATOBIGINT(ptr+1); } else if (strlen(ptr+1) == 0) { nlo = ATOBIGINT(str); nhi = nmax; } else { nlo = ATOBIGINT(str); nhi = ATOBIGINT(ptr+1); } if (nlo < nmin || nhi > nmax || nlo > nhi) error->all(FLERR,"Numeric index is out of bounds"); } /* ---------------------------------------------------------------------- read a floating point value from a string generate an error if not a legitimate floating point value called by various commands to check validity of their arguments ------------------------------------------------------------------------- */ double Force::numeric(const char *file, int line, char *str) { if (!str) error->all(file,line,"Expected floating point parameter " "in input script or data file"); int n = strlen(str); if (n == 0) error->all(file,line,"Expected floating point parameter " "in input script or data file"); for (int i = 0; i < n; i++) { if (isdigit(str[i])) continue; if (str[i] == '-' || str[i] == '+' || str[i] == '.') continue; if (str[i] == 'e' || str[i] == 'E') continue; error->all(file,line,"Expected floating point parameter " "in input script or data file"); } return atof(str); } /* ---------------------------------------------------------------------- read an integer value from a string generate an error if not a legitimate integer value called by various commands to check validity of their arguments ------------------------------------------------------------------------- */ int Force::inumeric(const char *file, int line, char *str) { if (!str) error->all(file,line, "Expected integer parameter in input script or data file"); int n = strlen(str); if (n == 0) error->all(file,line, "Expected integer parameter in input script or data file"); for (int i = 0; i < n; i++) { if (isdigit(str[i]) || str[i] == '-' || str[i] == '+') continue; error->all(file,line, "Expected integer parameter in input script or data file"); } return atoi(str); } /* ---------------------------------------------------------------------- read a big integer value from a string generate an error if not a legitimate integer value called by various commands to check validity of their arguments ------------------------------------------------------------------------- */ bigint Force::bnumeric(const char *file, int line, char *str) { if (!str) error->all(file,line, "Expected integer parameter in input script or data file"); int n = strlen(str); if (n == 0) error->all(file,line, "Expected integer parameter in input script or data file"); for (int i = 0; i < n; i++) { if (isdigit(str[i]) || str[i] == '-' || str[i] == '+') continue; error->all(file,line, "Expected integer parameter in input script or data file"); } return ATOBIGINT(str); } /* ---------------------------------------------------------------------- read a tag integer value from a string generate an error if not a legitimate integer value called by various commands to check validity of their arguments ------------------------------------------------------------------------- */ tagint Force::tnumeric(const char *file, int line, char *str) { if (!str) error->all(file,line, "Expected integer parameter in input script or data file"); int n = strlen(str); if (n == 0) error->all(file,line, "Expected integer parameter in input script or data file"); for (int i = 0; i < n; i++) { if (isdigit(str[i]) || str[i] == '-' || str[i] == '+') continue; error->all(file,line, "Expected integer parameter in input script or data file"); } return ATOTAGINT(str); } /* ---------------------------------------------------------------------- open a potential file as specified by name if fails, search in dir specified by env variable LAMMPS_POTENTIALS ------------------------------------------------------------------------- */ FILE *Force::open_potential(const char *name) { FILE *fp; if (name == NULL) return NULL; // attempt to open file directly // if successful, return ptr fp = fopen(name,"r"); if (fp) { if (comm->me == 0) potential_date(fp,name); rewind(fp); return fp; } // try the environment variable directory const char *path = getenv("LAMMPS_POTENTIALS"); if (path == NULL) return NULL; const char *pot = potential_name(name); if (pot == NULL) return NULL; size_t len1 = strlen(path); size_t len2 = strlen(pot); char *newpath = new char[len1+len2+2]; strcpy(newpath,path); #if defined(_WIN32) newpath[len1] = '\\'; newpath[len1+1] = 0; #else newpath[len1] = '/'; newpath[len1+1] = 0; #endif strcat(newpath,pot); fp = fopen(newpath,"r"); if (fp) { if (comm->me == 0) potential_date(fp,name); rewind(fp); } delete [] newpath; return fp; } /* ---------------------------------------------------------------------- strip off leading part of path, return just the filename ------------------------------------------------------------------------- */ const char *Force::potential_name(const char *path) { const char *pot; if (path == NULL) return NULL; #if defined(_WIN32) // skip over the disk drive part of windows pathnames if (isalpha(path[0]) && path[1] == ':') path += 2; #endif for (pot = path; *path != '\0'; ++path) { #if defined(_WIN32) if ((*path == '\\') || (*path == '/')) pot = path + 1; #else if (*path == '/') pot = path + 1; #endif } return pot; } /* ---------------------------------------------------------------------- read first line of potential file if has DATE field, print following word ------------------------------------------------------------------------- */ void Force::potential_date(FILE *fp, const char *name) { char line[MAXLINE]; char *ptr = fgets(line,MAXLINE,fp); if (ptr == NULL) return; char *word; word = strtok(line," \t\n\r\f"); while (word) { if (strcmp(word,"DATE:") == 0) { word = strtok(NULL," \t\n\r\f"); if (word == NULL) return; if (screen) fprintf(screen,"Reading potential file %s with DATE: %s\n",name,word); if (logfile) fprintf(logfile,"Reading potential file %s with DATE: %s\n",name,word); return; } word = strtok(NULL," \t\n\r\f"); } } /* ---------------------------------------------------------------------- memory usage of force classes ------------------------------------------------------------------------- */ bigint Force::memory_usage() { bigint bytes = 0; if (pair) bytes += static_cast<bigint> (pair->memory_usage()); if (bond) bytes += static_cast<bigint> (bond->memory_usage()); if (angle) bytes += static_cast<bigint> (angle->memory_usage()); if (dihedral) bytes += static_cast<bigint> (dihedral->memory_usage()); if (improper) bytes += static_cast<bigint> (improper->memory_usage()); if (kspace) bytes += static_cast<bigint> (kspace->memory_usage()); return bytes; } diff --git a/src/force.h b/src/force.h index a3fca5102..54b661268 100644 --- a/src/force.h +++ b/src/force.h @@ -1,168 +1,168 @@ /* -*- c++ -*- ---------------------------------------------------------- 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" #include "stdio.h" #include <map> #include <string> 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) double angstrom; // 1 angstrom in native units double femtosecond; // 1 femtosecond in native units double qelectron; // 1 electron charge abs() in native units int newton,newton_pair,newton_bond; // Newton's 3rd law settings class Pair *pair; char *pair_style; typedef Pair *(*PairCreator)(LAMMPS *); std::map<std::string,PairCreator> *pair_map; 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 *, int); class Pair *new_pair(const char *, int, int &); - class Pair *pair_match(const char *, int); + class Pair *pair_match(const char *, int, int nsub=0); void create_bond(const char *, int); class Bond *new_bond(const char *, int, int &); class Bond *bond_match(const char *); void create_angle(const char *, int); class Angle *new_angle(const char *, int, int &); void create_dihedral(const char *, int); class Dihedral *new_dihedral(const char *, int, int &); void create_improper(const char *, int); class Improper *new_improper(const char *, int, int &); class Improper *improper_match(const char *); void create_kspace(int, char **, int); class KSpace *new_kspace(int, char **, int, int &); class KSpace *kspace_match(const char *, int); void store_style(char *&, const char *, int); void set_special(int, char **); void bounds(char *, int, int &, int &, int nmin=1); void boundsbig(char *, bigint, bigint &, bigint &, bigint nmin=1); double numeric(const char *, int, char *); int inumeric(const char *, int, char *); bigint bnumeric(const char *, int, char *); tagint tnumeric(const char *, int, char *); FILE *open_potential(const char *); const char *potential_name(const char *); void potential_date(FILE *, const char *); bigint memory_usage(); private: template <typename T> static Pair *pair_creator(LAMMPS *); }; } #endif /* ERROR/WARNING messages: E: Unknown pair style The choice of pair style is unknown. E: Unknown bond style The choice of bond style is unknown. E: Unknown angle style The choice of angle style is unknown. E: Unknown dihedral style The choice of dihedral style is unknown. E: Unknown improper style The choice of improper style is unknown. E: Cannot yet use KSpace solver with grid with comm style tiled This is current restriction in LAMMPS. E: Unknown kspace style The choice of kspace style is unknown. E: Illegal ... command 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. E: Numeric index is out of bounds A command with an argument that specifies an integer or range of integers is using a value that is less than 1 or greater than the maximum allowed limit. */ diff --git a/src/output.cpp b/src/output.cpp index 8c16cbfee..44892f5bd 100644 --- a/src/output.cpp +++ b/src/output.cpp @@ -1,822 +1,822 @@ /* ---------------------------------------------------------------------- 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 "stdio.h" #include "stdlib.h" #include "string.h" #include "output.h" #include "style_dump.h" #include "atom.h" #include "neighbor.h" #include "input.h" #include "variable.h" #include "comm.h" #include "update.h" #include "group.h" #include "domain.h" #include "thermo.h" #include "modify.h" #include "compute.h" #include "force.h" #include "dump.h" #include "write_restart.h" #include "accelerator_cuda.h" #include "memory.h" #include "error.h" using namespace LAMMPS_NS; #define DELTA 1 /* ---------------------------------------------------------------------- initialize all output ------------------------------------------------------------------------- */ Output::Output(LAMMPS *lmp) : Pointers(lmp) { // create default computes for temp,pressure,pe char **newarg = new char*[4]; newarg[0] = (char *) "thermo_temp"; newarg[1] = (char *) "all"; newarg[2] = (char *) "temp"; modify->add_compute(3,newarg,1); newarg[0] = (char *) "thermo_press"; newarg[1] = (char *) "all"; newarg[2] = (char *) "pressure"; newarg[3] = (char *) "thermo_temp"; modify->add_compute(4,newarg,1); newarg[0] = (char *) "thermo_pe"; newarg[1] = (char *) "all"; newarg[2] = (char *) "pe"; modify->add_compute(3,newarg,1); delete [] newarg; // create default Thermo class newarg = new char*[1]; newarg[0] = (char *) "one"; thermo = new Thermo(lmp,1,newarg); delete [] newarg; thermo_every = 0; var_thermo = NULL; ndump = 0; max_dump = 0; every_dump = NULL; next_dump = NULL; last_dump = NULL; var_dump = NULL; ivar_dump = NULL; dump = NULL; restart_flag = restart_flag_single = restart_flag_double = 0; restart_every_single = restart_every_double = 0; last_restart = -1; restart1 = restart2a = restart2b = NULL; var_restart_single = var_restart_double = NULL; restart = NULL; } /* ---------------------------------------------------------------------- free all memory ------------------------------------------------------------------------- */ Output::~Output() { if (thermo) delete thermo; delete [] var_thermo; memory->destroy(every_dump); memory->destroy(next_dump); memory->destroy(last_dump); for (int i = 0; i < ndump; i++) delete [] var_dump[i]; memory->sfree(var_dump); memory->destroy(ivar_dump); for (int i = 0; i < ndump; i++) delete dump[i]; memory->sfree(dump); delete [] restart1; delete [] restart2a; delete [] restart2b; delete [] var_restart_single; delete [] var_restart_double; delete restart; } /* ---------------------------------------------------------------------- */ void Output::init() { thermo->init(); if (var_thermo) { ivar_thermo = input->variable->find(var_thermo); if (ivar_thermo < 0) error->all(FLERR,"Variable name for thermo every does not exist"); if (!input->variable->equalstyle(ivar_thermo)) error->all(FLERR,"Variable for thermo every is invalid style"); } for (int i = 0; i < ndump; i++) dump[i]->init(); for (int i = 0; i < ndump; i++) if (every_dump[i] == 0) { ivar_dump[i] = input->variable->find(var_dump[i]); if (ivar_dump[i] < 0) error->all(FLERR,"Variable name for dump every does not exist"); if (!input->variable->equalstyle(ivar_dump[i])) error->all(FLERR,"Variable for dump every is invalid style"); } if (restart_flag_single && restart_every_single == 0) { ivar_restart_single = input->variable->find(var_restart_single); if (ivar_restart_single < 0) error->all(FLERR,"Variable name for restart does not exist"); if (!input->variable->equalstyle(ivar_restart_single)) error->all(FLERR,"Variable for restart is invalid style"); } if (restart_flag_double && restart_every_double == 0) { ivar_restart_double = input->variable->find(var_restart_double); if (ivar_restart_double < 0) error->all(FLERR,"Variable name for restart does not exist"); if (!input->variable->equalstyle(ivar_restart_double)) error->all(FLERR,"Variable for restart is invalid style"); } } /* ---------------------------------------------------------------------- perform output for setup of run/min do dump first, so memory_usage will include dump allocation do thermo last, so will print after memory_usage memflag = 0/1 for printing out memory usage ------------------------------------------------------------------------- */ void Output::setup(int memflag) { bigint ntimestep = update->ntimestep; // perform dump at start of run only if: // current timestep is multiple of every and last dump not >= this step // this is first run after dump created and firstflag is set // note that variable freq will not write unless triggered by firstflag // set next_dump to multiple of every or variable value // set next_dump_any to smallest next_dump // wrap dumps that invoke computes and variable eval with clear/add // if dump not written now, use addstep_compute_all() since don't know // what computes the dump write would invoke // if no dumps, set next_dump_any to last+1 so will not influence next int writeflag; if (ndump && update->restrict_output == 0) { for (int idump = 0; idump < ndump; idump++) { if (dump[idump]->clearstep || every_dump[idump] == 0) modify->clearstep_compute(); writeflag = 0; if (every_dump[idump] && ntimestep % every_dump[idump] == 0 && last_dump[idump] != ntimestep) writeflag = 1; if (last_dump[idump] < 0 && dump[idump]->first_flag == 1) writeflag = 1; if (writeflag) { dump[idump]->write(); last_dump[idump] = ntimestep; } if (every_dump[idump]) next_dump[idump] = (ntimestep/every_dump[idump])*every_dump[idump] + every_dump[idump]; else { bigint nextdump = static_cast<bigint> (input->variable->compute_equal(ivar_dump[idump])); if (nextdump <= ntimestep) error->all(FLERR,"Dump every variable returned a bad timestep"); next_dump[idump] = nextdump; } if (dump[idump]->clearstep || every_dump[idump] == 0) { if (writeflag) modify->addstep_compute(next_dump[idump]); else modify->addstep_compute_all(next_dump[idump]); } if (idump) next_dump_any = MIN(next_dump_any,next_dump[idump]); else next_dump_any = next_dump[0]; } } else next_dump_any = update->laststep + 1; // do not write restart files at start of run // set next_restart values to multiple of every or variable value // wrap variable eval with clear/add // if no restarts, set next_restart to last+1 so will not influence next if (restart_flag && update->restrict_output == 0) { if (restart_flag_single) { if (restart_every_single) next_restart_single = (ntimestep/restart_every_single)*restart_every_single + restart_every_single; else { bigint nextrestart = static_cast<bigint> (input->variable->compute_equal(ivar_restart_single)); if (nextrestart <= ntimestep) error->all(FLERR,"Restart variable returned a bad timestep"); next_restart_single = nextrestart; } } else next_restart_single = update->laststep + 1; if (restart_flag_double) { if (restart_every_double) next_restart_double = (ntimestep/restart_every_double)*restart_every_double + restart_every_double; else { bigint nextrestart = static_cast<bigint> (input->variable->compute_equal(ivar_restart_double)); if (nextrestart <= ntimestep) error->all(FLERR,"Restart variable returned a bad timestep"); next_restart_double = nextrestart; } } else next_restart_double = update->laststep + 1; next_restart = MIN(next_restart_single,next_restart_double); } else next_restart = update->laststep + 1; // print memory usage unless being called between multiple runs if (memflag) memory_usage(); // set next_thermo to multiple of every or variable eval if var defined // insure thermo output on last step of run // thermo may invoke computes so wrap with clear/add modify->clearstep_compute(); thermo->header(); thermo->compute(0); last_thermo = ntimestep; if (var_thermo) { next_thermo = static_cast<bigint> (input->variable->compute_equal(ivar_thermo)); if (next_thermo <= ntimestep) error->all(FLERR,"Thermo every variable returned a bad timestep"); } else if (thermo_every) { next_thermo = (ntimestep/thermo_every)*thermo_every + thermo_every; next_thermo = MIN(next_thermo,update->laststep); } else next_thermo = update->laststep; modify->addstep_compute(next_thermo); // next = next timestep any output will be done next = MIN(next_dump_any,next_restart); next = MIN(next,next_thermo); } /* ---------------------------------------------------------------------- perform all output for this timestep only perform output if next matches current step and last output doesn't do dump/restart before thermo so thermo CPU time will include them ------------------------------------------------------------------------- */ void Output::write(bigint ntimestep) { // next_dump does not force output on last step of run // wrap dumps that invoke computes or eval of variable with clear/add // download data from GPU if necessary if (next_dump_any == ntimestep) { if (lmp->cuda && !lmp->cuda->oncpu) lmp->cuda->downloadAll(); for (int idump = 0; idump < ndump; idump++) { if (next_dump[idump] == ntimestep) { if (dump[idump]->clearstep || every_dump[idump] == 0) modify->clearstep_compute(); if (last_dump[idump] != ntimestep) { dump[idump]->write(); last_dump[idump] = ntimestep; } if (every_dump[idump]) next_dump[idump] += every_dump[idump]; else { bigint nextdump = static_cast<bigint> (input->variable->compute_equal(ivar_dump[idump])); if (nextdump <= ntimestep) error->all(FLERR,"Dump every variable returned a bad timestep"); next_dump[idump] = nextdump; } if (dump[idump]->clearstep || every_dump[idump] == 0) modify->addstep_compute(next_dump[idump]); } if (idump) next_dump_any = MIN(next_dump_any,next_dump[idump]); else next_dump_any = next_dump[0]; } } // next_restart does not force output on last step of run // for toggle = 0, replace "*" with current timestep in restart filename // download data from GPU if necessary // eval of variable may invoke computes so wrap with clear/add if (next_restart == ntimestep) { if (lmp->cuda && !lmp->cuda->oncpu) lmp->cuda->downloadAll(); if (next_restart_single == ntimestep) { char *file = new char[strlen(restart1) + 16]; char *ptr = strchr(restart1,'*'); *ptr = '\0'; sprintf(file,"%s" BIGINT_FORMAT "%s",restart1,ntimestep,ptr+1); *ptr = '*'; if (last_restart != ntimestep) restart->write(file); delete [] file; if (restart_every_single) next_restart_single += restart_every_single; else { modify->clearstep_compute(); bigint nextrestart = static_cast<bigint> (input->variable->compute_equal(ivar_restart_single)); if (nextrestart <= ntimestep) error->all(FLERR,"Restart variable returned a bad timestep"); next_restart_single = nextrestart; modify->addstep_compute(next_restart_single); } } if (next_restart_double == ntimestep) { if (last_restart != ntimestep) { if (restart_toggle == 0) { restart->write(restart2a); restart_toggle = 1; } else { restart->write(restart2b); restart_toggle = 0; } } if (restart_every_double) next_restart_double += restart_every_double; else { modify->clearstep_compute(); bigint nextrestart = static_cast<bigint> (input->variable->compute_equal(ivar_restart_double)); if (nextrestart <= ntimestep) error->all(FLERR,"Restart variable returned a bad timestep"); next_restart_double = nextrestart; modify->addstep_compute(next_restart_double); } } last_restart = ntimestep; next_restart = MIN(next_restart_single,next_restart_double); } // insure next_thermo forces output on last step of run // thermo may invoke computes so wrap with clear/add if (next_thermo == ntimestep) { modify->clearstep_compute(); if (last_thermo != ntimestep) thermo->compute(1); last_thermo = ntimestep; if (var_thermo) { next_thermo = static_cast<bigint> (input->variable->compute_equal(ivar_thermo)); if (next_thermo <= ntimestep) error->all(FLERR,"Thermo every variable returned a bad timestep"); } else if (thermo_every) next_thermo += thermo_every; else next_thermo = update->laststep; next_thermo = MIN(next_thermo,update->laststep); modify->addstep_compute(next_thermo); } // next = next timestep any output will be done next = MIN(next_dump_any,next_restart); next = MIN(next,next_thermo); } /* ---------------------------------------------------------------------- force a snapshot to be written for all dumps called from PRD and TAD ------------------------------------------------------------------------- */ void Output::write_dump(bigint ntimestep) { for (int idump = 0; idump < ndump; idump++) { dump[idump]->write(); last_dump[idump] = ntimestep; } } /* ---------------------------------------------------------------------- force restart file(s) to be written called from PRD and TAD ------------------------------------------------------------------------- */ void Output::write_restart(bigint ntimestep) { if (restart_flag_single) { char *file = new char[strlen(restart1) + 16]; char *ptr = strchr(restart1,'*'); *ptr = '\0'; sprintf(file,"%s" BIGINT_FORMAT "%s",restart1,ntimestep,ptr+1); *ptr = '*'; restart->write(file); delete [] file; } if (restart_flag_double) { if (restart_toggle == 0) { restart->write(restart2a); restart_toggle = 1; } else { restart->write(restart2b); restart_toggle = 0; } } last_restart = ntimestep; } /* ---------------------------------------------------------------------- timestep is being changed, called by update->reset_timestep() reset next timestep values for dumps, restart, thermo output reset to smallest value >= new timestep if next timestep set by variable evaluation, eval for ntimestep-1, so current ntimestep can be returned if needed no guarantee that variable can be evaluated for ntimestep-1 if it depends on computes, but live with that rare case for now ------------------------------------------------------------------------- */ void Output::reset_timestep(bigint ntimestep) { next_dump_any = MAXBIGINT; for (int idump = 0; idump < ndump; idump++) { if (every_dump[idump]) { next_dump[idump] = (ntimestep/every_dump[idump])*every_dump[idump]; if (next_dump[idump] < ntimestep) next_dump[idump] += every_dump[idump]; } else { - // ivar_dump may not be initialized. + // ivar_dump may not be initialized if (ivar_dump[idump] < 0) { ivar_dump[idump] = input->variable->find(var_dump[idump]); if (ivar_dump[idump] < 0) error->all(FLERR,"Variable name for dump every does not exist"); if (!input->variable->equalstyle(ivar_dump[idump])) error->all(FLERR,"Variable for dump every is invalid style"); } modify->clearstep_compute(); update->ntimestep--; bigint nextdump = static_cast<bigint> (input->variable->compute_equal(ivar_dump[idump])); if (nextdump < ntimestep) error->all(FLERR,"Dump every variable returned a bad timestep"); update->ntimestep++; next_dump[idump] = nextdump; modify->addstep_compute(next_dump[idump]); } next_dump_any = MIN(next_dump_any,next_dump[idump]); } if (restart_flag_single) { if (restart_every_single) { next_restart_single = (ntimestep/restart_every_single)*restart_every_single; if (next_restart_single < ntimestep) next_restart_single += restart_every_single; } else { modify->clearstep_compute(); update->ntimestep--; bigint nextrestart = static_cast<bigint> (input->variable->compute_equal(ivar_restart_single)); if (nextrestart < ntimestep) error->all(FLERR,"Restart variable returned a bad timestep"); update->ntimestep++; next_restart_single = nextrestart; modify->addstep_compute(next_restart_single); } } else next_restart_single = update->laststep + 1; if (restart_flag_double) { if (restart_every_double) { next_restart_double = (ntimestep/restart_every_double)*restart_every_double; if (next_restart_double < ntimestep) next_restart_double += restart_every_double; } else { modify->clearstep_compute(); update->ntimestep--; bigint nextrestart = static_cast<bigint> (input->variable->compute_equal(ivar_restart_double)); if (nextrestart < ntimestep) error->all(FLERR,"Restart variable returned a bad timestep"); update->ntimestep++; next_restart_double = nextrestart; modify->addstep_compute(next_restart_double); } } else next_restart_double = update->laststep + 1; next_restart = MIN(next_restart_single,next_restart_double); if (var_thermo) { modify->clearstep_compute(); update->ntimestep--; next_thermo = static_cast<bigint> (input->variable->compute_equal(ivar_thermo)); if (next_thermo < ntimestep) error->all(FLERR,"Thermo_modify every variable returned a bad timestep"); update->ntimestep++; next_thermo = MIN(next_thermo,update->laststep); modify->addstep_compute(next_thermo); } else if (thermo_every) { next_thermo = (ntimestep/thermo_every)*thermo_every; if (next_thermo < ntimestep) next_thermo += thermo_every; next_thermo = MIN(next_thermo,update->laststep); } else next_thermo = update->laststep; next = MIN(next_dump_any,next_restart); next = MIN(next,next_thermo); } /* ---------------------------------------------------------------------- add a Dump to list of Dumps ------------------------------------------------------------------------- */ void Output::add_dump(int narg, char **arg) { if (narg < 5) error->all(FLERR,"Illegal dump command"); // error checks for (int idump = 0; idump < ndump; idump++) if (strcmp(arg[0],dump[idump]->id) == 0) error->all(FLERR,"Reuse of dump ID"); int igroup = group->find(arg[1]); if (igroup == -1) error->all(FLERR,"Could not find dump group ID"); if (force->inumeric(FLERR,arg[3]) <= 0) error->all(FLERR,"Invalid dump frequency"); // extend Dump list if necessary if (ndump == max_dump) { max_dump += DELTA; dump = (Dump **) memory->srealloc(dump,max_dump*sizeof(Dump *),"output:dump"); memory->grow(every_dump,max_dump,"output:every_dump"); memory->grow(next_dump,max_dump,"output:next_dump"); memory->grow(last_dump,max_dump,"output:last_dump"); var_dump = (char **) memory->srealloc(var_dump,max_dump*sizeof(char *),"output:var_dump"); memory->grow(ivar_dump,max_dump,"output:ivar_dump"); } - // make certain that per-dump data is properly initialized to suitable default values + // initialize per-dump data to suitable default values every_dump[ndump] = 0; last_dump[ndump] = -1; var_dump[ndump] = NULL; ivar_dump[ndump] = -1; // create the Dump if (0) return; // dummy line to enable else-if macro expansion #define DUMP_CLASS #define DumpStyle(key,Class) \ else if (strcmp(arg[2],#key) == 0) dump[ndump] = new Class(lmp,narg,arg); #include "style_dump.h" #undef DUMP_CLASS else error->all(FLERR,"Unknown dump style"); every_dump[ndump] = force->inumeric(FLERR,arg[3]); if (every_dump[ndump] <= 0) error->all(FLERR,"Illegal dump command"); last_dump[ndump] = -1; var_dump[ndump] = NULL; ndump++; } /* ---------------------------------------------------------------------- modify parameters of a Dump ------------------------------------------------------------------------- */ void Output::modify_dump(int narg, char **arg) { if (narg < 1) error->all(FLERR,"Illegal dump_modify command"); // find which dump it is int idump; for (idump = 0; idump < ndump; idump++) if (strcmp(arg[0],dump[idump]->id) == 0) break; if (idump == ndump) error->all(FLERR,"Cound not find dump_modify ID"); dump[idump]->modify_params(narg-1,&arg[1]); } /* ---------------------------------------------------------------------- delete a Dump from list of Dumps ------------------------------------------------------------------------- */ void Output::delete_dump(char *id) { // find which dump it is and delete it int idump; for (idump = 0; idump < ndump; idump++) if (strcmp(id,dump[idump]->id) == 0) break; if (idump == ndump) error->all(FLERR,"Could not find undump ID"); delete dump[idump]; delete [] var_dump[idump]; // move other dumps down in list one slot for (int i = idump+1; i < ndump; i++) { dump[i-1] = dump[i]; every_dump[i-1] = every_dump[i]; next_dump[i-1] = next_dump[i]; last_dump[i-1] = last_dump[i]; var_dump[i-1] = var_dump[i]; ivar_dump[i-1] = ivar_dump[i]; } ndump--; } /* ---------------------------------------------------------------------- set thermo output frequency from input script ------------------------------------------------------------------------- */ void Output::set_thermo(int narg, char **arg) { if (narg != 1) error->all(FLERR,"Illegal thermo command"); if (strstr(arg[0],"v_") == arg[0]) { delete [] var_thermo; int n = strlen(&arg[0][2]) + 1; var_thermo = new char[n]; strcpy(var_thermo,&arg[0][2]); } else { thermo_every = force->inumeric(FLERR,arg[0]); if (thermo_every < 0) error->all(FLERR,"Illegal thermo command"); } } /* ---------------------------------------------------------------------- new Thermo style ------------------------------------------------------------------------- */ void Output::create_thermo(int narg, char **arg) { if (narg < 1) error->all(FLERR,"Illegal thermo_style command"); // don't allow this so that dipole style can safely allocate inertia vector if (domain->box_exist == 0) error->all(FLERR,"Thermo_style command before simulation box is defined"); // warn if previous thermo had been modified via thermo_modify command if (thermo->modified && comm->me == 0) error->warning(FLERR,"New thermo_style command, " "previous thermo_modify settings will be lost"); // set thermo = NULL in case new Thermo throws an error delete thermo; thermo = NULL; thermo = new Thermo(lmp,narg,arg); } /* ---------------------------------------------------------------------- setup restart capability for single or double output files if only one filename and it contains no "*", then append ".*" ------------------------------------------------------------------------- */ void Output::create_restart(int narg, char **arg) { if (narg < 1) error->all(FLERR,"Illegal restart command"); int every = 0; int varflag = 0; if (strstr(arg[0],"v_") == arg[0]) varflag = 1; else every = force->inumeric(FLERR,arg[0]); if (!varflag && every == 0) { if (narg != 1) error->all(FLERR,"Illegal restart command"); restart_flag = restart_flag_single = restart_flag_double = 0; last_restart = -1; delete restart; restart = NULL; delete [] restart1; delete [] restart2a; delete [] restart2b; restart1 = restart2a = restart2b = NULL; delete [] var_restart_single; delete [] var_restart_double; var_restart_single = var_restart_double = NULL; return; } if (narg < 2) error->all(FLERR,"Illegal restart command"); int nfile = 0; if (narg % 2 == 0) nfile = 1; else nfile = 2; if (nfile == 1) { restart_flag = restart_flag_single = 1; if (varflag) { delete [] var_restart_single; int n = strlen(&arg[0][2]) + 1; var_restart_single = new char[n]; strcpy(var_restart_single,&arg[0][2]); restart_every_single = 0; } else restart_every_single = every; int n = strlen(arg[1]) + 3; restart1 = new char[n]; strcpy(restart1,arg[1]); if (strchr(restart1,'*') == NULL) strcat(restart1,".*"); } if (nfile == 2) { restart_flag = restart_flag_double = 1; if (varflag) { delete [] var_restart_double; int n = strlen(&arg[0][2]) + 1; var_restart_double = new char[n]; strcpy(var_restart_double,&arg[0][2]); restart_every_double = 0; } else restart_every_double = every; restart_toggle = 0; int n = strlen(arg[1]) + 3; restart2a = new char[n]; strcpy(restart2a,arg[1]); n = strlen(arg[2]) + 1; restart2b = new char[n]; strcpy(restart2b,arg[2]); } // check for multiproc output and an MPI-IO filename // if 2 filenames, must be consistent int multiproc; if (strchr(arg[1],'%')) multiproc = comm->nprocs; else multiproc = 0; if (nfile == 2) { if (multiproc && !strchr(arg[2],'%')) error->all(FLERR,"Both restart files must use % or neither"); if (!multiproc && strchr(arg[2],'%')) error->all(FLERR,"Both restart files must use % or neither"); } int mpiioflag; if (strstr(arg[1],".mpi")) mpiioflag = 1; else mpiioflag = 0; if (nfile == 2) { if (mpiioflag && !strstr(arg[2],".mpi")) error->all(FLERR,"Both restart files must use MPI-IO or neither"); if (!mpiioflag && strstr(arg[2],".mpi")) error->all(FLERR,"Both restart files must use MPI-IO or neither"); } // setup output style and process optional args delete restart; restart = new WriteRestart(lmp); int iarg = nfile+1; restart->multiproc_options(multiproc,mpiioflag,narg-iarg,&arg[iarg]); } /* ---------------------------------------------------------------------- sum and print memory usage result is only memory on proc 0, not averaged across procs ------------------------------------------------------------------------- */ void Output::memory_usage() { bigint bytes = 0; bytes += atom->memory_usage(); bytes += neighbor->memory_usage(); bytes += comm->memory_usage(); bytes += update->memory_usage(); bytes += force->memory_usage(); bytes += modify->memory_usage(); for (int i = 0; i < ndump; i++) bytes += dump[i]->memory_usage(); double mbytes = bytes/1024.0/1024.0; if (comm->me == 0) { if (screen) fprintf(screen,"Memory usage per processor = %g Mbytes\n",mbytes); if (logfile) fprintf(logfile,"Memory usage per processor = %g Mbytes\n",mbytes); } } diff --git a/src/version.h b/src/version.h index 04b0c2166..c4415eb1b 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define LAMMPS_VERSION "5 Oct 2015" +#define LAMMPS_VERSION "22 Oct 2015"